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 2015/04/15 18:53:40 UTC

[03/12] tomee git commit: TOMEE-1547 Fix compile issue from merge and some slight tweaks

TOMEE-1547 Fix compile issue from merge and some slight tweaks


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/15df1fee
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/15df1fee
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/15df1fee

Branch: refs/heads/master
Commit: 15df1feeb23f855fb7e544a7bee3011bf5ac1861
Parents: 1c52f1e
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Wed Apr 15 10:54:07 2015 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Wed Apr 15 11:58:39 2015 +0100

----------------------------------------------------------------------
 .../arquillian/tests/resource/ResourceTest.java | 18 ++++++------
 .../openejb/assembler/classic/Assembler.java    | 31 +++++++++-----------
 .../apache/openejb/config/ReadDescriptors.java  |  5 +---
 .../core/ivm/naming/LazyObjectReference.java    |  4 +++
 4 files changed, 28 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/15df1fee/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/src/test/java/org/apache/openejb/arquillian/tests/resource/ResourceTest.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/src/test/java/org/apache/openejb/arquillian/tests/resource/ResourceTest.java b/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/src/test/java/org/apache/openejb/arquillian/tests/resource/ResourceTest.java
index dabc13b..2ea59a4 100644
--- a/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/src/test/java/org/apache/openejb/arquillian/tests/resource/ResourceTest.java
+++ b/arquillian/arquillian-tomee-tests/arquillian-tomee-config-tests/src/test/java/org/apache/openejb/arquillian/tests/resource/ResourceTest.java
@@ -19,15 +19,7 @@
 
 package org.apache.openejb.arquillian.tests.resource;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.annotation.Resource;
-import javax.ejb.EJB;
-import javax.ejb.Lock;
-import javax.ejb.LockType;
-import javax.ejb.Singleton;
-
-import org.apache.openejb.api.resource.DestroyableResource;
+import org.apache.openejb.api.DestroyableResource;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
@@ -37,6 +29,14 @@ import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.Lock;
+import javax.ejb.LockType;
+import javax.ejb.Singleton;
+
 @RunWith(Arquillian.class)
 public class ResourceTest {
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/15df1fee/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index 940c6ab..2c63f36 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -1115,6 +1115,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
                         Object resource = containerSystemContext.lookup(OPENEJB_RESOURCE_JNDI_PREFIX + resourceInfo.id);
                         if (resource instanceof LazyResource) {
                             resource = LazyResource.class.cast(resource).getObject();
+                            this.bindResource(resourceInfo.id, resource);
                         }
 
                         try {
@@ -1755,6 +1756,9 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
     }
 
     private void destroyResource(final String name, final String className, final Object object) {
+
+        final Method preDestroy = findPreDestroy(object);
+
         if (object instanceof ResourceAdapterReference) {
             final ResourceAdapterReference resourceAdapter = (ResourceAdapterReference) object;
             try {
@@ -1813,9 +1817,13 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
             } catch (final RuntimeException e) {
                 logger.error(e.getMessage(), e);
             }
-        } else if (hasPreDestroy(object)) {
+        } else if (preDestroy != null) {
             logger.debug("Calling @PreDestroy on: " + className);
-            preDestroy(object);
+            try {
+                preDestroy.invoke(object);
+            } catch (final Exception e) {
+                logger.error(e.getMessage(), e);
+            }
         } else if (logger.isDebugEnabled() && !DataSource.class.isInstance(object)) {
             logger.debug("Not processing resource on destroy: " + className);
         }
@@ -1836,28 +1844,17 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
         }
     }
 
-    private void preDestroy(final Object object) {
-        final Method preDestroy = findMethodAnnotatedWith(PreDestroy.class, object.getClass());
-        if (preDestroy != null) {
-            try {
-                preDestroy.invoke(object);
-            } catch (Exception e) {
-                logger.error("Error when calling @PreDestroy", e);
-            }
-        }
-    }
-
-    private boolean hasPreDestroy(final Object object) {
+    private Method findPreDestroy(final Object object) {
         try {
             Object resource = object;
-            if (resource instanceof LazyResource) {
+            if (LazyResource.class.isInstance(resource) && LazyResource.class.cast(resource).isInitialized()) {
                 resource = LazyResource.class.cast(resource).getObject();
             }
 
             final Class<? extends Object> cls = resource.getClass();
-            return findMethodAnnotatedWith(PreDestroy.class, cls) != null;
+            return findMethodAnnotatedWith(PreDestroy.class, cls);
         } catch (Exception e) {
-            return false;
+            return null;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/15df1fee/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
index abd6dfc..5f951a1 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
@@ -278,12 +278,9 @@ public class ReadDescriptors implements DynamicDeployer {
             if (resource.getClassName() != null) {
                 try {
                     ParentClassLoaderFinder.Helper.get().loadClass(resource.getClassName());
-                    if (resource.getType() != null) {
-                        ParentClassLoaderFinder.Helper.get().loadClass(resource.getType());
-                    }
                     continue;
                 } catch (Exception e) {
-                    // ignore if these classes are found in the classloader
+                    // ignore if this class is not found in the classloader
                 }
 
                 // if the resource class cannot be loaded,

http://git-wip-us.apache.org/repos/asf/tomee/blob/15df1fee/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/LazyObjectReference.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/LazyObjectReference.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/LazyObjectReference.java
index f4b74da..37aa6ee 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/LazyObjectReference.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/LazyObjectReference.java
@@ -43,4 +43,8 @@ public class LazyObjectReference<T> extends Reference {
         }
         return instance;
     }
+
+    public boolean isInitialized() {
+        return instance != null;
+    }
 }