You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by dk...@apache.org on 2014/05/15 20:08:58 UTC

svn commit: r1594993 - in /aries/trunk/proxy: proxy-bundle/ proxy-impl/ proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/ proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/ proxy-impl/src/main/java/org/apache/aries/proxy/impl/w...

Author: dkulp
Date: Thu May 15 18:08:57 2014
New Revision: 1594993

URL: http://svn.apache.org/r1594993
Log:
[ARIES-1186] Support Java 8 with ASM 5.0.2 in Aries Proxy
This closes #9

Removed:
    aries/trunk/proxy/proxy-itests/src/test/java/org/ops4j/pax/runner/platform/equinox/internal/SsActivator.java
    aries/trunk/proxy/proxy-itests/src/test/resources/META-INF/platform-equinox/definition-3.7.0.V20110613.xml
    aries/trunk/proxy/proxy-itests/src/test/resources/ss-runner.properties
Modified:
    aries/trunk/proxy/proxy-bundle/pom.xml
    aries/trunk/proxy/proxy-impl/pom.xml
    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/WovenProxyAbstractMethodAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyConcreteMethodAdapter.java
    aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceUsingWovenProxyAdapter.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/impl/weaving/WovenProxyAdapter.java
    aries/trunk/proxy/proxy-itests/pom.xml
    aries/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java

Modified: aries/trunk/proxy/proxy-bundle/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-bundle/pom.xml?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-bundle/pom.xml (original)
+++ aries/trunk/proxy/proxy-bundle/pom.xml Thu May 15 18:08:57 2014
@@ -75,7 +75,7 @@
         <dependency>
             <groupId>org.apache.aries.proxy</groupId>
             <artifactId>org.apache.aries.proxy.impl</artifactId>
-            <version>1.0.2</version>
+            <version>1.0.3-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -93,7 +93,7 @@
             <groupId>org.ow2.asm</groupId>
             <artifactId>asm-all</artifactId>
             <optional>true</optional>
-            <version>4.0</version>
+            <version>5.0.2</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>

Modified: aries/trunk/proxy/proxy-impl/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/pom.xml?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/pom.xml (original)
+++ aries/trunk/proxy/proxy-impl/pom.xml Thu May 15 18:08:57 2014
@@ -72,7 +72,8 @@
             <groupId>org.ow2.asm</groupId>
             <artifactId>asm-all</artifactId>
             <optional>true</optional>
-            <version>4.0</version>
+            <version>5.0.2</version>
+            <classifier>debug</classifier>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
@@ -119,6 +120,11 @@
     <build>
      <plugins>
        <plugin>
+           <groupId>org.apache.maven.plugins</groupId>
+           <artifactId>maven-compiler-plugin</artifactId>
+           <version>3.1</version>
+       </plugin>
+       <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-antrun-plugin</artifactId>
          <executions>

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=1594993&r1=1594992&r2=1594993&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 Thu May 15 18:08:57 2014
@@ -29,6 +29,7 @@ import static org.apache.aries.proxy.imp
 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;
 
@@ -161,6 +162,7 @@ public abstract class AbstractWovenProxy
   private final Type methodDeclaringType;
   
   private final boolean isMethodDeclaringTypeInterface;
+  private boolean isDefaultMethod;
   
   /**
    * Construct a new method adapter
@@ -176,9 +178,9 @@ public abstract class AbstractWovenProxy
    */
   public AbstractWovenProxyMethodAdapter(MethodVisitor mv, int access, String name, String desc,
       String methodStaticFieldName, Method currentTransformMethod, Type typeBeingWoven,
-      Type methodDeclaringType, boolean isMethodDeclaringTypeInterface)
+      Type methodDeclaringType, boolean isMethodDeclaringTypeInterface, boolean isDefaultMethod)
   {
-    super(mv, access, name, desc);
+    super(ASM4, mv, access, name, desc);
     this.methodStaticFieldName = methodStaticFieldName;
     this.currentTransformMethod = currentTransformMethod;
     returnType = currentTransformMethod.getReturnType();
@@ -186,6 +188,7 @@ public abstract class AbstractWovenProxy
     this.typeBeingWoven = typeBeingWoven;
     this.methodDeclaringType = methodDeclaringType;
     this.isMethodDeclaringTypeInterface = isMethodDeclaringTypeInterface;
+    this.isDefaultMethod = isDefaultMethod;
   }
 
   @Override
@@ -223,7 +226,7 @@ public abstract class AbstractWovenProxy
     loadLocal(dispatchTarget);
     checkCast(methodDeclaringType);
     loadArgs();
-    if(isMethodDeclaringTypeInterface) {
+    if(isMethodDeclaringTypeInterface && !isDefaultMethod) {
       invokeInterface(methodDeclaringType, currentTransformMethod);
     } else {
       invokeVirtual(methodDeclaringType, currentTransformMethod);

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyAbstractMethodAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyAbstractMethodAdapter.java?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyAbstractMethodAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyAbstractMethodAdapter.java Thu May 15 18:08:57 2014
@@ -31,9 +31,9 @@ public final class WovenProxyAbstractMet
  
   public WovenProxyAbstractMethodAdapter(MethodVisitor mv, int access, String name,
       String desc, String methodStaticFieldName, Method currentTransformMethod,
-      Type typeBeingWoven, Type methodDeclaringType, boolean isMethodDeclaringTypeInterface) {
+      Type typeBeingWoven, Type methodDeclaringType, boolean isMethodDeclaringTypeInterface, boolean isDefaultMethod) {
     super(mv, access, name, desc, methodStaticFieldName, currentTransformMethod,
-        typeBeingWoven, methodDeclaringType, isMethodDeclaringTypeInterface);
+        typeBeingWoven, methodDeclaringType, isMethodDeclaringTypeInterface, isDefaultMethod);
   }
 
   /**

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyConcreteMethodAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyConcreteMethodAdapter.java?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyConcreteMethodAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/WovenProxyConcreteMethodAdapter.java Thu May 15 18:08:57 2014
@@ -34,11 +34,11 @@ public final class WovenProxyConcreteMet
   
   public WovenProxyConcreteMethodAdapter(MethodVisitor mv, int access, String name,
       String desc, String[] exceptions, String methodStaticFieldName, Method currentTransformMethod,
-      Type typeBeingWoven, Type methodDeclaringType) {
+      Type typeBeingWoven, Type methodDeclaringType, boolean isMethodDeclaringTypeInterface) {
     //If we're running on Java 6+ We need to inline any JSR instructions because we're computing stack frames.
     //otherwise we can save the overhead
     super(mv, access, name, desc, methodStaticFieldName, currentTransformMethod, typeBeingWoven,
-        methodDeclaringType, false);
+        methodDeclaringType, isMethodDeclaringTypeInterface, false);
   }
 
   /**

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceUsingWovenProxyAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceUsingWovenProxyAdapter.java?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceUsingWovenProxyAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceUsingWovenProxyAdapter.java Thu May 15 18:08:57 2014
@@ -47,17 +47,21 @@ final class InterfaceUsingWovenProxyAdap
       String methodStaticFieldName, Type currentMethodDeclaringType,
       boolean currentMethodDeclaringTypeIsInterface) {
     
-    if ((access & ACC_ABSTRACT) != 0) {
+    boolean isDefaultMethod = currentMethodDeclaringTypeIsInterface && 
+        ((access & (ACC_ABSTRACT | ACC_PUBLIC | ACC_STATIC)) == ACC_PUBLIC);
+      
+      
+    if ((access & ACC_ABSTRACT) != 0 || isDefaultMethod) {
       access &= ~ACC_ABSTRACT;
       return new WovenProxyAbstractMethodAdapter(cv.visitMethod(
           access, name, desc, signature, exceptions), access, name, desc,
           methodStaticFieldName, currentMethod, typeBeingWoven, 
-          currentMethodDeclaringType, currentMethodDeclaringTypeIsInterface);
+          currentMethodDeclaringType, currentMethodDeclaringTypeIsInterface, isDefaultMethod);
     } else {
       return new WovenProxyConcreteMethodAdapter(cv.visitMethod(
           access, name, desc, signature, exceptions), access, name, desc, exceptions, 
           methodStaticFieldName, currentMethod, typeBeingWoven, 
-          currentMethodDeclaringType);
+          currentMethodDeclaringType, currentMethodDeclaringTypeIsInterface);
     }
   }
 }

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=1594993&r1=1594992&r2=1594993&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 Thu May 15 18:08:57 2014
@@ -20,6 +20,7 @@ package org.apache.aries.proxy.impl.weav
 
 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;
@@ -41,7 +42,7 @@ class SyntheticSerialVerUIDAdder extends
   private boolean hasSVUID;
 
   public SyntheticSerialVerUIDAdder(WovenProxyAdapter cv) {
-    super(cv);
+    super(ASM4, cv);
     wpa = cv;
   }
 

Modified: aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/WovenProxyAdapter.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/WovenProxyAdapter.java?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/WovenProxyAdapter.java (original)
+++ aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/WovenProxyAdapter.java Thu May 15 18:08:57 2014
@@ -50,7 +50,7 @@ final class WovenProxyAdapter extends Ab
       methodVisitorToReturn = new WovenProxyConcreteMethodAdapter(cv.visitMethod(
           access, name, desc, signature, exceptions), access, name, desc,
           exceptions, methodStaticFieldName, currentMethod, typeBeingWoven,
-          currentMethodDeclaringType);
+          currentMethodDeclaringType, currentMethodDeclaringTypeIsInterface);
     } else {
       methodVisitorToReturn = cv.visitMethod(access, name, desc, signature, exceptions);
     }

Modified: aries/trunk/proxy/proxy-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-itests/pom.xml?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-itests/pom.xml (original)
+++ aries/trunk/proxy/proxy-itests/pom.xml Thu May 15 18:08:57 2014
@@ -66,7 +66,7 @@
             <groupId>org.apache.aries.proxy</groupId>
             <artifactId>org.apache.aries.proxy</artifactId>
             <scope>test</scope>
-            <version>1.0.0</version>
+            <version>1.0.2-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries.proxy</groupId>
@@ -78,7 +78,7 @@
             <groupId>org.apache.aries.proxy</groupId>
             <artifactId>org.apache.aries.proxy.impl</artifactId>
             <scope>test</scope>
-            <version>1.0.0</version>
+            <version>1.0.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.aries</groupId>
@@ -115,7 +115,16 @@
         <dependency>
             <groupId>org.ops4j.pax.runner</groupId>
             <artifactId>pax-runner-no-jcl</artifactId>
+            <version>1.8.6-SNAPSHOT</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.ops4j.pax.runner</groupId>
+            <artifactId>pax-runner-platform-equinox</artifactId>
+            <version>1.8.6-SNAPSHOT</version>
+        </dependency>
+
+
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
@@ -139,6 +148,7 @@
         <dependency>
             <groupId>org.ops4j.pax.logging</groupId>
             <artifactId>pax-logging-api</artifactId>
+            <version>1.7.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -154,7 +164,14 @@
         <dependency>
             <groupId>org.ow2.asm</groupId>
             <artifactId>asm-all</artifactId>
-            <version>4.0</version>
+            <version>5.0.2</version>
+            <scope>test</scope>
+            
+        </dependency>
+        <dependency>
+            <groupId>javax.inject</groupId>
+            <artifactId>javax.inject</artifactId>
+            <version>1</version>
             <scope>test</scope>
             
         </dependency>
@@ -163,6 +180,10 @@
     <build>
         <plugins>
             <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.1</version>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>

Modified: aries/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java?rev=1594993&r1=1594992&r2=1594993&view=diff
==============================================================================
--- aries/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java (original)
+++ aries/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java Thu May 15 18:08:57 2014
@@ -322,8 +322,7 @@ public class AbstractProxyTest extends A
   protected static Option[] equinox37()
   {
 	  return new Option[] {          
-			  PaxRunnerOptions.rawPaxRunnerOption("config", "classpath:ss-runner.properties"),          
-	          equinox().version("3.7.0.v20110613")
+	          equinox().version("3.7.0")
 	  };
   }
 }