Author: objectiser
Date: 2008-08-08 08:01:56 -0400 (Fri, 08 Aug 2008)
New Revision: 226
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/SpawnModelChangeRule.java
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/PerformAction.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/PerformActionTest.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRuleTest.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRuleTest.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRuleTest.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRuleTest.java
Log:
Add 'ScheduleStateAction' into grouping constructs to either specify a join
service descriptor or iterate back to the while service descriptor (in the case of the
WhileAction).
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/META-INF/MANIFEST.MF 2008-08-08
12:01:56 UTC (rev 226)
@@ -21,5 +21,10 @@
org.jboss.tools.overlord.jbossesb.model.change.LanguageToConversationModelChangeRule,
org.jboss.tools.overlord.jbossesb.model.change.ConversationModelChangeRule,
org.jboss.tools.overlord.jbossesb.model.change.ConversationInteractionModelChangeRule,
- org.jboss.tools.overlord.jbossesb.model.change.IfModelChangeRule
+ org.jboss.tools.overlord.jbossesb.model.change.IfModelChangeRule,
+ org.jboss.tools.overlord.jbossesb.model.change.ParallelModelChangeRule,
+ org.jboss.tools.overlord.jbossesb.model.change.RunModelChangeRule,
+ org.jboss.tools.overlord.jbossesb.model.change.SpawnModelChangeRule,
+ org.jboss.tools.overlord.jbossesb.model.change.WhenModelChangeRule,
+ org.jboss.tools.overlord.jbossesb.model.change.WhileModelChangeRule
Bundle-ActivationPolicy: lazy
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/AbstractESBAction.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -353,6 +353,32 @@
}
/**
+ * This method determines the property value, associated
+ * with the supplied name, is defined.
+ *
+ * @param property The property name
+ * @return Whether the property has been defined
+ */
+ public boolean hasProperty(String property) {
+ boolean ret=false;
+
+ if (m_action != null) {
+ org.w3c.dom.NodeList nl=m_action.getChildNodes();
+
+ for (int i=0; ret == false && i < nl.getLength(); i++) {
+ if (nl.item(i) instanceof org.w3c.dom.Element &&
+ nl.item(i).getNodeName().equals(PROPERTY_ELEMENT) &&
+ ((org.w3c.dom.Element)nl.item(i)).getAttribute(NAME_ATTR).
+ equals(property)) {
+ ret = true;
+ }
+ }
+ }
+
+ return(ret);
+ }
+
+ /**
* This method returns the element associated with the
* requested property. If the property does not exist, then
* it will be created.
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/PerformAction.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/PerformAction.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/PerformAction.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -161,7 +161,7 @@
Compose elem=null;
// Check if perform is asynchronous
- if (getAction().hasAttribute(RETURN_SERVICE_NAME)) {
+ if (hasProperty(RETURN_SERVICE_NAME)) {
elem = new Run();
} else {
elem = new Spawn();
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRule.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRule.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -81,6 +81,13 @@
ESBService service=(ESBService)context.getParent();
If ifElem=(If)mobj;
+ ESBService joinService=
+ esbModel.createService(service.getCategory(),
+ esbModel.getUniqueServiceName(service.getCategory(),
+ service.getName()));
+
+ esbModel.addService(joinService);
+
// Check if should be an 'if' or a 'switch' action
if (ifElem.getRoles().contains(context.getRole())) {
@@ -110,6 +117,13 @@
ifAction.addPath((i==0 ? IfAction.IF : IfAction.ELSEIF),
subService.getCategory(), subService.getName(),
immediate, null, i);
+
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ schedule.setDestination(joinService.getCategory(),
+ joinService.getName(), true);
+ ((ESBService)context.getParent()).addAction(schedule, -1);
}
if (ifElem.getElseBlock() != null) {
@@ -133,6 +147,13 @@
ifAction.addPath(IfAction.ELSE,
subService.getCategory(), subService.getName(),
immediate, null, -1);
+
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ schedule.setDestination(joinService.getCategory(),
+ joinService.getName(), true);
+ ((ESBService)context.getParent()).addAction(schedule, -1);
}
} else {
@@ -177,6 +198,13 @@
switchAction.addCase(subService.getCategory(),
subService.getName(), interactions, i);
+
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ schedule.setDestination(joinService.getCategory(),
+ joinService.getName(), true);
+ ((ESBService)context.getParent()).addAction(schedule, -1);
if (interactions != null) {
java.util.Iterator<Interaction> iter=interactions.iterator();
@@ -222,6 +250,13 @@
switchAction.addCase(subService.getCategory(),
subService.getName(), interactions, -1);
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ schedule.setDestination(joinService.getCategory(),
+ joinService.getName(), true);
+ ((ESBService)context.getParent()).addAction(schedule, -1);
+
if (interactions != null) {
java.util.Iterator<Interaction> iter=interactions.iterator();
@@ -270,6 +305,8 @@
}
}
+ context.setParent(joinService);
+
return(true);
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRule.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRule.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -80,6 +80,15 @@
ESBService service=(ESBService)context.getParent();
Parallel parallel=(Parallel)mobj;
+ // Create the join service
+ ESBService joinService=
+ esbModel.createService(service.getCategory(),
+ esbModel.getUniqueServiceName(service.getCategory(),
+ service.getName()));
+
+ esbModel.addService(joinService);
+
+ // Create and configure the parallel action
ParallelAction parAction=new ParallelAction(service);
service.addAction(parAction, position);
@@ -99,6 +108,13 @@
for (int j=0; j < b.getContents().size(); j++) {
context.insert(model, b.getContents().get(j), j);
}
+
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ schedule.setDestination(joinService.getCategory(),
+ joinService.getName(), true);
+ ((ESBService)context.getParent()).addAction(schedule, -1);
boolean immediate=true;
@@ -126,14 +142,6 @@
subService.getName(), immediate, false, i);
}
- // Create the join service
- ESBService joinService=
- esbModel.createService(service.getCategory(),
- esbModel.getUniqueServiceName(service.getCategory(),
- service.getName()));
-
- esbModel.addService(joinService);
-
context.setParent(joinService);
parAction.addPath(joinService.getCategory(),
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/SpawnModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/SpawnModelChangeRule.java
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/SpawnModelChangeRule.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -0,0 +1,94 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.tools.overlord.jbossesb.model.change;
+
+//import java.util.logging.Logger;
+
+import org.jboss.tools.overlord.jbossesb.model.*;
+import org.jboss.tools.overlord.jbossesb.model.actions.*;
+import org.jboss.tools.overlord.jbossesb.model.util.*;
+import org.scribble.model.*;
+import org.scribble.model.change.*;
+import org.scribble.conversation.model.*;
+import org.scribble.extensions.*;
+
+/**
+ * This is the model change rule for the Spawn composition construct.
+ */
+(a)RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
+public class SpawnModelChangeRule extends AbstractModelChangeRule {
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context) and
+ * model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param mobj The model object causing the change
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ protected boolean isChangeSupported(ModelChangeContext context,
+ Model model, ModelObject mobj) {
+ boolean ret=false;
+
+ if (mobj instanceof Spawn &&
+ context.getParent() instanceof ESBService &&
+ model instanceof ESBLanguageModel) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method adds a new model object, within a
+ * parent model object, with the details supplied in
+ * another model object. The supplied model object
+ * will usually be from a different model representation
+ * (e.g. due to a merge), so the details will be
+ * copied and placed in the representation associated
+ * with the supplied model and parent model object.
+ *
+ * @param context The context
+ * @param model The model being changed
+ * @param mobj The model object details to be inserted
+ * @param position The position, where relevant
+ * @return Whether the change has been applied
+ */
+ @Override
+ public boolean insert(ModelChangeContext context,
+ Model model, ModelObject mobj, int position) {
+ ESBService service=(ESBService)context.getParent();
+ Spawn spawn=(Spawn)mobj;
+
+ PerformAction action=new PerformAction(service);
+
+ service.addAction(action, position);
+
+ String category=ConversationUtil.getServiceCategory(spawn.getDefinition());
+ String name=ConversationUtil.getServiceName(spawn.getDefinition());
+
+ action.setDestination(category, name);
+
+ return(true);
+ }
+
+ //private static Logger logger =
Logger.getLogger("org.jboss.tools.overlord.jbossesb.model.change");
+}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRule.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRule.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -80,6 +80,13 @@
ESBService service=(ESBService)context.getParent();
When when=(When)mobj;
+ ESBService joinService=
+ esbModel.createService(service.getCategory(),
+ esbModel.getUniqueServiceName(service.getCategory(),
+ service.getName()));
+
+ esbModel.addService(joinService);
+
// Check if context role is decision maker
if (when.getRoles().contains(context.getRole())) {
WhenAction action=new WhenAction(service);
@@ -102,6 +109,14 @@
context.insert(model, b.getContents().get(j), j);
}
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ schedule.setDestination(joinService.getCategory(),
+ joinService.getName(), true);
+
+ ((ESBService)context.getParent()).addAction(schedule, -1);
+
action.addPath(subService.getCategory(),
subService.getName(), i);
}
@@ -149,6 +164,14 @@
switchAction.addCase(subService.getCategory(),
subService.getName(), interactions, i);
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ schedule.setDestination(joinService.getCategory(),
+ joinService.getName(), true);
+
+ ((ESBService)context.getParent()).addAction(schedule, -1);
+
if (interactions != null) {
java.util.Iterator<Interaction> iter=interactions.iterator();
@@ -197,6 +220,8 @@
}
}
+ context.setParent(joinService);
+
return(true);
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRule.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRule.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -80,6 +80,34 @@
ESBService service=(ESBService)context.getParent();
While whileElem=(While)mobj;
+ // Check if current service is session based
+ // If so, then need to put while in a separate new
+ // service
+ if (service.isSessionBased()) {
+ ESBService whileService=
+ esbModel.createService(service.getCategory(),
+ esbModel.getUniqueServiceName(service.getCategory(),
+ service.getName()));
+
+ esbModel.addService(whileService);
+
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+
+ // 'immediate' flag set depending on whether the role
+ // is an initiator of the while. If not, then the
+ // immediate flag is false, which means the loop will be
+ // evaluated based on the next received message
+ schedule.setDestination(whileService.getCategory(),
+ whileService.getName(),
+ whileElem.getRoles().contains(context.getRole()));
+ ((ESBService)context.getParent()).addAction(schedule, -1);
+
+ context.setParent(whileService);
+
+ service = whileService;
+ }
+
WhileAction action=new WhileAction(service);
service.addAction(action, position);
@@ -91,13 +119,29 @@
esbModel.addService(subService);
+ // Configure the while loop service
context.setParent(subService);
for (int j=0; j < whileElem.getBlock().getContents().size(); j++) {
context.insert(model, whileElem.getBlock().getContents().get(j), j);
}
+ // Need to insert a 'ScheduleStateAction' to return back
+ // to the 'WhileAction', to re-evaluate the expression
+ ScheduleStateAction schedule=
+ new ScheduleStateAction((ESBService)context.getParent());
+ // 'immediate' flag set depending on whether the role
+ // is an initiator of the while. If not, then the
+ // immediate flag is false, which means the loop will be
+ // evaluated based on the next received message
+ schedule.setDestination(service.getCategory(),
+ service.getName(),
+ whileElem.getRoles().contains(context.getRole()));
+ ((ESBService)context.getParent()).addAction(schedule, -1);
+
+ // Check whether message types need to be defined in
+ // place of an expression
java.util.List<MessageSignature> messageTypes=
new java.util.Vector<MessageSignature>();
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/PerformActionTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/PerformActionTest.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/PerformActionTest.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -209,7 +209,7 @@
}
}
- public void testConvert() {
+ public void testConvertRun() {
TestESBService service=new TestESBService();
java.util.Map<String,String> props=new
java.util.Hashtable<String,String>();
@@ -278,7 +278,63 @@
fail("Subsequent activity after run was not act2");
}
}
-
+
+ public void testConvertSpawn() {
+ TestESBService service=new TestESBService();
+
+ java.util.Map<String,String> props=new
java.util.Hashtable<String,String>();
+ props.put(PerformAction.SERVICE_CATEGORY, "cat1");
+ props.put(PerformAction.SERVICE_NAME, "name1");
+
+ org.w3c.dom.Element elem=ESBActionTestUtil.getAction(null, props, null);
+
+ TestESBService other1=new TestESBService();
+ other1.setCategory("cat1");
+ other1.setName("name1");
+
+ TestActivity act1=new TestActivity();
+ other1.getContents().add(act1);
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+ model.addService(other1);
+ model.addService(service);
+
+ service.setModel(model);
+
+ PerformAction action=new PerformAction(service, elem);
+ action.initializeLinks();
+
+ service.getActions().add(action);
+
+ java.util.List<Activity> activities=new java.util.Vector<Activity>();
+
+ action.convert(activities, null);
+
+ if (activities.size() != 1) {
+ fail("Expecting 1 activity, but got: "+activities.size());
+ }
+
+ Activity act=activities.get(0);
+
+ if ((act instanceof Spawn) == false) {
+ fail("Expecting a 'Spawn' activity");
+ }
+
+ Spawn spawnAction=(Spawn)act;
+
+ if (spawnAction.getDefinition() == null) {
+ fail("Run definition was null");
+ }
+
+ if (spawnAction.getDefinition().getBlock().getContents().size() != 1) {
+ fail("Expecting one block activity:
"+spawnAction.getDefinition().getBlock().getContents().size());
+ }
+
+ if (spawnAction.getDefinition().getBlock().getContents().get(0) != act1) {
+ fail("Spawn model block should have 1 activity = act1");
+ }
+ }
+
public void testConvertNotExcludingEmptyPath() {
TestESBService service=new TestESBService();
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRuleTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRuleTest.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRuleTest.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -65,8 +65,8 @@
fail("Action was not IfAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 2) {
- fail("Two services expected: "+model.getServices().size());
+ if (model.getServices().size() != 3) {
+ fail("Three services expected: "+model.getServices().size());
}
ESBService ifService=null;
@@ -148,25 +148,29 @@
fail("Action was not IfAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 4) {
- fail("Four services expected: "+model.getServices().size());
+ if (model.getServices().size() != 5) {
+ fail("Five services expected: "+model.getServices().size());
}
ESBService ifService=null;
ESBService elseIfService1=null;
ESBService elseIfService2=null;
+ ESBService join=null;
java.util.Iterator<ESBService> iter=model.getServices().iterator();
while ((ifService == null || elseIfService1 == null ||
- elseIfService2 == null) && iter.hasNext()) {
+ elseIfService2 == null || join==null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
+ join = serv;
+ }
+ if (serv.getName().endsWith("__1")) {
ifService = serv;
}
- if (serv.getName().endsWith("__1")) {
+ if (serv.getName().endsWith("__2")) {
elseIfService1 = serv;
}
- if (serv.getName().endsWith("__2")) {
+ if (serv.getName().endsWith("__3")) {
elseIfService2 = serv;
}
}
@@ -195,6 +199,28 @@
"' not expected: "+ifService.getName());
}
+ if (ifService.getActions().size() != 1) {
+ fail("Path(1) does not have 1 action: "+ifService.getActions().size());
+ }
+
+ if ((ifService.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+ifService.getActions().get(0));
+ }
+
+ ScheduleStateAction schedule=(ScheduleStateAction)ifService.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(1);
if (elem.getNodeName().equals("elseif") == false) {
@@ -211,6 +237,28 @@
"' not expected: "+elseIfService1.getName());
}
+ if (elseIfService1.getActions().size() != 1) {
+ fail("Path(2) does not have 1 action:
"+elseIfService1.getActions().size());
+ }
+
+ if ((elseIfService1.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+elseIfService1.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)elseIfService1.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(2);
if (elem.getNodeName().equals("elseif") == false) {
@@ -226,6 +274,28 @@
fail("Service name '"+elem.getAttribute("service-name")+
"' not expected: "+elseIfService2.getName());
}
+
+ if (elseIfService2.getActions().size() != 1) {
+ fail("Path(3) does not have 1 action:
"+elseIfService2.getActions().size());
+ }
+
+ if ((elseIfService2.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+elseIfService2.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)elseIfService2.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
}
public void testInsertIfElseAction() {
@@ -269,21 +339,25 @@
fail("Action was not IfAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 3) {
- fail("Three services expected: "+model.getServices().size());
+ if (model.getServices().size() != 4) {
+ fail("Four services expected: "+model.getServices().size());
}
ESBService ifService=null;
ESBService elseService=null;
+ ESBService join=null;
java.util.Iterator<ESBService> iter=model.getServices().iterator();
- while ((ifService == null || elseService == null) &&
- iter.hasNext()) {
+ while ((ifService == null || elseService == null ||
+ join == null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
+ join = serv;
+ }
+ if (serv.getName().endsWith("__1")) {
ifService = serv;
}
- if (serv.getName().endsWith("__1")) {
+ if (serv.getName().endsWith("__2")) {
elseService = serv;
}
}
@@ -312,6 +386,28 @@
"' not expected: "+ifService.getName());
}
+ if (ifService.getActions().size() != 1) {
+ fail("Path(1) does not have 1 action: "+ifService.getActions().size());
+ }
+
+ if ((ifService.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+ifService.getActions().get(0));
+ }
+
+ ScheduleStateAction schedule=(ScheduleStateAction)ifService.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(1);
if (elem.getNodeName().equals("else") == false) {
@@ -327,6 +423,29 @@
fail("Service name '"+elem.getAttribute("service-name")+
"' not expected: "+elseService.getName());
}
+
+ if (elseService.getActions().size() != 1) {
+ fail("Path(2) does not have 1 action: "+elseService.getActions().size());
+ }
+
+ if ((elseService.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+elseService.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)ifService.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
}
public void testInsertSwitchAction() {
@@ -374,8 +493,8 @@
fail("Action was not SwitchAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 2) {
- fail("Two services expected: "+model.getServices().size());
+ if (model.getServices().size() != 3) {
+ fail("Three services expected: "+model.getServices().size());
}
ESBService switchService=null;
@@ -464,25 +583,29 @@
fail("Action was not SwitchAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 4) {
- fail("Four services expected: "+model.getServices().size());
+ if (model.getServices().size() != 5) {
+ fail("Five services expected: "+model.getServices().size());
}
+ ESBService join=null;
ESBService caseService1=null;
ESBService caseService2=null;
ESBService caseService3=null;
java.util.Iterator<ESBService> iter=model.getServices().iterator();
while ((caseService1 == null || caseService2 == null ||
- caseService3 == null) && iter.hasNext()) {
+ caseService3 == null || join == null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
+ join = serv;
+ }
+ if (serv.getName().endsWith("__1")) {
caseService1 = serv;
}
- if (serv.getName().endsWith("__1")) {
+ if (serv.getName().endsWith("__2")) {
caseService2 = serv;
}
- if (serv.getName().endsWith("__2")) {
+ if (serv.getName().endsWith("__3")) {
caseService3 = serv;
}
}
@@ -511,6 +634,28 @@
"' not expected: "+caseService1.getName());
}
+ if (caseService1.getActions().size() != 1) {
+ fail("Path(1) does not have 1 action: "+caseService1.getActions().size());
+ }
+
+ if ((caseService1.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+caseService1.getActions().get(0));
+ }
+
+ ScheduleStateAction schedule=(ScheduleStateAction)caseService1.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(1);
if (elem.getNodeName().equals("case") == false) {
@@ -527,6 +672,28 @@
"' not expected: "+caseService2.getName());
}
+ if (caseService2.getActions().size() != 1) {
+ fail("Path(2) does not have 1 action: "+caseService2.getActions().size());
+ }
+
+ if ((caseService2.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+caseService2.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)caseService2.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(2);
if (elem.getNodeName().equals("case") == false) {
@@ -542,5 +709,27 @@
fail("Service name '"+elem.getAttribute("service-name")+
"' not expected: "+caseService3.getName());
}
+
+ if (caseService3.getActions().size() != 1) {
+ fail("Path(3) does not have 1 action: "+caseService3.getActions().size());
+ }
+
+ if ((caseService3.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+caseService3.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)caseService3.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
}
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRuleTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRuleTest.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ParallelModelChangeRuleTest.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -88,16 +88,16 @@
join == null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
- s1 = serv;
+ join = serv;
}
if (serv.getName().endsWith("__1")) {
- s2 = serv;
+ s1 = serv;
}
if (serv.getName().endsWith("__2")) {
- s3 = serv;
+ s2 = serv;
}
if (serv.getName().endsWith("__3")) {
- join = serv;
+ s3 = serv;
}
}
@@ -129,6 +129,28 @@
fail("path(1) immediate not set");
}
+ if (s1.getActions().size() != 1) {
+ fail("Path(1) does not have 1 action: "+s1.getActions().size());
+ }
+
+ if ((s1.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+s1.getActions().get(0));
+ }
+
+ ScheduleStateAction schedule=(ScheduleStateAction)s1.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(1);
if (elem.getNodeName().equals("path") == false) {
@@ -149,6 +171,28 @@
fail("path(2) immediate not set");
}
+ if (s2.getActions().size() != 1) {
+ fail("Path(2) does not have 1 action: "+s2.getActions().size());
+ }
+
+ if ((s2.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+s2.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)s2.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(2);
if (elem.getNodeName().equals("path") == false) {
@@ -169,6 +213,28 @@
fail("path(3) immediate not set");
}
+ if (s3.getActions().size() != 1) {
+ fail("Path(3) does not have 1 action: "+s3.getActions().size());
+ }
+
+ if ((s3.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+s3.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)s3.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(3);
if (elem.getNodeName().equals("join") == false) {
@@ -261,10 +327,10 @@
while ((s1 == null || join == null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
- s1 = serv;
+ join = serv;
}
if (serv.getName().endsWith("__1")) {
- join = serv;
+ s1 = serv;
}
}
@@ -387,10 +453,10 @@
while ((s1 == null || join == null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
- s1 = serv;
+ join = serv;
}
if (serv.getName().endsWith("__1")) {
- join = serv;
+ s1 = serv;
}
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRuleTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRuleTest.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhenModelChangeRuleTest.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -75,25 +75,29 @@
fail("Action was not WhenAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 4) {
- fail("Four services expected: "+model.getServices().size());
+ if (model.getServices().size() != 5) {
+ fail("Five services expected: "+model.getServices().size());
}
ESBService s1=null;
ESBService s2=null;
ESBService s3=null;
+ ESBService join=null;
java.util.Iterator<ESBService> iter=model.getServices().iterator();
while ((s1 == null || s2 == null ||
- s3 == null) && iter.hasNext()) {
+ s3 == null || join == null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
+ join = serv;
+ }
+ if (serv.getName().endsWith("__1")) {
s1 = serv;
}
- if (serv.getName().endsWith("__1")) {
+ if (serv.getName().endsWith("__2")) {
s2 = serv;
}
- if (serv.getName().endsWith("__2")) {
+ if (serv.getName().endsWith("__3")) {
s3 = serv;
}
}
@@ -122,6 +126,28 @@
"' not expected: "+s1.getName());
}
+ if (s1.getActions().size() != 1) {
+ fail("Path(1) does not have 1 action: "+s1.getActions().size());
+ }
+
+ if ((s1.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+s1.getActions().get(0));
+ }
+
+ ScheduleStateAction schedule=(ScheduleStateAction)s1.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(1);
if (elem.getNodeName().equals("when") == false) {
@@ -138,6 +164,28 @@
"' not expected: "+s2.getName());
}
+ if (s2.getActions().size() != 1) {
+ fail("Path(2) does not have 1 action: "+s2.getActions().size());
+ }
+
+ if ((s2.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+s2.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)s2.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(2);
if (elem.getNodeName().equals("when") == false) {
@@ -153,6 +201,28 @@
fail("Service name '"+elem.getAttribute("service-name")+
"' not expected: "+s3.getName());
}
+
+ if (s3.getActions().size() != 1) {
+ fail("Path(3) does not have 1 action: "+s3.getActions().size());
+ }
+
+ if ((s3.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+s3.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)s3.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
}
public void testInsertSwitchAction() {
@@ -200,8 +270,8 @@
fail("Action was not SwitchAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 2) {
- fail("Two services expected: "+model.getServices().size());
+ if (model.getServices().size() != 3) {
+ fail("Three services expected: "+model.getServices().size());
}
ESBService switchService=null;
@@ -290,25 +360,29 @@
fail("Action was not SwitchAction: "+service.getActions().get(0));
}
- if (model.getServices().size() != 4) {
- fail("Four services expected: "+model.getServices().size());
+ if (model.getServices().size() != 5) {
+ fail("Five services expected: "+model.getServices().size());
}
+ ESBService join=null;
ESBService caseService1=null;
ESBService caseService2=null;
ESBService caseService3=null;
java.util.Iterator<ESBService> iter=model.getServices().iterator();
while ((caseService1 == null || caseService2 == null ||
- caseService3 == null) && iter.hasNext()) {
+ caseService3 == null || join == null) && iter.hasNext()) {
ESBService serv = iter.next();
if (serv.getName().endsWith("__0")) {
+ join = serv;
+ }
+ if (serv.getName().endsWith("__1")) {
caseService1 = serv;
}
- if (serv.getName().endsWith("__1")) {
+ if (serv.getName().endsWith("__2")) {
caseService2 = serv;
}
- if (serv.getName().endsWith("__2")) {
+ if (serv.getName().endsWith("__3")) {
caseService3 = serv;
}
}
@@ -337,6 +411,28 @@
"' not expected: "+caseService1.getName());
}
+ if (caseService1.getActions().size() != 1) {
+ fail("Path(1) does not have 1 action: "+caseService1.getActions().size());
+ }
+
+ if ((caseService1.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+caseService1.getActions().get(0));
+ }
+
+ ScheduleStateAction schedule=(ScheduleStateAction)caseService1.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(1);
if (elem.getNodeName().equals("case") == false) {
@@ -353,6 +449,28 @@
"' not expected: "+caseService2.getName());
}
+ if (caseService2.getActions().size() != 1) {
+ fail("Path(2) does not have 1 action: "+caseService2.getActions().size());
+ }
+
+ if ((caseService2.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+caseService2.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)caseService2.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
+
elem=(org.w3c.dom.Element)paths.item(2);
if (elem.getNodeName().equals("case") == false) {
@@ -368,5 +486,27 @@
fail("Service name '"+elem.getAttribute("service-name")+
"' not expected: "+caseService3.getName());
}
+
+ if (caseService3.getActions().size() != 1) {
+ fail("Path(3) does not have 1 action: "+caseService3.getActions().size());
+ }
+
+ if ((caseService3.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action not schedule state: "+caseService3.getActions().get(0));
+ }
+
+ schedule=(ScheduleStateAction)caseService3.getActions().get(0);
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(join.getCategory()) == false) {
+ fail("Schedule cateogry is not join '"+join.getCategory()+"':
"+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY));
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(join.getName()) == false) {
+ fail("Schedule name is not join '"+join.getName()+"': "+
+ schedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME));
+ }
}
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRuleTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRuleTest.java 2008-08-07
17:15:54 UTC (rev 225)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/WhileModelChangeRuleTest.java 2008-08-08
12:01:56 UTC (rev 226)
@@ -417,4 +417,167 @@
"' not expected: "+s2.getName());
}
}
+
+ public void testInsertWhileNotFirstSessionAction() {
+ WhileModelChangeRule rule=new WhileModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+ // Make session based service
+ service.setSessionBased(true);
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ java.util.Set<Interaction> interactions=new
java.util.HashSet<Interaction>();
+
+ TestLookaheadAnalyser tla=new TestLookaheadAnalyser();
+ tla.setInteractions(interactions);
+
+ Role role=new Role();
+ role.setName("role1");
+
+ Interaction interaction=new Interaction();
+ interaction.setToRole(role);
+
+ TypeReference ref=new TypeReference();
+ ref.setNamespace("ns");
+ ref.setLocalpart("lp");
+
+ MessageSignature msig=new MessageSignature();
+ interaction.setMessageSignature(msig);
+ msig.getTypes().add(ref);
+
+ interactions.add(interaction);
+
+ org.scribble.extensions.TestSingleExtensionRegistry reg=
+ new org.scribble.extensions.TestSingleExtensionRegistry(tla);
+ org.scribble.extensions.RegistryFactory.setRegistry(reg);
+
+ context.setRole(role);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ conv.setModelName(mname);
+
+ mname.setLocatedRole(role);
+
+ While mobj=new While();
+ conv.getBlock().getContents().add(mobj);
+
+ mobj.getRoles().add(role);
+
+ if (rule.insert(context, model, mobj, -1) == false) {
+ fail("Failed to insert");
+ }
+
+ // Check actions
+ if (service.getActions().size() != 1) {
+ fail("Expecting 1 action: "+service.getActions().size());
+ }
+
+ if ((service.getActions().get(0) instanceof ScheduleStateAction) == false) {
+ fail("Action was not ScheduleStateAction: "+service.getActions().get(0));
+ }
+
+ ScheduleStateAction whileSchedule=(ScheduleStateAction)
+ service.getActions().get(0);
+
+ if (model.getServices().size() != 4) {
+ fail("Four services expected: "+model.getServices().size());
+ }
+
+ ESBService whileService=null;
+ ESBService s1=null;
+ ESBService s2=null;
+ java.util.Iterator<ESBService> iter=model.getServices().iterator();
+
+ while ((s1 == null || s2 == null || whileService == null) &&
+ iter.hasNext()) {
+ ESBService serv = iter.next();
+ if (serv.getName().endsWith("__0")) {
+ whileService = serv;
+ }
+ if (serv.getName().endsWith("__1")) {
+ s1 = serv;
+ }
+ if (serv.getName().endsWith("__2")) {
+ s2 = serv;
+ }
+ }
+
+ if (whileSchedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY).
+ equals(whileService.getCategory()) == false) {
+ fail("While schedule action category '"+
+ whileSchedule.getPropertyValue(ScheduleStateAction.SERVICE_CATEGORY)+
+ "' not expected: "+whileService.getCategory());
+ }
+
+ if (whileSchedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME).
+ equals(whileService.getName()) == false) {
+ fail("While schedule action service name '"+
+ whileSchedule.getPropertyValue(ScheduleStateAction.SERVICE_NAME)+
+ "' not expected: "+whileService.getName());
+ }
+
+ if (whileService.getActions().size() != 1) {
+ fail("Expecting 1 action: "+whileService.getActions().size());
+ }
+
+ if ((whileService.getActions().get(0) instanceof WhileAction) == false) {
+ fail("Action was not WhileAction: "+whileService.getActions().get(0));
+ }
+
+ WhileAction action=(WhileAction)whileService.getActions().get(0);
+
+ org.w3c.dom.NodeList paths=action.getPropertyChildNodes("paths");
+
+ if (paths.getLength() != 2) {
+ fail("Two path children expected: "+paths.getLength());
+ }
+
+ org.w3c.dom.Element elem=(org.w3c.dom.Element)paths.item(0);
+
+ if (elem.getNodeName().equals("while") == false) {
+ fail("while expected but got: "+elem.getNodeName());
+ }
+
+ if (elem.getAttribute("service-category").equals(s1.getCategory()) == false)
{
+ fail("Service category
'"+elem.getAttribute("service-category")+
+ "' not expected: "+s1.getCategory());
+ }
+
+ if (elem.getAttribute("service-name").equals(s1.getName()) == false) {
+ fail("Service name '"+elem.getAttribute("service-name")+
+ "' not expected: "+s1.getName());
+ }
+
+ // Check no message types
+ org.w3c.dom.NodeList mtypeNL=elem.getElementsByTagName("message");
+
+ if (mtypeNL.getLength() != 0) {
+ fail("Should have no message types: "+mtypeNL.getLength());
+ }
+
+ elem=(org.w3c.dom.Element)paths.item(1);
+
+ if (elem.getNodeName().equals("exit") == false) {
+ fail("exit expected but got: "+elem.getNodeName());
+ }
+
+ if (elem.getAttribute("service-category").equals(s2.getCategory()) == false)
{
+ fail("Service category
'"+elem.getAttribute("service-category")+
+ "' not expected: "+s2.getCategory());
+ }
+
+ if (elem.getAttribute("service-name").equals(s2.getName()) == false) {
+ fail("Service name '"+elem.getAttribute("service-name")+
+ "' not expected: "+s2.getName());
+ }
+ }
}