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 11:54:43 UTC

tomee git commit: TOMEE-1547 Fix compile issue from merge and some slight tweaks

Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x ad3b535e0 -> 3f17e237d


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/3f17e237
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3f17e237
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3f17e237

Branch: refs/heads/tomee-1.7.x
Commit: 3f17e237dd15ae81847a418e34e7c8f15f6e4640
Parents: ad3b535
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 10:54:07 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/3f17e237/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/3f17e237/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 47930c0..0e7373d 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
@@ -978,6 +978,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 {
@@ -1604,6 +1605,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 {
@@ -1662,9 +1666,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);
         }
@@ -1685,28 +1693,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/3f17e237/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 806793d..aaf31ed 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
@@ -277,12 +277,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/3f17e237/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 cd45609..855091e 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;
+    }
 }