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 2016/02/05 16:35:41 UTC
tomee git commit: TOMEE-1704 support placeholders in activation
config properties and move the override algorithm to not be too late to
override properties
Repository: tomee
Updated Branches:
refs/heads/master 3578ba611 -> bf16cb7d0
TOMEE-1704 support placeholders in activation config properties and move the override algorithm to not be too late to override properties
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/bf16cb7d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/bf16cb7d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/bf16cb7d
Branch: refs/heads/master
Commit: bf16cb7d0f2a906f4af619bb1ee55a1ae6b040ad
Parents: 3578ba6
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Fri Feb 5 16:33:31 2016 +0100
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Fri Feb 5 16:33:31 2016 +0100
----------------------------------------------------------------------
.../ActivationConfigPropertyOverride.java | 14 +
.../openejb/config/ConfigurationFactory.java | 3 +-
.../openejb/core/mdb/MDBPlaceholderTest.java | 102 ++
.../apache/openejb/jee/ActivationConfig.java | 2 +-
.../apache/tomee/embedded/Configuration.java" | 346 +++++++
.../org/apache/tomee/embedded/Container.java" | 955 +++++++++++++++++++
.../tomee/embedded/EmbeddedTomEEContainer.java" | 214 +++++
.../tomee/embedded/LoginConfigBuilder.java" | 65 ++
.../java/org/apache/tomee/embedded/Main.java" | 134 +++
.../embedded/SecurityConstaintBuilder.java" | 59 ++
.../internal/StandardContextCustomizer.java" | 111 +++
.../embedded/junit/TomEEEmbeddedRule.java" | 136 +++
.../META-INF/org.apache.tomee/service-jar.xml" | 53 +
13 files changed, 2192 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/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 3bd5903..73afb18 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
@@ -28,6 +28,7 @@ import org.apache.openejb.jee.oejb3.OpenejbJar;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.PropertyPlaceHolderHelper;
import java.util.List;
import java.util.Map;
@@ -67,12 +68,25 @@ public class ActivationConfigPropertyOverride implements DynamicDeployer {
continue;
}
+
final Properties properties = new Properties();
properties.putAll(module);
properties.putAll(ejbDeployment.getProperties());
final MessageDrivenBean mdb = (MessageDrivenBean) bean;
+ // override with placeholding
+ if (mdb.getActivationConfig() != null) {
+ for (final ActivationConfigProperty property : mdb.getActivationConfig().getActivationConfigProperty()) {
+ final String originalValue = property.getActivationConfigPropertyValue();
+ final String value = PropertyPlaceHolderHelper.simpleValue(originalValue);
+ if (value != null && !originalValue.equals(value)) {
+ property.setActivationConfigPropertyValue(value);
+ }
+ }
+ }
+
+ // now try to use special keys
final Properties overrides = ConfigurationFactory.getOverrides(properties, "mdb.activation", "EnterpriseBean");
overrides.putAll(ConfigurationFactory.getOverrides(properties, mdb.getMessagingType() + ".activation", "EnterpriseBean"));
overrides.putAll(ConfigurationFactory.getOverrides(properties, ejbName + ".activation", "EnterpriseBean"));
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
index c36b67d..c47873f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
@@ -288,6 +288,8 @@ public class ConfigurationFactory implements OpenEjbConfigurationFactory {
chain.add(new CleanEnvEntries());
chain.add(new LinkBuiltInTypes());
+ chain.add(new ActivationConfigPropertyOverride());
+
if (offline) {
final AutoConfig autoConfig = new AutoConfig(this);
autoConfig.autoCreateResources(false);
@@ -299,7 +301,6 @@ public class ConfigurationFactory implements OpenEjbConfigurationFactory {
chain.add(new ApplyOpenejbJar());
chain.add(new MappedNameBuilder());
- chain.add(new ActivationConfigPropertyOverride());
chain.add(new OutputGeneratedDescriptors());
// chain.add(new MergeWebappJndiContext());
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MDBPlaceholderTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MDBPlaceholderTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MDBPlaceholderTest.java
new file mode 100644
index 0000000..1065af7
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/mdb/MDBPlaceholderTest.java
@@ -0,0 +1,102 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.core.mdb;
+
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.SimpleLog;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.openejb.util.NetworkUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.Resource;
+import javax.ejb.MessageDriven;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.Assert.assertTrue;
+
+@SimpleLog
+@Classes(innerClassesAsBean = true)
+@RunWith(ApplicationComposer.class)
+public class MDBPlaceholderTest {
+ @Resource(name = "overriden")
+ private Queue queue;
+
+ @Resource
+ private ConnectionFactory connectionFactory;
+
+ @Test
+ public void sendMessage() throws Exception {
+ PlaceholdedMdb.called = false;
+
+ Connection connection = null;
+ Session session = null;
+ MessageProducer producer = null;
+ try {
+ connection = connectionFactory.createConnection();
+ session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ final TextMessage requestMessage = session.createTextMessage("sent");
+ producer = session.createProducer(queue);
+ producer.send(requestMessage);
+
+ // wait
+ PlaceholdedMdb.latch.await(1, TimeUnit.MINUTES);
+ assertTrue(PlaceholdedMdb.called);
+ } finally {
+ MdbUtil.close(producer);
+ MdbUtil.close(session);
+ MdbUtil.close(connection);
+ }
+ }
+
+ @Configuration
+ public Properties p() {
+ return new PropertiesBuilder()
+ .p("Default JMS Resource Adapter.BrokerXmlConfig", "broker:(tcp://localhost:" + NetworkUtil.getNextAvailablePort() + ")?useJmx=false")
+ .p("overriden", "new://Resource?type=Queue")
+ .p("my.custom.key", "overriden")
+ .build();
+ }
+
+ @MessageDriven(activationConfig = {
+ @javax.ejb.ActivationConfigProperty(propertyName = "maxSessions", propertyValue = "1"),
+ @javax.ejb.ActivationConfigProperty(propertyName = "maxMessagesPerSessions", propertyValue = "1"),
+ @javax.ejb.ActivationConfigProperty(propertyName = "destination", propertyValue = "${my.custom.key}")
+ })
+ public static class PlaceholdedMdb implements MessageListener {
+ private static volatile boolean called = false;
+ private static final CountDownLatch latch = new CountDownLatch(1);
+
+ @Override
+ public void onMessage(final Message message) {
+ called = true;
+ latch.countDown();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/container/openejb-jee/src/main/java/org/apache/openejb/jee/ActivationConfig.java
----------------------------------------------------------------------
diff --git a/container/openejb-jee/src/main/java/org/apache/openejb/jee/ActivationConfig.java b/container/openejb-jee/src/main/java/org/apache/openejb/jee/ActivationConfig.java
index d43c317..9634947 100644
--- a/container/openejb-jee/src/main/java/org/apache/openejb/jee/ActivationConfig.java
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/ActivationConfig.java
@@ -54,7 +54,7 @@ import java.util.Properties;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "activation-configType", propOrder = {
- "descriptions",
+ "description",
"activationConfigProperty"
})
public class ActivationConfig {
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/Configuration.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/Container.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/LoginConfigBuilder.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/Main.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/SecurityConstaintBuilder.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedRule.java"
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/bf16cb7d/"tomee/tomee-embedded\253src/main/resources/META-INF/org.apache.tomee/service-jar.xml"
----------------------------------------------------------------------