You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2018/08/22 11:20:35 UTC
activemq git commit: AMQ-7037 - allow sslContext attribute of
networkConnector to be added via runtime config plugin jaxb processor
Repository: activemq
Updated Branches:
refs/heads/master 54b2e21f4 -> b488df694
AMQ-7037 - allow sslContext attribute of networkConnector to be added via runtime config plugin jaxb processor
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/b488df69
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/b488df69
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/b488df69
Branch: refs/heads/master
Commit: b488df694c5226b600fb4a547cfcb904d56d7046
Parents: 54b2e21
Author: gtully <ga...@gmail.com>
Authored: Wed Aug 22 12:20:21 2018 +0100
Committer: gtully <ga...@gmail.com>
Committed: Wed Aug 22 12:20:21 2018 +0100
----------------------------------------------------------------------
.../plugin/DefaultConfigurationProcessor.java | 19 ++++++++++++++++-
.../org/apache/activemq/plugin/JAXBUtils.java | 22 +++++++++++++++-----
.../src/main/resources/binding.xjb | 4 ++++
.../apache/activemq/NetworkConnectorTest.java | 2 ++
.../networkConnectorTest-mod-one-nc.xml | 7 ++++++-
5 files changed, 47 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/b488df69/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/DefaultConfigurationProcessor.java
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/DefaultConfigurationProcessor.java b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/DefaultConfigurationProcessor.java
index 1e539ed..26662c8 100644
--- a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/DefaultConfigurationProcessor.java
+++ b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/DefaultConfigurationProcessor.java
@@ -20,6 +20,7 @@ import org.apache.activemq.util.IntrospectionSupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.annotation.PostConstruct;
import javax.xml.bind.JAXBElement;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -204,12 +205,28 @@ public class DefaultConfigurationProcessor implements ConfigurationProcessor {
try {
setter.invoke(instance, JAXBUtils.matchType(argument, setter.getParameterTypes()[0]));
} catch (Exception e) {
- plugin.info("failed to invoke " + setter + " on " + instance, e);
+ plugin.info("failed to invoke " + setter + " on " + instance + " with args " + argument, e);
}
} else {
plugin.info("failed to find setter for " + elementName + " on :" + instance);
}
}
+ invokePostConstruct(instance);
return instance;
}
+
+ private <T> void invokePostConstruct(T instance) {
+ try {
+ for (Method m : instance.getClass().getDeclaredMethods()) {
+ if (m.isAnnotationPresent(PostConstruct.class) && m.getParameterCount() == 0) {
+ try {
+ JAXBUtils.ensureAccessible(m);
+ m.invoke(instance, null);
+ } catch (Exception e) {
+ plugin.info("failed to invoke @PostConstruct method " + m + " on " + instance, e);
+ }
+ }
+ }
+ } catch (Exception ignored) {}
+ }
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/b488df69/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/JAXBUtils.java
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/JAXBUtils.java b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/JAXBUtils.java
index 9139b79..3230b6d 100644
--- a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/JAXBUtils.java
+++ b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/JAXBUtils.java
@@ -16,22 +16,24 @@
*/
package org.apache.activemq.plugin;
-import javax.xml.bind.JAXBElement;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Collection;
import java.util.HashSet;
-import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.apache.activemq.broker.region.virtual.FilteredDestination;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
+import org.apache.activemq.schema.core.DtoAuthenticationUser;
import org.apache.activemq.schema.core.DtoFilteredDestination;
-import org.apache.activemq.schema.core.DtoTopic;
import org.apache.activemq.schema.core.DtoQueue;
-import org.apache.activemq.schema.core.DtoAuthenticationUser;
+import org.apache.activemq.schema.core.DtoSslContext;
+import org.apache.activemq.schema.core.DtoTopic;
import org.apache.activemq.security.AuthenticationUser;
+import org.apache.activemq.spring.SpringSslContext;
public class JAXBUtils {
@@ -45,6 +47,12 @@ public class JAXBUtils {
return null;
}
+ public static void ensureAccessible(Method m) {
+ if ((!Modifier.isPublic(m.getModifiers()) || !Modifier.isPublic(m.getDeclaringClass().getModifiers())) && !m.isAccessible()) {
+ m.setAccessible(true);
+ }
+ }
+
public static Object inferTargetObject(Object elementContent) {
if (DtoTopic.class.isAssignableFrom(elementContent.getClass())) {
return new ActiveMQTopic();
@@ -53,7 +61,9 @@ public class JAXBUtils {
} else if (DtoAuthenticationUser.class.isAssignableFrom(elementContent.getClass())) {
return new AuthenticationUser();
} else if (DtoFilteredDestination.class.isAssignableFrom(elementContent.getClass())) {
- return new FilteredDestination();
+ return new FilteredDestination();
+ } else if (DtoSslContext.class.isAssignableFrom(elementContent.getClass())) {
+ return new SpringSslContext();
} else {
return new Object();
}
@@ -63,6 +73,8 @@ public class JAXBUtils {
Object result = parameterValues;
if (Set.class.isAssignableFrom(aClass)) {
result = new HashSet(parameterValues);
+ } else if (!Collection.class.isAssignableFrom(aClass)) {
+ result = parameterValues.get(0);
}
return result;
}
http://git-wip-us.apache.org/repos/asf/activemq/blob/b488df69/activemq-runtime-config/src/main/resources/binding.xjb
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/src/main/resources/binding.xjb b/activemq-runtime-config/src/main/resources/binding.xjb
index 0e728c2..2fd7739 100644
--- a/activemq-runtime-config/src/main/resources/binding.xjb
+++ b/activemq-runtime-config/src/main/resources/binding.xjb
@@ -68,6 +68,10 @@
<jxb:property name="Contents" />
</jxb:bindings>
+ <jxb:bindings node="xs:element[@name='networkConnector']/xs:complexType/xs:choice/xs:choice/xs:element[@name='sslContext']/xs:complexType/xs:choice">
+ <jxb:property name="Contents" />
+ </jxb:bindings>
+
<jxb:bindings node="xs:element[@name='broker']/xs:complexType/xs:choice/xs:choice/xs:element[@name='destinationInterceptors']/xs:complexType/xs:choice">
<jxb:property name="Contents" />
</jxb:bindings>
http://git-wip-us.apache.org/repos/asf/activemq/blob/b488df69/activemq-runtime-config/src/test/java/org/apache/activemq/NetworkConnectorTest.java
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/src/test/java/org/apache/activemq/NetworkConnectorTest.java b/activemq-runtime-config/src/test/java/org/apache/activemq/NetworkConnectorTest.java
index 400fbde..822d5cf 100644
--- a/activemq-runtime-config/src/test/java/org/apache/activemq/NetworkConnectorTest.java
+++ b/activemq-runtime-config/src/test/java/org/apache/activemq/NetworkConnectorTest.java
@@ -89,6 +89,8 @@ public class NetworkConnectorTest extends RuntimeConfigTestSupport {
NetworkConnector modNetworkConnector = brokerService.getNetworkConnectors().get(0);
assertEquals("got ttl update", 2, modNetworkConnector.getNetworkTTL());
+ assertNotNull("got ssl", modNetworkConnector.getSslContext());
+
// apply again - ensure no change
applyNewConfig(brokerConfig, configurationSeed + "-mod-one-nc", SLEEP);
assertEquals("no new network connectors", 1, brokerService.getNetworkConnectors().size());
http://git-wip-us.apache.org/repos/asf/activemq/blob/b488df69/activemq-runtime-config/src/test/resources/org/apache/activemq/networkConnectorTest-mod-one-nc.xml
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/src/test/resources/org/apache/activemq/networkConnectorTest-mod-one-nc.xml b/activemq-runtime-config/src/test/resources/org/apache/activemq/networkConnectorTest-mod-one-nc.xml
index e72dfc2..095293e 100644
--- a/activemq-runtime-config/src/test/resources/org/apache/activemq/networkConnectorTest-mod-one-nc.xml
+++ b/activemq-runtime-config/src/test/resources/org/apache/activemq/networkConnectorTest-mod-one-nc.xml
@@ -27,7 +27,12 @@
</plugins>
<networkConnectors>
- <networkConnector uri="static:(tcp://localhost:5555)" networkTTL="2" name="one" />
+ <networkConnector uri="static:(tcp://localhost:5555)" networkTTL="2" name="one">
+ <sslContext>
+ <sslContext keyStorePassword="PPAA" trustStorePassword="PPBB" />
+ </sslContext>
+ </networkConnector>
+
</networkConnectors>
</broker>
</beans>