Author: scabanovich
Date: 2011-06-03 20:01:15 -0400 (Fri, 03 Jun 2011)
New Revision: 31832
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/ACMEQueue.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DispatcherPolicy.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Durable.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableMessageLogger.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.original
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.vetoed
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageDispatcher.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageLogger.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageManager.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageQueue.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageSystemConfiguration.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MyMessageQueues.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Payload.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/QueueManager.java
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/src/org/jboss/tools/cdi/seam/solder/core/test/GenericBeanTest.java
Log:
JBIDE-9065
https://issues.jboss.org/browse/JBIDE-9065
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/ACMEQueue.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/ACMEQueue.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/ACMEQueue.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,13 @@
+package org.jboss.generic2;
+
+import java.lang.annotation.Retention;
+
+import org.jboss.seam.solder.bean.generic.GenericType;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Retention(RUNTIME)
+(a)GenericType(MessageSystemConfiguration.class)
+@interface ACMEQueue {
+
+ String value();
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/ACMEQueue.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DispatcherPolicy.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DispatcherPolicy.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DispatcherPolicy.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,7 @@
+package org.jboss.generic2;
+
+public interface DispatcherPolicy {
+
+ void removeDuplicates();
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DispatcherPolicy.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Durable.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Durable.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Durable.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,21 @@
+package org.jboss.generic2;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.inject.Qualifier;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Qualifier
+@Target({ TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+public @interface Durable {
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Durable.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableMessageLogger.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableMessageLogger.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableMessageLogger.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,23 @@
+package org.jboss.generic2;
+
+import javax.inject.Inject;
+
+public class DurableMessageLogger {
+
+ @Inject
+ @Durable
+ MessageDispatcher dispatcher;
+
+ @Inject
+ @Durable
+ DispatcherPolicy policy;
+
+ /* Tweak the dispatch policy to enable duplicate removal */
+ @Inject
+ void tweakPolicy(@Durable DispatcherPolicy policy) {
+ policy.removeDuplicates();
+ }
+
+ void logMessage(Payload payload) {
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableMessageLogger.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,17 @@
+package org.jboss.generic2;
+
+import javax.enterprise.context.ConversationScoped;
+
+import org.jboss.seam.solder.core.Veto;
+
+//@Veto
+@Durable
+@ConversationScoped
+@ACMEQueue("durableQueue")
+public class DurableQueueConfiguration extends MessageSystemConfiguration {
+
+ public DurableQueueConfiguration() {
+ super(null);
+ this.durable = true;
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.original
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.original
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.original 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,17 @@
+package org.jboss.generic2;
+
+import javax.enterprise.context.ConversationScoped;
+
+import org.jboss.seam.solder.core.Veto;
+
+//@Veto
+@Durable
+@ConversationScoped
+@ACMEQueue("durableQueue")
+public class DurableQueueConfiguration extends MessageSystemConfiguration {
+
+ public DurableQueueConfiguration() {
+ super(null);
+ this.durable = true;
+ }
+}
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.vetoed
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.vetoed
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/DurableQueueConfiguration.vetoed 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,17 @@
+package org.jboss.generic2;
+
+import javax.enterprise.context.ConversationScoped;
+
+import org.jboss.seam.solder.core.Veto;
+
+@Veto
+@Durable
+@ConversationScoped
+@ACMEQueue("durableQueue")
+public class DurableQueueConfiguration extends MessageSystemConfiguration {
+
+ public DurableQueueConfiguration() {
+ super(null);
+ this.durable = true;
+ }
+}
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageDispatcher.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageDispatcher.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageDispatcher.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,9 @@
+package org.jboss.generic2;
+
+import org.jboss.seam.solder.messages.Message;
+
+public interface MessageDispatcher {
+
+ void send(Message message);
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageDispatcher.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageLogger.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageLogger.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageLogger.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,14 @@
+package org.jboss.generic2;
+
+import javax.inject.Inject;
+
+public class MessageLogger {
+
+ @Inject
+ MessageDispatcher dispatcher;
+
+ void logMessage(Payload payload) {
+ /* Add metaddata to the message */
+ dispatcher.send(null);
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageLogger.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageManager.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageManager.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageManager.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,27 @@
+package org.jboss.generic2;
+
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+
+import org.jboss.seam.solder.bean.generic.ApplyScope;
+import org.jboss.seam.solder.bean.generic.Generic;
+import org.jboss.seam.solder.bean.generic.GenericConfiguration;
+
+(a)GenericConfiguration(ACMEQueue.class)
+class MessageManager {
+
+ @Inject
+ @Generic
+ MessageQueue queue;
+
+ @Produces
+ @ApplyScope
+ MessageDispatcher messageDispatcherProducer() {
+ return queue.createMessageDispatcher();
+ }
+
+ @Produces
+ DispatcherPolicy getPolicy() {
+ return queue.getDispatcherPolicy();
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageManager.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageQueue.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageQueue.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageQueue.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,8 @@
+package org.jboss.generic2;
+
+public interface MessageQueue {
+
+ public MessageDispatcher createMessageDispatcher();
+
+ public DispatcherPolicy getDispatcherPolicy();
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageQueue.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageSystemConfiguration.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageSystemConfiguration.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageSystemConfiguration.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,10 @@
+package org.jboss.generic2;
+
+public class MessageSystemConfiguration {
+
+ MessageSystemConfiguration(Object o) {
+
+ }
+
+ protected boolean durable;
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MessageSystemConfiguration.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MyMessageQueues.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MyMessageQueues.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MyMessageQueues.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,20 @@
+package org.jboss.generic2;
+
+import javax.enterprise.context.ConversationScoped;
+import javax.enterprise.inject.Produces;
+
+public class MyMessageQueues {
+ @Produces
+ @ACMEQueue("defaultQueue")
+ MessageSystemConfiguration defaultQueue = new MessageSystemConfiguration(null);
+
+ @Produces
+ @Durable
+ @ConversationScoped
+ @ACMEQueue("durableQueue")
+ MessageSystemConfiguration producerDefaultQueue() {
+ MessageSystemConfiguration config = new MessageSystemConfiguration(null);
+// config.setDurable(true);
+ return config;
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/MyMessageQueues.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Payload.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Payload.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Payload.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,5 @@
+package org.jboss.generic2;
+
+public class Payload {
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/Payload.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/QueueManager.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/QueueManager.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/QueueManager.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -0,0 +1,38 @@
+package org.jboss.generic2;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+
+import org.jboss.seam.solder.bean.generic.ApplyScope;
+import org.jboss.seam.solder.bean.generic.Generic;
+import org.jboss.seam.solder.bean.generic.GenericConfiguration;
+import java.io.Serializable;
+
+(a)GenericConfiguration(ACMEQueue.class)
+@ApplyScope
+public class QueueManager implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Inject
+ @Generic
+ MessageSystemConfiguration systemConfig;
+
+ @Inject
+ ACMEQueue config;
+
+// MessageQueueFactory factory;
+
+ @PostConstruct
+ void init() {
+// factory = systemConfig.createMessageQueueFactory();
+ }
+
+ @Produces
+ @ApplyScope
+ public MessageQueue messageQueueProducer() {
+// return factory.createMessageQueue(config.name());
+ return null;
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/projects/CDISolderTest/src/org/jboss/generic2/QueueManager.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/src/org/jboss/tools/cdi/seam/solder/core/test/GenericBeanTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/src/org/jboss/tools/cdi/seam/solder/core/test/GenericBeanTest.java 2011-06-03
23:52:58 UTC (rev 31831)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.solder.core.test/src/org/jboss/tools/cdi/seam/solder/core/test/GenericBeanTest.java 2011-06-04
00:01:15 UTC (rev 31832)
@@ -16,7 +16,11 @@
import java.util.Set;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IType;
import org.jboss.tools.cdi.core.CDICorePlugin;
import org.jboss.tools.cdi.core.IBean;
@@ -28,6 +32,9 @@
import org.jboss.tools.cdi.core.IProducerMethod;
import org.jboss.tools.cdi.seam.solder.core.generic.GenericBeanProducerMethod;
import org.jboss.tools.cdi.seam.solder.core.generic.GenericClassBean;
+import org.jboss.tools.common.util.FileUtil;
+import org.jboss.tools.test.util.JobUtils;
+import org.jboss.tools.test.util.ResourcesUtils;
/**
*
@@ -184,4 +191,101 @@
return result;
}
+ public void testVetoedGenericBeanInjectionIntoGenericPoint() throws CoreException {
+ ICDIProject cdi = CDICorePlugin.getCDIProject(project, true);
+
+ /*
+ * Injection point: in class MessageManager
+ * @Inject @Generic MessageQueue queue;
+ * There are 3 configurations, hence there are 3 beans MessageQueue,
+ * each has that injection point;
+ * in all cases bean is produced by MyGenericBean.createMyFirstBean()
+ */
+ IClassBean beanToBeVetoed = null;
+ Set<IInjectionPointField> injections = getGenericInjectionPointField(cdi,
"src/org/jboss/generic2/MessageManager.java", "queue");
+ assertEquals(3, injections.size());
+ for (IInjectionPointField injection: injections) {
+ Set<IBean> bs = cdi.getBeans(false, injection);
+ assertTrue(bs.size() >= 1);
+ for (IBean b: bs) {
+ assertTrue(b instanceof GenericBeanProducerMethod);
+ GenericBeanProducerMethod m = (GenericBeanProducerMethod)b;
+ assertEquals("messageQueueProducer", m.getMethod().getElementName());
+ IBean g = ((GenericClassBean) m.getClassBean()).getGenericProducerBean();
+ if(g instanceof IClassBean) {
+ beanToBeVetoed = (IClassBean)g;
+ }
+ }
+ }
+ assertNotNull(beanToBeVetoed);
+
+
+ /*
+ * Replace DurableQueueConfiguration.java with vetoed version.
+ * After that there are only 2 configurations.
+ */
+ replaceFile("src/org/jboss/generic2/DurableQueueConfiguration.vetoed",
+ "src/org/jboss/generic2/DurableQueueConfiguration.java");
+
+ beanToBeVetoed = null;
+ injections = getGenericInjectionPointField(cdi,
"src/org/jboss/generic2/MessageManager.java", "queue");
+ assertEquals(2, injections.size());
+ for (IInjectionPointField injection: injections) {
+ Set<IBean> bs = cdi.getBeans(false, injection);
+ assertEquals(1, bs.size());
+ IBean b = bs.iterator().next();
+ assertTrue(b instanceof GenericBeanProducerMethod);
+ GenericBeanProducerMethod m = (GenericBeanProducerMethod)b;
+ assertEquals("messageQueueProducer", m.getMethod().getElementName());
+ IBean g = ((GenericClassBean) m.getClassBean()).getGenericProducerBean();
+ if(g instanceof IClassBean) {
+ beanToBeVetoed = (IClassBean)g;
+ }
+ }
+ assertNull(beanToBeVetoed);
+
+ /*
+ * Set original DurableQueueConfiguration.java back.
+ * Make sure that there are again 3 configurations.
+ */
+ replaceFile("src/org/jboss/generic2/DurableQueueConfiguration.original",
+ "src/org/jboss/generic2/DurableQueueConfiguration.java");
+
+ beanToBeVetoed = null;
+ injections = getGenericInjectionPointField(cdi,
"src/org/jboss/generic2/MessageManager.java", "queue");
+ assertEquals(3, injections.size());
+ for (IInjectionPointField injection: injections) {
+ Set<IBean> bs = cdi.getBeans(false, injection);
+ assertTrue(bs.size() >= 1);
+ for (IBean b: bs) {
+ assertTrue(b instanceof GenericBeanProducerMethod);
+ GenericBeanProducerMethod m = (GenericBeanProducerMethod)b;
+ assertEquals("messageQueueProducer", m.getMethod().getElementName());
+ IBean g = ((GenericClassBean) m.getClassBean()).getGenericProducerBean();
+ if(g instanceof IClassBean) {
+ beanToBeVetoed = (IClassBean)g;
+ }
+ }
+ }
+ assertNotNull(beanToBeVetoed);
+ }
+
+ void replaceFile(String sourcePath, String targetPath) throws CoreException {
+ boolean saveAutoBuild = ResourcesUtils.setBuildAutomatically(false);
+ JobUtils.waitForIdle();
+ try {
+ IFile target = project.getFile(new Path(targetPath));
+ assertTrue(target.exists());
+ IFile source = project.getFile(new Path(sourcePath));
+ assertTrue(target.exists());
+ target.setContents(source.getContents(), true, false, new NullProgressMonitor());
+ JobUtils.waitForIdle();
+ project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new
NullProgressMonitor());
+ JobUtils.waitForIdle();
+ } finally {
+ ResourcesUtils.setBuildAutomatically(saveAutoBuild);
+ JobUtils.waitForIdle();
+ }
+ }
+
}