aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-09-01 09:45:37 +0000
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>2003-09-01 09:45:37 +0000
commit1592597bc675e159a13b289e3a62a91fdfd76bdc (patch)
treedb4a2671de4609af511e206438556d54cd8d638c
parent377937bfbebda0065ec18dfb742504da22529cb4 (diff)
downloadjavassist-1592597bc675e159a13b289e3a62a91fdfd76bdc.tar.gz
javassist-1592597bc675e159a13b289e3a62a91fdfd76bdc.zip
implemented toString().
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@40 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
-rw-r--r--src/main/javassist/CtArray.java5
-rw-r--r--src/main/javassist/CtBehavior.java7
-rw-r--r--src/main/javassist/CtClass.java22
-rw-r--r--src/main/javassist/CtClassType.java32
-rw-r--r--src/main/javassist/CtField.java7
-rw-r--r--src/main/javassist/CtMember.java20
-rw-r--r--src/main/javassist/CtNewClass.java7
-rw-r--r--src/main/javassist/CtPrimitiveType.java2
8 files changed, 102 insertions, 0 deletions
diff --git a/src/main/javassist/CtArray.java b/src/main/javassist/CtArray.java
index bf4c3b50..8d600e6c 100644
--- a/src/main/javassist/CtArray.java
+++ b/src/main/javassist/CtArray.java
@@ -27,6 +27,11 @@ final class CtArray extends CtClass {
pool = cp;
}
+ protected void extendToString(StringBuffer buffer) {
+ buffer.append(" pool=");
+ buffer.append(pool);
+ }
+
public ClassPool getClassPool() {
return pool;
}
diff --git a/src/main/javassist/CtBehavior.java b/src/main/javassist/CtBehavior.java
index e37c81dd..54338a0a 100644
--- a/src/main/javassist/CtBehavior.java
+++ b/src/main/javassist/CtBehavior.java
@@ -32,6 +32,13 @@ public abstract class CtBehavior extends CtMember {
methodInfo = minfo;
}
+ protected void extendToString(StringBuffer buffer) {
+ buffer.append(' ');
+ buffer.append(getName());
+ buffer.append(' ');
+ buffer.append(methodInfo.getDescriptor());
+ }
+
/**
* Returns the MethodInfo representing this member in the
* class file.
diff --git a/src/main/javassist/CtClass.java b/src/main/javassist/CtClass.java
index d98391ef..a0c3b17e 100644
--- a/src/main/javassist/CtClass.java
+++ b/src/main/javassist/CtClass.java
@@ -148,6 +148,28 @@ public abstract class CtClass {
}
/**
+ * Converts the object to a string.
+ */
+ public String toString() {
+ StringBuffer buf = new StringBuffer(getClass().getName());
+ buf.append("@");
+ buf.append(Integer.toHexString(hashCode()));
+ buf.append("[");
+ buf.append(Modifier.toString(getModifiers()));
+ buf.append(' ');
+ buf.append(getName());
+ extendToString(buf);
+ buf.append("]");
+ return buf.toString();
+ }
+
+ /**
+ * Implemented in subclasses to add to the {@link #toString()} result.
+ * Subclasses should put a space before each token added to the buffer.
+ */
+ abstract protected void extendToString(StringBuffer buffer);
+
+ /**
* Returns a <code>ClassPool</code> for this class.
*/
public ClassPool getClassPool() { return null; }
diff --git a/src/main/javassist/CtClassType.java b/src/main/javassist/CtClassType.java
index a9aa9c15..1e73f5d0 100644
--- a/src/main/javassist/CtClassType.java
+++ b/src/main/javassist/CtClassType.java
@@ -65,6 +65,38 @@ class CtClassType extends CtClass {
qualifiedName = classfile.getName();
}
+ protected void extendToString(StringBuffer buffer) {
+ if (wasChanged)
+ buffer.append(" changed");
+
+ if (wasFrozen)
+ buffer.append(" frozen");
+
+ CtField field = getFieldsCache();
+ buffer.append(" fields=");
+ while (field != null) {
+ buffer.append(field);
+ buffer.append(", ");
+ field = field.next;
+ }
+
+ CtConstructor c = getConstructorsCache();
+ buffer.append(" constructors=");
+ while (c != null) {
+ buffer.append(c);
+ buffer.append(", ");
+ c = c.next;
+ }
+
+ CtMethod m = getMethodsCache();
+ buffer.append(" methods=");
+ while (m != null) {
+ buffer.append(m);
+ buffer.append(", ");
+ m = m.next;
+ }
+ }
+
protected void eraseCache() {
fieldsCache = null;
constructorsCache = null;
diff --git a/src/main/javassist/CtField.java b/src/main/javassist/CtField.java
index 5d279d20..5adc76c7 100644
--- a/src/main/javassist/CtField.java
+++ b/src/main/javassist/CtField.java
@@ -98,6 +98,13 @@ public class CtField extends CtMember {
next = null;
}
+ protected void extendToString(StringBuffer buffer) {
+ buffer.append(' ');
+ buffer.append(getName());
+ buffer.append(' ');
+ buffer.append(fieldInfo.getDescriptor());
+ }
+
/* Javac.CtFieldWithInit overrides.
*/
protected ASTree getInitAST() { return null; }
diff --git a/src/main/javassist/CtMember.java b/src/main/javassist/CtMember.java
index 94094e79..013437d7 100644
--- a/src/main/javassist/CtMember.java
+++ b/src/main/javassist/CtMember.java
@@ -24,6 +24,26 @@ public abstract class CtMember {
protected CtMember(CtClass clazz) { declaringClass = clazz; }
+ public String toString() {
+ StringBuffer buffer = new StringBuffer(getClass().getName());
+ buffer.append("@");
+ buffer.append(Integer.toHexString(hashCode()));
+ buffer.append("[");
+ buffer.append(Modifier.toString(getModifiers()));
+ extendToString(buffer);
+ buffer.append("]");
+ return buffer.toString();
+ }
+
+ /**
+ * Invoked by {@link #toString()} to add to the buffer and provide the
+ * complete value. Subclasses should invoke this method, adding a
+ * space before each token. The modifiers for the member are
+ * provided first; subclasses should provide additional data such
+ * as return type, field or method name, etc.
+ */
+ protected abstract void extendToString(StringBuffer buffer);
+
/**
* Returns the class that declares this member.
*/
diff --git a/src/main/javassist/CtNewClass.java b/src/main/javassist/CtNewClass.java
index 2c8613c2..30cacf0d 100644
--- a/src/main/javassist/CtNewClass.java
+++ b/src/main/javassist/CtNewClass.java
@@ -41,6 +41,13 @@ class CtNewClass extends CtClassType {
hasConstructor = isInterface;
}
+ protected void extendToString(StringBuffer buffer) {
+ if (hasConstructor)
+ buffer.append(" hasConstructor");
+
+ super.extendToString(buffer);
+ }
+
public void addConstructor(CtConstructor c)
throws CannotCompileException
{
diff --git a/src/main/javassist/CtPrimitiveType.java b/src/main/javassist/CtPrimitiveType.java
index 7bd82821..62ed5e13 100644
--- a/src/main/javassist/CtPrimitiveType.java
+++ b/src/main/javassist/CtPrimitiveType.java
@@ -41,6 +41,8 @@ public final class CtPrimitiveType extends CtClass {
dataSize = size;
}
+ protected void extendToString(StringBuffer buffer) {}
+
/**
* Returns <code>true</code> if this object represents a primitive
* Java type: boolean, byte, char, short, int, long, float, double,