You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/03/06 19:58:21 UTC
activemq-artemis git commit: ARTEMIS-1020 Fixing CDI client
Repository: activemq-artemis
Updated Branches:
refs/heads/master d12330f15 -> ffb7c5654
ARTEMIS-1020 Fixing CDI client
Observe process bean when finding eligible bean classes to allow producer methods.
This closes #1066
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/ffb7c565
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/ffb7c565
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/ffb7c565
Branch: refs/heads/master
Commit: ffb7c5654a7614813e94d7f6e7934e37dce82139
Parents: d12330f
Author: John D. Ament <jo...@apache.org>
Authored: Mon Mar 6 13:34:50 2017 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Mar 6 14:54:22 2017 -0500
----------------------------------------------------------------------
.../client/cdi/extension/ArtemisExtension.java | 18 +++---
.../client/cdi/logger/ActiveMQCDILogger.java | 6 +-
.../cdi/bootstrap/CDIBootstrapProducerTest.java | 61 ++++++++++++++++++++
.../artemis/cdi/bootstrap/CDIProducers.java | 35 +++++++++++
4 files changed, 110 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/ffb7c565/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/extension/ArtemisExtension.java
----------------------------------------------------------------------
diff --git a/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/extension/ArtemisExtension.java b/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/extension/ArtemisExtension.java
index d9a0d54..6f28bc2 100644
--- a/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/extension/ArtemisExtension.java
+++ b/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/extension/ArtemisExtension.java
@@ -22,7 +22,7 @@ package org.apache.artemis.client.cdi.extension;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.Extension;
-import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import javax.enterprise.inject.spi.ProcessBean;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.artemis.client.cdi.configuration.ArtemisClientConfiguration;
@@ -33,14 +33,18 @@ public class ArtemisExtension implements Extension {
private boolean foundEmbeddedConfig = false;
private boolean foundConfiguration = false;
- <T extends ArtemisClientConfiguration> void foundClientConfig(@Observes ProcessAnnotatedType<T> pat) {
- ActiveMQCDILogger.LOGGER.discoveredConfiguration(pat);
- foundConfiguration = true;
+ void foundClientConfig(@Observes ProcessBean<?> processBean) {
+ if (processBean.getBean().getTypes().contains(ArtemisClientConfiguration.class)) {
+ ActiveMQCDILogger.LOGGER.discoveredConfiguration(processBean);
+ foundConfiguration = true;
+ }
}
- <T extends Configuration> void foundEmbeddedConfig(@Observes ProcessAnnotatedType<T> pat) {
- ActiveMQCDILogger.LOGGER.discoveredClientConfiguration(pat);
- foundEmbeddedConfig = true;
+ void foundEmbeddedConfig(@Observes ProcessBean<?> processBean) {
+ if (processBean.getBean().getTypes().contains(Configuration.class)) {
+ ActiveMQCDILogger.LOGGER.discoveredClientConfiguration(processBean);
+ foundEmbeddedConfig = true;
+ }
}
void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscovery) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/ffb7c565/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/logger/ActiveMQCDILogger.java
----------------------------------------------------------------------
diff --git a/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/logger/ActiveMQCDILogger.java b/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/logger/ActiveMQCDILogger.java
index fd2f7e7..f02d51b 100644
--- a/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/logger/ActiveMQCDILogger.java
+++ b/artemis-cdi-client/src/main/java/org/apache/artemis/client/cdi/logger/ActiveMQCDILogger.java
@@ -19,7 +19,7 @@
package org.apache.artemis.client.cdi.logger;
-import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import javax.enterprise.inject.spi.ProcessBean;
import org.jboss.logging.BasicLogger;
import org.jboss.logging.Logger;
@@ -48,11 +48,11 @@ public interface ActiveMQCDILogger extends BasicLogger {
@LogMessage
@Message(id = 571000, value = "Discovered configuration class {0}", format = Message.Format.MESSAGE_FORMAT)
- void discoveredConfiguration(ProcessAnnotatedType<?> pat);
+ void discoveredConfiguration(ProcessBean<?> pb);
@LogMessage
@Message(id = 571001, value = "Discovered client configuration class {0}", format = Message.Format.MESSAGE_FORMAT)
- void discoveredClientConfiguration(ProcessAnnotatedType<?> pat);
+ void discoveredClientConfiguration(ProcessBean<?> pb);
@LogMessage(level = Logger.Level.DEBUG)
@Message(id = 573000, value = "Configuration found, not using built in configuration")
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/ffb7c565/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIBootstrapProducerTest.java
----------------------------------------------------------------------
diff --git a/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIBootstrapProducerTest.java b/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIBootstrapProducerTest.java
new file mode 100644
index 0000000..c999226
--- /dev/null
+++ b/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIBootstrapProducerTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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.activemq.artemis.cdi.bootstrap;
+
+import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.Extension;
+import javax.inject.Inject;
+
+import org.apache.artemis.client.cdi.configuration.ArtemisClientConfiguration;
+import org.apache.artemis.client.cdi.extension.ArtemisExtension;
+import org.apache.artemis.client.cdi.factory.ConnectionFactoryProvider;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.EmptyAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(Arquillian.class)
+public class CDIBootstrapProducerTest {
+ @Deployment
+ public static Archive<?> createArchive() {
+ return ShrinkWrap.create(JavaArchive.class)
+ .addAsServiceProviderAndClasses(Extension.class, ArtemisExtension.class)
+ .addClasses(ConnectionFactoryProvider.class, CDIProducers.class)
+ .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
+ }
+
+ @Inject
+ private Instance<ArtemisClientConfiguration> artemisClientConfigurations;
+
+ @Test
+ public void shouldStartJMS() throws Exception {
+ assertFalse(artemisClientConfigurations.isAmbiguous());
+ assertFalse(artemisClientConfigurations.isUnsatisfied());
+ assertTrue(artemisClientConfigurations.iterator().hasNext());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/ffb7c565/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIProducers.java
----------------------------------------------------------------------
diff --git a/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIProducers.java b/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIProducers.java
new file mode 100644
index 0000000..625268c
--- /dev/null
+++ b/artemis-cdi-client/src/test/java/org/apache/activemq/artemis/cdi/bootstrap/CDIProducers.java
@@ -0,0 +1,35 @@
+/*
+ * 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.activemq.artemis.cdi.bootstrap;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Produces;
+
+import org.apache.artemis.client.cdi.configuration.ArtemisClientConfiguration;
+import org.apache.artemis.client.cdi.configuration.DefaultArtemisClientConfigurationImpl;
+
+@ApplicationScoped
+public class CDIProducers {
+ @Produces
+ @ApplicationScoped
+ public ArtemisClientConfiguration createConfig() {
+ return new DefaultArtemisClientConfigurationImpl();
+ }
+}