Author: rmannibucau Date: Sat May 24 18:48:47 2014 New Revision: 1597336 URL: http://svn.apache.org/r1597336 Log: adding DestroyableResource interface instead of CloseableResource annotation, goal would be to simply Assembler#destroyResource
Added: tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/DestroyableResource.java - copied, changed from r1597333, tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/CloseableResource.java Removed: tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/CloseableResource.java Modified: tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedExecutorServiceImpl.java tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedScheduledExecutorServiceImpl.java tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Copied: tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/DestroyableResource.java (from r1597333, tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/CloseableResource.java) URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/DestroyableResource.java?p2=tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/DestroyableResource.java&p1=tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/CloseableResource.java&r1=1597333&r2=1597336&rev=1597336&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/CloseableResource.java (original) +++ tomee/tomee/trunk/container/openejb-api/src/main/java/org/apache/openejb/api/DestroyableResource.java Sat May 24 18:48:47 2014 @@ -16,12 +16,6 @@ */ package org.apache.openejb.api; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -public @interface CloseableResource { +public interface DestroyableResource { + void destroyResource(); } Modified: tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedExecutorServiceImpl.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedExecutorServiceImpl.java?rev=1597336&r1=1597335&r2=1597336&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedExecutorServiceImpl.java (original) +++ tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedExecutorServiceImpl.java Sat May 24 18:48:47 2014 @@ -16,7 +16,7 @@ */ package org.apache.openejb.concurrencyutilities.ee.impl; -import org.apache.openejb.api.CloseableResource; +import org.apache.openejb.api.DestroyableResource; import org.apache.openejb.concurrencyutilities.ee.future.CUFuture; import org.apache.openejb.concurrencyutilities.ee.task.CUCallable; import org.apache.openejb.concurrencyutilities.ee.task.CURunnable; @@ -24,8 +24,6 @@ import org.apache.openejb.util.LogCatego import org.apache.openejb.util.Logger; import javax.enterprise.concurrent.ManagedExecutorService; -import java.io.Closeable; -import java.io.IOException; import java.util.List; import java.util.concurrent.AbstractExecutorService; import java.util.concurrent.Callable; @@ -33,8 +31,7 @@ import java.util.concurrent.ExecutorServ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -@CloseableResource -public class ManagedExecutorServiceImpl extends AbstractExecutorService implements ManagedExecutorService, Closeable { +public class ManagedExecutorServiceImpl extends AbstractExecutorService implements ManagedExecutorService, DestroyableResource { private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, ManagedExecutorServiceImpl.class); private final ExecutorService delegate; @@ -104,7 +101,7 @@ public class ManagedExecutorServiceImpl } @Override - public void close() throws IOException { + public void destroyResource() { final List<Runnable> runnables = delegate.shutdownNow(); if (runnables.size() > 0) { LOGGER.warning(runnables.size() + " tasks to execute"); Modified: tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedScheduledExecutorServiceImpl.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedScheduledExecutorServiceImpl.java?rev=1597336&r1=1597335&r2=1597336&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedScheduledExecutorServiceImpl.java (original) +++ tomee/tomee/trunk/container/openejb-concurrency-utilities-ee/src/main/java/org/apache/openejb/concurrencyutilities/ee/impl/ManagedScheduledExecutorServiceImpl.java Sat May 24 18:48:47 2014 @@ -16,7 +16,6 @@ */ package org.apache.openejb.concurrencyutilities.ee.impl; -import org.apache.openejb.api.CloseableResource; import org.apache.openejb.concurrencyutilities.ee.future.CUScheduleFuture; import org.apache.openejb.concurrencyutilities.ee.task.CUCallable; import org.apache.openejb.concurrencyutilities.ee.task.CURunnable; @@ -28,6 +27,7 @@ import javax.enterprise.concurrent.Manag import javax.enterprise.concurrent.ManagedTask; import javax.enterprise.concurrent.Trigger; import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Date; @@ -38,7 +38,6 @@ import java.util.concurrent.ScheduledFut import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; -@CloseableResource public class ManagedScheduledExecutorServiceImpl extends ManagedExecutorServiceImpl implements ManagedScheduledExecutorService { private final ScheduledExecutorService delegate; @@ -125,7 +124,11 @@ public class ManagedScheduledExecutorSer @Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { - return method.invoke(delegate.get(), args); + try { + return method.invoke(delegate.get(), args); + } catch (final InvocationTargetException ite) { + throw ite.getCause(); + } } private static <V> ScheduledFuture<V> newProxy(final AtomicReference<Future<V>> futureHandle) { Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1597336&r1=1597335&r2=1597336&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sat May 24 18:48:47 2014 @@ -17,72 +17,6 @@ package org.apache.openejb.assembler.classic; -import java.io.ByteArrayInputStream; -import java.io.Closeable; -import java.io.Externalizable; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.Serializable; -import java.lang.instrument.ClassFileTransformer; -import java.lang.instrument.Instrumentation; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Properties; -import java.util.Set; -import java.util.TreeMap; -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.locks.ReentrantLock; - -import javax.enterprise.context.Dependent; -import javax.enterprise.context.spi.CreationalContext; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; -import javax.management.InstanceNotFoundException; -import javax.management.MBeanRegistrationException; -import javax.management.MBeanServer; -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; -import javax.naming.Binding; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NameAlreadyBoundException; -import javax.naming.NamingEnumeration; -import javax.naming.NamingException; -import javax.resource.cci.Connection; -import javax.resource.cci.ConnectionFactory; -import javax.resource.spi.BootstrapContext; -import javax.resource.spi.ConnectionManager; -import javax.resource.spi.ManagedConnectionFactory; -import javax.resource.spi.ResourceAdapter; -import javax.resource.spi.ResourceAdapterInternalException; -import javax.resource.spi.XATerminator; -import javax.resource.spi.work.WorkManager; -import javax.sql.DataSource; -import javax.transaction.TransactionManager; -import javax.transaction.TransactionSynchronizationRegistry; -import javax.validation.ValidationException; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; - import org.apache.geronimo.connector.GeronimoBootstrapContext; import org.apache.geronimo.connector.outbound.AbstractConnectionManager; import org.apache.geronimo.connector.work.GeronimoWorkManager; @@ -106,7 +40,7 @@ import org.apache.openejb.OpenEJB; import org.apache.openejb.OpenEJBException; import org.apache.openejb.OpenEJBRuntimeException; import org.apache.openejb.UndeployException; -import org.apache.openejb.api.CloseableResource; +import org.apache.openejb.api.DestroyableResource; import org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated; import org.apache.openejb.assembler.classic.event.AssemblerBeforeApplicationDestroyed; import org.apache.openejb.assembler.classic.event.AssemblerCreated; @@ -212,6 +146,69 @@ import org.apache.xbean.recipe.ObjectRec import org.apache.xbean.recipe.Option; import org.apache.xbean.recipe.UnsetPropertiesRecipe; +import javax.enterprise.context.Dependent; +import javax.enterprise.context.spi.CreationalContext; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.BeanManager; +import javax.management.InstanceNotFoundException; +import javax.management.MBeanRegistrationException; +import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import javax.naming.Binding; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NameAlreadyBoundException; +import javax.naming.NamingEnumeration; +import javax.naming.NamingException; +import javax.resource.cci.Connection; +import javax.resource.cci.ConnectionFactory; +import javax.resource.spi.BootstrapContext; +import javax.resource.spi.ConnectionManager; +import javax.resource.spi.ManagedConnectionFactory; +import javax.resource.spi.ResourceAdapter; +import javax.resource.spi.ResourceAdapterInternalException; +import javax.resource.spi.XATerminator; +import javax.resource.spi.work.WorkManager; +import javax.sql.DataSource; +import javax.transaction.TransactionManager; +import javax.transaction.TransactionSynchronizationRegistry; +import javax.validation.ValidationException; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; +import java.io.ByteArrayInputStream; +import java.io.Externalizable; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.Serializable; +import java.lang.instrument.ClassFileTransformer; +import java.lang.instrument.Instrumentation; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.Set; +import java.util.TreeMap; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.locks.ReentrantLock; + @SuppressWarnings({"UnusedDeclaration", "UnqualifiedFieldAccess", "UnqualifiedMethodAccess"}) public class Assembler extends AssemblerTool implements org.apache.openejb.spi.Assembler, JndiConstants { @@ -1482,10 +1479,10 @@ public class Assembler extends Assembler } catch (final Exception e) { logger.debug("Not processing resource on destroy: " + className, e); } - } else if (ExecutorService.class.isInstance(object) && object.getClass().getAnnotation(CloseableResource.class) != null) { + } else if (DestroyableResource.class.isInstance(object)) { try { - Closeable.class.cast(object).close(); - } catch (final IOException e) { + DestroyableResource.class.cast(object).destroyResource(); + } catch (final RuntimeException e) { logger.error(e.getMessage(), e); } } else if (logger.isDebugEnabled() && !DataSource.class.isInstance(object)) {