KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > utils > parser > DaffodilClassLoader


1 package com.daffodilwoods.daffodildb.utils.parser;
2
3 import java.io.ObjectInputStream JavaDoc;
4 import java.util.HashMap JavaDoc;
5 import java.net.URL JavaDoc;
6 import com.daffodilwoods.database.resource.*;
7 import java.io.*;
8
9 public class DaffodilClassLoader extends ClassLoader JavaDoc {
10    HashMap JavaDoc mapping = new HashMap JavaDoc();
11    HashMap JavaDoc obfuscateMapping = new HashMap JavaDoc();
12    HashMap JavaDoc qualifiedMapping = new HashMap JavaDoc();
13
14    private DaffodilClassLoader() throws DException {
15       intialialiseObfuscatedHashMap();
16
17
18
19   }
20
21    protected Class JavaDoc findClass(String JavaDoc onlyClassName) throws ClassNotFoundException JavaDoc {
22       Object JavaDoc originalFullClassName = mapping.get(onlyClassName);
23       if (originalFullClassName == null) {
24          throw new ClassNotFoundException JavaDoc(onlyClassName +
25                                           " not found, converted class " +
26                                           originalFullClassName);
27       }
28       String JavaDoc obfuscatedClassName = (String JavaDoc) obfuscateMapping.get(originalFullClassName);
29       if (obfuscatedClassName == null) {
30          obfuscatedClassName = (String JavaDoc) originalFullClassName;
31       }
32       return Class.forName(obfuscatedClassName);
33    }
34
35    private void intialialiseObfuscatedHashMap() throws DException {
36       URL JavaDoc url = getClass().getResource("classes.obj");
37       if (url == null) {
38          throw new DException("DSE0", new Object JavaDoc[] {"Classes.obj file is missing in classpath."});
39       }
40       ObjectInputStream JavaDoc inputStream = null;
41       try {
42          inputStream = new ObjectInputStream JavaDoc(new BufferedInputStream(url.openStream()));
43          mapping = (HashMap JavaDoc) inputStream.readObject();
44          inputStream.close();
45       } catch (ClassNotFoundException JavaDoc ex) {
46          throw new DException("DSE0", new Object JavaDoc[] {ex});
47       } catch (IOException ex) {
48          throw new DException("DSE0", new Object JavaDoc[] {ex});
49       }
50       url = getClass().getResource("AB.obj");
51       if (url != null) {
52          try {
53              inputStream = new ObjectInputStream JavaDoc(new BufferedInputStream(url.openStream()));
54             obfuscateMapping = (HashMap JavaDoc) inputStream.readObject();
55             inputStream.close();
56          } catch (ClassNotFoundException JavaDoc ex) {
57             throw new DException("DSE0", new Object JavaDoc[] {ex});
58          } catch (IOException ex) {
59             throw new DException("DSE0", new Object JavaDoc[] {ex});
60          }
61       }
62       if (mapping == null) {
63          mapping = new HashMap JavaDoc();
64       }
65       if (obfuscateMapping == null) {
66          obfuscateMapping = new HashMap JavaDoc();
67       }
68       initialiseQualifiedMapping();
69    }
70
71    private void initialiseQualifiedMapping() {
72       Object JavaDoc[] obj = obfuscateMapping.keySet().toArray();
73       int length = obj.length;
74       for (int i = 0; i < length; i++) {
75          Object JavaDoc temp = obfuscateMapping.get(obj[i]);
76          qualifiedMapping.put(temp, obj[i]);
77       }
78    }
79
80    static DaffodilClassLoader daffodilClassloader;
81
82    public synchronized static DaffodilClassLoader getInstance() throws DException {
83       if (daffodilClassloader == null)
84          daffodilClassloader = new DaffodilClassLoader();
85       return daffodilClassloader;
86    }
87
88    public String JavaDoc getOfuscatedName(String JavaDoc qualifiedName) {
89       String JavaDoc ste = (String JavaDoc) obfuscateMapping.get(qualifiedName);
90       return ste == null ? qualifiedName : ste;
91    }
92
93    public String JavaDoc getQualifiedName(String JavaDoc ofuscatedName) {
94       String JavaDoc ste = (String JavaDoc) qualifiedMapping.get(ofuscatedName);
95       return ste == null ? ofuscatedName : ste;
96    }
97
98    protected Class JavaDoc loadClass(String JavaDoc name, boolean resolve) throws ClassNotFoundException JavaDoc {
99       Class JavaDoc c = findLoadedClass(name);
100       if (c == null) {
101          synchronized (name.intern()) {
102             c = findClass(name);
103          }
104       }
105       if (resolve) {
106          resolveClass(c);
107       }
108       return c;
109    }
110
111    /* private static void maintainFiles() throws Exception{
112       File ff = new File("D:/Data/MethRemQS/s/daffodildb1-3/com/daffodilwoods/daffodildb/server/sql99");
113       File ff1 = new File("D:/Data/MethRemQS/i/interfaces/com/daffodilwoods/daffodildb/server/sql99");
114       HashMap map = new HashMap();
115       int length = "D:/Data/MethRemQS/s/daffodildb1-3/".length();
116       add(ff,map,length);
117       length = "D:/Data/MethRemQS/i/interfaces/".length();
118       add(ff1,map,length);
119       Object[] key = map.keySet().toArray();
120       for (int i = 0; i < key.length; i++) {
121          ;//// Removed By Program ** System.out.println(i+" "+key[i]+" "+ map.get(key[i]));
122       }
123       ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:/classes2.obj"));
124       oos.writeObject(map);
125       oos.close();
126       System.exit(0);
127       }
128       private static void add(File ff,HashMap map,int length){
129       if(ff.isDirectory()){
130          File[] ffs = ff.listFiles();
131          for (int i = 0; i < ffs.length; i++) {
132             add(ffs[i],map,length);
133          }
134       }else if(ff.isFile()){
135          String name = ff.getName();
136          if(name.endsWith(".java")){
137             boolean b = name.startsWith("Opt") || name.startsWith("Rep");
138             char c = name.charAt(0);
139             if(c == '_' || (!b && c != 'S' && Character.isUpperCase(c))){
140          ;//// Removed By Program ** System.out.println("Byepassing :::: "+name);
141                return;
142             }
143             name = name.substring(0,name.lastIndexOf('.'));
144             String aname = ""+ff;
145             aname = aname.substring(length,aname.lastIndexOf('.'));
146             aname = aname.replace('\\','.');
147             map.put(name,aname);
148          }
149       }
150     }
151     */

152 }
153
Popular Tags