Author: rmannibucau
Date: Thu Nov 17 11:15:42 2011
New Revision: 1203150
URL: http://svn.apache.org/viewvc?rev=1203150&view=rev
Log:
OPENEJB-1708 bug in classname
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1203150&r1=1203149&r2=1203150&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
Thu Nov 17 11:15:42 2011
@@ -726,7 +726,7 @@ public class AnnotationDeployer implemen
final List<String> allowedTypes = Arrays.asList(new
String[] { Boolean.class.getName(), String.class.getName(),
Integer.class.getName(), Double.class.getName(), Byte.class.getName(),
Short.class.getName(), Long.class.getName(), Float.class.getName(),
Character.class.getName()});
try {
- Class<?> clazz = classLoader.loadClass(cls);
+ Class<?> clazz =
classLoader.loadClass(realClassName(cls));
Object o = clazz.newInstance();
// add any introspected properties
@@ -1051,7 +1051,8 @@ public class AnnotationDeployer implemen
if (beans != null) {
managedClasses = beans.getManagedClasses();
final List<String> classNames = getBeanClasses(finder);
- for (String className : classNames) {
+ for (String rawClassName : classNames) {
+ final String className = realClassName(rawClassName);
try {
final ClassLoader loader =
ejbModule.getClassLoader();
final Class<?> clazz = loader.loadClass(className);
@@ -1496,7 +1497,7 @@ public class AnnotationDeployer implemen
Set<Class> remoteClients = new HashSet<Class>();
if (clientModule.getMainClass() != null){
- String className = clientModule.getMainClass();
+ String className = realClassName(clientModule.getMainClass());
// OPENEJB-1063: a Main-Class should use "." instead of "/"
// it wasn't check before jdk 1.5 so we can get old module with
@@ -1531,7 +1532,8 @@ public class AnnotationDeployer implemen
}
}
- for (String className : clientModule.getRemoteClients()) {
+ for (String rawClassName : clientModule.getRemoteClients()) {
+ final String className = realClassName(rawClassName);
Class clazz;
try {
clazz = classLoader.loadClass(className);
@@ -1545,7 +1547,8 @@ public class AnnotationDeployer implemen
buildAnnotatedRefs(client, annotationFinder, classLoader);
}
- for (String className : clientModule.getLocalClients()) {
+ for (String rawClassName : clientModule.getLocalClients()) {
+ final String className = realClassName(rawClassName);
Class clazz;
try {
clazz = classLoader.loadClass(className);
@@ -1569,7 +1572,7 @@ public class AnnotationDeployer implemen
for (EjbLocalRef ref : client.getEjbLocalRef()) {
for (InjectionTarget target : ref.getInjectionTarget()) {
try {
- Class<?> targetClass =
classLoader.loadClass(target.getInjectionTargetClass());
+ Class<?> targetClass =
classLoader.loadClass(realClassName(target.getInjectionTargetClass()));
for (Class remoteClient : remoteClients) {
if (targetClass.isAssignableFrom(remoteClient)) {
fail(remoteClient.getName(),
"remoteClient.ejbLocalRef", target.getInjectionTargetClass(),
target.getInjectionTargetName());
@@ -1583,7 +1586,7 @@ public class AnnotationDeployer implemen
for (PersistenceContextRef ref :
client.getPersistenceContextRef()) {
for (InjectionTarget target : ref.getInjectionTarget()) {
try {
- Class<?> targetClass =
classLoader.loadClass(target.getInjectionTargetClass());
+ Class<?> targetClass =
classLoader.loadClass(realClassName(target.getInjectionTargetClass()));
for (Class remoteClient : remoteClients) {
if (targetClass.isAssignableFrom(remoteClient)) {
fail(remoteClient.getName(),
"remoteClient.persistenceContextRef", target.getInjectionTargetClass(),
target.getInjectionTargetName());
@@ -1656,7 +1659,7 @@ public class AnnotationDeployer implemen
if (className != null) {
Class<?> clazz;
try {
- clazz = classLoader.loadClass(className);
+ clazz =
classLoader.loadClass(realClassName(className));
classes.add(clazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to load REST
class: " + className, e);
@@ -1668,7 +1671,7 @@ public class AnnotationDeployer implemen
if (application != null) {
Class<?> clazz;
try {
- clazz = classLoader.loadClass(application);
+ clazz =
classLoader.loadClass(realClassName(application));
classes.add(clazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to load
Application class: " + application, e);
@@ -1694,7 +1697,7 @@ public class AnnotationDeployer implemen
if (servletClass != null) {
if
(!"org.apache.openejb.server.rest.OpenEJBRestServlet".equals(servletClass)) {
try {
- Class clazz = classLoader.loadClass(servletClass);
+ Class clazz =
classLoader.loadClass(realClassName(servletClass));
classes.add(clazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to load servlet
class: " + servletClass, e);
@@ -1719,7 +1722,7 @@ public class AnnotationDeployer implemen
String filterClass = filter.getFilterClass();
if (filterClass != null) {
try {
- Class clazz = classLoader.loadClass(filterClass);
+ Class clazz =
classLoader.loadClass(realClassName(filterClass));
classes.add(clazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to load servlet
filter class: " + filterClass, e);
@@ -1734,7 +1737,7 @@ public class AnnotationDeployer implemen
String listenerClass = listener.getListenerClass();
if (listenerClass != null) {
try {
- Class clazz = classLoader.loadClass(listenerClass);
+ Class clazz =
classLoader.loadClass(realClassName(listenerClass));
classes.add(clazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to load servlet
listener class: " + listenerClass, e);
@@ -1750,7 +1753,7 @@ public class AnnotationDeployer implemen
String listenerClass = listener.getListenerClass();
if (listenerClass != null) {
try {
- Class clazz = classLoader.loadClass(listenerClass);
+ Class clazz =
classLoader.loadClass(realClassName(listenerClass));
classes.add(clazz);
} catch (ClassNotFoundException e) {
logger.error("Unable to load tag library servlet
listener class: " + listenerClass);
@@ -1765,7 +1768,7 @@ public class AnnotationDeployer implemen
String tagClass = tag.getTagClass();
if (tagClass != null) {
try {
- Class clazz = classLoader.loadClass(tagClass);
+ Class clazz =
classLoader.loadClass(realClassName(tagClass));
classes.add(clazz);
} catch (ClassNotFoundException e) {
logger.error("Unable to load tag library tag
class: " + tagClass);
@@ -1789,7 +1792,7 @@ public class AnnotationDeployer implemen
String handlerClass =
handler.getHandlerClass();
if (handlerClass != null) {
try {
- Class clazz =
classLoader.loadClass(handlerClass);
+ Class clazz =
classLoader.loadClass(realClassName(handlerClass));
classes.add(clazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to
load webservice handler class: " + handlerClass, e);
@@ -1809,7 +1812,7 @@ public class AnnotationDeployer implemen
String managedBeanClass =
bean.getManagedBeanClass().trim();
if (managedBeanClass != null) {
try {
- Class clazz =
classLoader.loadClass(managedBeanClass);
+ Class clazz =
classLoader.loadClass(realClassName(managedBeanClass));
classes.add(clazz);
} catch (ClassNotFoundException e) {
logger.error("Unable to load JSF managed bean
class: " + managedBeanClass);
@@ -1826,7 +1829,7 @@ public class AnnotationDeployer implemen
final List<String> classNames =
finder.getAnnotatedClassNames();
for (String className : classNames) {
try {
- Class clazz = classLoader.loadClass(className);
+ Class clazz =
classLoader.loadClass(realClassName(className));
classes.add(clazz);
} catch (Throwable e) {
logger.debug(String.format("%s: Unable to load class
for scanning: %s", e.getClass().getName(), className));
@@ -1870,7 +1873,7 @@ public class AnnotationDeployer implemen
final Class<?> clazz;
try {
- clazz = classLoader.loadClass(ejbClassName);
+ clazz = classLoader.loadClass(realClassName(ejbClassName));
} catch (ClassNotFoundException e) {
// Handled in CheckClasses.java along with other missing
classes
continue;
@@ -2770,7 +2773,7 @@ public class AnnotationDeployer implemen
private void add(ClassLoader loader, Collection<String> names,
Set<Class> classes) {
for (String className : names) {
try {
- classes.add(loader.loadClass(className));
+
classes.add(loader.loadClass(realClassName(className)));
} catch (Throwable t) {
// handled in validation
}
@@ -4090,7 +4093,7 @@ public class AnnotationDeployer implemen
}
Class<?> refType = null;
try {
- refType = classLoader.loadClass(serviceRef.getType());
+ refType =
classLoader.loadClass(realClassName(serviceRef.getType()));
} catch (ClassNotFoundException e) {
}
@@ -4158,7 +4161,7 @@ public class AnnotationDeployer implemen
String handlerClass =
handler.getHandlerClass();
if (handlerClass != null) {
try {
- Class handlerClazz =
ejbModule.getClassLoader().loadClass(handlerClass);
+ Class handlerClazz =
ejbModule.getClassLoader().loadClass(realClassName(handlerClass));
classes.add(handlerClazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to
load webservice handler class: " + handlerClass, e);
@@ -4195,7 +4198,7 @@ public class AnnotationDeployer implemen
for (Handler handler : handlerChain.getHandler()) {
if (handler.getHandlerClass() != null) {
try {
- Class clazz =
classLoader.loadClass(handler.getHandlerClass());
+ Class clazz =
classLoader.loadClass(realClassName(handler.getHandlerClass()));
handlerClasses.add(clazz);
} catch (ClassNotFoundException e) {
throw new OpenEJBException("Unable to load
webservice handler class: " + handler.getHandlerClass(), e);
@@ -4863,4 +4866,12 @@ public class AnnotationDeployer implemen
|| clazz.isAnnotationPresent(Singleton.class)
|| clazz.isAnnotationPresent(Stateful.class); // what a weird idea!
}
+
+ // TODO: OPENEJB-1708 - bug in xbean, this should be removed when XBean
will be fixed
+ private static String realClassName(String rawClassName) {
+ if (rawClassName.contains("/")) {
+ return rawClassName.replace("/", ".");
+ }
+ return rawClassName;
+ }
}