KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > tax > traversal > TreeNodeFilterHandle


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.tax.traversal;
21
22 import java.io.*;
23 import java.util.ArrayList JavaDoc;
24
25 import org.netbeans.tax.traversal.TreeNodeFilter;
26
27 /**
28  * @author Libor Kramolis
29  */

30 public final class TreeNodeFilterHandle implements Serializable {
31     private static final long serialVersionUID = -571598256778542088L;
32
33     /** */
34     private String JavaDoc[] nodeTypeNames;
35     /** */
36     private short acceptPolicy;
37
38     /** */
39     transient private TreeNodeFilter nodeFilter;
40
41
42     //
43
// init
44
//
45

46     /** */
47     public TreeNodeFilterHandle (TreeNodeFilter nodeFilter) {
48         this.nodeFilter = nodeFilter;
49     }
50
51
52     //
53
// itself
54
//
55

56     /**
57      */

58     public TreeNodeFilter getNodeFilter () {
59         if ( nodeFilter == null ) { // lazy init
60

61             ArrayList JavaDoc knownTypes = new ArrayList JavaDoc();
62             for (int i = 0; i < nodeTypeNames.length; i++) {
63                 try {
64                     knownTypes.add (Class.forName ( nodeTypeNames[i] ));
65                 } catch (ClassNotFoundException JavaDoc ex) {
66                     //let it be
67
}
68             }
69             Class JavaDoc[] nodeTypes = (Class JavaDoc[])knownTypes.toArray (new Class JavaDoc[0]);
70
71             nodeFilter = new TreeNodeFilter (nodeTypes, acceptPolicy);
72         }
73
74         return nodeFilter;
75     }
76
77
78     /**
79      */

80     private void initFields () {
81         acceptPolicy = getNodeFilter().getAcceptPolicy();
82
83         Class JavaDoc[] nodeTypes = getNodeFilter().getNodeTypes();
84         nodeTypeNames = new String JavaDoc [nodeTypes.length];
85         for (int i = 0; i < nodeTypes.length; i++) {
86             nodeTypeNames[i] = nodeTypes[i].getName();
87         }
88     }
89
90
91     /**
92      */

93     private void writeObject (ObjectOutputStream oos) throws IOException {
94         initFields();
95
96         oos.defaultWriteObject();
97     }
98
99 }
100
Popular Tags