Repository: tomee Updated Branches: refs/heads/tomee-1.7.x aba97974e -> 32340af1e
TOMEE-2162 check containers defined on the appmodule Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/32340af1 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/32340af1 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/32340af1 Branch: refs/heads/tomee-1.7.x Commit: 32340af1e8144d090d24cff139d07340be2ccb1f Parents: aba9797 Author: Jonathan Gallimore <[email protected]> Authored: Wed Jan 10 14:17:20 2018 +0000 Committer: Jonathan Gallimore <[email protected]> Committed: Wed Jan 10 14:17:20 2018 +0000 ---------------------------------------------------------------------- .../ActivationConfigPropertyOverride.java | 29 +++++++++++++- .../ActivationConfigPropertyOverrideTest.java | 42 +++++++++++++++++--- 2 files changed, 64 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/32340af1/container/openejb-core/src/main/java/org/apache/openejb/config/ActivationConfigPropertyOverride.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ActivationConfigPropertyOverride.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ActivationConfigPropertyOverride.java index d39b9cc..d14ab87 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/config/ActivationConfigPropertyOverride.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ActivationConfigPropertyOverride.java @@ -34,6 +34,7 @@ import org.apache.openejb.spi.ContainerSystem; import org.apache.openejb.util.LogCategory; import org.apache.openejb.util.Logger; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Properties; @@ -80,7 +81,7 @@ public class ActivationConfigPropertyOverride implements DynamicDeployer { final Properties overrides = new Properties(); - final MdbContainerDetails mdbContainer = getMdbContainer(ejbDeployment.getContainerId(), appModule.getModuleId()); + final MdbContainerDetails mdbContainer = getMdbContainer(appModule, ejbDeployment.getContainerId(), appModule.getModuleId()); if (mdbContainer != null) { overrides.putAll(ConfigurationFactory.getOverrides(properties, "mdb.container." + mdbContainer.getContainerId() + ".activation", "EnterpriseBean")); overrides.putAll(ConfigurationFactory.getOverrides(mdbContainer.getProperties(), "activation", "EnterpriseBean")); @@ -128,7 +129,7 @@ public class ActivationConfigPropertyOverride implements DynamicDeployer { return appModule; } - private MdbContainerDetails getMdbContainer(final String containerId, final String moduleId) { + private MdbContainerDetails getMdbContainer(final AppModule appModule, final String containerId, final String moduleId) { final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class); final ConfigurationFactory configurationFactory = SystemInstance.get().getComponent(ConfigurationFactory.class); @@ -172,6 +173,30 @@ public class ActivationConfigPropertyOverride implements DynamicDeployer { return containerInfo; } + final MdbContainerDetails moduleContainer = findModuleContainer(appModule, configurationFactory, containerId); + if (moduleContainer != null) { + return moduleContainer; + } + + return null; + } + + private MdbContainerDetails findModuleContainer(final AppModule appModule, final ConfigurationFactory configurationFactory, final String containerId) { + // try the containers on the AppModule + final Collection<org.apache.openejb.config.sys.Container> containers = appModule.getContainers(); + for (final org.apache.openejb.config.sys.Container appMopduleContainer : containers) { + if (appMopduleContainer.getId().equals(containerId) || appMopduleContainer.getId().equals(appModule.getModuleId() + "/" + containerId)) { + try { + final ContainerInfo containerInfo = configurationFactory.createContainerInfo(appMopduleContainer); + if (containerInfo != null && MdbContainerInfo.class.isInstance(containerInfo)) { + return convert(MdbContainerInfo.class.cast(containerInfo)); + } + } catch (OpenEJBException e) { + e.printStackTrace(); + } + } + } + return null; } http://git-wip-us.apache.org/repos/asf/tomee/blob/32340af1/container/openejb-core/src/test/java/org/apache/openejb/config/ActivationConfigPropertyOverrideTest.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/ActivationConfigPropertyOverrideTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/ActivationConfigPropertyOverrideTest.java index 05866a1..d2efc21 100755 --- a/container/openejb-core/src/test/java/org/apache/openejb/config/ActivationConfigPropertyOverrideTest.java +++ b/container/openejb-core/src/test/java/org/apache/openejb/config/ActivationConfigPropertyOverrideTest.java @@ -18,11 +18,8 @@ package org.apache.openejb.config; import org.apache.openejb.OpenEJBException; import org.apache.openejb.activemq.ActivationContainerOverwriteBothConfigurationTest; -import org.apache.openejb.assembler.classic.Assembler; -import org.apache.openejb.assembler.classic.EjbJarInfo; -import org.apache.openejb.assembler.classic.MessageDrivenBeanInfo; -import org.apache.openejb.assembler.classic.SecurityServiceInfo; -import org.apache.openejb.assembler.classic.TransactionServiceInfo; +import org.apache.openejb.assembler.classic.*; +import org.apache.openejb.config.sys.Container; import org.apache.openejb.core.builder.AppModuleBuilder; import org.apache.openejb.core.builder.MdbBuilder; import org.apache.openejb.jee.ActivationConfigProperty; @@ -372,6 +369,41 @@ public class ActivationConfigPropertyOverrideTest{ } + @Test + public void testOverrideFromContainerDefinedInAppModule() throws Exception { + SystemInstance.reset(); + + final Assembler assembler = new Assembler(); + final ConfigurationFactory config = new ConfigurationFactory(); + assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class)); + assembler.createSecurityService(config.configureService(SecurityServiceInfo.class)); + + final EjbJar ejbJar = new EjbJar(); + ejbJar.addEnterpriseBean(new MessageDrivenBean("Yellow", Orange.class)); + ejbJar.addEnterpriseBean(new MessageDrivenBean("Orange", Yellow.class)); + + final AppModule appModule = new AppModule(new EjbModule(ejbJar)); + appModule.setModuleId("mymodule"); + + final Container container = new Container(); + container.setId("mycontainer"); + container.setCtype("MESSAGE"); + container.getProperties().setProperty("activation.DeliveryActive", "false"); + appModule.getContainers().add(container); + + + final AppInfo appInfo = config.configureApplication(appModule); + assertEquals(1, appInfo.ejbJars.size()); + final EjbJarInfo ejbJarInfo = appInfo.ejbJars.get(0); + + assertEquals(2, ejbJarInfo.enterpriseBeans.size()); + final MessageDrivenBeanInfo orange = (MessageDrivenBeanInfo) ejbJarInfo.enterpriseBeans.get(0); + final MessageDrivenBeanInfo yellow = (MessageDrivenBeanInfo) ejbJarInfo.enterpriseBeans.get(1); + + assertEquals("false", orange.activationProperties.get("DeliveryActive")); + assertEquals("false", yellow.activationProperties.get("DeliveryActive")); + } + @MessageDriven(activationConfig = { @javax.ejb.ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "7"),
