You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/12 18:26:07 UTC
svn commit: r1631202 - in /tomee/tomee/trunk:
arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/
arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/
arquillian/arquillia...
Author: rmannibucau
Date: Sun Oct 12 16:26:06 2014
New Revision: 1631202
URL: http://svn.apache.org/r1631202
Log:
setup-ing EE tck in cdi-embedded, we'll need to enhance embedded support for session etc...
Modified:
tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
tomee/tomee/trunk/tck/cdi-embedded/pom.xml
tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/arquillian.xml
tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml
tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/passing.xml
Modified: tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java Sun Oct 12 16:26:06 2014
@@ -24,6 +24,7 @@ import org.apache.openejb.OpenEJBRuntime
import org.apache.openejb.arquillian.common.mockito.MockitoEnricher;
import org.apache.openejb.core.Operation;
import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.core.WebContext;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.ContainerSystem;
import org.apache.webbeans.annotation.AnyLiteral;
@@ -71,20 +72,31 @@ public final class OpenEJBEnricher {
final BeanManagerImpl bm = findBeanManager(ctx);
if (bm != null && bm.isInUse()) {
try {
- final Set<Bean<?>> beans = bm.getBeans(testInstance.getClass());
- final Bean<?> bean = bm.resolve(beans);
- final CreationalContext<?> cc = bm.createCreationalContext(bean);
- if (context != null) {
- context.set(CreationalContext.class, cc);
- }
- OWBInjector.inject(bm, testInstance, cc);
+ doInject(testInstance, context, bm);
} catch (final Throwable t) {
- LOGGER.log(Level.SEVERE, "Failed injection on: " + testInstance.getClass(), t);
- if (RuntimeException.class.isInstance(t)) {
- throw RuntimeException.class.cast(t);
+ boolean ok = false;
+ if (ctx != null) {
+ for (final WebContext web : ctx.getWebContexts()) {
+ final WebBeansContext webBeansContext = web.getWebBeansContext();
+ if (webBeansContext != bm.getWebBeansContext()) {
+ try {
+ doInject(testInstance, context, webBeansContext.getBeanManagerImpl());
+ ok = true;
+ break;
+ } catch (final Exception e) {
+ // no-op, try next
+ }
+ }
+ }
}
- if (Exception.class.isInstance(t)) {
- throw new OpenEJBRuntimeException(Exception.class.cast(t));
+ if (!ok) {
+ LOGGER.log(Level.SEVERE, "Failed injection on: " + testInstance.getClass(), t);
+ if (RuntimeException.class.isInstance(t)) {
+ throw RuntimeException.class.cast(t);
+ }
+ if (Exception.class.isInstance(t)) {
+ throw new OpenEJBRuntimeException(Exception.class.cast(t));
+ }
}
// ignoring other cases for the moment, let manage some OWB API change without making all tests failing
}
@@ -104,6 +116,16 @@ public final class OpenEJBEnricher {
}
}
+ private static void doInject(final Object testInstance, final BeanContext context, final BeanManagerImpl bm) throws Exception {
+ final Set<Bean<?>> beans = bm.getBeans(testInstance.getClass());
+ final Bean<?> bean = bm.resolve(beans);
+ final CreationalContext<?> cc = bm.createCreationalContext(bean);
+ if (context != null) {
+ context.set(CreationalContext.class, cc);
+ }
+ OWBInjector.inject(bm, testInstance, cc);
+ }
+
private static BeanManagerImpl findBeanManager(final AppContext ctx) {
if (ctx != null) {
return ctx.getWebBeansContext().getBeanManagerImpl();
Modified: tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java Sun Oct 12 16:26:06 2014
@@ -19,10 +19,10 @@ package org.apache.openejb.arquillian.op
import org.apache.openejb.ClassLoaderUtil;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.OpenEJBRuntimeException;
-import org.apache.openejb.cdi.CompositeBeans;
import org.apache.openejb.config.AppModule;
import org.apache.openejb.config.DeploymentLoader;
import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.config.EmptyEjbJar;
import org.apache.openejb.config.FinderFactory;
import org.apache.openejb.config.ReadDescriptors;
import org.apache.openejb.config.WebModule;
@@ -49,6 +49,7 @@ import org.jboss.shrinkwrap.api.asset.As
import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
import org.jboss.shrinkwrap.api.asset.FileAsset;
import org.jboss.shrinkwrap.api.asset.UrlAsset;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.impl.base.filter.IncludeRegExpPaths;
@@ -62,6 +63,7 @@ import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -97,10 +99,20 @@ public class OpenEJBArchiveProcessor {
javaClass = null;
}
+ final ClassLoader parent;
+ if (javaClass == null) {
+ parent = Thread.currentThread().getContextClassLoader();
+ } else {
+ parent = javaClass.getClassLoader();
+ }
+
final List<URL> additionalPaths = new ArrayList<URL>();
final List<AssetSource> beansXmlMerged = new ArrayList<>();
+ CompositeArchive earArchive = null;
+ Map<URL, List<String>> earMap = null;
final String prefix;
+ final boolean isEar = EnterpriseArchive.class.isInstance(archive);
if (WebArchive.class.isInstance(archive)) {
prefix = WEB_INF;
@@ -131,14 +143,42 @@ public class OpenEJBArchiveProcessor {
}
}
} else {
- prefix = META_INF;
- }
+ if (isEar) { // mainly for CDi TCKs
+ earMap = new HashMap<>();
+ final Map<ArchivePath, Node> jars = archive.getContent(new IncludeRegExpPaths("/.*\\.jar"));
+ final List<org.apache.xbean.finder.archive.Archive> archives = new ArrayList<>(jars.size());
+ for (final Map.Entry<ArchivePath, Node> node : jars.entrySet()) {
+ final Asset asset = node.getValue().getAsset();
+ if (ArchiveAsset.class.isInstance(asset)) {
+ final Archive<?> libArchive = ArchiveAsset.class.cast(asset).getArchive();
+ if (!isExcluded(libArchive.getName())) {
+ final List<Class<?>> earClasses = new ArrayList<>();
+ final List<String> earClassNames = new ArrayList<>();
+ final Map<ArchivePath, Node> content = libArchive.getContent(new IncludeRegExpPaths(".*.class"));
+ for (final Map.Entry<ArchivePath, Node> classNode : content.entrySet()) {
+ final String classname = name(classNode.getKey().get());
+ try {
+ earClasses.add(parent.loadClass(classname));
+ earClassNames.add(classname);
+ } catch (final ClassNotFoundException e) {
+ LOGGER.fine("Can't load class " + classname);
+ } catch (final NoClassDefFoundError ncdfe) {
+ // no-op
+ }
+ }
+ try { // ends with !/META-INF/beans.xml to force it to be used as a cdi module
+ earMap.put(new URL("jar:file://!/lib/" + archive.getName() + (libArchive.get(META_INF + BEANS_XML) != null ? "!/META-INF/beans.xml" : "")), earClassNames);
+ } catch (final MalformedURLException e) {
+ // no-op
+ }
+ archives.add(new ClassesArchive(earClasses));
+ }
+ } // else TODO
+ }
+ earArchive = new CompositeArchive(archives);
+ }
- final ClassLoader parent;
- if (javaClass == null) {
- parent = Thread.currentThread().getContextClassLoader();
- } else {
- parent = javaClass.getClassLoader();
+ prefix = META_INF;
}
final URL[] urls = additionalPaths.toArray(new URL[additionalPaths.size()]);
@@ -159,6 +199,57 @@ public class OpenEJBArchiveProcessor {
final WebModule webModule = new WebModule(new WebApp(), contextRoot(archive.getName()), loader, "", appModule.getModuleId());
webModule.setUrls(additionalPaths);
appModule.getWebModules().add(webModule);
+ } else if (isEar) { // mainly for CDi TCKs
+ final FinderFactory.OpenEJBAnnotationFinder earLibFinder = new FinderFactory.OpenEJBAnnotationFinder(new SimpleWebappAggregatedArchive(earArchive, earMap));
+ appModule.setEarLibFinder(earLibFinder);
+
+ final EjbModule earCdiModule = new EjbModule(appModule.getClassLoader(), DeploymentLoader.EAR_SCOPED_CDI_BEANS + appModule.getModuleId(), new EjbJar(), new OpenejbJar());
+ earCdiModule.setBeans(new Beans());
+ earCdiModule.setFinder(earLibFinder);
+ earCdiModule.setEjbJar(new EmptyEjbJar());
+ appModule.getEjbModules().add(earCdiModule);
+
+ for (final Map.Entry<ArchivePath, Node> node : archive.getContent(new IncludeRegExpPaths("/.*\\.war")).entrySet()) {
+ final Asset asset = node.getValue().getAsset();
+ if (ArchiveAsset.class.isInstance(asset)) {
+ final Archive<?> webArchive = ArchiveAsset.class.cast(asset).getArchive();
+ if (WebArchive.class.isInstance(webArchive)) {
+ /* TODO: libs
+ final Map<ArchivePath, Node> libs = archive.getContent(new IncludeRegExpPaths("/WEB-INF/lib/.*\\.jar"));
+ */
+
+ final Map<String, Object> altDD = new HashMap<String, Object>();
+ final Node beansXml = findBeansXml(webArchive, new ArrayList<AssetSource>(), WEB_INF, altDD);
+ final SWClassLoader webLoader = new SWClassLoader(WEB_INF_CLASSES, parent, webArchive);
+ final FinderFactory.OpenEJBAnnotationFinder finder = new FinderFactory.OpenEJBAnnotationFinder(
+ finderArchive(beansXml, webArchive, webLoader, Collections.<URL>emptyList()));
+
+ final WebModule webModule = new WebModule(new WebApp(), contextRoot(webArchive.getName()), loader, "", appModule.getModuleId());
+ webModule.setUrls(Collections.<URL>emptyList());
+ webModule.setScannableUrls(Collections.<URL>emptyList());
+ webModule.setFinder(finder);
+
+ final EjbModule ejbModule = new EjbModule(webLoader, webModule.getModuleId(), null, new EjbJar(), new OpenejbJar());
+ ejbModule.getAltDDs().putAll(altDD);
+ ejbModule.setFinder(finder);
+ ejbModule.setClassLoader(webLoader);
+ ejbModule.setWebapp(true);
+
+ appModule.getEjbModules().add(ejbModule);
+ appModule.getWebModules().add(webModule);
+
+ addPersistenceXml(archive, WEB_INF, appModule);
+ addOpenEJbJarXml(archive, WEB_INF, ejbModule);
+ addValidationXml(archive, WEB_INF, new HashMap<String, Object>(), ejbModule);
+ addResourcesXml(archive, WEB_INF, ejbModule);
+ addEnvEntries(archive, WEB_INF, appModule, ejbModule);
+ }
+ }
+ }
+ }
+
+ if (isEar) { // adding the test class as lib class can break test if tested against the web part of the ear
+ return appModule;
}
// add the test as a managed bean to be able to inject into it easily
@@ -206,6 +297,28 @@ public class OpenEJBArchiveProcessor {
final EjbModule ejbModule = new EjbModule(ejbJar);
ejbModule.setClassLoader(tempClassLoader);
+ final Node beansXml = findBeansXml(archive, beansXmlMerged, prefix, ejbModule.getAltDDs());
+ final org.apache.xbean.finder.archive.Archive finderArchive = finderArchive(beansXml, archive, tempClassLoader, additionalPaths);
+ ejbModule.setFinder(new FinderFactory.ModuleLimitedFinder(new FinderFactory.OpenEJBAnnotationFinder(finderArchive)));
+ if (appModule.isWebapp()) { // war
+ appModule.getWebModules().iterator().next().setFinder(ejbModule.getFinder());
+ }
+ appModule.getEjbModules().add(ejbModule);
+
+ addPersistenceXml(archive, prefix, appModule);
+ addOpenEJbJarXml(archive, prefix, ejbModule);
+ addValidationXml(archive, prefix, testDD, ejbModule);
+ addResourcesXml(archive, prefix, ejbModule);
+ addEnvEntries(archive, prefix, appModule, ejbModule);
+
+ if (!appModule.isWebapp()) {
+ appModule.getAdditionalLibraries().addAll(additionalPaths);
+ }
+
+ return appModule;
+ }
+
+ private static Node findBeansXml(final Archive<?> archive, final List<AssetSource> beansXmlMerged, final String prefix, final Map<String, Object> altDD) {
Node beansXml = archive.get(prefix.concat(BEANS_XML));
if (beansXml == null && WEB_INF.equals(prefix)) {
beansXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(BEANS_XML));
@@ -216,96 +329,83 @@ public class OpenEJBArchiveProcessor {
} catch (final MalformedURLException e) {
// shouldn't occur
}
- ejbModule.getAltDDs().put(BEANS_XML, beansXmlMerged);
- }
-
- final org.apache.xbean.finder.archive.Archive finderArchive = finderArchive(beansXml, archive, tempClassLoader, additionalPaths);
-
- ejbModule.setFinder(new FinderFactory.ModuleLimitedFinder(new FinderFactory.OpenEJBAnnotationFinder(finderArchive)));
- if (appModule.isWebapp()) { // war
- appModule.getWebModules().iterator().next().setFinder(ejbModule.getFinder());
+ altDD.put(BEANS_XML, beansXmlMerged);
}
- appModule.getEjbModules().add(ejbModule);
+ return beansXml;
+ }
- {
- Node persistenceXml = archive.get(prefix.concat(PERSISTENCE_XML));
- if (persistenceXml == null && WEB_INF.equals(prefix)) {
- persistenceXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(PERSISTENCE_XML));
- }
- if (persistenceXml != null) {
- final Asset asset = persistenceXml.getAsset();
- if (UrlAsset.class.isInstance(asset)) {
- appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(URL.class, "url", asset)));
- } else if (FileAsset.class.isInstance(asset)) {
- try {
- appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(File.class, "file", asset).toURI().toURL()));
- } catch (final MalformedURLException e) {
- appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset(), null)));
- }
- } else if (ClassLoaderAsset.class.isInstance(asset)) {
- final URL url = get(ClassLoader.class, "classLoader", asset).getResource(get(String.class, "resourceName", asset));
- if (url != null) {
- appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(url));
- } else {
- appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset(), null)));
- }
+ private static void addPersistenceXml(final Archive<?> archive, final String prefix, final AppModule appModule) {
+ Node persistenceXml = archive.get(prefix.concat(PERSISTENCE_XML));
+ if (persistenceXml == null && WEB_INF.equals(prefix)) {
+ persistenceXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(PERSISTENCE_XML));
+ }
+ if (persistenceXml != null) {
+ final Asset asset = persistenceXml.getAsset();
+ if (UrlAsset.class.isInstance(asset)) {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(URL.class, "url", asset)));
+ } else if (FileAsset.class.isInstance(asset)) {
+ try {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(get(File.class, "file", asset).toURI().toURL()));
+ } catch (final MalformedURLException e) {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset(), null)));
+ }
+ } else if (ClassLoaderAsset.class.isInstance(asset)) {
+ final URL url = get(ClassLoader.class, "classLoader", asset).getResource(get(String.class, "resourceName", asset));
+ if (url != null) {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(url));
} else {
appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset(), null)));
}
+ } else {
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset(), null)));
}
}
+ }
- {
- final Node openejbJarXml = archive.get(prefix.concat(OPENEJB_JAR_XML));
- if (openejbJarXml != null) {
- ejbModule.getAltDDs().put(OPENEJB_JAR_XML, new AssetSource(openejbJarXml.getAsset(), null));
- }
+ private static void addOpenEJbJarXml(final Archive<?> archive, final String prefix, final EjbModule ejbModule) {
+ final Node openejbJarXml = archive.get(prefix.concat(OPENEJB_JAR_XML));
+ if (openejbJarXml != null) {
+ ejbModule.getAltDDs().put(OPENEJB_JAR_XML, new AssetSource(openejbJarXml.getAsset(), null));
}
+ }
- {
- Node validationXml = archive.get(prefix.concat(VALIDATION_XML));
- // bval tcks
- if (validationXml == null && WEB_INF == prefix) { // we can use == here
- validationXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(VALIDATION_XML));
- }
- if (validationXml != null) {
- testDD.put(VALIDATION_XML, new AssetSource(validationXml.getAsset(), null)); // use same config otherwise behavior is weird
- ejbModule.getAltDDs().put(VALIDATION_XML, new AssetSource(validationXml.getAsset(), null));
- }
+ private static void addValidationXml(final Archive<?> archive, final String prefix, final Map<String, Object> testDD, final EjbModule ejbModule) {
+ Node validationXml = archive.get(prefix.concat(VALIDATION_XML));
+ // bval tcks
+ if (validationXml == null && WEB_INF == prefix) { // we can use == here
+ validationXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(VALIDATION_XML));
+ }
+ if (validationXml != null) {
+ testDD.put(VALIDATION_XML, new AssetSource(validationXml.getAsset(), null)); // use same config otherwise behavior is weird
+ ejbModule.getAltDDs().put(VALIDATION_XML, new AssetSource(validationXml.getAsset(), null));
}
+ }
- {
- final Node resourcesXml = archive.get(prefix.concat(RESOURCES_XML));
- if (resourcesXml != null) {
- ejbModule.getAltDDs().put(RESOURCES_XML, new AssetSource(resourcesXml.getAsset(), null));
- }
+ private static void addResourcesXml(final Archive<?> archive, final String prefix, final EjbModule ejbModule) {
+ final Node resourcesXml = archive.get(prefix.concat(RESOURCES_XML));
+ if (resourcesXml != null) {
+ ejbModule.getAltDDs().put(RESOURCES_XML, new AssetSource(resourcesXml.getAsset(), null));
}
+ }
- {
- final Node envEntriesProperties = archive.get(prefix.concat(ENV_ENTRIES_PROPERTIES));
- if (envEntriesProperties != null) {
- InputStream is = null;
- final Properties properties = new Properties();
- try {
- is = envEntriesProperties.getAsset().openStream();
- properties.load(is);
- ejbModule.getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties);
-
- // do it for test class too
- appModule.getEjbModules().iterator().next().getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties);
- } catch (final Exception e) {
- LOGGER.log(Level.SEVERE, "can't read env-entries.properties", e);
- } finally {
- IO.close(is);
- }
+ private static void addEnvEntries(final Archive<?> archive, final String prefix, final AppModule appModule, final EjbModule ejbModule) {
+ final Node envEntriesProperties = archive.get(prefix.concat(ENV_ENTRIES_PROPERTIES));
+ if (envEntriesProperties != null) {
+ InputStream is = null;
+ final Properties properties = new Properties();
+ try {
+ is = envEntriesProperties.getAsset().openStream();
+ properties.load(is);
+ ejbModule.getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties);
+
+ // do it for test class too
+ appModule.getEjbModules().iterator().next().getAltDDs().put(ENV_ENTRIES_PROPERTIES, properties);
+ } catch (final Exception e) {
+ LOGGER.log(Level.SEVERE, "can't read env-entries.properties", e);
+ } finally {
+ IO.close(is);
}
}
-
- if (!appModule.isWebapp()) {
- appModule.getAdditionalLibraries().addAll(additionalPaths);
- }
-
- return appModule;
}
private static String contextRoot(final String name) {
Modified: tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/server/ServiceManagers.java Sun Oct 12 16:26:06 2014
@@ -35,12 +35,19 @@ public final class ServiceManagers {
final ServerService[] daemons = SimpleServiceManager.class.cast(smp).getDaemons();
for (final ServerService ss : daemons) {
if ("httpejbd".equals(ss.getName())) {
- final HTTPContext httpContext = new HTTPContext(ss.getIP(), ss.getPort());
- httpContext.add(new Servlet("ArquillianServletRunner", info.appId));
- return new ProtocolMetaData().addContext(httpContext);
+ if (info.webApps.size() == 1) {
+ return newHttpProtocolMetaData(ss, info.webApps.iterator().next().contextRoot);
+ }
+ return newHttpProtocolMetaData(ss, info.appId);
}
}
}
return null;
}
+
+ private static ProtocolMetaData newHttpProtocolMetaData(final ServerService ss, final String contextRoot) {
+ final HTTPContext httpContext = new HTTPContext(ss.getIP(), ss.getPort());
+ httpContext.add(new Servlet("ArquillianServletRunner", contextRoot));
+ return new ProtocolMetaData().addContext(httpContext);
+ }
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Sun Oct 12 16:26:06 2014
@@ -226,7 +226,7 @@ public class CdiScanner implements Scann
}
} else {
final ClassLoader loader = clazz.getClassLoader();
- if (!filterByClassLoader || comparator.isSame(loader) || loader.equals(scl) && isNotEarWebApp) {
+ if (!filterByClassLoader || comparator.isSame(loader) || (loader.equals(scl) && isNotEarWebApp)) {
classes.add(clazz);
if (beans.startupClasses.contains(name)) {
startupClasses.add(clazz);
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java Sun Oct 12 16:26:06 2014
@@ -18,7 +18,6 @@
package org.apache.openejb.cdi;
import org.apache.openejb.AppContext;
-import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.EjbJarInfo;
import org.apache.openejb.cdi.transactional.TransactionContext;
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Sun Oct 12 16:26:06 2014
@@ -1641,7 +1641,8 @@ public class AnnotationDeployer implemen
final Map<URL, List<String>> map = aggregatedArchive.getClassesMap();
for (final Map.Entry<URL, List<String>> entry : map.entrySet()) {
- final URL beansXml = hasBeansXml(entry.getKey());
+ final URL key = entry.getKey();
+ final URL beansXml = hasBeansXml(key);
if (beansXml != null) {
classes.put(beansXml, entry.getValue());
}
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java Sun Oct 12 16:26:06 2014
@@ -268,7 +268,9 @@ public class LightweightWebAppBuilder im
private static Class<?> loadFromUrls(final ClassLoader loader, final String url, final String path) throws ClassNotFoundException {
final String classname;
- if ("jar:file://!/WEB-INF/classes/".equals(url) && path.contains("classes/")) {
+ if (path.startsWith("archive:") && path.contains(".war/")) {
+ classname = path.substring(path.indexOf(".war") + ".war".length() + 1);
+ } else if ("jar:file://!/WEB-INF/classes/".equals(url) && path.contains("classes/")) {
classname = path.substring(path.lastIndexOf("classes/") + "classes/".length());
} else {
classname = path.substring(url.length());
Modified: tomee/tomee/trunk/tck/cdi-embedded/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-embedded/pom.xml?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-embedded/pom.xml (original)
+++ tomee/tomee/trunk/tck/cdi-embedded/pom.xml Sun Oct 12 16:26:06 2014
@@ -109,6 +109,12 @@
<version>${org.apache.openwebbeans.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>openejb-http</artifactId>
+ <version>${openejb.version}</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.testng</groupId>
@@ -133,6 +139,10 @@
<openejb.cdi.applicationScope.cached>false</openejb.cdi.applicationScope.cached>
<!-- not supported by the spec -->
<openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
+ <!-- for ear we need WebAppDeployer -->
+ <org.apache.openejb.assembler.classic.WebAppBuilder>org.apache.openejb.web.LightweightWebAppBuilder</org.apache.openejb.assembler.classic.WebAppBuilder>
+ <!-- archives are well formed and all classes are in app loader -->
+ <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
</systemPropertyVariables>
</configuration>
</plugin>
Modified: tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/arquillian.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/arquillian.xml?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/arquillian.xml (original)
+++ tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/arquillian.xml Sun Oct 12 16:26:06 2014
@@ -20,6 +20,7 @@
xmlns="http://jboss.org/schema/arquillian"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+
<container qualifier="openejb" default="true">
<configuration>
<property name="properties">
Modified: tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml (original)
+++ tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml Sun Oct 12 16:26:06 2014
@@ -18,7 +18,7 @@
<suite name="CDI TCK" verbose="0">
<test name="CDI TCK">
<classes>
- <class name="org.jboss.cdi.tck.tests.lookup.clientProxy.unproxyable.interceptor.InterceptedBeanProxyTest"/>
+ <class name="org.jboss.cdi.tck.tests.context.session.SessionContextTest"/>
</classes>
</test>
</suite>
Modified: tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/passing.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/passing.xml?rev=1631202&r1=1631201&r2=1631202&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/passing.xml (original)
+++ tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/passing.xml Sun Oct 12 16:26:06 2014
@@ -49,13 +49,6 @@
</listeners>
<test name="JSR-346 TCK">
- <groups>
- <run>
- <exclude name="integration" />
- <exclude name="javaee-full" />
- </run>
- </groups>
-
<packages>
<package name="org.jboss.cdi.tck.tests.*">
<!-- CHALLENGED TCK TESTS: clarifying this in the EG -->