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")
};
}
}