summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-07-11 06:24:57 +0000
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-07-11 06:24:57 +0000
commitf6c16db268e47c2202f6098f4fae5a4537238857 (patch)
tree016cd632c56ad01120f54dd7052bfa31d54a2ada
parentabef4b9fb6d0490c8a8f41d976133239228f679e (diff)
downloadjavassist-f6c16db268e47c2202f6098f4fae5a4537238857.tar.gz
javassist-f6c16db268e47c2202f6098f4fae5a4537238857.zip
added ClassPool#removeCached so that subclasses of ClassPool can do
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
-rw-r--r--src/main/javassist/ClassPool.java15
-rw-r--r--tutorial/tutorial.html20
2 files changed, 30 insertions, 5 deletions
diff --git a/src/main/javassist/ClassPool.java b/src/main/javassist/ClassPool.java
index 61314777..509cf8d8 100644
--- a/src/main/javassist/ClassPool.java
+++ b/src/main/javassist/ClassPool.java
@@ -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.");
diff --git a/tutorial/tutorial.html b/tutorial/tutorial.html
index 36104e30..d0a26e3b 100644
--- a/tutorial/tutorial.html
+++ b/tutorial/tutorial.html
@@ -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.