You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2014/12/17 15:44:18 UTC

svn commit: r1646269 - in /aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy: impl/ impl/common/ impl/gen/ impl/interfaces/ impl/weaving/ synthesizer/

Author: mnuttall
Date: Wed Dec 17 14:44:17 2014
New Revision: 1646269

URL: http://svn.apache.org/r1646269
Log:
Aries-1280: Bytecode weaving for blueprint proxy classes does not support Java 8 - from a patch by Adam Pilkington

Modified:
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/ConstructorFinder.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassVisitor.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassHierarchyAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/SyntheticSerialVerUIDAdder.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java Wed Dec 17 14:44:17 2014
@@ -26,26 +26,40 @@ import org.slf4j.LoggerFactory;
 
 public class ProxyUtils
 {
-  private static Logger LOGGER = LoggerFactory.getLogger(ProxyUtils.class);
-  public static final int JAVA_CLASS_VERSION = new BigDecimal(System.getProperty("java.class.version")).intValue();
-  private static int weavingJavaVersion = -1; // initialise an invalid number
-  /**
-   * Get the java version to be woven at.
-   * @return
-   */
-  public static int getWeavingJavaVersion() {
-    if (weavingJavaVersion == -1 ) {
-      if (JAVA_CLASS_VERSION >= Opcodes.V1_7) {
-        LOGGER.debug("Weaving to Java 7");
-        weavingJavaVersion = Opcodes.V1_7;
-      } else if (JAVA_CLASS_VERSION == Opcodes.V1_6){
-        LOGGER.debug("Weaving to Java 6");
-        weavingJavaVersion = Opcodes.V1_6;
-      } else if (JAVA_CLASS_VERSION == Opcodes.V1_5) {
-        LOGGER.debug("Weaving to Java 5");
-        weavingJavaVersion = Opcodes.V1_5;
-      } // no need to list all Opcodes as Aries should only work with java5 or above.
-    } 
-    return weavingJavaVersion;
-  } 
+  private static Logger LOGGER = LoggerFactory.getLogger(ProxyUtils.class);
+  public static final int JAVA_CLASS_VERSION = new BigDecimal(System.getProperty("java.class.version")).intValue();
+  private static int weavingJavaVersion = -1; // initialise an invalid number
+  
+  /**
+   * Get the java version to be woven at.
+   * @return
+   */
+  public static int getWeavingJavaVersion() {
+    if (weavingJavaVersion == -1 ) {
+    	//In order to avoid an inconsistent stack error the version of the woven byte code needs to match
+    	//the level of byte codes in the original class
+    	switch(JAVA_CLASS_VERSION) {
+    		case Opcodes.V1_8:
+    			LOGGER.debug("Weaving to Java 8");
+    			weavingJavaVersion = Opcodes.V1_8;
+    			break;
+    		case Opcodes.V1_7:
+    			LOGGER.debug("Weaving to Java 7");
+    			weavingJavaVersion = Opcodes.V1_7;
+    			break;
+    		case Opcodes.V1_6:
+    			LOGGER.debug("Weaving to Java 6");
+    			weavingJavaVersion = Opcodes.V1_6;
+    			break;
+    		case Opcodes.V1_5:
+    			LOGGER.debug("Weaving to Java 5");
+    			weavingJavaVersion = Opcodes.V1_5;
+    			break;
+    		default:
+    			//aries should work with Java 5 or above - also will highlight when a higher level (and unsupported) level of Java is released
+    			throw new IllegalArgumentException("Invalid Java version " + JAVA_CLASS_VERSION);
+    	}
+    } 
+    return weavingJavaVersion;
+  } 
 }

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java Wed Dec 17 14:44:17 2014
@@ -206,13 +206,13 @@ public abstract class AbstractWovenProxy
    *          The name of this class
    * @param loader
    *          The ClassLoader loading this class
-   */
-  public AbstractWovenProxyAdapter(ClassVisitor writer, String className,
-      ClassLoader loader) {
-    super(Opcodes.ASM4, writer);
-    typeBeingWoven = Type.getType("L" + className.replace('.', '/') + ";");
-    //By default we expect to see methods from a concrete class
-    currentMethodDeclaringType = typeBeingWoven;
+   */
+  public AbstractWovenProxyAdapter(ClassVisitor writer, String className,
+      ClassLoader loader) {
+    super(Opcodes.ASM5, writer);
+    typeBeingWoven = Type.getType("L" + className.replace('.', '/') + ";");
+    //By default we expect to see methods from a concrete class
+    currentMethodDeclaringType = typeBeingWoven;
     currentMethodDeclaringTypeIsInterface = false;
     this.loader = loader;
   }
@@ -355,13 +355,13 @@ public abstract class AbstractWovenProxy
           currentMethodDeclaringType, currentMethodDeclaringTypeIsInterface);
     } else if (name.equals("<clinit>")){
       //there is an existing clinit method, change the fields we use
-      //to write our init code to static_init_UUID instead
-      staticInitMethod = new Method("static_init_" + UU_ID, Type.VOID_TYPE, NO_ARGS);
-      staticInitMethodFlags = staticInitMethodFlags | ACC_FINAL;
-      methodVisitorToReturn = new AdviceAdapter(Opcodes.ASM4, cv.visitMethod(access, name, desc, signature,
-          exceptions), access, name, desc){
-        @Override
-        protected void onMethodEnter()
+      //to write our init code to static_init_UUID instead
+      staticInitMethod = new Method("static_init_" + UU_ID, Type.VOID_TYPE, NO_ARGS);
+      staticInitMethodFlags = staticInitMethodFlags | ACC_FINAL;
+      methodVisitorToReturn = new AdviceAdapter(Opcodes.ASM5, cv.visitMethod(access, name, desc, signature,
+          exceptions), access, name, desc){
+        @Override
+        protected void onMethodEnter()
         {
           //add into the <clinit> a call to our synthetic static_init_UUID
           invokeStatic(typeBeingWoven, staticInitMethod);

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java Wed Dec 17 14:44:17 2014
@@ -26,13 +26,13 @@ import static org.apache.aries.proxy.imp
 import static org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.NO_ARGS;
 import static org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.OBJECT_TYPE;
 import static org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.THROWABLE_INAME;
-import static org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.WOVEN_PROXY_IFACE_TYPE;
-import static org.objectweb.asm.Opcodes.ACONST_NULL;
-import static org.objectweb.asm.Opcodes.IFNE;
-import static org.objectweb.asm.Opcodes.ASM4;
-
-import java.util.Arrays;
-
+import static org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.WOVEN_PROXY_IFACE_TYPE;
+import static org.objectweb.asm.Opcodes.ACONST_NULL;
+import static org.objectweb.asm.Opcodes.IFNE;
+import static org.objectweb.asm.Opcodes.ASM5;
+
+import java.util.Arrays;
+
 import org.apache.aries.proxy.InvocationListener;
 import org.apache.aries.proxy.impl.NLS;
 import org.objectweb.asm.Label;
@@ -177,13 +177,13 @@ public abstract class AbstractWovenProxy
    * @param proxyType - the type being woven that contains this method
    */
   public AbstractWovenProxyMethodAdapter(MethodVisitor mv, int access, String name, String desc,
-      String methodStaticFieldName, Method currentTransformMethod, Type typeBeingWoven,
-      Type methodDeclaringType, boolean isMethodDeclaringTypeInterface, boolean isDefaultMethod)
-  {
-    super(ASM4, mv, access, name, desc);
-    this.methodStaticFieldName = methodStaticFieldName;
-    this.currentTransformMethod = currentTransformMethod;
-    returnType = currentTransformMethod.getReturnType();
+      String methodStaticFieldName, Method currentTransformMethod, Type typeBeingWoven,
+      Type methodDeclaringType, boolean isMethodDeclaringTypeInterface, boolean isDefaultMethod)
+  {
+    super(ASM5, mv, access, name, desc);
+    this.methodStaticFieldName = methodStaticFieldName;
+    this.currentTransformMethod = currentTransformMethod;
+    returnType = currentTransformMethod.getReturnType();
     isVoid = returnType.getSort() == Type.VOID;
     this.typeBeingWoven = typeBeingWoven;
     this.methodDeclaringType = methodDeclaringType;

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/ConstructorFinder.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/ConstructorFinder.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/ConstructorFinder.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/ConstructorFinder.java Wed Dec 17 14:44:17 2014
@@ -34,13 +34,13 @@ public class ConstructorFinder extends C
   {
     return hasNoArgsConstructor;
   }
-
-  public ConstructorFinder()
-  {
-    super(Opcodes.ASM4);
-  }
-
-  @Override
+
+  public ConstructorFinder()
+  {
+    super(Opcodes.ASM5);
+  }
+
+  @Override
   public MethodVisitor visitMethod(int access, String name, String desc, String signature,
       String[] exceptions)
   {

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java Wed Dec 17 14:44:17 2014
@@ -60,13 +60,13 @@ final class MethodCopyingClassAdapter ex
   
   private final AbstractWovenProxyAdapter wovenProxyAdapter;
   
-  public MethodCopyingClassAdapter(AbstractWovenProxyAdapter awpa, ClassLoader definingLoader,
-      Class<?> superToCopy, Type overridingClassType, Set<Method> knownMethods, 
-      Map<String, TypeMethod> transformedMethods) {
-    super(Opcodes.ASM4);
-    this.wovenProxyAdapter = awpa;
-    this.superToCopy = superToCopy;
-    this.overridingClassType = overridingClassType;
+  public MethodCopyingClassAdapter(AbstractWovenProxyAdapter awpa, ClassLoader definingLoader,
+      Class<?> superToCopy, Type overridingClassType, Set<Method> knownMethods, 
+      Map<String, TypeMethod> transformedMethods) {
+    super(Opcodes.ASM5);
+    this.wovenProxyAdapter = awpa;
+    this.superToCopy = superToCopy;
+    this.overridingClassType = overridingClassType;
     this.knownMethods = knownMethods;
     this.transformedMethods = transformedMethods;
     
@@ -167,13 +167,13 @@ final class MethodCopyingClassAdapter ex
     private final Type superType;
     /** The method we are weaving */
     private final Method currentTransformMethod;
-    
-    public CopyingMethodAdapter(GeneratorAdapter mv, Type superType, 
-        Method currentTransformMethod) {
-      super(Opcodes.ASM4);
-      this.mv = mv;
-      this.superType = superType;
-      this.currentTransformMethod = currentTransformMethod;
+    
+    public CopyingMethodAdapter(GeneratorAdapter mv, Type superType, 
+        Method currentTransformMethod) {
+      super(Opcodes.ASM5);
+      this.mv = mv;
+      this.superType = superType;
+      this.currentTransformMethod = currentTransformMethod;
     }
 
     //TODO might not work for attributes

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassVisitor.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassVisitor.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassVisitor.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassVisitor.java Wed Dec 17 14:44:17 2014
@@ -32,13 +32,13 @@ public final class OSGiFriendlyClassVisi
 
  
   private final boolean inlineJSR;
-  
-  public OSGiFriendlyClassVisitor(ClassVisitor cv, int arg1) {
-   
-    super(Opcodes.ASM4, cv);
-
-    inlineJSR = arg1 == ClassWriter.COMPUTE_FRAMES;
-  }
+  
+  public OSGiFriendlyClassVisitor(ClassVisitor cv, int arg1) {
+   
+    super(Opcodes.ASM5, cv);
+
+    inlineJSR = arg1 == ClassWriter.COMPUTE_FRAMES;
+  }
   
   
 

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java Wed Dec 17 14:44:17 2014
@@ -66,7 +66,7 @@ public class ProxySubclassAdapter extend
   public ProxySubclassAdapter(ClassVisitor writer, String newClassName, ClassLoader loader)
   {
     // call the superclass constructor
-    super(Opcodes.ASM4, writer);
+    super(Opcodes.ASM5, writer);
     // the writer is now the cv in the superclass of ClassAdapter
 
     LOGGER.debug(Constants.LOG_ENTRY, "ProxySubclassAdapter", new Object[] { this, writer,

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassHierarchyAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassHierarchyAdapter.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassHierarchyAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassHierarchyAdapter.java Wed Dec 17 14:44:17 2014
@@ -44,13 +44,13 @@ public class ProxySubclassHierarchyAdapt
   private Collection<String> methodsToImplement = null;
 
   private static Logger LOGGER = LoggerFactory.getLogger(ProxySubclassHierarchyAdapter.class);
-
-  ProxySubclassHierarchyAdapter(ProxySubclassAdapter adapter, Collection<String> methodsToImplement)
-  {
-    super(Opcodes.ASM4);
-    LOGGER.debug(Constants.LOG_ENTRY, "ProxySubclassHeirarchyAdapter", new Object[] {
-        this, adapter, methodsToImplement });
-
+
+  ProxySubclassHierarchyAdapter(ProxySubclassAdapter adapter, Collection<String> methodsToImplement)
+  {
+    super(Opcodes.ASM5);
+    LOGGER.debug(Constants.LOG_ENTRY, "ProxySubclassHeirarchyAdapter", new Object[] {
+        this, adapter, methodsToImplement });
+
     this.methodsToImplement = methodsToImplement;
     this.adapter = adapter;
 

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java Wed Dec 17 14:44:17 2014
@@ -58,13 +58,13 @@ final class InterfaceCombiningClassAdapt
    * @param className
    * @param loader
    * @param interfaces
-   */
-  InterfaceCombiningClassAdapter(String className,
-      ClassLoader loader, Class<?> superclass, Collection<Class<?>> interfaces) {
-    super(Opcodes.ASM4);
-    writer = new OSGiFriendlyClassWriter(ClassWriter.COMPUTE_FRAMES, loader);
-    ClassVisitor cv = new OSGiFriendlyClassVisitor(writer, ClassWriter.COMPUTE_FRAMES);
-    adapter = new InterfaceUsingWovenProxyAdapter(cv, className, loader);
+   */
+  InterfaceCombiningClassAdapter(String className,
+      ClassLoader loader, Class<?> superclass, Collection<Class<?>> interfaces) {
+    super(Opcodes.ASM5);
+    writer = new OSGiFriendlyClassWriter(ClassWriter.COMPUTE_FRAMES, loader);
+    ClassVisitor cv = new OSGiFriendlyClassVisitor(writer, ClassWriter.COMPUTE_FRAMES);
+    adapter = new InterfaceUsingWovenProxyAdapter(cv, className, loader);
 
     this.interfaces = interfaces;
     this.superclass = superclass;

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java Wed Dec 17 14:44:17 2014
@@ -45,13 +45,13 @@ import org.osgi.framework.wiring.BundleW
  * To be safely used as a supertype the superclass should be a WovenProxy.
  */
 public final class InterfaceProxyGenerator extends ClassVisitor implements Opcodes {
-
-  public InterfaceProxyGenerator()
-  {
-    super(Opcodes.ASM4);
-    
-  }
-
+
+  public InterfaceProxyGenerator()
+  {
+    super(Opcodes.ASM5);
+    
+  }
+
   private static final Map<BundleWiring, WeakReference<ProxyClassLoader>> cache =
             new WeakHashMap<BundleWiring, WeakReference<ProxyClassLoader>>(128);
   

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/SyntheticSerialVerUIDAdder.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/SyntheticSerialVerUIDAdder.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/SyntheticSerialVerUIDAdder.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/SyntheticSerialVerUIDAdder.java Wed Dec 17 14:44:17 2014
@@ -17,13 +17,13 @@
  * under the License.
  */
 package org.apache.aries.proxy.impl.weaving;
-
-import java.lang.reflect.Modifier;
-
-import static org.objectweb.asm.Opcodes.ASM4;
-import org.objectweb.asm.FieldVisitor;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.Type;
+
+import java.lang.reflect.Modifier;
+
+import static org.objectweb.asm.Opcodes.ASM5;
+import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.Opcodes;
+import org.objectweb.asm.Type;
 import org.objectweb.asm.commons.SerialVersionUIDAdder;
 
 class SyntheticSerialVerUIDAdder extends SerialVersionUIDAdder {
@@ -39,13 +39,13 @@ class SyntheticSerialVerUIDAdder extends
   /**
    * Set to true if the class already has SVUID.
    */
-  private boolean hasSVUID;
-
-  public SyntheticSerialVerUIDAdder(WovenProxyAdapter cv) {
-    super(ASM4, cv);
-    wpa = cv;
-  }
-
+  private boolean hasSVUID;
+
+  public SyntheticSerialVerUIDAdder(WovenProxyAdapter cv) {
+    super(ASM5, cv);
+    wpa = cv;
+  }
+
   // The following visit and visitField methods are workaround since ASM4 does not supply the javadoced method isHasSVUID() by mistake. 
   // When the method isHasSVUId() or similar methods available, we can remove the following two methods.
 

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java?rev=1646269&r1=1646268&r2=1646269&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java Wed Dec 17 14:44:17 2014
@@ -80,13 +80,13 @@ public class Synthesizer
   
   public static class CustomClassVisitor extends ClassVisitor
   {
-
-    public CustomClassVisitor( ClassVisitor cv)
-    {
-      super(Opcodes.ASM4, cv);
-      
-    }
-    @Override
+
+    public CustomClassVisitor( ClassVisitor cv)
+    {
+      super(Opcodes.ASM5, cv);
+      
+    }
+    @Override
     public void visit(int version, int access, String name, String signature,
         String superName, String[] interfaces)
     {