aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/javassist/bytecode/ConstPool.java3
-rw-r--r--src/test/Test.java71
2 files changed, 29 insertions, 45 deletions
diff --git a/src/main/javassist/bytecode/ConstPool.java b/src/main/javassist/bytecode/ConstPool.java
index 78935160..06df1327 100644
--- a/src/main/javassist/bytecode/ConstPool.java
+++ b/src/main/javassist/bytecode/ConstPool.java
@@ -222,6 +222,9 @@ public final class ConstPool {
/**
* Returns the <code>tag</code> field of the constant pool table
* entry at the given index.
+ *
+ * @return either <code>CONST_Class</code>, <code>CONST_Fieldref</code>,
+ * <code>CONST_Methodref</code>, or ...
*/
public int getTag(int index) {
return getItem(index).getTag();
diff --git a/src/test/Test.java b/src/test/Test.java
index 441879db..3eb9a601 100644
--- a/src/test/Test.java
+++ b/src/test/Test.java
@@ -1,50 +1,31 @@
import javassist.*;
+import javassist.bytecode.*;
+import javassist.bytecode.annotation.*;
-public class Test {
- public static void main(String[] args) {
- CtClass badClass = ClassPool.getDefault().makeClass("badClass");
- String src = String.join(System.getProperty("line.separator"),
- "public void eval () {",
- " if (true) {",
- " double t=0;",
- " } else {",
- " double t=0;",
- " }",
- " for (int i=0; i < 2; i++) {",
- " int a=0;",
- " int b=0;",
- " int c=0;",
- " int d=0;",
- " if (true) {",
- " int e = 0;",
- " }",
- " }",
- "}");
- System.out.println(src);
- try {
- badClass.addMethod(CtMethod.make(src, badClass));
- badClass.debugWriteFile("./bin");
- Class clazzz = badClass.toClass();
- Object obj = clazzz.newInstance(); // <-- falls here
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
+@interface Entity {}
- public void eval () {
- if (true) {
- double t=0;
- } else {
- double t=0;
- }
- for (int i=0; i < 2; i++) {
- int a=0;
- int b=0;
- int c=0;
- int d=0;
- if (true) {
- int e = 0;
- }
- }
+@interface Table {}
+
+public class Test {
+ public static void main(String[] args) throws Exception {
+ ClassPool classPool = ClassPool.getDefault();
+ ClassFile cf = classPool.makeClass("TestSub").getClassFile();
+ ConstPool constPool = cf.getConstPool();
+ Annotation[] annotations = new Annotation[2];
+ AnnotationsAttribute attrib =
+ new AnnotationsAttribute(constPool, AnnotationsAttribute.visibleTag);
+ Annotation annotation = new Annotation(constPool, classPool.get("Entity"));
+ annotations[0] = annotation;
+ // Add @Table(name="",schema="") to class
+ annotation = new Annotation(constPool, classPool.get("Table"));
+ annotation.addMemberValue("name", new StringMemberValue("name", constPool));
+ annotation.addMemberValue("schema", new StringMemberValue("schema", constPool));
+ ArrayMemberValue blankMemberValueArray = new ArrayMemberValue(new AnnotationMemberValue(constPool), constPool);
+ blankMemberValueArray.setValue(new MemberValue[0]);
+ annotation.addMemberValue("uniqueConstraints", blankMemberValueArray);
+ annotation.addMemberValue("indexes", blankMemberValueArray);
+ annotations[1] = annotation;
+ attrib.setAnnotations(annotations);
+ cf.addAttribute(attrib);
}
}