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 {