Author: aadamchik
Date: Thu Oct 12 14:26:13 2006
New Revision: 463437
URL: http://svn.apache.org/viewvc?view=rev&rev=463437
Log:
CAY-682
refactoring enhacer for better extensibility. Splitting different enhancements
in separate visitors chained together
Added:
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
- copied, changed from r463127,
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java
- copied, changed from r454757,
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ClassVisitorHelper.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/PersistentInterfaceEnhancer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java
- copied, changed from r454799,
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerTest.java
Removed:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancer.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ClassVisitorHelper.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerUtil.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentClassVisitor.java
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerTest.java
Modified:
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/PersistentSetterVisitor.java
Added:
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/ASMTransformer.java?view=auto&rev=463437
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ASMTransformer.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ASMTransformer.java
Thu Oct 12 14:26:13 2006
@@ -0,0 +1,73 @@
+/*****************************************************************
+ * 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.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.IllegalClassFormatException;
+import java.security.ProtectionDomain;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.ClassWriter;
+
+/**
+ * An abstract ClassFileTransformer for handling class enhancement.
+ *
+ * @since 3.0
+ * @author Andrus Adamchik
+ */
+public abstract class ASMTransformer implements ClassFileTransformer {
+
+ protected Log logger;
+
+ public ASMTransformer() {
+ logger = LogFactory.getLog(getClass());
+ }
+
+ /**
+ * 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,
+ Class<?> classBeingRedefined,
+ ProtectionDomain protectionDomain,
+ byte[] classfileBuffer) throws IllegalClassFormatException {
+
+ ClassReader reader = new ClassReader(classfileBuffer);
+ ClassWriter writer = new ClassWriter(reader, true);
+
+ ClassVisitor visitor = createVisitor(className, writer);
+ if (visitor == null) {
+ // per instrumentation docs, if no transformation occured, we must
return null
+ return null;
+ }
+
+ logger.info("enhancing class " + className);
+ reader.accept(visitor, true);
+ return writer.toByteArray();
+ }
+}
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorEnhancer.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorEnhancer.java?view=auto&rev=463437
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorEnhancer.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/AccessorEnhancer.java
Thu Oct 12 14:26:13 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 AccessorEnhancer 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 AccessorEnhancer(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 = AccessorEnhancer.propertyNameForGetter(name);
+ if (getProperty != null) {
+ return visitGetter(mv, getProperty);
+ }
+
+ String setProperty = AccessorEnhancer.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/CayenneTransformer.java
(from r463127,
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancer.java)
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java?view=diff&rev=463437&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancer.java&r1=463127&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java&r2=463437
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneEnhancer.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/CayenneTransformer.java
Thu Oct 12 14:26:13 2006
@@ -18,35 +18,28 @@
****************************************************************/
package org.apache.cayenne.enhancer;
-import java.lang.instrument.ClassFileTransformer;
-import java.lang.instrument.IllegalClassFormatException;
-import java.security.ProtectionDomain;
import java.util.HashMap;
import java.util.Map;
import org.apache.cayenne.Persistent;
import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.map.ObjEntity;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
/**
- * A ClassFileTransformer that enhances a POJO into a persistent object that
can be used
- * with Cayenne. More specifically, it ensures that the object implements
- * [EMAIL PROTECTED] Persistent} interface and invokes callbacks from the
accessor methods.
+ * A ClassFileTransformer that performs enhancement based on the metadata from
Cayenne
+ * DataMap. POJOs are enhanced into persistent objects that can be used with
Cayenne. More
+ * specifically, CayenneEnhancer ensures that the object implements [EMAIL
PROTECTED] Persistent}
+ * interface and invokes callbacks from the accessor methods.
*
* @since 3.0
* @author Andrus Adamchik
*/
-public class CayenneEnhancer implements ClassFileTransformer {
+public class CayenneTransformer extends ASMTransformer {
- protected Log logger = LogFactory.getLog(CayenneEnhancer.class);
protected Map<String, ObjEntity> entitiesByClass;
- public CayenneEnhancer(EntityResolver entityResolver) {
+ public CayenneTransformer(EntityResolver entityResolver) {
indexEntities(entityResolver);
}
@@ -67,41 +60,15 @@
}
}
- public ObjEntity getEntity(String className) {
- return entitiesByClass.get(className);
- }
-
- public byte[] transform(
- ClassLoader loader,
- String className,
- Class<?> classBeingRedefined,
- ProtectionDomain protectionDomain,
- byte[] classfileBuffer) throws IllegalClassFormatException {
-
- ClassReader reader = new ClassReader(classfileBuffer);
- ClassWriter writer = new ClassWriter(reader, true);
-
- ClassVisitor visitor = createVisitor(className, writer);
- if (visitor == null) {
- // per instrumentation docs, if no transformation occured, we must
return null
- return null;
- }
-
- logger.info("enhancing class " + className);
- reader.accept(visitor, true);
- return writer.toByteArray();
- }
-
- /**
- * Builds a chain of ASM visitors.
- */
- protected ClassVisitor createVisitor(String className, ClassWriter writer)
{
- ObjEntity entity = getEntity(className);
+ protected ClassVisitor createVisitor(String className, ClassVisitor out) {
+ ObjEntity entity = entitiesByClass.get(className);
if (entity == null) {
return null;
}
- return new PersistentClassVisitor(writer, entity);
+ // create enhancer chain
+ PersistentInterfaceEnhancer e1 = new PersistentInterfaceEnhancer(out);
+ PersistentAccessorEnhancer e2 = new PersistentAccessorEnhancer(e1,
entity);
+ return e2;
}
-
}
Copied:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java
(from r454757,
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ClassVisitorHelper.java)
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java?view=diff&rev=463437&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ClassVisitorHelper.java&r1=454757&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java&r2=463437
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/ClassVisitorHelper.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/EnhancerHelper.java
Thu Oct 12 14:26:13 2006
@@ -32,30 +32,30 @@
* @since 3.0
* @author Andrus Adamchik
*/
-class ClassVisitorHelper {
+public class EnhancerHelper {
private String fieldPrefix = "$cay_";
private ClassVisitor classVisitor;
private Type currentClass;
- ClassVisitorHelper(ClassVisitor classVisitor) {
+ public EnhancerHelper(ClassVisitor classVisitor) {
this.classVisitor = classVisitor;
}
- Type getCurrentClass() {
+ public Type getCurrentClass() {
return currentClass;
}
- String getPropertyField(String propertyName) {
+ public String getPropertyField(String propertyName) {
return fieldPrefix + propertyName;
}
- void reset(String className) {
+ public void reset(String className) {
// assuming no primitives or arrays
this.currentClass = Type.getType("L" + className + ";");
}
- String[] addInterface(String[] interfaces, Class newInterface) {
+ public String[] addInterface(String[] interfaces, Class newInterface) {
String name = Type.getInternalName(newInterface);
if (interfaces == null || interfaces.length == 0) {
@@ -71,11 +71,11 @@
return expandedInterfaces;
}
- void createProperty(Class type, String name) {
+ public void createProperty(Class type, String name) {
createProperty(type, name, false);
}
- void createProperty(Class type, String name, boolean isTransient) {
+ public void createProperty(Class type, String name, boolean isTransient) {
Type asmType = Type.getType(type);
int access = Opcodes.ACC_PROTECTED;
Added:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorEnhancer.java
URL:
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorEnhancer.java?view=auto&rev=463437
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorEnhancer.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentAccessorEnhancer.java
Thu Oct 12 14:26:13 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
[EMAIL PROTECTED] ObjEntity}.
+ *
+ * @author Andrus Adamchik
+ * @since 3.0
+ */
+public class PersistentAccessorEnhancer extends AccessorEnhancer {
+
+ private ObjEntity entity;
+ private EnhancerHelper helper;
+
+ public PersistentAccessorEnhancer(ClassVisitor visitor, ObjEntity entity) {
+ super(visitor);
+ this.entity = entity;
+ this.helper = new EnhancerHelper(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
PersistentGetterVisitor(
+ mv,
+ helper,
+ property) : mv;
+ }
+
+ @Override
+ protected MethodVisitor visitSetter(MethodVisitor mv, String property) {
+ return (entity.getAttribute(property) != null) ? new
PersistentSetterVisitor(
+ mv,
+ helper,
+ property) : mv;
+ }
+}
Modified:
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/PersistentGetterVisitor.java?view=diff&rev=463437&r1=463436&r2=463437
==============================================================================
---
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/PersistentGetterVisitor.java
Thu Oct 12 14:26:13 2006
@@ -31,10 +31,10 @@
*/
class PersistentGetterVisitor extends MethodAdapter {
- private ClassVisitorHelper helper;
+ private EnhancerHelper helper;
private String propertyName;
- PersistentGetterVisitor(MethodVisitor mv, ClassVisitorHelper helper,
+ PersistentGetterVisitor(MethodVisitor mv, EnhancerHelper helper,
String propertyName) {
super(mv);
this.helper = helper;
Added:
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/PersistentInterfaceEnhancer.java?view=auto&rev=463437
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceEnhancer.java
(added)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/main/java/org/apache/cayenne/enhancer/PersistentInterfaceEnhancer.java
Thu Oct 12 14:26:13 2006
@@ -0,0 +1,64 @@
+/*****************************************************************
+ * 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.ObjectContext;
+import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.Persistent;
+import org.objectweb.asm.ClassAdapter;
+import org.objectweb.asm.ClassVisitor;
+
+/**
+ * Enhances classes passed through the visitor to add [EMAIL PROTECTED]
Persistent} interface to
+ * them, and fields and methods to support its implementation.
+ *
+ * @since 3.0
+ * @author Andrus Adamchik
+ */
+public class PersistentInterfaceEnhancer extends ClassAdapter {
+
+ protected EnhancerHelper helper;
+
+ public PersistentInterfaceEnhancer(ClassVisitor visitor) {
+ super(visitor);
+ this.helper = new EnhancerHelper(this);
+ }
+
+ /**
+ * Handles injection of additional fields and Persistent interface
properties.
+ */
+ @Override
+ public void visit(
+ int version,
+ int access,
+ String name,
+ String signature,
+ String superName,
+ String[] interfaces) {
+
+ helper.reset(name);
+ interfaces = helper.addInterface(interfaces, Persistent.class);
+
+ super.visit(version, access, name, signature, superName, interfaces);
+
+ helper.createProperty(ObjectId.class, "objectId");
+ helper.createProperty(ObjectContext.class, "objectContext", true);
+ helper.createProperty(Integer.TYPE, "persistenceState");
+ }
+}
Modified:
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/PersistentSetterVisitor.java?view=diff&rev=463437&r1=463436&r2=463437
==============================================================================
---
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/PersistentSetterVisitor.java
Thu Oct 12 14:26:13 2006
@@ -31,10 +31,10 @@
*/
class PersistentSetterVisitor extends MethodAdapter {
- private ClassVisitorHelper helper;
+ private EnhancerHelper helper;
private String propertyName;
- PersistentSetterVisitor(MethodVisitor mv, ClassVisitorHelper helper,
+ PersistentSetterVisitor(MethodVisitor mv, EnhancerHelper helper,
String propertyName) {
super(mv);
this.helper = helper;
Copied:
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java
(from r454799,
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerTest.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=463437&p1=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerTest.java&r1=454799&p2=incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java&r2=463437
==============================================================================
---
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerTest.java
(original)
+++
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneTransformerTest.java
Thu Oct 12 14:26:13 2006
@@ -39,7 +39,7 @@
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
-public class CayenneEnhancerTest extends TestCase {
+public class CayenneTransformerTest extends TestCase {
public static final String C1 = "org.apache.cayenne.enhancer.MockPojo1";
@@ -63,7 +63,7 @@
DataMap map = new DataMap("x");
map.addObjEntity(e);
- loader = new EnhancingClassLoader(new CayenneEnhancer(new
EntityResolver(
+ loader = new EnhancingClassLoader(new CayenneTransformer(new
EntityResolver(
Collections.singleton(map))));
}