[jboss-cvs] JBossAS SVN: r108474 - in projects/metadata/ejb/trunk/src: main/java/org/jboss/metadata/ejb/spec and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Oct 7 02:58:56 EDT 2010
Author: jaikiran
Date: 2010-10-07 02:58:56 -0400 (Thu, 07 Oct 2010)
New Revision: 108474
Modified:
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBean31MetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/MessageDrivenBean31MetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/schedule/unit/ScheduleTestCase.java
Log:
JBMETA-301 Fix merging of timer metadata
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBean31MetaData.java 2010-10-07 06:09:21 UTC (rev 108473)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossMessageDrivenBean31MetaData.java 2010-10-07 06:58:56 UTC (rev 108474)
@@ -22,6 +22,7 @@
package org.jboss.metadata.ejb.jboss;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import javax.ejb.Schedule;
@@ -31,6 +32,7 @@
import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
import org.jboss.metadata.ejb.spec.MessageDrivenBean31MetaData;
import org.jboss.metadata.ejb.spec.TimerMetaData;
+import org.jboss.metadata.merge.MergeUtil;
/**
* Metadata for EJB3.1 MDBs
@@ -85,22 +87,17 @@
JBossMessageDrivenBean31MetaData joverride = (JBossMessageDrivenBean31MetaData) override;
MessageDrivenBean31MetaData soriginal = (MessageDrivenBean31MetaData) original;
- if(joverride != null && joverride.timers != null)
+ // merge the (auto)timer metadata
+ Collection<TimerMetaData> originalTimers = soriginal == null ? null : soriginal.getTimers();
+ Collection<TimerMetaData> overrideTimers = joverride == null ? null : joverride.timers;
+ if(originalTimers != null || overrideTimers != null)
{
if (this.timers == null)
{
this.timers = new ArrayList<TimerMetaData>();
}
- this.timers.addAll(joverride.timers);
+ MergeUtil.merge(this.timers, overrideTimers, originalTimers);
}
- else if (soriginal != null && soriginal.getTimers() != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(soriginal.getTimers());
- }
}
@@ -113,23 +110,19 @@
JBossMessageDrivenBean31MetaData override = overrideEjb instanceof JBossGenericBeanMetaData ? null: (JBossMessageDrivenBean31MetaData) overrideEjb;
JBossMessageDrivenBean31MetaData original = originalEjb instanceof JBossGenericBeanMetaData ? null: (JBossMessageDrivenBean31MetaData) originalEjb;
-
- if(override != null && override.timers != null)
+
+ // merge the (auto)timer metadata
+ Collection<TimerMetaData> originalTimers = original == null ? null : original.timers;
+ Collection<TimerMetaData> overrideTimers = override == null ? null : override.timers;
+ if(originalTimers != null || overrideTimers != null)
{
if (this.timers == null)
{
this.timers = new ArrayList<TimerMetaData>();
}
- this.timers.addAll(override.timers);
+ MergeUtil.merge(this.timers, overrideTimers, originalTimers);
}
- else if (original != null && original.timers != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(original.timers);
- }
+
}
}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java 2010-10-07 06:09:21 UTC (rev 108473)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java 2010-10-07 06:58:56 UTC (rev 108474)
@@ -43,6 +43,7 @@
import org.jboss.metadata.ejb.spec.SessionBean31MetaData;
import org.jboss.metadata.ejb.spec.SessionType;
import org.jboss.metadata.ejb.spec.TimerMetaData;
+import org.jboss.metadata.merge.MergeUtil;
/**
* @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
@@ -364,14 +365,6 @@
{
this.dependsOn = joverride.dependsOn;
}
- if (joverride.timers != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(joverride.timers);
- }
}
else if (soriginal != null)
{
@@ -401,15 +394,9 @@
{
this.dependsOn = soriginal.dependsOn;
}
- if (soriginal.timers != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(soriginal.timers);
- }
}
+ // merge timers
+ this.mergeTimers(joverride, soriginal);
}
@@ -453,14 +440,7 @@
{
this.dependsOn = joverride.dependsOn;
}
- if (joverride.timers != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(joverride.timers);
- }
+
}
else if (soriginal != null)
{
@@ -490,15 +470,10 @@
{
this.dependsOn = soriginal.getDependsOn();
}
- if (soriginal.getTimers() != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(soriginal.getTimers());
- }
}
+
+ // merge timers
+ this.mergeTimers(joverride, soriginal);
}
@@ -510,5 +485,35 @@
if (original != null)
asyncMethods.addAll(original);
}
+
+ private void mergeTimers(JBossSessionBean31MetaData override, SessionBean31MetaData original)
+ {
+ // merge the (auto)timer metadata
+ Collection<TimerMetaData> originalTimers = original == null ? null : original.getTimers();
+ Collection<TimerMetaData> overrideTimers = override == null ? null : override.timers;
+ if(originalTimers != null || overrideTimers != null)
+ {
+ if (this.timers == null)
+ {
+ this.timers = new ArrayList<TimerMetaData>();
+ }
+ MergeUtil.merge(this.timers, overrideTimers, originalTimers);
+ }
+ }
+
+ private void mergeTimers(JBossSessionBean31MetaData override, JBossSessionBean31MetaData original)
+ {
+ // merge the (auto)timer metadata
+ Collection<TimerMetaData> originalTimers = original == null ? null : original.timers;
+ Collection<TimerMetaData> overrideTimers = override == null ? null : override.timers;
+ if(originalTimers != null || overrideTimers != null)
+ {
+ if (this.timers == null)
+ {
+ this.timers = new ArrayList<TimerMetaData>();
+ }
+ MergeUtil.merge(this.timers, overrideTimers, originalTimers);
+ }
+ }
}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/MessageDrivenBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/MessageDrivenBean31MetaData.java 2010-10-07 06:09:21 UTC (rev 108473)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/MessageDrivenBean31MetaData.java 2010-10-07 06:58:56 UTC (rev 108474)
@@ -22,6 +22,7 @@
package org.jboss.metadata.ejb.spec;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import javax.ejb.Schedule;
@@ -30,6 +31,7 @@
import org.jboss.metadata.common.ejb.IScheduleTarget;
import org.jboss.metadata.common.ejb.ITimeoutTarget;
+import org.jboss.metadata.merge.MergeUtil;
import org.jboss.xb.annotations.JBossXmlConstants;
import org.jboss.xb.annotations.JBossXmlType;
@@ -93,22 +95,17 @@
MessageDrivenBean31MetaData overrideMetaData = (MessageDrivenBean31MetaData) override;
MessageDrivenBean31MetaData originalMetaData = (MessageDrivenBean31MetaData) original;
- if (overrideMetaData != null && overrideMetaData.timers != null)
+ // merge the (auto)timer metadata
+ Collection<TimerMetaData> originalTimers = original == null ? null : originalMetaData.timers;
+ Collection<TimerMetaData> overrideTimers = override == null ? null : overrideMetaData.timers;
+ if(originalTimers != null || overrideTimers != null)
{
if (this.timers == null)
{
this.timers = new ArrayList<TimerMetaData>();
}
- this.timers.addAll(overrideMetaData.timers);
+ MergeUtil.merge(this.timers, overrideTimers, originalTimers);
}
- else if (originalMetaData != null && originalMetaData.timers != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(originalMetaData.timers);
- }
}
}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java 2010-10-07 06:09:21 UTC (rev 108473)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java 2010-10-07 06:58:56 UTC (rev 108474)
@@ -36,6 +36,7 @@
import org.jboss.metadata.common.ejb.IScheduleTarget;
import org.jboss.metadata.common.ejb.ITimeoutTarget;
import org.jboss.metadata.javaee.spec.EmptyMetaData;
+import org.jboss.metadata.merge.MergeUtil;
/**
* @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
@@ -400,14 +401,6 @@
{
this.dependsOn = override.dependsOn;
}
- if (override.timers != null)
- {
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(override.timers);
- }
}
else if (original != null)
{
@@ -443,14 +436,23 @@
{
this.dependsOn = original.dependsOn;
}
- if (original.timers != null)
+ }
+ // merge timers
+ this.mergeTimers(override, original);
+ }
+
+ private void mergeTimers(SessionBean31MetaData override, SessionBean31MetaData original)
+ {
+ // merge the (auto)timer metadata
+ Collection<TimerMetaData> originalTimers = original == null ? null : original.timers;
+ Collection<TimerMetaData> overrideTimers = override == null ? null : override.timers;
+ if(originalTimers != null || overrideTimers != null)
+ {
+ if (this.timers == null)
{
- if (this.timers == null)
- {
- this.timers = new ArrayList<TimerMetaData>();
- }
- this.timers.addAll(original.timers);
+ this.timers = new ArrayList<TimerMetaData>();
}
+ MergeUtil.merge(this.timers, overrideTimers, originalTimers);
}
}
}
Modified: projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/schedule/unit/ScheduleTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/schedule/unit/ScheduleTestCase.java 2010-10-07 06:09:21 UTC (rev 108473)
+++ projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/schedule/unit/ScheduleTestCase.java 2010-10-07 06:58:56 UTC (rev 108474)
@@ -877,8 +877,207 @@
}
}
+
+ /**
+ * Test that {@link SessionBean31MetaData#merge(EnterpriseBeanMetaData, EnterpriseBeanMetaData)}
+ * works as expected for timer metadata
+ */
+ @Test
+ public void testSessionBeanTimerMerge()
+ {
+ TimerMetaData nonPersistentTimer = new TimerMetaData();
+ nonPersistentTimer.setPersistent(false);
+
+ TimerMetaData persistentTimer = new TimerMetaData();
+ persistentTimer.setPersistent(true);
+
+ SessionBean31MetaData original = new SessionBean31MetaData();
+ original.setEjbName("DummyBean");
+ original.addTimer(nonPersistentTimer);
+
+ SessionBean31MetaData overriden = new SessionBean31MetaData();
+ overriden.setEjbName("DummyBean");
+ overriden.addTimer(persistentTimer);
+
+ SessionBean31MetaData mergedBean = new SessionBean31MetaData();
+ mergedBean.merge(overriden, original);
+
+ List<TimerMetaData> mergedTimers = mergedBean.getTimers();
+ Assert.assertNotNull("Merged timers is null", mergedTimers);
+ Assert.assertEquals("Unexpected number of timers in merged metadata", 2, mergedTimers.size());
+
+ boolean foundPersistentTimer = false;
+ boolean foundNonPersistentTimer = false;
+
+ for (TimerMetaData timer : mergedTimers)
+ {
+ if (timer.isPersistent())
+ {
+ foundPersistentTimer = true;
+ }
+ else
+ {
+ foundNonPersistentTimer = true;
+ }
+ }
+ Assert.assertTrue("Persistent timer not found in merged metadata", foundPersistentTimer);
+ Assert.assertTrue("Non-Persistent timer not found in merged metadata", foundNonPersistentTimer);
+
+ }
+
+ /**
+ * Test that {@link SessionBean31MetaData#merge(EnterpriseBeanMetaData, EnterpriseBeanMetaData)} works as
+ * expected for timer metadata
+ */
+ @Test
+ public void testSessionBeanTimerMerge2()
+ {
+ TimerMetaData persistentTimer = new TimerMetaData();
+ persistentTimer.setPersistent(true);
+
+ SessionBean31MetaData original = new SessionBean31MetaData();
+ original.setEjbName("DummyBean");
+
+ SessionBean31MetaData overriden = new SessionBean31MetaData();
+ overriden.setEjbName("DummyBean");
+ overriden.addTimer(persistentTimer);
+
+ SessionBean31MetaData mergedBean = new SessionBean31MetaData();
+ mergedBean.merge(overriden, original);
+
+ List<TimerMetaData> mergedTimers = mergedBean.getTimers();
+ Assert.assertNotNull("Merged timers is null", mergedTimers);
+ Assert.assertEquals("Unexpected number of timers in merged metadata", 1, mergedTimers.size());
+ Assert.assertTrue("Timer in merged metadata is not persistent", mergedTimers.get(0).isPersistent());
+ }
+
+ /**
+ * Test that {@link JBossSessionBean31MetaData#merge(JBossEnterpriseBeanMetaData, JBossEnterpriseBeanMetaData)}
+ * works as expected for timer metadata
+ */
+ @Test
+ public void testJBossSessionBeanTimerMerge()
+ {
+ TimerMetaData persistentTimer = new TimerMetaData();
+ persistentTimer.setPersistent(true);
+
+ JBossSessionBean31MetaData original = new JBossSessionBean31MetaData();
+ original.setEjbName("DummyBean");
+
+ JBossSessionBean31MetaData overriden = new JBossSessionBean31MetaData();
+ overriden.setEjbName("DummyBean");
+ overriden.addTimer(persistentTimer);
+
+ JBossSessionBean31MetaData mergedBean = new JBossSessionBean31MetaData();
+ mergedBean.merge(overriden, original);
+
+ List<TimerMetaData> mergedTimers = mergedBean.getTimers();
+ Assert.assertNotNull("Merged timers is null", mergedTimers);
+ Assert.assertEquals("Unexpected number of timers in merged metadata", 1, mergedTimers.size());
+ Assert.assertTrue("Timer in merged metadata is not persistent", mergedTimers.get(0).isPersistent());
+ }
+
+ /**
+ * Test that {@link JBossMessageDrivenBean31MetaData#merge(JBossEnterpriseBeanMetaData, JBossEnterpriseBeanMetaData)}
+ * works as expected for timer metadata
+ */
+ @Test
+ public void testJBossMessageDrivenBeanTimerMerge()
+ {
+ TimerMetaData persistentTimer = new TimerMetaData();
+ persistentTimer.setPersistent(true);
+
+ JBossMessageDrivenBean31MetaData original = new JBossMessageDrivenBean31MetaData();
+ original.setEjbName("DummyBean");
+
+ JBossMessageDrivenBean31MetaData overriden = new JBossMessageDrivenBean31MetaData();
+ overriden.setEjbName("DummyBean");
+ overriden.addTimer(persistentTimer);
+
+ JBossMessageDrivenBean31MetaData mergedBean = new JBossMessageDrivenBean31MetaData();
+ mergedBean.merge(overriden, original);
+
+ List<TimerMetaData> mergedTimers = mergedBean.getTimers();
+ Assert.assertNotNull("Merged timers is null", mergedTimers);
+ Assert.assertEquals("Unexpected number of timers in merged metadata", 1, mergedTimers.size());
+ Assert.assertTrue("Timer in merged metadata is not persistent", mergedTimers.get(0).isPersistent());
+ }
+
+ /**
+ * Test that {@link MessageDrivenBean31MetaData#merge(EnterpriseBeanMetaData, EnterpriseBeanMetaData)} works
+ * as expected for timer metadata
+ */
+ @Test
+ public void testMDBTimerMerge()
+ {
+ TimerMetaData nonPersistentTimer = new TimerMetaData();
+ nonPersistentTimer.setPersistent(false);
+
+ TimerMetaData persistentTimer = new TimerMetaData();
+ persistentTimer.setPersistent(true);
+
+ MessageDrivenBean31MetaData original = new MessageDrivenBean31MetaData();
+ original.setEjbName("DummyBean");
+ original.addTimer(nonPersistentTimer);
+
+ MessageDrivenBean31MetaData overriden = new MessageDrivenBean31MetaData();
+ overriden.setEjbName("DummyBean");
+ overriden.addTimer(persistentTimer);
+
+ MessageDrivenBean31MetaData mergedBean = new MessageDrivenBean31MetaData();
+ mergedBean.merge(overriden, original);
+
+ List<TimerMetaData> mergedTimers = mergedBean.getTimers();
+ Assert.assertNotNull("Merged timers is null", mergedTimers);
+ Assert.assertEquals("Unexpected number of timers in merged metadata", 2, mergedTimers.size());
+
+ boolean foundPersistentTimer = false;
+ boolean foundNonPersistentTimer = false;
+
+ for (TimerMetaData timer : mergedTimers)
+ {
+ if (timer.isPersistent())
+ {
+ foundPersistentTimer = true;
+ }
+ else
+ {
+ foundNonPersistentTimer = true;
+ }
+ }
+ Assert.assertTrue("Persistent timer not found in merged metadata", foundPersistentTimer);
+ Assert.assertTrue("Non-Persistent timer not found in merged metadata", foundNonPersistentTimer);
+
+ }
/**
+ * Test that {@link MessageDrivenBean31MetaData#merge(EnterpriseBeanMetaData, EnterpriseBeanMetaData)} works
+ * as expected for timer metadata
+ */
+ @Test
+ public void testMDBTimerMerge2()
+ {
+ TimerMetaData persistentTimer = new TimerMetaData();
+ persistentTimer.setPersistent(true);
+
+ MessageDrivenBean31MetaData original = new MessageDrivenBean31MetaData();
+ original.setEjbName("DummyBean");
+
+ MessageDrivenBean31MetaData overriden = new MessageDrivenBean31MetaData();
+ overriden.setEjbName("DummyBean");
+ overriden.addTimer(persistentTimer);
+
+ MessageDrivenBean31MetaData mergedBean = new MessageDrivenBean31MetaData();
+ mergedBean.merge(original, overriden);
+
+ List<TimerMetaData> mergedTimers = mergedBean.getTimers();
+ Assert.assertNotNull("Merged timers is null", mergedTimers);
+ Assert.assertEquals("Unexpected number of timers in merged metadata", 1, mergedTimers.size());
+ Assert.assertTrue("Timer in merged metadata is not persistent", mergedTimers.get(0).isPersistent());
+
+
+ }
+ /**
* Utility method
* @param <T>
* @param type
More information about the jboss-cvs-commits
mailing list