Author: tjwatson
Date: Fri May 5 21:17:42 2017
New Revision: 1794106
URL: http://svn.apache.org/viewvc?rev=1794106&view=rev
Log:
Merge ^/aries/trunk/proxy r1728111 through r1794104 into java6support branch.
Added:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/SystemModuleClassLoader.java
- copied unchanged from r1794104,
aries/trunk/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/SystemModuleClassLoader.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/BasicProxyTest.java
- copied unchanged from r1794104,
aries/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/BasicProxyTest.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/WeavingProxyTest.java
- copied unchanged from r1794104,
aries/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/WeavingProxyTest.java
Removed:
aries/branches/java6support/proxy/proxy-api/src/main/resources/org/apache/aries/proxy/nls/ProxyMessages.properties
aries/branches/java6support/proxy/proxy-bundle/LICENSE
aries/branches/java6support/proxy/proxy-bundle/NOTICE
aries/branches/java6support/proxy/proxy-bundle/pom.xml
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/NLS.java
aries/branches/java6support/proxy/proxy-impl/src/main/resources/org/apache/aries/proxy/nls/ProxyImplMessages.properties
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/util/AriesFrameworkUtil.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/util/ClassLoaderProxy.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractBasicProxyTest.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractWeavingProxyTest.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/BasicProxyBundlesTest.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/BasicProxyUberBundleTest.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/WeavingProxyBundlesTest.java
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/WeavingProxyUberBundleTest.java
Modified:
aries/branches/java6support/proxy/ (props changed)
aries/branches/java6support/proxy/pom.xml
aries/branches/java6support/proxy/proxy-api/pom.xml
aries/branches/java6support/proxy/proxy-api/src/main/java/org/apache/aries/proxy/FinalModifierException.java
aries/branches/java6support/proxy/proxy-impl/pom.xml
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AbstractProxyManager.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AsmProxyManager.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/JdkProxyManager.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyManagerActivator.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassGenerator.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/ProxyClassLoader.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/ProxyWeavingHook.java
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/AbstractProxyTest.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/InterfaceProxyingTest.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxySubclassGeneratorTest.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassInnerClasses.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializable.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableChild.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableInterface.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuper.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuperWithNoDefaultOrProtectedAccess.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyGeneratorTest.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyPlusSubclassGeneratorTest.java
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenSubclassGeneratorTest.java
aries/branches/java6support/proxy/proxy-itests/pom.xml
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java
Propchange: aries/branches/java6support/proxy/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Fri May 5 21:17:42 2017
@@ -0,0 +1,2 @@
+/aries/branches/1.0-prototype/proxy:1306564-1337594
+/aries/trunk/proxy:1728111-1794104
Modified: aries/branches/java6support/proxy/pom.xml
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/pom.xml?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
--- aries/branches/java6support/proxy/pom.xml (original)
+++ aries/branches/java6support/proxy/pom.xml Fri May 5 21:17:42 2017
@@ -30,7 +30,7 @@
<groupId>org.apache.aries.proxy</groupId>
<artifactId>proxy</artifactId>
- <name>Apache Aries Class Proxy</name>
+ <name>Apache Aries Proxy Parent</name>
<packaging>pom</packaging>
<version>1.0.1-SNAPSHOT</version>
<description>
@@ -40,7 +40,6 @@
<modules>
<module>proxy-api</module>
<module>proxy-impl</module>
- <module>proxy-bundle</module>
<module>proxy-itests</module>
</modules>
Modified: aries/branches/java6support/proxy/proxy-api/pom.xml
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-api/pom.xml?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
--- aries/branches/java6support/proxy/proxy-api/pom.xml (original)
+++ aries/branches/java6support/proxy/proxy-api/pom.xml Fri May 5 21:17:42 2017
@@ -32,7 +32,7 @@
<artifactId>org.apache.aries.proxy.api</artifactId>
<packaging>bundle</packaging>
<name>Apache Aries Proxy API</name>
- <version>1.0.2-SNAPSHOT</version>
+ <version>1.1.1-SNAPSHOT</version>
<description>
This bundle contains the Apache Aries Proxy service API.
</description>
@@ -48,17 +48,12 @@
<aries.osgi.export.pkg>
org.apache.aries.proxy*
</aries.osgi.export.pkg>
- <!--
- We override the import versions for org.osgi.framework because we
can operate on
- a 4.2 framework (we only need 4.3 for weaving which is optional).
- -->
- <aries.osgi.import.pkg>
- org.osgi.framework;version="[1.5,2)",
- org.osgi.framework.hooks.weaving;resolution:=optional,
- *
- </aries.osgi.import.pkg>
<aries.osgi.private.pkg />
- <lastReleaseVersion>1.0.0</lastReleaseVersion>
+ <lastReleaseVersion>1.0.1</lastReleaseVersion>
+
+ <!-- Skip version check for release 1.1.0 as the plugin does not
handle the case
+ of removing a dpendency correctly -->
+ <aries.skip.version.check>true</aries.skip.version.check>
</properties>
<dependencies>
@@ -67,11 +62,6 @@
<artifactId>org.osgi.core</artifactId>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>org.apache.aries</groupId>
- <artifactId>org.apache.aries.util</artifactId>
- <version>1.0.0</version>
- </dependency>
</dependencies>
<build>
Modified:
aries/branches/java6support/proxy/proxy-api/src/main/java/org/apache/aries/proxy/FinalModifierException.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-api/src/main/java/org/apache/aries/proxy/FinalModifierException.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-api/src/main/java/org/apache/aries/proxy/FinalModifierException.java
(original)
+++
aries/branches/java6support/proxy/proxy-api/src/main/java/org/apache/aries/proxy/FinalModifierException.java
Fri May 5 21:17:42 2017
@@ -18,8 +18,6 @@
*/
package org.apache.aries.proxy;
-import org.apache.aries.util.nls.MessageUtil;
-
public class FinalModifierException extends UnableToProxyException
{
@@ -28,7 +26,6 @@ public class FinalModifierException exte
*
*/
private static final long serialVersionUID = -3139392096074404448L;
- private static final MessageUtil MESSAGES =
MessageUtil.createMessageUtil(FinalModifierException.class,
"org.apache.aries.proxy.nls.ProxyMessages");
private String finalMethods = null;
public FinalModifierException(Class<?> clazz)
@@ -55,9 +52,9 @@ public class FinalModifierException exte
public String getMessage()
{
if (isFinalClass()) {
- return MESSAGES.getMessage("final.class", getClassName());
+ return String.format("The class %s is final.", getClassName());
} else {
- return MESSAGES.getMessage("final.methods", finalMethods,
getClassName());
+ return String.format("The methods %s in class %s are final.",
finalMethods, getClassName());
}
}
}
\ No newline at end of file
Modified: aries/branches/java6support/proxy/proxy-impl/pom.xml
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/pom.xml?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
--- aries/branches/java6support/proxy/proxy-impl/pom.xml (original)
+++ aries/branches/java6support/proxy/proxy-impl/pom.xml Fri May 5 21:17:42
2017
@@ -29,10 +29,10 @@
</parent>
<groupId>org.apache.aries.proxy</groupId>
- <artifactId>org.apache.aries.proxy.impl</artifactId>
+ <artifactId>org.apache.aries.proxy</artifactId>
<packaging>bundle</packaging>
<name>Apache Aries Proxy Service</name>
- <version>1.0.5-SNAPSHOT</version>
+ <version>1.1.1-SNAPSHOT</version>
<description>
This bundle contains the proxy service implementation for Apache Aries
</description>
@@ -45,41 +45,38 @@
<properties>
<aries.osgi.export.pkg>
- org.apache.aries.proxy.weaving;
+ org.apache.aries.proxy;,
+ org.apache.aries.proxy.weaving;,
+ org.apache.aries.proxy.weavinghook;
</aries.osgi.export.pkg>
<aries.osgi.activator>
org.apache.aries.proxy.impl.ProxyManagerActivator
</aries.osgi.activator>
- <!--
- We override the import versions for org.osgi.framework because we
can operate on
- a 4.2 framework (we only need 4.3 for weaving which is optional).
- -->
<aries.osgi.import.pkg>
org.apache.aries.proxy.weavinghook;resolution:=optional;provide:=true,
org.apache.aries.proxy*;provide:=true,
- org.objectweb.asm*;resolution:=optional,
+ org.objectweb.asm*;resolution:=optional;version="[5,7)",
sun.reflect*;resolution:=optional,
- org.osgi.framework;version="[1.5,2)",
- org.osgi.framework.hooks.weaving;resolution:=optional,
- org.osgi.framework.wiring;resolution:=optional,
- org.slf4j;version="[1.6,2)";resolution:=optional,
*
</aries.osgi.import.pkg>
<aries.osgi.private.pkg>
org.apache.aries.proxy.impl*
</aries.osgi.private.pkg>
- <aries.osgi.export.service>
- org.apache.aries.proxy.ProxyManager
- </aries.osgi.export.service>
- <lastReleaseVersion>1.0.2</lastReleaseVersion>
+ <lastReleaseVersion>1.0.1</lastReleaseVersion>
</properties>
<dependencies>
<dependency>
+ <groupId>org.apache.aries.proxy</groupId>
+ <artifactId>org.apache.aries.proxy.api</artifactId>
+ <version>1.1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-debug-all</artifactId>
<optional>true</optional>
- <version>5.0.3</version>
+ <version>6.0_ALPHA</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -87,17 +84,10 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<scope>provided</scope>
</dependency>
-
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
@@ -105,20 +95,26 @@
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.3.2</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.aries.testsupport</groupId>
- <artifactId>org.apache.aries.testsupport.unit</artifactId>
- <version>1.0.0</version>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.apache.aries.proxy</groupId>
- <artifactId>org.apache.aries.proxy.api</artifactId>
- <version>1.0.0</version>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>2.5.5</version>
+ <scope>test</scope>
</dependency>
</dependencies>
@@ -127,7 +123,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- <version>3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -152,50 +147,6 @@
</execution>
</executions>
</plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-enforcer-plugin</artifactId>
- <executions>
- <execution>
- <phase>validate</phase>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <requireJavaVersion>
- <version>[1.6,)</version>
- </requireJavaVersion>
- </rules>
- </configuration>
- </execution>
- <!--
- <execution>
- <id>check-java15</id>
- <phase>test</phase>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <checkSignatureRule
implementation="org.codehaus.mojo.animal_sniffer.enforcer.CheckSignatureRule">
-
<ignoreDependencies>true</ignoreDependencies>
- <ignores>
- <ignore>sun.reflect.*</ignore>
- </ignores>
- <signature>
-
<groupId>org.codehaus.mojo.signature</groupId>
- <artifactId>java15</artifactId>
- <version>1.0</version>
- </signature>
- </checkSignatureRule>
- </rules>
- </configuration>
- </execution>
- -->
- </executions>
- </plugin>
<plugin>
<groupId>org.apache.aries.versioning</groupId>
<artifactId>org.apache.aries.versioning.plugin</artifactId>
@@ -209,6 +160,24 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Provide-Capability>
+
osgi.service;objectClass:List<String>=org.apache.aries.proxy.ProxyManager
+ </Provide-Capability>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <additionalparam>-Xdoclint:none</additionalparam>
+ </configuration>
+ </plugin>
</plugins>
</build>
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AbstractProxyManager.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AbstractProxyManager.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AbstractProxyManager.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AbstractProxyManager.java
Fri May 5 21:17:42 2017
@@ -18,6 +18,8 @@
*/
package org.apache.aries.proxy.impl;
+import static java.lang.String.format;
+
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
@@ -28,8 +30,8 @@ import org.apache.aries.proxy.Invocation
import org.apache.aries.proxy.ProxyManager;
import org.apache.aries.proxy.UnableToProxyException;
import org.apache.aries.proxy.weaving.WovenProxy;
-import org.apache.aries.util.AriesFrameworkUtil;
import org.osgi.framework.Bundle;
+import org.osgi.framework.wiring.BundleWiring;
public abstract class AbstractProxyManager implements ProxyManager
{
@@ -60,7 +62,7 @@ public abstract class AbstractProxyManag
throws UnableToProxyException
{
if(dispatcher == null)
- throw new NullPointerException(NLS.MESSAGES.getMessage("no.dispatcher"));
+ throw new NullPointerException("You must specify a dipatcher");
if (template instanceof WovenProxy) {
WovenProxy proxy = ((WovenProxy) template).
@@ -118,7 +120,8 @@ public abstract class AbstractProxyManag
protected synchronized ClassLoader getClassLoader(final Bundle clientBundle,
Collection<Class<?>> classes)
{
if (clientBundle != null && clientBundle.getState() == Bundle.UNINSTALLED)
{
- throw new
IllegalStateException(NLS.MESSAGES.getMessage("bundle.uninstalled",
clientBundle.getSymbolicName(), clientBundle.getVersion(),
clientBundle.getBundleId()));
+ throw new IllegalStateException(format("The bundle %s at version %s with
id %d has been uninstalled.",
+ clientBundle.getSymbolicName(),
clientBundle.getVersion(), clientBundle.getBundleId()));
}
ClassLoader cl = null;
@@ -126,13 +129,17 @@ public abstract class AbstractProxyManag
if (classes.size() == 1) cl = classes.iterator().next().getClassLoader();
if (cl == null) {
- // First of all see if the AriesFrameworkUtil can get the classloader,
if it can we go with that.
- cl = AriesFrameworkUtil.getClassLoaderForced(clientBundle);
+ cl = getWiringClassloader(clientBundle);
}
return cl;
}
+ private ClassLoader getWiringClassloader(final Bundle bundle) {
+ BundleWiring wiring = bundle != null ? bundle.adapt(BundleWiring.class) :
null;
+ return wiring != null ? wiring.getClassLoader() : null;
+ }
+
private Object duplicateProxy(Collection<Class<?>> classes, Callable<Object>
dispatcher,
Object template, InvocationListener listener)
{
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AsmProxyManager.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AsmProxyManager.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AsmProxyManager.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/AsmProxyManager.java
Fri May 5 21:17:42 2017
@@ -159,6 +159,12 @@ public final class AsmProxyManager exten
// Ignore
}
}
+ try {
+ // use bootClassLoader as last fallback
+ return bootClassLoader.loadClass(name);
+ } catch (ClassNotFoundException e) {
+ // Ignore
+ }
throw new ClassNotFoundException(name);
}
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/JdkProxyManager.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/JdkProxyManager.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/JdkProxyManager.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/JdkProxyManager.java
Fri May 5 21:17:42 2017
@@ -40,7 +40,7 @@ public final class JdkProxyManager exten
{
for (Class<?> clazz : classes) {
if (!!!clazz.isInterface()) {
- throw new UnableToProxyException(clazz,
NLS.MESSAGES.getMessage("class.is.class", clazz.getName()));
+ throw new UnableToProxyException(clazz, String.format("The class %s
is not an interface and therefore a proxy cannot be generated.",
clazz.getName()));
}
}
return (Class[]) classes.toArray(new Class[classes.size()]);
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyManagerActivator.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyManagerActivator.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyManagerActivator.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyManagerActivator.java
Fri May 5 21:17:42 2017
@@ -28,6 +28,7 @@ public class ProxyManagerActivator imple
{
private static final boolean ASM_PROXY_SUPPORTED;
private AbstractProxyManager managerService;
+ @SuppressWarnings("rawtypes")
private ServiceRegistration registration;
static
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/ProxyUtils.java
Fri May 5 21:17:42 2017
@@ -39,6 +39,10 @@ public class ProxyUtils
//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_9:
+ LOGGER.debug("Weaving to Java 9");
+ weavingJavaVersion = Opcodes.V1_9;
+ break;
case Opcodes.V1_8:
LOGGER.debug("Weaving to Java 8");
weavingJavaVersion = Opcodes.V1_8;
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyAdapter.java
Fri May 5 21:17:42 2017
@@ -18,6 +18,7 @@
*/
package org.apache.aries.proxy.impl.common;
+import static java.lang.String.format;
import static org.apache.aries.proxy.impl.ProxyUtils.JAVA_CLASS_VERSION;
import java.io.IOException;
@@ -36,7 +37,7 @@ import java.util.concurrent.Callable;
import org.apache.aries.proxy.InvocationListener;
import org.apache.aries.proxy.UnableToProxyException;
-import org.apache.aries.proxy.impl.NLS;
+import org.apache.aries.proxy.impl.SystemModuleClassLoader;
import org.apache.aries.proxy.impl.gen.Constants;
import org.apache.aries.proxy.weaving.WovenProxy;
import org.objectweb.asm.ClassReader;
@@ -279,10 +280,16 @@ public abstract class AbstractWovenProxy
// should stop weaving and fail. Make sure we don't cause the hook to
// throw an error though.
UnableToProxyException u = new UnableToProxyException(name, e);
- throw new
RuntimeException(NLS.MESSAGES.getMessage("cannot.load.superclass",
superName.replace('/', '.'), typeBeingWoven.getClassName()), u);
+ cannotLoadSuperClassException(superName, u);
}
}
+ private void cannotLoadSuperClassException(String superName,
UnableToProxyException u) {
+ String msg = format("Unable to load the super type %s for class %s.",
+ superName.replace('/', '.'),
typeBeingWoven.getClassName());
+ throw new RuntimeException(msg, u);
+ }
+
/**
* This method allows us to determine whether a superclass has a
* non-private no-args constructor without causing it to initialize.
@@ -303,7 +310,7 @@ public abstract class AbstractWovenProxy
new ClassReader(is).accept(cf, ClassReader.SKIP_FRAMES +
ClassReader.SKIP_DEBUG + ClassReader.SKIP_CODE);
} catch (IOException ioe) {
UnableToProxyException u = new UnableToProxyException(name, ioe);
- throw new
RuntimeException(NLS.MESSAGES.getMessage("cannot.load.superclass",
superName.replace('/', '.'), typeBeingWoven.getClassName()), u);
+ cannotLoadSuperClassException(superName, u);
}
return cf.hasNoArgsConstructor();
}
@@ -393,8 +400,9 @@ public abstract class AbstractWovenProxy
readClass(c, new MethodCopyingClassAdapter(this, loader, c,
typeBeingWoven,
getKnownMethods(), transformedMethods));
} catch (IOException e) {
- // This should never happen! <= famous last words (not)
- throw new
RuntimeException(NLS.MESSAGES.getMessage("unexpected.error.processing.class",
c.getName(), typeBeingWoven.getClassName()), e);
+ String msg = format("Unexpected error processing %s when weaving %s.",
+ c.getName(), typeBeingWoven.getClassName());
+ throw new RuntimeException(msg, e);
}
}
// If we need to implement woven proxy in this class then write the methods
@@ -548,7 +556,8 @@ public abstract class AbstractWovenProxy
methodAdapter.invokeConstructor(typeBeingWoven, NO_ARGS_CONSTRUCTOR);
else
throw new RuntimeException(new
UnableToProxyException(typeBeingWoven.getClassName(),
- NLS.MESSAGES.getMessage("type.lacking.no.arg.constructor",
typeBeingWoven.getClassName(), superType.getClassName())));
+ String.format("The class %s and its superclass %s do not have
no-args constructors and cannot be woven.",
+ typeBeingWoven.getClassName(),
superType.getClassName())));
}
methodAdapter.loadThis();
methodAdapter.loadArg(0);
@@ -674,11 +683,15 @@ public abstract class AbstractWovenProxy
* @throws IOException
*/
public static void readClass(Class<?> c, ClassVisitor adapter) throws
IOException {
- String className = c.getName();
- className = className.substring(className.lastIndexOf('.') + 1) + ".class";
-
+ String className = c.getName().replace(".", "/") + ".class";
+
//Load the class bytes and copy methods across
- ClassReader cReader = new ClassReader(c.getResourceAsStream(className));
+ ClassLoader loader = c.getClassLoader();
+ if (loader == null) {
+ //system class, use SystemModuleClassLoader as fallback
+ loader = new SystemModuleClassLoader();
+ }
+ ClassReader cReader = new
ClassReader(loader.getResourceAsStream(className));
cReader.accept(adapter, ClassReader.SKIP_CODE |
ClassReader.SKIP_DEBUG | ClassReader.SKIP_FRAMES);
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/AbstractWovenProxyMethodAdapter.java
Fri May 5 21:17:42 2017
@@ -18,6 +18,7 @@
*/
package org.apache.aries.proxy.impl.common;
+import static java.lang.String.format;
import static
org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.DISPATCHER_FIELD;
import static
org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.DISPATCHER_TYPE;
import static
org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.LISTENER_FIELD;
@@ -34,13 +35,13 @@ import static org.objectweb.asm.Opcodes.
import java.util.Arrays;
import org.apache.aries.proxy.InvocationListener;
-import org.apache.aries.proxy.impl.NLS;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.Type;
import org.objectweb.asm.commons.GeneratorAdapter;
import org.objectweb.asm.commons.Method;
+
/**
* This class weaves dispatch and listener code into a method, there are two
known
* subclasses {@link WovenProxyConcreteMethodAdapter} is used for weaving
instance methods
@@ -477,7 +478,8 @@ public abstract class AbstractWovenProxy
ilMethod = clazz.getMethod(name, argTypes);
} catch (Exception e) {
//Should be impossible!
- throw new
RuntimeException(NLS.MESSAGES.getMessage("error.finding.invocation.listener.method",
name, Arrays.toString(argTypes)), e);
+ throw new RuntimeException(format("Error finding InvocationListener
method %s with argument types %s.",
+ name, Arrays.toString(argTypes)), e);
}
//get the ASM method
return new Method(name, Type.getReturnType(ilMethod),
Type.getArgumentTypes(ilMethod));
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/MethodCopyingClassAdapter.java
Fri May 5 21:17:42 2017
@@ -18,12 +18,13 @@
*/
package org.apache.aries.proxy.impl.common;
+import static java.lang.String.format;
+
import java.util.Map;
import java.util.Set;
import org.apache.aries.proxy.FinalModifierException;
import org.apache.aries.proxy.UnableToProxyException;
-import org.apache.aries.proxy.impl.NLS;
import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassReader;
@@ -115,9 +116,9 @@ final class MethodCopyingClassAdapter ex
// We can't call up to a default access method if we aren't in the same
// package
if((access & (ACC_PUBLIC | ACC_PROTECTED | ACC_PRIVATE)) == 0) {
- if(!!!samePackage)
- throw new
RuntimeException(NLS.MESSAGES.getMessage("method.from.superclass.is.hidden",
name, superToCopy.getName(), overridingClassType.getClassName()),
- new UnableToProxyException(superToCopy));
+ if(!!!samePackage) {
+ methodHiddenException(name);
+ }
}
//Safe to copy a call to this method!
Type superType = Type.getType(superToCopy);
@@ -140,9 +141,9 @@ final class MethodCopyingClassAdapter ex
//odd, but if class Super has a protected method foo(), then class
Sub, that extends Super, cannot
//call ((Super)o).foo() in code (it can call super.foo()). If we are
in the same package then this
//gets around the problem, but if not the class will fail verification.
- if(!samePackage && (access & ACC_PROTECTED) != 0)
- throw new
RuntimeException(NLS.MESSAGES.getMessage("method.from.superclass.is.hidden",
name, superToCopy.getName(), overridingClassType.getClassName()),
- new UnableToProxyException(superToCopy));
+ if(!samePackage && (access & ACC_PROTECTED) != 0) {
+ methodHiddenException(name);
+ }
mv = new CopyingMethodAdapter((GeneratorAdapter) weaver, superType,
currentTransformMethod);
}
else {
@@ -154,6 +155,13 @@ final class MethodCopyingClassAdapter ex
return mv;
}
+
+private void methodHiddenException(String name) {
+ String msg = format("The method %s in class %s cannot be called by %s
because it is in a different package.",
+ name, superToCopy.getName(),
overridingClassType.getClassName());
+ throw new RuntimeException(msg,
+ new UnableToProxyException(superToCopy));
+}
/**
* This class is used to prevent any method body being copied, instead
replacing
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/common/OSGiFriendlyClassWriter.java
Fri May 5 21:17:42 2017
@@ -24,7 +24,6 @@ import java.util.HashSet;
import java.util.Set;
import org.apache.aries.proxy.UnableToProxyException;
-import org.apache.aries.proxy.impl.NLS;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
/**
@@ -115,10 +114,11 @@ public final class OSGiFriendlyClassWrit
}
}
+ String msg = String.format("The class %s and %s do not have a common
super class.", arg0, arg1);
if (unable == null) {
- throw new
RuntimeException(NLS.MESSAGES.getMessage("no.common.superclass", arg0, arg1));
+ throw new RuntimeException(msg);
} else {
- throw new RuntimeException(new UnableToProxyException(unable,
NLS.MESSAGES.getMessage("no.common.superclass", arg0, arg1)));
+ throw new RuntimeException(new UnableToProxyException(unable, msg));
}
} catch (IOException e) {
throw new RuntimeException(e);
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassAdapter.java
Fri May 5 21:17:42 2017
@@ -19,12 +19,12 @@
package org.apache.aries.proxy.impl.gen;
import java.io.IOException;
+import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Modifier;
-import org.apache.aries.proxy.impl.NLS;
import org.apache.aries.proxy.impl.ProxyUtils;
+import org.apache.aries.proxy.impl.SystemModuleClassLoader;
import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassReader;
@@ -274,9 +274,17 @@ public class ProxySubclassAdapter extend
if (loader == null) {
loader = this.loader;
}
- ClassReader cr = new
ClassReader(loader.getResourceAsStream(currentlyAnalysedClass
- .getName().replaceAll("\\.", "/")
- + ".class"));
+ InputStream is = loader.getResourceAsStream(currentlyAnalysedClass
+
.getName().replaceAll("\\.", "/")
+ + ".class");
+ if (is == null) {
+ //use SystemModuleClassLoader as fallback
+ ClassLoader classLoader = new SystemModuleClassLoader();
+ is = classLoader.getResourceAsStream(currentlyAnalysedClass
+ .getName().replaceAll("\\.", "/")
+ + ".class");
+ }
+ ClassReader cr = new ClassReader(is);
ClassVisitor hierarchyAdapter = new
ProxySubclassHierarchyAdapter(this, setOfFoundMethods);
cr.accept(hierarchyAdapter, ClassReader.SKIP_DEBUG);
} catch (IOException e) {
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassGenerator.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassGenerator.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassGenerator.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/gen/ProxySubclassGenerator.java
Fri May 5 21:17:42 2017
@@ -37,7 +37,6 @@ import java.util.concurrent.ConcurrentMa
import org.apache.aries.proxy.FinalModifierException;
import org.apache.aries.proxy.UnableToProxyException;
-import org.apache.aries.proxy.impl.NLS;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
@@ -46,6 +45,7 @@ import org.slf4j.LoggerFactory;
import sun.reflect.ReflectionFactory;
+@SuppressWarnings("restriction")
public class ProxySubclassGenerator
{
@@ -196,7 +196,8 @@ public class ProxySubclassGenerator
LOGGER.debug(Constants.LOG_EXCEPTION, iae);
throw new ProxyClassInstantiationException(classToProxy, iae);
} catch (VerifyError ve) {
-
LOGGER.info(NLS.MESSAGES.getMessage("no.nonprivate.noargs.constructor",
classToProxy));
+ LOGGER.info(String.format("The no-argument constructor of class %s is
private and therefore it may not be possible to generate a valid proxy.",
+ classToProxy));
LOGGER.debug(Constants.LOG_EXCEPTION, ve);
throw new ProxyClassInstantiationException(classToProxy, ve);
}
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceCombiningClassAdapter.java
Fri May 5 21:17:42 2017
@@ -95,6 +95,9 @@ final class InterfaceCombiningClassAdapt
else if(((access & (ACC_PRIVATE|ACC_SYNTHETIC)) ==
(ACC_PRIVATE|ACC_SYNTHETIC))) {
// private, synthetic methods on interfaces don't need to be
proxied.
return null;
+ } else if (((access & (ACC_STATIC)) == (ACC_STATIC))) {
+ //static methods on interfaces don't need to be proxied
+ return null;
}
else {//We're going to implement this method, so make it non abstract!
return adapter.visitMethod(access, name, desc, null, arg4);
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/InterfaceProxyGenerator.java
Fri May 5 21:17:42 2017
@@ -115,7 +115,18 @@ public final class InterfaceProxyGenerat
private static SortedSet<Class<?>> createSet(Collection<Class<?>> ifaces) {
SortedSet<Class<?>> classes = new TreeSet<Class<?>>(new
Comparator<Class<?>>() {
public int compare(Class<?> object1, Class<?> object2) {
- return object1.getName().compareTo(object2.getName());
+ if (object1.getName().equals(object2.getName())) {
+ return 0;
+ } else if (object1.isAssignableFrom(object2)) {
+ // first class is parent of second, it occurs earlier in type
hierarchy
+ return -1;
+ } else if (object2.isAssignableFrom(object1)) {
+ // second class is subclass of first one, it occurs later in
hierarchy
+ return 1;
+ }
+ // types have separate inheritance trees, so it doesn't mater which
one is first or second,
+ // however we can't mark them as equal cause one of them will be
removed
+ return 1;
}
});
for(Class<?> c : ifaces) {
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/ProxyClassLoader.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/ProxyClassLoader.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/ProxyClassLoader.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/interfaces/ProxyClassLoader.java
Fri May 5 21:17:42 2017
@@ -37,8 +37,8 @@ import org.apache.aries.proxy.Invocation
import org.apache.aries.proxy.UnableToProxyException;
import org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter;
import org.apache.aries.proxy.weaving.WovenProxy;
-import org.apache.aries.util.AriesFrameworkUtil;
import org.osgi.framework.Bundle;
+import org.osgi.framework.wiring.BundleWiring;
/** An implementation of ClassLoader that will be used to define our proxy
class */
final class ProxyClassLoader extends ClassLoader {
@@ -63,7 +63,14 @@ final class ProxyClassLoader extends Cla
private final ReadWriteLock ifacesLock = new ReentrantReadWriteLock();
public ProxyClassLoader(Bundle bundle) {
- super(AriesFrameworkUtil.getClassLoader(bundle));
+// super(AriesFrameworkUtil.getClassLoader(bundle));
+ super(getClassloader(bundle));
+ }
+
+ private static ClassLoader getClassloader(Bundle bundle) {
+ if (bundle == null) return ProxyClassLoader.class.getClassLoader();
+ BundleWiring wiring = bundle != null ? bundle.adapt(BundleWiring.class) :
null;
+ return wiring != null ? wiring.getClassLoader() : null;
}
@Override
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/ProxyWeavingHook.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/ProxyWeavingHook.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/ProxyWeavingHook.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/impl/weaving/ProxyWeavingHook.java
Fri May 5 21:17:42 2017
@@ -18,6 +18,8 @@
*/
package org.apache.aries.proxy.impl.weaving;
+import static java.lang.String.format;
+
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Hashtable;
@@ -25,7 +27,6 @@ import java.util.List;
import java.util.regex.Pattern;
import org.apache.aries.proxy.UnableToProxyException;
-import org.apache.aries.proxy.impl.NLS;
import org.apache.aries.proxy.weaving.WovenProxy;
import org.apache.aries.proxy.weavinghook.ProxyWeavingController;
import org.apache.aries.proxy.weavinghook.WeavingHelper;
@@ -60,9 +61,13 @@ public final class ProxyWeavingHook impl
private final List<Pattern> enabled;
private final List<Pattern> disabled;
+ @SuppressWarnings("rawtypes")
private final ServiceTracker controllers;
- public ProxyWeavingHook(BundleContext context) {
+ @SuppressWarnings({
+ "unchecked", "rawtypes"
+})
+public ProxyWeavingHook(BundleContext context) {
String enabledProp = context != null ?
context.getProperty(WEAVING_ENABLED_CLASSES) : null;
enabled = parseMatchers(enabledProp, WEAVING_ENABLED_CLASSES_DEFAULT);
disabled = parseMatchers(context != null ?
context.getProperty(WEAVING_DISABLED_CLASSES) : null,
WEAVING_DISABLED_CLASSES_DEFAULT);
@@ -109,12 +114,10 @@ public final class ProxyWeavingHook impl
e.getCause() instanceof UnableToProxyException){
//This is a weaving failure that should be logged, but the class
//can still be loaded
- LOGGER.trace(NLS.MESSAGES.getMessage("cannot.weave",
wovenClass.getClassName()), e);
+ LOGGER.trace(String.format("The class %s cannot be woven, it may not
be possible for the runtime to proxy this class.",
+ wovenClass.getClassName()), e);
} else {
- String failureMessage =
NLS.MESSAGES.getMessage("fatal.weaving.failure", wovenClass.getClassName());
- //This is a failure that should stop the class loading!
- LOGGER.error(failureMessage, e);
- throw new WeavingException(failureMessage, e);
+ throw weavingException(wovenClass, e);
}
}
@@ -127,6 +130,7 @@ public final class ProxyWeavingHook impl
}
}
+
private List<Pattern> parseMatchers(String matchers, String def) {
String[] strings = (matchers != null ? matchers : def).split(",");
List<Pattern> patterns = new ArrayList<Pattern>();
@@ -172,10 +176,7 @@ public final class ProxyWeavingHook impl
wovenClass.getBundleWiring().getClassLoader());
return WovenProxy.class.isAssignableFrom(superClass);
} catch (ClassNotFoundException e) {
- String failureMessage =
NLS.MESSAGES.getMessage("fatal.weaving.failure", wovenClass.getClassName());
- //This is a failure that should stop the class loading!
- LOGGER.error(failureMessage, e);
- throw new WeavingException(failureMessage, e);
+ throw weavingException(wovenClass, e);
}
}
@@ -201,4 +202,11 @@ public final class ProxyWeavingHook impl
return result;
}
+ private WeavingException weavingException(WovenClass wovenClass, Exception
e) {
+ String msg = format("There was a serious error trying to weave the class
%s. See the associated exception for more information.",
+ wovenClass.getClassName());
+ // This is a failure that should stop the class loading!
+ LOGGER.error(msg, e);
+ return new WeavingException(msg, e);
+ }
}
\ No newline at end of file
Modified:
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/main/java/org/apache/aries/proxy/synthesizer/Synthesizer.java
Fri May 5 21:17:42 2017
@@ -63,7 +63,6 @@ public class Synthesizer
//using the writer we created as the visitor
reader.accept(cv, 0);
} finally {
- //close the InputStream if it is hanging around
if (classInStream != null) classInStream.close();
}
FileOutputStream classOutStream = null;
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/AbstractProxyTest.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/AbstractProxyTest.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/AbstractProxyTest.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/AbstractProxyTest.java
Fri May 5 21:17:42 2017
@@ -23,6 +23,8 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -33,6 +35,7 @@ import org.apache.aries.blueprint.proxy.
import org.apache.aries.proxy.InvocationListener;
import org.apache.aries.proxy.impl.SingleInstanceDispatcher;
import org.junit.Test;
+import org.osgi.framework.wiring.BundleWiring;
public abstract class AbstractProxyTest {
@@ -375,4 +378,10 @@ public abstract class AbstractProxyTest
Method m = ptca.getClass().getDeclaredMethod("getMessage");
assertEquals("Working", m.invoke(ptca));
}
+
+ public static BundleWiring getWiring(ClassLoader loader) throws Exception {
+ BundleWiring wiring = mock(BundleWiring.class);
+ when(wiring.getClassLoader()).thenReturn(loader);
+ return wiring;
+ }
}
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/InterfaceProxyingTest.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/InterfaceProxyingTest.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/InterfaceProxyingTest.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/InterfaceProxyingTest.java
Fri May 5 21:17:42 2017
@@ -24,34 +24,29 @@ import static org.junit.Assert.assertNul
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
-import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import org.apache.aries.blueprint.proxy.AbstractProxyTest.TestListener;
-import org.apache.aries.mocks.BundleMock;
import org.apache.aries.proxy.impl.interfaces.InterfaceProxyGenerator;
-import org.apache.aries.unittest.mocks.MethodCall;
-import org.apache.aries.unittest.mocks.Skeleton;
-import org.apache.aries.util.ClassLoaderProxy;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.Mockito;
import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.wiring.BundleRevision;
import org.osgi.framework.wiring.BundleWiring;
+@SuppressWarnings("unchecked")
public class InterfaceProxyingTest {
public final static class TestCallable implements Callable<Object> {
@@ -75,32 +70,11 @@ public class InterfaceProxyingTest {
private Bundle testBundle;
- /**
- * Extended BundleMock which handles update() and adapt() methods
- */
- public static class BundleMockEx extends BundleMock {
- private BundleWiring currentWiring = Skeleton.newMock(BundleWiring.class);
-
- public BundleMockEx(String name, Dictionary<?, ?> properties) {
- super(name, properties);
- }
-
- public <A> A adapt(Class<A> type) {
- if (type == BundleWiring.class) {
- return (A) currentWiring;
- }
- return null;
- }
-
- public void update() throws BundleException {
- this.currentWiring = Skeleton.newMock(BundleWiring.class);
- }
- }
-
@Before
public void setup() {
- testBundle = Skeleton.newMock(new BundleMockEx("test",
- new Hashtable<Object, Object>()), Bundle.class);
+ testBundle = Mockito.mock(Bundle.class);
+ BundleWiring bundleWiring = Mockito.mock(BundleWiring.class);
+
Mockito.when(testBundle.adapt(BundleWiring.class)).thenReturn(bundleWiring);
}
@Test
@@ -116,8 +90,7 @@ public class InterfaceProxyingTest {
@Test
public void testGetProxyInstance2() throws Exception{
- Collection<Class<?>> classes = new
ArrayList<Class<?>>(Arrays.asList(Closeable.class,
- Iterable.class, Map.class));
+ Collection<Class<? extends Object>> classes =
Arrays.asList(Closeable.class, Iterable.class, Map.class);
Object o = InterfaceProxyGenerator.getProxyInstance(testBundle, null,
classes, constantly(null), null);
@@ -137,7 +110,7 @@ public class InterfaceProxyingTest {
TestListener tl = new TestListener();
TestCallable tc = new TestCallable();
- Callable o = (Callable)
InterfaceProxyGenerator.getProxyInstance(testBundle,
+ Callable<Object> o = (Callable<Object>)
InterfaceProxyGenerator.getProxyInstance(testBundle,
null, classes, tc, tl);
assertCalled(tl, false, false, false);
@@ -213,7 +186,7 @@ public class InterfaceProxyingTest {
assertTrue(o instanceof Callable);
- assertEquals(5, ((Callable)o).call());
+ assertEquals(5, ((Callable<Object>)o).call());
}
@Test
@@ -270,14 +243,12 @@ public class InterfaceProxyingTest {
@Test
public void testNoStaleProxiesForRefreshedBundle() throws Exception {
- Bundle bundle = (Bundle) Skeleton.newMock(new Class<?>[] { Bundle.class,
ClassLoaderProxy.class });
- Skeleton skel = Skeleton.getSkeleton(bundle);
+ Bundle bundle = mock(Bundle.class);
TestClassLoader loader = new TestClassLoader();
- skel.setReturnValue(new MethodCall(ClassLoaderProxy.class,
"getClassLoader"), loader);
- skel.setReturnValue(new MethodCall(Bundle.class, "getLastModified"),
10l);
- skel.setReturnValue(new MethodCall(Bundle.class, "adapt",
BundleWiring.class), Skeleton.newMock(BundleWiring.class));
-
+ when(bundle.getLastModified()).thenReturn(10l);
+ BundleWiring wiring = AbstractProxyTest.getWiring(loader);
+ when(bundle.adapt(BundleWiring.class)).thenReturn(wiring);
Class<?> clazz =
loader.loadClass("org.apache.aries.blueprint.proxy.TestInterface");
Object proxy = InterfaceProxyGenerator.getProxyInstance(bundle, null,
Arrays.<Class<?>>asList(clazz), constantly(null), null);
@@ -288,11 +259,11 @@ public class InterfaceProxyingTest {
/* Now again but with a changed classloader as if the bundle had
refreshed */
TestClassLoader loaderToo = new TestClassLoader();
- skel.setReturnValue(new MethodCall(ClassLoaderProxy.class,
"getClassLoader"), loaderToo);
- skel.setReturnValue(new MethodCall(Bundle.class, "getLastModified"),
20l);
+ when(bundle.getLastModified()).thenReturn(20l);
// let's change the returned revision
- skel.setReturnValue(new MethodCall(Bundle.class, "adapt",
BundleWiring.class), Skeleton.newMock(BundleWiring.class));
+ BundleWiring wiring2 = AbstractProxyTest.getWiring(loaderToo);
+ when(bundle.adapt(BundleWiring.class)).thenReturn(wiring2);
Class<?> clazzToo =
loaderToo.loadClass("org.apache.aries.blueprint.proxy.TestInterface");
@@ -301,8 +272,8 @@ public class InterfaceProxyingTest {
ClassLoader parent2= proxyToo.getClass().getClassLoader().getParent();
- // parents should be different, as the are the classloaders of different
bundle revisions
- assertTrue(parent1 != parent2);
+ //
+ assertTrue("parents should be different, as the are the classloaders of
different bundle revisions", parent1 != parent2);
}
protected void assertCalled(TestListener listener, boolean pre, boolean
post, boolean ex) {
@@ -318,4 +289,5 @@ public class InterfaceProxyingTest {
}
};
}
+
}
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxySubclassGeneratorTest.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxySubclassGeneratorTest.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxySubclassGeneratorTest.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxySubclassGeneratorTest.java
Fri May 5 21:17:42 2017
@@ -48,7 +48,7 @@ import org.apache.aries.proxy.impl.Proxy
import org.apache.aries.proxy.impl.SingleInstanceDispatcher;
import org.apache.aries.proxy.impl.gen.ProxySubclassGenerator;
import org.apache.aries.proxy.impl.gen.ProxySubclassMethodHashSet;
-import org.apache.aries.util.io.IOUtils;
+import org.apache.commons.io.IOUtils;
import org.junit.Before;
import org.junit.Test;
@@ -257,7 +257,8 @@ public class ProxySubclassGeneratorTest
super.testGenerics();
}
- @Test
+ @SuppressWarnings("unchecked")
+@Test
public void testClassLoaders() throws Exception {
ClassLoader clA = new LimitedClassLoader("org.apache.aries.proxy.test.a",
null, null);
ClassLoader clB = new LimitedClassLoader("org.apache.aries.proxy.test.b",
"org.apache.aries.proxy.test.a", clA);
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassInnerClasses.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassInnerClasses.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassInnerClasses.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassInnerClasses.java
Fri May 5 21:17:42 2017
@@ -18,7 +18,6 @@
*/
package org.apache.aries.blueprint.proxy;
-import java.lang.reflect.Proxy;
public class ProxyTestClassInnerClasses {
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializable.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializable.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializable.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializable.java
Fri May 5 21:17:42 2017
@@ -24,6 +24,7 @@ import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import java.io.Serializable;
+@SuppressWarnings("serial")
public class ProxyTestClassSerializable implements Serializable {
public int value = 0;
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableChild.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableChild.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableChild.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableChild.java
Fri May 5 21:17:42 2017
@@ -18,6 +18,7 @@
*/
package org.apache.aries.blueprint.proxy;
+@SuppressWarnings("serial")
public class ProxyTestClassSerializableChild extends
ProxyTestClassSerializable {
}
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableInterface.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableInterface.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableInterface.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSerializableInterface.java
Fri May 5 21:17:42 2017
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEqu
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
+@SuppressWarnings("serial")
public class ProxyTestClassSerializableInterface implements
ProxyTestSerializableInterface {
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuper.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuper.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuper.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuper.java
Fri May 5 21:17:42 2017
@@ -48,7 +48,8 @@ public class ProxyTestClassSuper
return null;
}
- private void doTarget() {
+ @SuppressWarnings("unused")
+private void doTarget() {
Object o = getTargetObject();
if(this != o)
((ProxyTestClassSuper)o).doTarget();
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuperWithNoDefaultOrProtectedAccess.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuperWithNoDefaultOrProtectedAccess.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuperWithNoDefaultOrProtectedAccess.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/ProxyTestClassSuperWithNoDefaultOrProtectedAccess.java
Fri May 5 21:17:42 2017
@@ -48,7 +48,8 @@ public class ProxyTestClassSuperWithNoDe
return null;
}
- private void doTarget() {
+ @SuppressWarnings("unused")
+private void doTarget() {
Object o = getTargetObject();
if(this != o)
((ProxyTestClassSuperWithNoDefaultOrProtectedAccess)o).doTarget();
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyGeneratorTest.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyGeneratorTest.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyGeneratorTest.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyGeneratorTest.java
Fri May 5 21:17:42 2017
@@ -23,6 +23,8 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
@@ -46,18 +48,17 @@ import org.apache.aries.proxy.Invocation
import org.apache.aries.proxy.UnableToProxyException;
import org.apache.aries.proxy.impl.AsmProxyManager;
import org.apache.aries.proxy.impl.SingleInstanceDispatcher;
+import org.apache.aries.proxy.impl.SystemModuleClassLoader;
import org.apache.aries.proxy.impl.gen.ProxySubclassMethodHashSet;
import org.apache.aries.proxy.impl.weaving.WovenProxyGenerator;
import org.apache.aries.proxy.weaving.WovenProxy;
-import org.apache.aries.unittest.mocks.MethodCall;
-import org.apache.aries.unittest.mocks.Skeleton;
-import org.apache.aries.util.ClassLoaderProxy;
import org.junit.BeforeClass;
import org.junit.Test;
import org.osgi.framework.Bundle;
import org.osgi.framework.wiring.BundleWiring;
+@SuppressWarnings({"unchecked", "rawtypes"})
public class WovenProxyGeneratorTest extends AbstractProxyTest
{
private static final String hexPattern = "[0-9_a-f]";
@@ -95,7 +96,7 @@ public class WovenProxyGeneratorTest ext
private static final Map<String, byte[]> rawClasses = new HashMap<String,
byte[]>();
- protected static final ClassLoader weavingLoader = new ClassLoader() {
+ protected static final ClassLoader weavingLoader = new
SystemModuleClassLoader() {
public Class<?> loadClass(String className) throws ClassNotFoundException
{
return loadClass(className, false);
@@ -139,7 +140,7 @@ public class WovenProxyGeneratorTest ext
@BeforeClass
public static void setUp() throws Exception
{
- List<Class<?>> classes = new ArrayList(CLASSES.size() +
OTHER_CLASSES.size());
+ List<Class<?>> classes = new ArrayList<Class<?>>(CLASSES.size() +
OTHER_CLASSES.size());
classes.addAll(CLASSES);
classes.addAll(OTHER_CLASSES);
@@ -496,13 +497,9 @@ public class WovenProxyGeneratorTest ext
*/
@Test
public void testWovenClassPlusInterfaces() throws Exception {
- Bundle b = (Bundle) Skeleton.newMock(new Class<?>[] {Bundle.class,
ClassLoaderProxy.class});
- BundleWiring bw = (BundleWiring) Skeleton.newMock(BundleWiring.class);
-
- Skeleton.getSkeleton(b).setReturnValue(new MethodCall(
- ClassLoaderProxy.class, "getClassLoader"), weavingLoader);
- Skeleton.getSkeleton(b).setReturnValue(new MethodCall(
- ClassLoaderProxy.class, "adapt", BundleWiring.class), bw);
+ Bundle b = mock(Bundle.class);
+ BundleWiring wiring = getWiring(weavingLoader);
+ when(b.adapt(BundleWiring.class)).thenReturn(wiring);
Object toCall = new AsmProxyManager().createDelegatingProxy(b,
Arrays.asList(
getProxyClass(ProxyTestClassAbstract.class), Callable.class), new
Callable() {
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyPlusSubclassGeneratorTest.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyPlusSubclassGeneratorTest.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyPlusSubclassGeneratorTest.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenProxyPlusSubclassGeneratorTest.java
Fri May 5 21:17:42 2017
@@ -21,16 +21,15 @@ package org.apache.aries.blueprint.proxy
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
@@ -39,13 +38,8 @@ import org.apache.aries.proxy.Invocation
import org.apache.aries.proxy.UnableToProxyException;
import org.apache.aries.proxy.impl.SingleInstanceDispatcher;
import org.apache.aries.proxy.impl.gen.ProxySubclassGenerator;
-import org.apache.aries.proxy.impl.gen.ProxySubclassMethodHashSet;
import org.apache.aries.proxy.impl.interfaces.InterfaceProxyGenerator;
import org.apache.aries.proxy.weaving.WovenProxy;
-import org.apache.aries.unittest.mocks.MethodCall;
-import org.apache.aries.unittest.mocks.Skeleton;
-import org.apache.aries.util.ClassLoaderProxy;
-import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.osgi.framework.Bundle;
@@ -54,28 +48,21 @@ import org.osgi.framework.wiring.BundleW
/**
* This class uses the {@link ProxySubclassGenerator} to test
*/
+@SuppressWarnings("unchecked")
public class WovenProxyPlusSubclassGeneratorTest extends
WovenProxyGeneratorTest
{
private static final Class<?> FINAL_METHOD_CLASS =
ProxyTestClassFinalMethod.class;
private static final Class<?> FINAL_CLASS = ProxyTestClassFinal.class;
- private static final Class<?> GENERIC_CLASS = ProxyTestClassGeneric.class;
- private static final Class<?> COVARIANT_CLASS =
ProxyTestClassCovariantOverride.class;
- private static ProxySubclassMethodHashSet<String> expectedMethods = new
ProxySubclassMethodHashSet<String>(
- 12);
private Callable<Object> testCallable = null;
private static Bundle testBundle;
- private static BundleWiring testBundleWiring;
@BeforeClass
- public static void createTestBundle() {
- testBundle = (Bundle) Skeleton.newMock(new Class<?>[] {Bundle.class,
ClassLoaderProxy.class});
- testBundleWiring = (BundleWiring)
Skeleton.newMock(BundleWiring.class);
-
- Skeleton.getSkeleton(testBundle).setReturnValue(new MethodCall(
- ClassLoaderProxy.class, "getClassLoader"), weavingLoader);
- Skeleton.getSkeleton(testBundle).setReturnValue(new MethodCall(
- ClassLoaderProxy.class, "adapt", BundleWiring.class),
testBundleWiring);
+ public static void createTestBundle() throws Exception {
+ testBundle = mock(Bundle.class);
+ BundleWiring wiring = AbstractProxyTest.getWiring(weavingLoader);
+ when(testBundle.adapt(BundleWiring.class))
+ .thenReturn(wiring);
}
//Avoid running four weaving tests that don't apply to us
@@ -203,7 +190,7 @@ public class WovenProxyPlusSubclassGener
{
try {
InterfaceProxyGenerator.getProxyInstance(null, FINAL_CLASS,
Collections.EMPTY_SET,
- new Callable() {
+ new Callable<Object>() {
public Object call() throws Exception {
return null;
}} , null).getClass();
Modified:
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenSubclassGeneratorTest.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenSubclassGeneratorTest.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenSubclassGeneratorTest.java
(original)
+++
aries/branches/java6support/proxy/proxy-impl/src/test/java/org/apache/aries/blueprint/proxy/WovenSubclassGeneratorTest.java
Fri May 5 21:17:42 2017
@@ -42,12 +42,12 @@ import org.apache.aries.proxy.impl.gen.P
import org.apache.aries.proxy.impl.gen.ProxySubclassMethodHashSet;
import org.apache.aries.proxy.impl.interfaces.InterfaceProxyGenerator;
import org.apache.aries.proxy.weaving.WovenProxy;
-import org.junit.Before;
import org.junit.Test;
/**
* This class uses the {@link ProxySubclassGenerator} to test
*/
+@SuppressWarnings("unchecked")
public class WovenSubclassGeneratorTest extends AbstractProxyTest
{
private static final Class<?> FINAL_METHOD_CLASS =
ProxyTestClassFinalMethod.class;
Modified: aries/branches/java6support/proxy/proxy-itests/pom.xml
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-itests/pom.xml?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
--- aries/branches/java6support/proxy/proxy-itests/pom.xml (original)
+++ aries/branches/java6support/proxy/proxy-itests/pom.xml Fri May 5 21:17:42
2017
@@ -61,33 +61,15 @@
</dependency>
<dependency>
<groupId>org.apache.aries.proxy</groupId>
- <artifactId>org.apache.aries.proxy</artifactId>
- <scope>test</scope>
- <version>1.0.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.aries.proxy</groupId>
<artifactId>org.apache.aries.proxy.api</artifactId>
<scope>test</scope>
- <version>1.0.2-SNAPSHOT</version>
+ <version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.aries.proxy</groupId>
- <artifactId>org.apache.aries.proxy.impl</artifactId>
- <scope>test</scope>
- <version>1.0.5-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.aries</groupId>
- <artifactId>org.apache.aries.util</artifactId>
- <scope>test</scope>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.aries.testsupport</groupId>
- <artifactId>org.apache.aries.testsupport.unit</artifactId>
- <version>2.0.0-SNAPSHOT</version>
+ <artifactId>org.apache.aries.proxy</artifactId>
<scope>test</scope>
+ <version>1.1.1-SNAPSHOT</version>
</dependency>
<!-- pax exam -->
Modified:
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java
URL:
http://svn.apache.org/viewvc/aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java?rev=1794106&r1=1794105&r2=1794106&view=diff
==============================================================================
---
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java
(original)
+++
aries/branches/java6support/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/AbstractProxyTest.java
Fri May 5 21:17:42 2017
@@ -23,9 +23,7 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.CoreOptions.options;
import static org.ops4j.pax.exam.CoreOptions.systemProperty;
import static org.ops4j.pax.exam.CoreOptions.when;
@@ -38,7 +36,6 @@ import java.util.concurrent.Callable;
import javax.inject.Inject;
-import org.apache.aries.itest.AbstractIntegrationTest;
import org.apache.aries.proxy.InvocationListener;
import org.apache.aries.proxy.ProxyManager;
import org.junit.Test;
@@ -49,10 +46,14 @@ import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
-public abstract class AbstractProxyTest extends AbstractIntegrationTest {
+public abstract class AbstractProxyTest {
+ @Inject
+ BundleContext bundleContext;
+
@Inject
ProxyManager mgr;
@@ -287,40 +288,22 @@ public abstract class AbstractProxyTest
assertEquals(ex, listener.postInvokeExceptionalReturn);
}
- protected Option generalOptions() {
+ protected Option proxyOptions() {
String localRepo = System.getProperty("maven.repo.local");
if (localRepo == null) {
localRepo =
System.getProperty("org.ops4j.pax.url.mvn.localRepository");
}
- return composite(
- junitBundles(),
+ return composite(
+ CoreOptions.junitBundles(),
systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo !=
null).useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository="
+ localRepo)),
- mavenBundle("org.apache.aries",
"org.apache.aries.util").versionAsInProject(),
- mavenBundle("org.ow2.asm",
"asm-debug-all").versionAsInProject(),
- mavenBundle("org.apache.aries.testsupport",
"org.apache.aries.testsupport.unit").versionAsInProject(),
+ mavenBundle("org.ow2.asm", "asm-debug-all").versionAsInProject(),
mavenBundle("org.ops4j.pax.logging",
"pax-logging-api").versionAsInProject(),
- mavenBundle("org.ops4j.pax.logging",
"pax-logging-service").versionAsInProject()
- /* vmOption
("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
- waitForFrameworkStartup(),*/
- );
- }
-
- protected Option[] proxyBundles()
- {
- return options(
- generalOptions(),
- mavenBundle("org.apache.aries.proxy",
"org.apache.aries.proxy.api").versionAsInProject(),
- mavenBundle("org.apache.aries.proxy",
"org.apache.aries.proxy.impl").versionAsInProject()
- );
- }
-
- protected Option[] proxyUberBundle()
- {
- return options(
- generalOptions(),
- mavenBundle("org.apache.aries.proxy",
"org.apache.aries.proxy").versionAsInProject()
- );
+ mavenBundle("org.ops4j.pax.logging",
"pax-logging-service").versionAsInProject(),
+ mavenBundle("org.apache.aries.proxy",
"org.apache.aries.proxy").versionAsInProject()
+ /* vmOption
("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
+ waitForFrameworkStartup(),*/
+ );
}
}