1 19 20 package org.netbeans.modules.xml.tax.traversal; 21 22 import java.io.*; 23 import java.util.ArrayList ; 24 25 import org.netbeans.tax.traversal.TreeNodeFilter; 26 27 30 public final class TreeNodeFilterHandle implements Serializable { 31 private static final long serialVersionUID = -571598256778542088L; 32 33 34 private String [] nodeTypeNames; 35 36 private short acceptPolicy; 37 38 39 transient private TreeNodeFilter nodeFilter; 40 41 42 46 47 public TreeNodeFilterHandle (TreeNodeFilter nodeFilter) { 48 this.nodeFilter = nodeFilter; 49 } 50 51 52 56 58 public TreeNodeFilter getNodeFilter () { 59 if ( nodeFilter == null ) { 61 ArrayList knownTypes = new ArrayList (); 62 for (int i = 0; i < nodeTypeNames.length; i++) { 63 try { 64 knownTypes.add (Class.forName ( nodeTypeNames[i] )); 65 } catch (ClassNotFoundException ex) { 66 } 68 } 69 Class [] nodeTypes = (Class [])knownTypes.toArray (new Class [0]); 70 71 nodeFilter = new TreeNodeFilter (nodeTypes, acceptPolicy); 72 } 73 74 return nodeFilter; 75 } 76 77 78 80 private void initFields () { 81 acceptPolicy = getNodeFilter().getAcceptPolicy(); 82 83 Class [] nodeTypes = getNodeFilter().getNodeTypes(); 84 nodeTypeNames = new String [nodeTypes.length]; 85 for (int i = 0; i < nodeTypes.length; i++) { 86 nodeTypeNames[i] = nodeTypes[i].getName(); 87 } 88 } 89 90 91 93 private void writeObject (ObjectOutputStream oos) throws IOException { 94 initFields(); 95 96 oos.defaultWriteObject(); 97 } 98 99 } 100 | Popular Tags |