You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/10/12 23:49:37 UTC
svn commit: r463453 - in
/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src:
main/java/org/apache/cayenne/enhancer/ test/java/org/apache/cayenne/enhancer/
Author: aadamchik
Date: Thu Oct 12 14:49:36 2006
New Revision: 463453
URL: http://svn.apache.org/viewvc?view=rev&rev=463453
Log:
CAY-682
another round of refactoring the enhancer code - still trying to come up with naming that makes sense
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorVisitor.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactory.java
- copied, changed from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancementHelper.java
- copied, changed from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/Enhancer.java
- copied, changed from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ASMTransformer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerVisitorFactory.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/GetterVisitor.java
- copied, changed from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentGetterVisitor.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorVisitor.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceVisitor.java
- copied, changed from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceEnhancer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/SetterVisitor.java
- copied, changed from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentSetterVisitor.java
Removed:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ASMTransformer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorEnhancer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorEnhancer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentGetterVisitor.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceEnhancer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentSetterVisitor.java
Modified:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java
Added: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorVisitor.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorVisitor.java?view=auto&rev=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorVisitor.java (added)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorVisitor.java Thu Oct 12 14:49:36 2006
@@ -0,0 +1,98 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+package org.apache.cayenne.enhancer;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.objectweb.asm.ClassAdapter;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.MethodVisitor;
+
+/**
+ * An enhancer that adds interceptor code to the getters and setters.
+ *
+ * @since 3.0
+ * @author Andrus Adamchik
+ */
+public abstract class AccessorVisitor extends ClassAdapter {
+
+ // duplicated from JpaClassDescriptor.
+ private static final Pattern GETTER_PATTERN = Pattern
+ .compile("^(is|get)([A-Z])(.*)$");
+
+ private static final Pattern SETTER_PATTERN = Pattern.compile("^set([A-Z])(.*)$");
+
+ public static String propertyNameForGetter(String getterName) {
+ Matcher getMatch = GETTER_PATTERN.matcher(getterName);
+ if (getMatch.matches()) {
+ return getMatch.group(2).toLowerCase() + getMatch.group(3);
+ }
+
+ return null;
+ }
+
+ public static String propertyNameForSetter(String setterName) {
+ Matcher setMatch = SETTER_PATTERN.matcher(setterName);
+
+ if (setMatch.matches()) {
+ return setMatch.group(1).toLowerCase() + setMatch.group(2);
+ }
+
+ return null;
+ }
+
+ public AccessorVisitor(ClassVisitor cw) {
+ super(cw);
+ }
+
+ protected MethodVisitor visitGetter(MethodVisitor mv, String property) {
+ return mv;
+ }
+
+ protected MethodVisitor visitSetter(MethodVisitor mv, String property) {
+ return mv;
+ }
+
+ @Override
+ public MethodVisitor visitMethod(
+ int access,
+ String name,
+ String desc,
+ String signature,
+ String[] exceptions) {
+
+ MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
+
+ // TODO: andrus, 10/8/2006 - check method sig for real... just checking
+ // the name is not enough
+
+ String getProperty = AccessorVisitor.propertyNameForGetter(name);
+ if (getProperty != null) {
+ return visitGetter(mv, getProperty);
+ }
+
+ String setProperty = AccessorVisitor.propertyNameForSetter(name);
+ if (setProperty != null) {
+ return visitSetter(mv, setProperty);
+ }
+
+ return mv;
+ }
+}
Copied: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactory.java (from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactory.java?view=diff&rev=463453&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java&r1=463437&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactory.java&r2=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactory.java Thu Oct 12 14:49:36 2006
@@ -35,15 +35,15 @@
* @since 3.0
* @author Andrus Adamchik
*/
-public class CayenneTransformer extends ASMTransformer {
+public class CayenneEnhancerVisitorFactory implements EnhancerVisitorFactory {
protected Map<String, ObjEntity> entitiesByClass;
- public CayenneTransformer(EntityResolver entityResolver) {
+ public CayenneEnhancerVisitorFactory(EntityResolver entityResolver) {
indexEntities(entityResolver);
}
- private void indexEntities(EntityResolver entityResolver) {
+ protected void indexEntities(EntityResolver entityResolver) {
// EntityResolver doesn't have an index by class name, (let alone using
// "internal" class names with slashes as keys), so we have to build it
// manually
@@ -60,15 +60,15 @@
}
}
- protected ClassVisitor createVisitor(String className, ClassVisitor out) {
+ public ClassVisitor createVisitor(String className, ClassVisitor out) {
ObjEntity entity = entitiesByClass.get(className);
if (entity == null) {
return null;
}
// create enhancer chain
- PersistentInterfaceEnhancer e1 = new PersistentInterfaceEnhancer(out);
- PersistentAccessorEnhancer e2 = new PersistentAccessorEnhancer(e1, entity);
+ PersistentInterfaceVisitor e1 = new PersistentInterfaceVisitor(out);
+ PersistentAccessorVisitor e2 = new PersistentAccessorVisitor(e1, entity);
return e2;
}
}
Copied: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancementHelper.java (from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancementHelper.java?view=diff&rev=463453&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java&r1=463437&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancementHelper.java&r2=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancementHelper.java Thu Oct 12 14:49:36 2006
@@ -32,13 +32,13 @@
* @since 3.0
* @author Andrus Adamchik
*/
-public class EnhancerHelper {
+public class EnhancementHelper {
private String fieldPrefix = "$cay_";
private ClassVisitor classVisitor;
private Type currentClass;
- public EnhancerHelper(ClassVisitor classVisitor) {
+ public EnhancementHelper(ClassVisitor classVisitor) {
this.classVisitor = classVisitor;
}
Copied: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/Enhancer.java (from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ASMTransformer.java)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/Enhancer.java?view=diff&rev=463453&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ASMTransformer.java&r1=463437&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/Enhancer.java&r2=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ASMTransformer.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/Enhancer.java Thu Oct 12 14:49:36 2006
@@ -34,22 +34,16 @@
* @since 3.0
* @author Andrus Adamchik
*/
-public abstract class ASMTransformer implements ClassFileTransformer {
+public class Enhancer implements ClassFileTransformer {
protected Log logger;
+ protected EnhancerVisitorFactory visitorFactory;
- public ASMTransformer() {
+ public Enhancer(EnhancerVisitorFactory visitorFactory) {
logger = LogFactory.getLog(getClass());
+ this.visitorFactory = visitorFactory;
}
- /**
- * Creates and returns an ASM ClassVisitor for enhancing a class. Returned visitor is
- * either null, if no enhancement of this class is needed, or a wrapper around
- * provided "out" ClassVisitor. Often it is a chain of visitors, each doing its own
- * enhancement.
- */
- protected abstract ClassVisitor createVisitor(String className, ClassVisitor out);
-
public byte[] transform(
ClassLoader loader,
String className,
@@ -60,7 +54,7 @@
ClassReader reader = new ClassReader(classfileBuffer);
ClassWriter writer = new ClassWriter(reader, true);
- ClassVisitor visitor = createVisitor(className, writer);
+ ClassVisitor visitor = visitorFactory.createVisitor(className, writer);
if (visitor == null) {
// per instrumentation docs, if no transformation occured, we must return null
return null;
Added: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerVisitorFactory.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerVisitorFactory.java?view=auto&rev=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerVisitorFactory.java (added)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerVisitorFactory.java Thu Oct 12 14:49:36 2006
@@ -0,0 +1,38 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+package org.apache.cayenne.enhancer;
+
+import org.objectweb.asm.ClassVisitor;
+
+/**
+ * A factory for the ASM ClassVisitors used during class enhancement.
+ *
+ * @since 3.0
+ * @author Andrus Adamchik
+ */
+public interface EnhancerVisitorFactory {
+
+ /**
+ * Creates and returns an ASM ClassVisitor for enhancing a class. Returned visitor is
+ * either null if no enhancement of this class is needed, or a wrapper around provided
+ * "out" ClassVisitor. Often it is a chain of visitors, each doing its own
+ * enhancement.
+ */
+ ClassVisitor createVisitor(String className, ClassVisitor out);
+}
Copied: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/GetterVisitor.java (from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentGetterVisitor.java)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/GetterVisitor.java?view=diff&rev=463453&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentGetterVisitor.java&r1=463437&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/GetterVisitor.java&r2=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentGetterVisitor.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/GetterVisitor.java Thu Oct 12 14:49:36 2006
@@ -29,12 +29,12 @@
* @since 3.0
* @author Andrus Adamchik
*/
-class PersistentGetterVisitor extends MethodAdapter {
+public class GetterVisitor extends MethodAdapter {
- private EnhancerHelper helper;
+ private EnhancementHelper helper;
private String propertyName;
- PersistentGetterVisitor(MethodVisitor mv, EnhancerHelper helper,
+ public GetterVisitor(MethodVisitor mv, EnhancementHelper helper,
String propertyName) {
super(mv);
this.helper = helper;
Added: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorVisitor.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorVisitor.java?view=auto&rev=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorVisitor.java (added)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorVisitor.java Thu Oct 12 14:49:36 2006
@@ -0,0 +1,70 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+package org.apache.cayenne.enhancer;
+
+import org.apache.cayenne.map.ObjEntity;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.MethodVisitor;
+
+/**
+ * Accessor enhancer that enhances getters and setters mapped in a given {@link ObjEntity}.
+ *
+ * @author Andrus Adamchik
+ * @since 3.0
+ */
+public class PersistentAccessorVisitor extends AccessorVisitor {
+
+ private ObjEntity entity;
+ private EnhancementHelper helper;
+
+ public PersistentAccessorVisitor(ClassVisitor visitor, ObjEntity entity) {
+ super(visitor);
+ this.entity = entity;
+ this.helper = new EnhancementHelper(this);
+ }
+
+ @Override
+ public void visit(
+ int version,
+ int access,
+ String name,
+ String signature,
+ String superName,
+ String[] interfaces) {
+
+ helper.reset(name);
+ super.visit(version, access, name, signature, superName, interfaces);
+ }
+
+ @Override
+ protected MethodVisitor visitGetter(MethodVisitor mv, String property) {
+ return (entity.getAttribute(property) != null) ? new GetterVisitor(
+ mv,
+ helper,
+ property) : mv;
+ }
+
+ @Override
+ protected MethodVisitor visitSetter(MethodVisitor mv, String property) {
+ return (entity.getAttribute(property) != null) ? new SetterVisitor(
+ mv,
+ helper,
+ property) : mv;
+ }
+}
Copied: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceVisitor.java (from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceEnhancer.java)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceVisitor.java?view=diff&rev=463453&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceEnhancer.java&r1=463437&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceVisitor.java&r2=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceEnhancer.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceVisitor.java Thu Oct 12 14:49:36 2006
@@ -31,13 +31,13 @@
* @since 3.0
* @author Andrus Adamchik
*/
-public class PersistentInterfaceEnhancer extends ClassAdapter {
+public class PersistentInterfaceVisitor extends ClassAdapter {
- protected EnhancerHelper helper;
+ protected EnhancementHelper helper;
- public PersistentInterfaceEnhancer(ClassVisitor visitor) {
+ public PersistentInterfaceVisitor(ClassVisitor visitor) {
super(visitor);
- this.helper = new EnhancerHelper(this);
+ this.helper = new EnhancementHelper(this);
}
/**
Copied: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/SetterVisitor.java (from r463437, incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentSetterVisitor.java)
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/SetterVisitor.java?view=diff&rev=463453&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentSetterVisitor.java&r1=463437&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/SetterVisitor.java&r2=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentSetterVisitor.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/SetterVisitor.java Thu Oct 12 14:49:36 2006
@@ -29,12 +29,12 @@
* @since 3.0
* @author Andrus Adamchik
*/
-class PersistentSetterVisitor extends MethodAdapter {
+public class SetterVisitor extends MethodAdapter {
- private EnhancerHelper helper;
+ private EnhancementHelper helper;
private String propertyName;
- PersistentSetterVisitor(MethodVisitor mv, EnhancerHelper helper,
+ public SetterVisitor(MethodVisitor mv, EnhancementHelper helper,
String propertyName) {
super(mv);
this.helper = helper;
@@ -78,6 +78,5 @@
"propertyChanged",
"(Lorg/apache/cayenne/Persistent;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V");
mv.visitLabel(l1);
-
}
}
Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java?view=diff&rev=463453&r1=463452&r2=463453
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java Thu Oct 12 14:49:36 2006
@@ -55,7 +55,7 @@
Collection<String> c1 = new HashSet<String>();
c1.add("attribute1");
enhancedPropertyMap.put(C1, c1);
-
+
ObjAttribute a1 = new ObjAttribute("attribute1");
ObjEntity e = new ObjEntity("E1");
e.addAttribute(a1);
@@ -63,8 +63,9 @@
DataMap map = new DataMap("x");
map.addObjEntity(e);
- loader = new EnhancingClassLoader(new CayenneTransformer(new EntityResolver(
- Collections.singleton(map))));
+ EnhancerVisitorFactory factory = new CayenneEnhancerVisitorFactory(
+ new EntityResolver(Collections.singleton(map)));
+ loader = new EnhancingClassLoader(new Enhancer(factory));
}
public void testPersistentInterfaceInjected() throws Exception {