You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/05/27 13:40:15 UTC
svn commit: r1486586 -
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
Author: rmannibucau
Date: Mon May 27 11:40:15 2013
New Revision: 1486586
URL: http://svn.apache.org/r1486586
Log:
wrong PersistenceContextVisitor impl (when upgrading to asm4)
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java?rev=1486586&r1=1486585&r2=1486586&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java Mon May 27 11:40:15 2013
@@ -36,8 +36,6 @@ import java.util.Map;
import java.util.Set;
public class PersistenceContextAnnFactory {
- public static final AnnotationVisitor EMPTY_ANNOTATION_VISITOR = new AnnotationVisitor(Opcodes.ASM4) {
- };
private static boolean useAsm;
static {
boolean isPersistenceContextAnnotationValid = false;
@@ -62,7 +60,7 @@ public class PersistenceContextAnnFactor
try {
URL u = c.getResource("/" + c.getName().replace('.', '/') + ".class");
ClassReader r = new ClassReader(IO.read(u));
- r.accept(new PersistenceContextReader(), ClassReader.SKIP_DEBUG);
+ r.accept(new PersistenceContextReader(contexts), ClassReader.SKIP_DEBUG);
} catch (IOException e) {
throw new OpenEJBException("Unable to read class " + c.getName());
}
@@ -153,9 +151,14 @@ public class PersistenceContextAnnFactor
}
}
- private class PersistenceContextReader extends EmptyVisitor {
+ private static class PersistenceContextReader extends EmptyVisitor {
private String className;
private String currentName;
+ private final Map<String, AsmPersistenceContext> contexts;
+
+ private PersistenceContextReader(Map<String, AsmPersistenceContext> contexts) {
+ this.contexts = contexts;
+ }
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
className = name.replace("/", ".");
@@ -185,41 +188,44 @@ public class PersistenceContextAnnFactor
return visitAnnotation(null, desc);
}
+ @Override
public AnnotationVisitor visitAnnotation(String name, String desc) {
if ("Ljavax/persistence/PersistenceContext;".equals(desc)) {
- PersistenceContextVisitor visitor = new PersistenceContextVisitor(className, currentName);
- return visitor;
+ return new PersistenceContextVisitor(className, currentName, contexts);
} else if ("Ljavax/persistence/PersistenceContexts;".equals(desc)) {
- return new AnnotationVisitor(Opcodes.ASM4) {
- @Override
- public AnnotationVisitor visitAnnotation(String name, String desc) {
- return PersistenceContextReader.this.visitAnnotation(name, desc);
- }
-
- @Override
- public AnnotationVisitor visitArray(String name) {
- return PersistenceContextReader.this.visitArray(name);
- }
- };
+ return super.visitAnnotation(name, desc);
}
- return EMPTY_ANNOTATION_VISITOR;
+ return new EmptyVisitor().annotationVisitor();
}
+ @Override
public AnnotationVisitor visitArray(String string) {
- return new AnnotationVisitor(Opcodes.ASM4) {
- @Override
- public AnnotationVisitor visitAnnotation(String name, String desc) {
- return PersistenceContextReader.this.visitAnnotation(name, desc);
- }
- };
+ return annotationVisitor();
+ }
+
+ @Override
+ public AnnotationVisitor visitMethodParameterAnnotation(int i, String string, boolean b) {
+ return new EmptyVisitor().annotationVisitor();
+ }
+
+ @Override
+ public AnnotationVisitor visitParameterAnnotation(int i, String string, boolean b) {
+ return new EmptyVisitor().annotationVisitor();
+ }
+
+ @Override
+ public AnnotationVisitor visitAnnotationDefault() {
+ return new EmptyVisitor().annotationVisitor();
}
}
- private class PersistenceContextVisitor extends AnnotationVisitor {
+ private static class PersistenceContextVisitor extends AnnotationVisitor {
+ private final Map<String, AsmPersistenceContext> contexts;
private AsmPersistenceContext persistenceContext = new AsmPersistenceContext();
- public PersistenceContextVisitor(String className, String memberName) {
+ public PersistenceContextVisitor(String className, String memberName, Map<String, AsmPersistenceContext> contexts) {
super(Opcodes.ASM4);
+ this.contexts = contexts;
persistenceContext.name = className + "/" + memberName;
}
@@ -233,7 +239,7 @@ public class PersistenceContextAnnFactor
public AnnotationVisitor visitAnnotation(String name, String desc) {
setValue(name, desc);
- return null;
+ return this;
}
private void setValue(String name, String value) {
@@ -247,7 +253,7 @@ public class PersistenceContextAnnFactor
}
public AnnotationVisitor visitArray(String string) {
- return new AnnotationVisitor(Opcodes.ASM4) {
+ return new EmptyVisitor() {
private String name;
private String value;
@@ -262,7 +268,7 @@ public class PersistenceContextAnnFactor
public void visitEnd() {
persistenceContext.properties.put(name, value);
}
- };
+ }.annotationVisitor();
}
public void visitEnd() {