Author: rmannibucau
Date: Tue Oct 30 18:19:45 2012
New Revision: 1403811
URL: http://svn.apache.org/viewvc?rev=1403811&view=rev
Log:
TOMEE-510 shade mbean annotation api in openejb-api
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
openejb/trunk/openejb/container/openejb-api/pom.xml
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXDeployer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/DynamicMBeanWrapper.java
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
(original)
+++
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEContainer.java
Tue Oct 30 18:19:45 2012
@@ -273,7 +273,7 @@ public abstract class TomEEContainer<Con
final String name = file.getName();
folderFile = new File(file.getParentFile(),
name.substring(0, name.length() - 4));
}
- } while (file.exists() || folderFile.exists()); // we unpack the
war/ear and the delete of "i" can fail (on win in particular)
+ } while (file.getParentFile().exists()); // we will delete the
parent (to clean even complicated unpacking)
if (!file.getParentFile().exists() &&
!file.getParentFile().mkdirs()) {
LOGGER.warning("can't create " + file.getParent());
}
Modified: openejb/trunk/openejb/container/openejb-api/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-api/pom.xml?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-api/pom.xml (original)
+++ openejb/trunk/openejb/container/openejb-api/pom.xml Tue Oct 30 18:19:45 2012
@@ -32,11 +32,43 @@
<dependencies>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jpa_2.0_spec</artifactId>
- <version>1.1</version>
- <scope>provided</scope>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>mbean-annotation-api</artifactId>
+ <version>${project.version}</version>
</dependency>
</dependencies>
-</project>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>2.0</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <relocations>
+ <relocation>
+ <pattern>javax.management</pattern>
+ <shadedPattern>org.apache.openejb.api.jmx</shadedPattern>
+ <includes>
+ <include>javax.management.MBean</include>
+ <include>javax.management.Description</include>
+ <include>javax.management.ManagedAttribute</include>
+ <include>javax.management.ManagedOperation</include>
+ <include>javax.management.NotificationInfo</include>
+ <include>javax.management.NotificationInfos</include>
+ </includes>
+ </relocation>
+ </relocations>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ReloadableEntityManagerFactory.java
Tue Oct 30 18:19:45 2012
@@ -20,6 +20,10 @@ package org.apache.openejb.assembler.cla
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.api.internal.Internal;
+import org.apache.openejb.api.jmx.Description;
+import org.apache.openejb.api.jmx.MBean;
+import org.apache.openejb.api.jmx.ManagedAttribute;
+import org.apache.openejb.api.jmx.ManagedOperation;
import org.apache.openejb.jee.JAXBContextFactory;
import org.apache.openejb.jee.Persistence;
import org.apache.openejb.jee.PersistenceUnitCaching;
@@ -34,11 +38,7 @@ import org.apache.openejb.persistence.Qu
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
-import javax.management.Description;
-import javax.management.MBean;
import javax.management.MBeanServer;
-import javax.management.ManagedAttribute;
-import javax.management.ManagedOperation;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXContainer.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXContainer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXContainer.java
Tue Oct 30 18:19:45 2012
@@ -16,13 +16,14 @@
*/
package org.apache.openejb.assembler.monitoring;
-import java.util.Map;
-import javax.management.Description;
-import javax.management.ManagedAttribute;
import org.apache.openejb.BeanContext;
import org.apache.openejb.Container;
+import org.apache.openejb.api.jmx.Description;
+import org.apache.openejb.api.jmx.ManagedAttribute;
import org.apache.openejb.assembler.classic.ContainerInfo;
+import java.util.Map;
+
@Description("describe a container")
public class JMXContainer {
private final Container container;
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXDeployer.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXDeployer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/monitoring/JMXDeployer.java
Tue Oct 30 18:19:45 2012
@@ -18,10 +18,10 @@ package org.apache.openejb.assembler.mon
import java.util.Collection;
import java.util.Properties;
-import javax.management.Description;
-import javax.management.MBean;
-import javax.management.ManagedAttribute;
-import javax.management.ManagedOperation;
+import org.apache.openejb.api.jmx.Description;
+import org.apache.openejb.api.jmx.MBean;
+import org.apache.openejb.api.jmx.ManagedAttribute;
+import org.apache.openejb.api.jmx.ManagedOperation;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/MBeanDeployer.java
Tue Oct 30 18:19:45 2012
@@ -23,9 +23,10 @@ import org.apache.xbean.finder.Annotated
import org.apache.xbean.finder.AnnotationFinder;
import org.apache.xbean.finder.IAnnotationFinder;
-import javax.management.MBean;
+import java.lang.annotation.Annotation;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -47,12 +48,16 @@ public class MBeanDeployer implements Dy
cl = getClass().getClassLoader();
}
}
+
+ final Collection<Class<? extends Annotation>> mbeanClasses = new
ArrayList<Class<? extends Annotation>>(2);
+ mbeanClasses.add(org.apache.openejb.api.jmx.MBean.class);
+
try { // for OSGi environment, javax.management is imported by the JRE
- cl.loadClass("javax.management.MBean");
+ mbeanClasses.add((Class<? extends Annotation>)
cl.loadClass("javax.management.MBean"));
} catch (NoClassDefFoundError noClassDefFoundError) {
- return appModule;
+ // ignored
} catch (ClassNotFoundException e) {
- return appModule;
+ // ignored
}
// there is an ejbmodule by webapp so we should't need to go through
the webapp
@@ -62,15 +67,17 @@ public class MBeanDeployer implements Dy
continue;
}
- for (Annotated<Class<?>> clazz :
ejbModule.getFinder().findMetaAnnotatedClasses(MBean.class)) {
- final Class<?> realClass = clazz.get();
- final String name = realClass.getName();
- if (done.contains(name)) {
- continue;
- }
+ for (Class<? extends Annotation> mclazz : mbeanClasses) {
+ for (Annotated<Class<?>> clazz :
ejbModule.getFinder().findMetaAnnotatedClasses(mclazz)) {
+ final Class<?> realClass = clazz.get();
+ final String name = realClass.getName();
+ if (done.contains(name)) {
+ continue;
+ }
- ejbModule.getMbeans().add(name);
- done.add(name);
+ ejbModule.getMbeans().add(name);
+ done.add(name);
+ }
}
}
for (ClientModule clientModule : appModule.getClientModules()) {
@@ -78,13 +85,15 @@ public class MBeanDeployer implements Dy
continue;
}
- for (Annotated<Class<?>> clazz :
clientModule.getFinder().findMetaAnnotatedClasses(MBean.class)) {
- final String name = clazz.get().getName();
- if (done.contains(name)) {
- continue;
- }
+ for (Class<? extends Annotation> mclazz : mbeanClasses) {
+ for (Annotated<Class<?>> clazz :
clientModule.getFinder().findMetaAnnotatedClasses(mclazz)) {
+ final String name = clazz.get().getName();
+ if (done.contains(name)) {
+ continue;
+ }
- clientModule.getMbeans().add(name);
+ clientModule.getMbeans().add(name);
+ }
}
}
@@ -101,13 +110,15 @@ public class MBeanDeployer implements Dy
if (libs.size() > 0) {
// force descriptor for additinal libs since it shouldn't occur
often and can save some time
final IAnnotationFinder finder = new AnnotationFinder(new
ConfigurableClasspathArchive(appModule.getClassLoader(), true, libs));
- for (Annotated<Class<?>> clazz :
finder.findMetaAnnotatedClasses(MBean.class)) {
- final String name = clazz.get().getName();
- if (done.contains(name)) {
- continue;
- }
+ for (Class<? extends Annotation> mclazz : mbeanClasses) {
+ for (Annotated<Class<?>> clazz :
finder.findMetaAnnotatedClasses(mclazz)) {
+ final String name = clazz.get().getName();
+ if (done.contains(name)) {
+ continue;
+ }
- appModule.getAdditionalLibMbeans().add(name);
+ appModule.getAdditionalLibMbeans().add(name);
+ }
}
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
Tue Oct 30 18:19:45 2012
@@ -853,7 +853,6 @@ public class StatefulContainer implement
EntityManagerFactory entityManagerFactory = entry.getKey();
Map properties = entry.getValue();
-
JtaEntityManagerRegistry.EntityManagerTracker
entityManagerTracker =
entityManagerRegistry.getInheritedEntityManager(entityManagerFactory);
EntityManager entityManager;
if (entityManagerTracker == null) {
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/DynamicMBeanWrapper.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/DynamicMBeanWrapper.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/DynamicMBeanWrapper.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/monitoring/DynamicMBeanWrapper.java
Tue Oct 30 18:19:45 2012
@@ -17,13 +17,18 @@
package org.apache.openejb.monitoring;
import javassist.util.proxy.ProxyFactory;
+import org.apache.openejb.api.jmx.Description;
+import org.apache.openejb.api.jmx.MBean;
+import org.apache.openejb.api.jmx.ManagedAttribute;
+import org.apache.openejb.api.jmx.ManagedOperation;
+import org.apache.openejb.api.jmx.NotificationInfo;
+import org.apache.openejb.api.jmx.NotificationInfos;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import javax.management.Attribute;
import javax.management.AttributeList;
import javax.management.AttributeNotFoundException;
-import javax.management.Description;
import javax.management.DynamicMBean;
import javax.management.ImmutableDescriptor;
import javax.management.IntrospectionException;
@@ -33,14 +38,14 @@ import javax.management.MBeanException;
import javax.management.MBeanInfo;
import javax.management.MBeanNotificationInfo;
import javax.management.MBeanOperationInfo;
-import javax.management.ManagedAttribute;
-import javax.management.ManagedOperation;
-import javax.management.NotificationInfo;
-import javax.management.NotificationInfos;
import javax.management.ReflectionException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -50,6 +55,23 @@ import java.util.ResourceBundle;
public class DynamicMBeanWrapper implements DynamicMBean {
public static final Logger logger =
Logger.getInstance(LogCategory.OPENEJB_DEPLOY, DynamicMBeanWrapper.class);
+ private static final Map<Class<?>, Class<? extends Annotation>>
OPENEJB_API_TO_JAVAX = new HashMap<Class<?>, Class<? extends Annotation>>();
+ static {
+ final ClassLoader loader = DynamicMBeanWrapper.class.getClassLoader();
+ try {
+ OPENEJB_API_TO_JAVAX.put(MBean.class, (Class<? extends
Annotation>) loader.loadClass("javax.management.MBean"));
+ OPENEJB_API_TO_JAVAX.put(Description.class, (Class<? extends
Annotation>) loader.loadClass("javax.management.Description"));
+ OPENEJB_API_TO_JAVAX.put(ManagedOperation.class, (Class<? extends
Annotation>) loader.loadClass("javax.management.ManagedOperation"));
+ OPENEJB_API_TO_JAVAX.put(ManagedAttribute.class, (Class<? extends
Annotation>) loader.loadClass("javax.management.ManagedAttribute"));
+ OPENEJB_API_TO_JAVAX.put(NotificationInfo.class, (Class<? extends
Annotation>) loader.loadClass("javax.management.NotificationInfo"));
+ OPENEJB_API_TO_JAVAX.put(NotificationInfos.class, (Class<? extends
Annotation>) loader.loadClass("javax.management.NotificationInfos"));
+ } catch (ClassNotFoundException cnfe) {
+ // ignored
+ } catch (NoClassDefFoundError ncdfe) {
+ // ignored
+ }
+ }
+
private final MBeanInfo info;
private final Map<String, Method> getters = new HashMap<String, Method>();
private final Map<String, Method> setters = new HashMap<String, Method>();
@@ -75,16 +97,16 @@ public class DynamicMBeanWrapper impleme
instance = givenInstance;
// class
- Description classDescription =
annotatedMBean.getAnnotation(Description.class);
+ Description classDescription = findAnnotation(annotatedMBean,
Description.class);
description = getDescription(classDescription, "a MBean built by
OpenEJB");
- NotificationInfo notification =
annotatedMBean.getAnnotation(NotificationInfo.class);
+ NotificationInfo notification = findAnnotation(annotatedMBean,
NotificationInfo.class);
if (notification != null) {
MBeanNotificationInfo notificationInfo =
getNotificationInfo(notification);
notificationInfos.add(notificationInfo);
}
- NotificationInfos notifications =
annotatedMBean.getAnnotation(NotificationInfos.class);
+ NotificationInfos notifications = findAnnotation(annotatedMBean,
NotificationInfos.class);
if (notifications != null && notifications.value() != null) {
for (NotificationInfo n : notifications.value()) {
MBeanNotificationInfo notificationInfo =
getNotificationInfo(n);
@@ -102,7 +124,7 @@ public class DynamicMBeanWrapper impleme
continue;
}
- if (m.getAnnotation(ManagedAttribute.class) != null) {
+ if (findAnnotation(m, ManagedAttribute.class) != null) {
String methodName = m.getName();
String attrName = methodName;
if (((attrName.startsWith("get") &&
m.getParameterTypes().length == 0)
@@ -123,11 +145,11 @@ public class DynamicMBeanWrapper impleme
} else if (methodName.startsWith("set")) {
setters.put(attrName, m);
}
- } else if (m.getAnnotation(ManagedOperation.class) != null) {
+ } else if (findAnnotation(m, ManagedOperation.class) != null) {
operations.put(m.getName(), m);
String operationDescr = "";
- Description descr = m.getAnnotation(Description.class);
+ Description descr = findAnnotation(m, Description.class);
if (descr != null) {
operationDescr = getDescription(descr, "-");
}
@@ -141,7 +163,7 @@ public class DynamicMBeanWrapper impleme
Method mtd = e.getValue();
String attrDescr = "";
- Description descr = mtd.getAnnotation(Description.class);
+ Description descr = findAnnotation(mtd, Description.class);
if (descr != null) {
attrDescr = getDescription(descr, "-");
}
@@ -161,6 +183,58 @@ public class DynamicMBeanWrapper impleme
notificationInfos.toArray(new
MBeanNotificationInfo[notificationInfos.size()]));
}
+ private <T extends Annotation> T findAnnotation(final Method method, final
Class<T> searchedAnnotation) {
+ final T annotation = method.getAnnotation(searchedAnnotation);
+ if (annotation != null) {
+ return annotation;
+ }
+
+ if (OPENEJB_API_TO_JAVAX.containsKey(searchedAnnotation)) {
+ final Class<? extends Annotation> clazz =
OPENEJB_API_TO_JAVAX.get(searchedAnnotation);
+ final Object javaxAnnotation = method.getAnnotation(clazz);
+ if (javaxAnnotation != null) {
+ return annotationProxy(javaxAnnotation, searchedAnnotation);
+ }
+ }
+ return null;
+ }
+
+ private <T extends Annotation> T findAnnotation(final Field field, final
Class<T> searchedAnnotation) {
+ final T annotation = field.getAnnotation(searchedAnnotation);
+ if (annotation != null) {
+ return annotation;
+ }
+
+ if (OPENEJB_API_TO_JAVAX.containsKey(searchedAnnotation)) {
+ final Class<? extends Annotation> clazz =
OPENEJB_API_TO_JAVAX.get(searchedAnnotation);
+ final Object javaxAnnotation = field.getAnnotation(clazz);
+ if (javaxAnnotation != null) {
+ return annotationProxy(javaxAnnotation, searchedAnnotation);
+ }
+ }
+ return null;
+ }
+
+ private <T extends Annotation> T findAnnotation(final Class<?>
annotatedMBean, final Class<T> searchedAnnotation) {
+ final T annotation = annotatedMBean.getAnnotation(searchedAnnotation);
+ if (annotation != null) {
+ return annotation;
+ }
+
+ if (OPENEJB_API_TO_JAVAX.containsKey(searchedAnnotation)) {
+ final Class<? extends Annotation> clazz =
OPENEJB_API_TO_JAVAX.get(searchedAnnotation);
+ final Object javaxAnnotation = annotatedMBean.getAnnotation(clazz);
+ if (javaxAnnotation != null) {
+ return annotationProxy(javaxAnnotation, searchedAnnotation);
+ }
+ }
+ return null;
+ }
+
+ private static <T extends Annotation> T annotationProxy(final Object
javaxAnnotation, final Class<T> clazz) {
+ return (T)
Proxy.newProxyInstance(DynamicMBeanWrapper.class.getClassLoader(), new
Class<?>[]{clazz}, new AnnotationHandler(javaxAnnotation));
+ }
+
private MBeanNotificationInfo getNotificationInfo(NotificationInfo n) {
String description = getDescription(n.description(), "-");
return new MBeanNotificationInfo(n.types(),
@@ -283,4 +357,41 @@ public class DynamicMBeanWrapper impleme
}
throw new MBeanException(new IllegalArgumentException(), actionName +
" doesn't exist");
}
+
+ private static class AnnotationHandler implements InvocationHandler {
+ private final Object delegate;
+
+ public AnnotationHandler(final Object javaxAnnotation) {
+ delegate = javaxAnnotation;
+ }
+
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
+ Object result = null;
+ for (Method mtd : delegate.getClass().getMethods()) { // simple
heurisitc which should be enough
+ if (mtd.getName().equals(method.getName())) {
+ result = mtd.invoke(delegate, args);
+ break;
+ }
+ }
+
+ if (result == null) {
+ return null;
+ }
+
+ if (result.getClass().isArray()) {
+ final Object[] array = (Object[]) result;
+ if (array.length == 0 ||
!OPENEJB_API_TO_JAVAX.containsValue(array[0].getClass())) {
+ return array;
+ }
+
+ final Object[] translated = new Object[array.length];
+ for (int i = 0; i < translated.length; i++) {
+ translated[i] = annotationProxy(array[i],
OPENEJB_API_TO_JAVAX.get(array[i].getClass()));
+ }
+ }
+
+ return result;
+ }
+ }
}
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/JMXBasicDataSource.java
Tue Oct 30 18:19:45 2012
@@ -19,10 +19,10 @@ package org.apache.openejb.resource.jdbc
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
-import javax.management.Description;
+import org.apache.openejb.api.jmx.Description;
import javax.management.MBeanServer;
-import javax.management.ManagedAttribute;
-import javax.management.ManagedOperation;
+import org.apache.openejb.api.jmx.ManagedAttribute;
+import org.apache.openejb.api.jmx.ManagedOperation;
import javax.management.ObjectName;
import org.apache.openejb.monitoring.DynamicMBeanWrapper;
import org.apache.openejb.monitoring.LocalMBeanServer;
Modified: openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml?rev=1403811&r1=1403810&r2=1403811&view=diff
==============================================================================
--- openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml (original)
+++ openejb/trunk/openejb/osgi/openejb-core-osgi/pom.xml Tue Oct 30 18:19:45
2012
@@ -356,6 +356,7 @@
'=META-INF.org^.apache^.openejb',
org.apache.openejb;version=${openejb.osgi.export.version},
org.apache.openejb.api.internal;version=${openejb.osgi.export.version},
+ org.apache.openejb.api.jmx;version=${openejb.osgi.export.version},
org.apache.openejb.async;version=${openejb.osgi.export.version},
org.apache.openejb.assembler;version=${openejb.osgi.export.version},
org.apache.openejb.assembler.classic;version=${openejb.osgi.export.version},