You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2017/08/03 22:15:28 UTC
[2/5] tomee git commit: Don't break the dynamic abstract ejb concept.
Remove unnecessary imports
Don't break the dynamic abstract ejb concept. Remove unnecessary imports
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/dec53967
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/dec53967
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/dec53967
Branch: refs/heads/master
Commit: dec53967a462ad315f0211ba5d7dfa7954d1a5bf
Parents: bd79546
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Thu Jun 29 16:11:52 2017 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Wed Aug 2 10:50:58 2017 +0100
----------------------------------------------------------------------
.../org/apache/openejb/dyni/DynamicSubclass.java | 16 +++++++++++-----
.../openejb/resource/AutoConnectionTracker.java | 4 +---
2 files changed, 12 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/dec53967/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
index 123c0ff..44e1256 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/dyni/DynamicSubclass.java
@@ -61,6 +61,10 @@ public class DynamicSubclass implements Opcodes {
}
public static Class createSubclass(final Class<?> abstractClass, final ClassLoader cl) {
+ return createSubclass(abstractClass, cl, false);
+ }
+
+ public static Class createSubclass(final Class<?> abstractClass, final ClassLoader cl, boolean proxyNonAbstractMethods) {
final String proxyName = getSubclassName(abstractClass);
try {
@@ -80,7 +84,7 @@ public class DynamicSubclass implements Opcodes {
// no-op
}
- return LocalBeanProxyFactory.Unsafe.defineClass(cl, abstractClass, proxyName, generateBytes(abstractClass));
+ return LocalBeanProxyFactory.Unsafe.defineClass(abstractClass, proxyName, generateBytes(abstractClass));
} catch (final Exception e) {
throw new InternalError(DynamicSubclass.class.getSimpleName() + ".createSubclass: " + Debug.printStackTrace(e));
@@ -96,14 +100,16 @@ public class DynamicSubclass implements Opcodes {
thisHandler.setAccessible(true);
}
thisHandler.set(instance, handler);
- } catch (final NoSuchFieldException | IllegalAccessException e) {
+ } catch (final NoSuchFieldException e) {
+ throw new IllegalArgumentException(e);
+ } catch (final IllegalAccessException e) {
throw new IllegalArgumentException(e);
}
}
- private static byte[] generateBytes(final Class<?> classToProxy) throws ProxyGenerationException {
+ private static byte[] generateBytes(final Class<?> classToProxy, final boolean proxyNonAbstractMethods) throws ProxyGenerationException {
- final Map<String, MethodVisitor> visitors = new HashMap<>();
+ final Map<String, MethodVisitor> visitors = new HashMap<String, MethodVisitor>();
final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
@@ -134,7 +140,7 @@ public class DynamicSubclass implements Opcodes {
for (final Map.Entry<String, List<Method>> entry : methodMap.entrySet()) {
for (final Method method : entry.getValue()) {
- if (Modifier.isPublic(method.getModifiers())) {
+ if (Modifier.isAbstract(method.getModifiers()) || (proxyNonAbstractMethods && Modifier.isPublic(method.getModifiers()))) {
final MethodVisitor visitor = LocalBeanProxyFactory.visit(cw, method, proxyClassFileName, "this$handler");
visitors.put(method.getName() + Type.getMethodDescriptor(method), visitor);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/dec53967/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
index 7ec8ecb..125e37a 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/AutoConnectionTracker.java
@@ -23,8 +23,6 @@ import org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor;
import org.apache.geronimo.connector.outbound.ManagedConnectionInfo;
import org.apache.geronimo.connector.outbound.connectiontracking.ConnectionTracker;
import org.apache.openejb.dyni.DynamicSubclass;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
import javax.resource.ResourceException;
@@ -157,7 +155,7 @@ public class AutoConnectionTracker implements ConnectionTracker {
synchronized (this) {
found = proxies.get(aClass);
if (found == null) {
- proxies.put(aClass, DynamicSubclass.createSubclass(aClass, loader));
+ proxies.put(aClass, DynamicSubclass.createSubclass(aClass, loader, true));
found = proxies.get(aClass);
}
}