KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > xml > SimpleModule


1 package jfun.yan.xml;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.List JavaDoc;
5
6
7
8 final class SimpleModule implements Module {
9   private final Import[] parents;
10   private final String JavaDoc[] dependencies;
11   private final Body body;
12   private final String JavaDoc name;
13   private final String JavaDoc description;
14   private final Object JavaDoc module_id;
15   private final StringPredicate exported;
16
17   public String JavaDoc getDescription() {
18     return description;
19   }
20
21   public Object JavaDoc getModuleId() {
22     return module_id;
23   }
24
25   public String JavaDoc getName() {
26     return name;
27   }
28   private static void filter(StringPredicate exported, String JavaDoc prefix,
29       String JavaDoc[] keys, List JavaDoc result){
30     for(int i=0; i<keys.length; i++){
31       final String JavaDoc key = prefix+keys[i];
32       if(exported.isString(key))
33         result.add(key);
34     }
35   }
36   public String JavaDoc[] getExports(){
37     final int sz = body.size();
38     final ArrayList JavaDoc result = new ArrayList JavaDoc(sz);
39     for(int i=0; i<parents.length; i++){
40       final Import parent = parents[i];
41       final String JavaDoc[] keys = parent.getKeys();
42       filter(exported, parent.getPrefix(), keys, result);
43     }
44     for(int i=0; i<sz; i++){
45       final Object JavaDoc key = body.getKey(i);
46       if(key instanceof String JavaDoc && exported.isString((String JavaDoc)key))
47         result.add(key);
48     }
49     final String JavaDoc[] ret = new String JavaDoc[result.size()];
50     result.toArray(ret);
51     return ret;
52   }
53   SimpleModule(Object JavaDoc module_id, String JavaDoc name, String JavaDoc description,
54       String JavaDoc[] dependencies, Import[] imports,
55       Body body,
56       StringPredicate exported) {
57     this.name = name;
58     this.description = description;
59     this.module_id = module_id;
60     this.dependencies = dependencies;
61     this.parents = imports;
62     this.body = body;
63     this.exported = exported;
64   }
65   public String JavaDoc[] getDependencies(){
66     return dependencies;
67   }
68   /*
69   public String[] getDependencies(){
70     final Set result = new HashSet();
71     for(int i=0; i<parents.length; i++){
72       result.addAll(Arrays.asList(parents[i].getImportee().getDependencies()));
73     }
74     result.addAll(Arrays.asList(dependencies));
75     final String[] ret = new String[result.size()];
76     result.toArray(ret);
77     return ret;
78   }*/

79
80   public void register(Registry reg){
81     final Registry myreg = new FilteringRegistry(exported, reg);
82     for(int i=0; i<parents.length; i++){
83       parents[i].register(myreg);
84     }
85     body.register(myreg);
86   }
87   public StringPredicate getExportFilter() {
88     return exported;
89   }
90   
91 }
92
Popular Tags