]> source.dussan.org Git - javassist.git/commitdiff
added ClassPool#removeCached so that subclasses of ClassPool can do
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Fri, 11 Jul 2003 06:24:57 +0000 (06:24 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Fri, 11 Jul 2003 06:24:57 +0000 (06:24 +0000)
their own caching.   A bug in CtClassType#setName was fixed.

git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@29 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/ClassPool.java
tutorial/tutorial.html

index 613147772a5ea20a7f11d82f0e96ed6b23a0f53f..509cf8d8d2955e95e6ff45dde59742ff874dd5a7 100644 (file)
@@ -86,12 +86,25 @@ public class ClassPool {
    /**
     * Provide a hook so that subclasses can do their own
     * caching of classes
+    *
+    * @see #removeCached(String)
     */
     protected CtClass getCached(String classname)
     {
         return (CtClass)classes.get(classname); 
     }
 
+   /**
+    * Provide a hook so that subclasses can do their own
+    * caching of classes
+    *
+    * @see #getCached(String)
+    */
+    protected void removeCached(String classname)
+    {
+        classes.remove(classname);
+    }
+
     /**
      * Creates a class pool.
      *
@@ -480,7 +493,7 @@ public class ClassPool {
     synchronized void classNameChanged(String oldname, CtClass clazz) {
         CtClass c = (CtClass)getCached(oldname);
         if (c == clazz)         // must check this equation
-            classes.remove(c);
+            removeCached(oldname);
 
         String newName = clazz.getName();
         checkNotFrozen(newName, "the class with the new name is frozen.");
index 36104e30abb19cdcf5edc7b03f91f3f38137e0e5..d0a26e3bec2c66f9e2f34bbcf16bfbf8669df86e 100644 (file)
@@ -34,9 +34,10 @@ Shigeru Chiba
 Java bytecode is stored in a binary file called a class file.
 Each class file contains one Java class or interface.
 
-<p>The class <code>Javassist.CtClass</code> is an abstract representation
-of a class file.  A <code>CtClass</code> object is a handle for dealing
-with a class file.  The following program is a very simple example:
+<p>The class <code>Javassist.CtClass</code> is an abstract
+representation of a class file.  A <code>CtClass</code> (compile-time
+class) object is a handle for dealing with a class file.  The
+following program is a very simple example:
 
 <ul><pre>
 ClassPool pool = ClassPool.getDefault();
@@ -57,7 +58,18 @@ to a file or an output stream.
 mapping between classes and <code>CtClass</code> objects.  Javassist
 never allows two distinct <code>CtClass</code> objects to represent
 the same class.  This is a crucial feature to consistent program
-transformaiton.
+transformaiton.  If you need, however, you can deal with multiple
+instances of <code>ClassPool</code> at the same time.  To create a new
+instance of <code>ClassPool</code>, write the following code:
+
+<ul><pre>
+ClassPool cp = new ClassPool(null);
+cp.appendSystemPath();
+cp.insertClassPath(".");    // or something appropriate
+</pre></ul>
+
+<p><code>ClassPool.getDefault()</code> is just a singleton factory
+method provided for convenience.
 
 <p>To modify the definition of a class, the users must first obtain a
 reference to the <code>CtClass</code> object representing that class.