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/11 23:22:18 UTC
svn commit: r1631122 - in /tomee/tomee/trunk:
arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/
arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/
arquillian/arquill...
Author: rmannibucau
Date: Sat Oct 11 21:22:18 2014
New Revision: 1631122
URL: http://svn.apache.org/r1631122
Log:
supporting multiple beans.xml in SW openejb embedded - note the fact we are fully embedded can be an issue later in TCKs, we can desire an in between mode where we dump even with openejb :(
Modified:
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/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/exception/DeploymentExceptionErrorTest.java
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml
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=1631122&r1=1631121&r2=1631122&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 Sat Oct 11 21:22:18 2014
@@ -19,6 +19,7 @@ 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;
@@ -96,6 +97,7 @@ public class OpenEJBArchiveProcessor {
}
final List<URL> additionalPaths = new ArrayList<URL>();
+ final List<AssetSource> beansXmlMerged = new ArrayList<>();
final String prefix;
if (WebArchive.class.isInstance(archive)) {
@@ -115,6 +117,14 @@ public class OpenEJBArchiveProcessor {
} else if (ArchiveAsset.class.isInstance(asset)) {
final Archive<?> nestedArchive = ArchiveAsset.class.cast(asset).getArchive();
if (!isExcluded(nestedArchive.getName())) {
+ final Node bXmlNode = nestedArchive.get(META_INF + BEANS_XML);
+ if (bXmlNode != null) {
+ try {
+ beansXmlMerged.add(new AssetSource(bXmlNode.getAsset(), new URL("jar:file://!/WEB-INF/lib/" + nestedArchive.getName() + "!/META-INF/beans.xml")));
+ } catch (final MalformedURLException e) {
+ // shouldn't occur
+ }
+ }
archive.merge(nestedArchive);
}
}
@@ -198,7 +208,12 @@ public class OpenEJBArchiveProcessor {
beansXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(BEANS_XML));
}
if (beansXml != null) {
- ejbModule.getAltDDs().put(BEANS_XML, new AssetSource(beansXml.getAsset()));
+ try {
+ beansXmlMerged.add(new AssetSource(beansXml.getAsset(), new URL("jar:file://!/WEB-INF/classes/beans.xml")));
+ } 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);
@@ -222,17 +237,17 @@ public class OpenEJBArchiveProcessor {
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())));
+ 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())));
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset(), null)));
}
} else {
- appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset())));
+ appModule.getAltDDs().put(PERSISTENCE_XML, Arrays.asList(new AssetSource(persistenceXml.getAsset(), null)));
}
}
}
@@ -240,7 +255,7 @@ public class OpenEJBArchiveProcessor {
{
final Node openejbJarXml = archive.get(prefix.concat(OPENEJB_JAR_XML));
if (openejbJarXml != null) {
- ejbModule.getAltDDs().put(OPENEJB_JAR_XML, new AssetSource(openejbJarXml.getAsset()));
+ ejbModule.getAltDDs().put(OPENEJB_JAR_XML, new AssetSource(openejbJarXml.getAsset(), null));
}
}
@@ -251,15 +266,15 @@ public class OpenEJBArchiveProcessor {
validationXml = archive.get(WEB_INF_CLASSES.concat(META_INF).concat(VALIDATION_XML));
}
if (validationXml != null) {
- testDD.put(VALIDATION_XML, new AssetSource(validationXml.getAsset())); // use same config otherwise behavior is weird
- ejbModule.getAltDDs().put(VALIDATION_XML, new AssetSource(validationXml.getAsset()));
+ 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()));
+ ejbModule.getAltDDs().put(RESOURCES_XML, new AssetSource(resourcesXml.getAsset(), null));
}
}
@@ -366,10 +381,11 @@ public class OpenEJBArchiveProcessor {
return name.substring(1, name.length() - 6);
}
- private static final class AssetSource implements ReadDescriptors.Source {
+ private static final class AssetSource extends ReadDescriptors.UrlSource {
private Asset asset;
- private AssetSource(final Asset asset) {
+ private AssetSource(final Asset asset, final URL url) {
+ super(url);
this.asset = asset;
}
Modified: tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java?rev=1631122&r1=1631121&r2=1631122&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/test/java/org/apache/openejb/arquillian/openejb/ExceptionInjectionTest.java Sat Oct 11 21:22:18 2014
@@ -16,7 +16,6 @@
*/
package org.apache.openejb.arquillian.openejb;
-import org.apache.openejb.OpenEJBException;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.jboss.arquillian.container.spi.client.container.DeploymentException;
import org.jboss.arquillian.container.test.api.Deployment;
@@ -43,10 +42,10 @@ public class ExceptionInjectionTest {
private WebBeansConfigurationException owbException;
@ArquillianResource
- private OpenEJBException oejbException;
+ private javax.enterprise.inject.spi.DeploymentException oejbException;
@Deployment(testable = false)
- @ShouldThrowException(OpenEJBException.class)
+ @ShouldThrowException(javax.enterprise.inject.spi.DeploymentException.class)
public static WebArchive war() {
return ShrinkWrap.create(WebArchive.class)
.addAsWebInfResource(new StringAsset(Descriptors.create(BeansDescriptor.class)
Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/exception/DeploymentExceptionErrorTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/exception/DeploymentExceptionErrorTest.java?rev=1631122&r1=1631121&r2=1631122&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/exception/DeploymentExceptionErrorTest.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-tests/arquillian-tomee-webprofile-tests/src/test/java/org/apache/openejb/arquillian/tests/exception/DeploymentExceptionErrorTest.java Sat Oct 11 21:22:18 2014
@@ -16,7 +16,6 @@
*/
package org.apache.openejb.arquillian.tests.exception;
-import org.apache.openejb.OpenEJBRuntimeException;
import org.jboss.arquillian.container.spi.client.container.DeploymentException;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.ShouldThrowException;
@@ -39,10 +38,10 @@ public class DeploymentExceptionErrorTes
private DeploymentException de;
@ArquillianResource
- private OpenEJBRuntimeException oejbException;
+ private javax.enterprise.inject.spi.DeploymentException oejbException;
@Deployment(testable = false)
- @ShouldThrowException(OpenEJBRuntimeException.class)
+ @ShouldThrowException(javax.enterprise.inject.spi.DeploymentException.class)
public static WebArchive war() {
return ShrinkWrap.create(WebArchive.class)
.addAsWebInfResource(new StringAsset(Descriptors.create(BeansDescriptor.class)
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java?rev=1631122&r1=1631121&r2=1631122&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java Sat Oct 11 21:22:18 2014
@@ -18,6 +18,7 @@
package org.apache.openejb.config;
import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.cdi.CompositeBeans;
import org.apache.openejb.config.sys.JSonConfigReader;
import org.apache.openejb.config.sys.JaxbOpenejb;
import org.apache.openejb.config.sys.Resources;
@@ -472,9 +473,38 @@ public class ReadDescriptors implements
}
} else if (raw instanceof Beans) {
ejbModule.setBeans((Beans) raw);
+ } else if (List.class.isInstance(raw)) {
+ final CompositeBeans compositeBeans = new CompositeBeans();
+ final List list = List.class.cast(raw);
+ if (!list.isEmpty()) {
+ for (final Object o : list) {
+ try {
+ final UrlSource urlSource = UrlSource.class.cast(o);
+ mergeBeansXml(compositeBeans, readBeans(urlSource.get()), urlSource.getUrl());
+ } catch (final IOException e) {
+ throw new OpenEJBException(e);
+ }
+ }
+ ejbModule.setBeans(compositeBeans);
+ }
}
}
+ private static Beans mergeBeansXml(final CompositeBeans current, final Beans beans, final URL url) {
+ current.getAlternativeClasses().addAll(beans.getAlternativeClasses());
+ current.getAlternativeStereotypes().addAll(beans.getAlternativeStereotypes());
+ current.getDecorators().addAll(beans.getDecorators());
+ current.getInterceptors().addAll(beans.getInterceptors());
+ current.getScan().getExclude().addAll(beans.getScan().getExclude());
+
+ // check is done here since later we lost the data of the origin
+ ReadDescriptors.checkDuplicatedByBeansXml(beans, current);
+
+ final String beanDiscoveryMode = beans.getBeanDiscoveryMode();
+ current.getDiscoveryByUrl().put(url, beanDiscoveryMode == null ? "ALL" : beanDiscoveryMode);
+ return current;
+ }
+
private void readCmpOrm(final EjbModule ejbModule) throws OpenEJBException {
final Object data = ejbModule.getAltDDs().get("openejb-cmp-orm.xml");
if (data != null && !(data instanceof EntityMappings)) {
@@ -863,6 +893,10 @@ public class ReadDescriptors implements
public InputStream get() throws IOException {
return IO.read(url);
}
+
+ public URL getUrl() {
+ return url;
+ }
}
public static class StringSource implements Source {
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=1631122&r1=1631121&r2=1631122&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 Sat Oct 11 21:22:18 2014
@@ -18,7 +18,7 @@
<suite name="CDI TCK" verbose="0">
<test name="CDI TCK">
<classes>
- <class name="org.jboss.cdi.tck.tests.decorators.definition.broken.nonExistantClassInBeansXml.NonExistantDecoratorClassInBeansXmlTest"/>
+ <class name="org.jboss.cdi.tck.tests.extensions.alternative.deployment.AlternativeInLibraryWithExtensionTest"/>
</classes>
</test>
</suite>