[overlord-commits] Overlord SVN: r219 - in cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src: java/org/jboss/tools/overlord/jbossesb/model/change and 2 other directories.
overlord-commits at lists.jboss.org
overlord-commits at lists.jboss.org
Wed Aug 6 09:32:47 EDT 2008
Author: objectiser
Date: 2008-08-06 09:32:47 -0400 (Wed, 06 Aug 2008)
New Revision: 219
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRuleTest.java
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterAction.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ReceiveMessageAction.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ScheduleStateAction.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageAction.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java
Log:
Primarily added tests for interaction insertion, but also made some other minor adjustments.
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterAction.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterAction.java 2008-08-05 16:44:24 UTC (rev 218)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterAction.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -201,6 +201,22 @@
paths.appendChild(path);
}
+
+ /**
+ * This method returns the number of routes associated with
+ * the message router.
+ *
+ * @return The number of routes
+ */
+ public int getNumberOfRoutes() {
+ int ret=0;
+
+ org.w3c.dom.NodeList nl=getAction().getElementsByTagName(ROUTE);
+
+ ret = nl.getLength();
+
+ return(ret);
+ }
/**
* This method returns the mandatory property names.
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ReceiveMessageAction.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ReceiveMessageAction.java 2008-08-05 16:44:24 UTC (rev 218)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ReceiveMessageAction.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -28,10 +28,10 @@
*/
public class ReceiveMessageAction extends AbstractESBAction {
- private static final String IDENTITIES = "identities";
- private static final String MESSAGE_TYPE = "messageType";
- private static final String OPERATION = "operation";
- private static final String CLIENT_EPR = "clientEPR";
+ public static final String IDENTITIES = "identities";
+ public static final String MESSAGE_TYPE = "messageType";
+ public static final String OPERATION = "operation";
+ public static final String CLIENT_EPR = "clientEPR";
/**
* The constructor for the action.
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ScheduleStateAction.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ScheduleStateAction.java 2008-08-05 16:44:24 UTC (rev 218)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/ScheduleStateAction.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -28,9 +28,9 @@
*/
public class ScheduleStateAction extends AbstractESBAction {
- private static final String IMMEDIATE = "immediate";
- private static final String SERVICE_NAME = "serviceName";
- private static final String SERVICE_CATEGORY = "serviceCategory";
+ public static final String IMMEDIATE = "immediate";
+ public static final String SERVICE_NAME = "serviceName";
+ public static final String SERVICE_CATEGORY = "serviceCategory";
/**
* The constructor for the action.
@@ -148,5 +148,36 @@
}
}
+ /**
+ * This method sets the destination service descriptor properties.
+ *
+ * @param category The category
+ * @param name The name
+ * @param immediate Whether the invoke immediately
+ */
+ public void setDestination(String category, String name,
+ boolean immediate) {
+
+ org.w3c.dom.Element prop=getPropertyElement(SERVICE_CATEGORY);
+
+ if (prop != null) {
+ prop.setAttribute(VALUE_ATTR, category);
+ }
+
+ prop = getPropertyElement(SERVICE_NAME);
+
+ if (prop != null) {
+ prop.setAttribute(VALUE_ATTR, name);
+ }
+
+ if (immediate) {
+ prop = getPropertyElement(IMMEDIATE);
+
+ if (prop != null) {
+ prop.setAttribute(VALUE_ATTR, Boolean.toString(immediate));
+ }
+ }
+ }
+
private ESBService m_service=null;
}
\ No newline at end of file
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageAction.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageAction.java 2008-08-05 16:44:24 UTC (rev 218)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageAction.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -28,15 +28,15 @@
*/
public class SendMessageAction extends AbstractESBAction {
- private static final String CLIENT_EPR = "clientEPR";
- private static final String RESPONSE_SERVICE_NAME = "responseServiceName";
- private static final String RESPONSE_SERVICE_CATEGORY = "responseServiceCategory";
- private static final String SERVICE_NAME = "serviceName";
- private static final String SERVICE_CATEGORY = "serviceCategory";
- private static final String SERVICE_NAME_EXPRESSION = "serviceNameExpression";
- private static final String SERVICE_CATEGORY_EXPRESSION = "serviceCategoryExpression";
- private static final String MESSAGE_TYPE = "messageType";
- private static final String OPERATION = "operation";
+ public static final String CLIENT_EPR = "clientEPR";
+ public static final String RESPONSE_SERVICE_NAME = "responseServiceName";
+ public static final String RESPONSE_SERVICE_CATEGORY = "responseServiceCategory";
+ public static final String SERVICE_NAME = "serviceName";
+ public static final String SERVICE_CATEGORY = "serviceCategory";
+ public static final String SERVICE_NAME_EXPRESSION = "serviceNameExpression";
+ public static final String SERVICE_CATEGORY_EXPRESSION = "serviceCategoryExpression";
+ public static final String MESSAGE_TYPE = "messageType";
+ public static final String OPERATION = "operation";
/**
* The constructor for the action.
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRule.java 2008-08-05 16:44:24 UTC (rev 218)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRule.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -114,18 +114,8 @@
// implementations found, then can select e.g. XML or
// Java as message type representation.
- String mtype=null;
+ String mtype=InteractionUtil.getTypeString(ref);
- if (ref.getNamespace() != null) {
- mtype = "{"+ref.getNamespace()+"}";
- } else {
- mtype = "";
- }
-
- if (ref.getLocalpart() != null) {
- mtype += ref.getLocalpart();
- }
-
action.setMessageType(mtype);
}
@@ -211,6 +201,9 @@
ScheduleStateAction schedule=
new ScheduleStateAction(service);
+ schedule.setDestination(recvService.getCategory(),
+ recvService.getName(), false);
+
service.addAction(schedule, position);
context.setParent(recvService);
@@ -225,7 +218,6 @@
if (interaction.getMessageSignature().getTypes().size() == 1) {
TypeReference ref=interaction.getMessageSignature().getTypes().get(0);
- String mtype=null;
// TODO: Search for an implementation associated with
// the type reference, so that the type can be
@@ -233,17 +225,8 @@
// notation as part of the context, so that if multiple
// implementations found, then can select e.g. XML or
// Java as message type representation.
-
- if (ref.getNamespace() != null) {
- mtype = "{"+ref.getNamespace()+"}";
- } else {
- mtype = "";
- }
+ String mtype=InteractionUtil.getTypeString(ref);
- if (ref.getLocalpart() != null) {
- mtype += ref.getLocalpart();
- }
-
action.setMessageType(mtype);
}
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java 2008-08-05 16:44:24 UTC (rev 218)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -79,9 +79,12 @@
}
public ESBService getGatewayService() {
- // TODO Auto-generated method stub
- return null;
+ return(m_gatewayService);
}
+
+ public void setGatewayService(ESBService gw) {
+ m_gatewayService = gw;
+ }
public void validate(ModelListener l) {
// TODO Auto-generated method stub
@@ -103,6 +106,7 @@
}
private java.util.Map<String,ESBService> m_services=new java.util.Hashtable<String,ESBService>();
+ private ESBService m_gatewayService=null;
private org.w3c.dom.Element m_esbConfig=null;
private int m_count=0;
}
Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java 2008-08-05 16:44:24 UTC (rev 218)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -161,14 +161,20 @@
}
public boolean isGateway() {
- // TODO Auto-generated method stub
- return false;
+ return(m_gateway);
}
+ public void setGateway(boolean gw) {
+ m_gateway = gw;
+ }
+
public ESBAction getGatewayAction() {
- // TODO Auto-generated method stub
- return null;
+ return(m_gatewayAction);
}
+
+ public void setGatewayAction(ESBAction act) {
+ m_gatewayAction = act;
+ }
public void validate(ModelListener l) {
// TODO Auto-generated method stub
@@ -197,6 +203,8 @@
private Element m_service;
private List<ESBAction> m_actions=new java.util.Vector<ESBAction>();
private boolean m_root=false;
+ private boolean m_gateway=false;
+ private ESBAction m_gatewayAction=null;
private boolean m_loop=false;
private boolean m_sessionBased=false;
private boolean m_createSession=false;
Added: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRuleTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRuleTest.java (rev 0)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRuleTest.java 2008-08-06 13:32:47 UTC (rev 219)
@@ -0,0 +1,634 @@
+/*
+ * 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 junit.framework.TestCase;
+
+import org.jboss.tools.overlord.jbossesb.model.*;
+import org.jboss.tools.overlord.jbossesb.model.actions.*;
+import org.jboss.tools.overlord.jbossesb.model.util.InteractionUtil;
+import org.scribble.model.*;
+import org.scribble.model.change.*;
+import org.scribble.conversation.model.*;
+
+public class ConversationInteractionModelChangeRuleTest extends TestCase {
+
+ public void testInsertFirstReceiveAction() {
+ ConversationInteractionModelChangeRule rule=new ConversationInteractionModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+ // Add gateway service
+ TestESBService gwservice=(TestESBService)
+ model.createService("testcategory", "gateway");
+ gwservice.setGateway(true);
+
+ MessageRouterAction mra=new MessageRouterAction(gwservice);
+ gwservice.setGatewayAction(mra);
+
+ model.setGatewayService(gwservice);
+
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ Role role=new Role();
+ role.setName("role1");
+
+ context.setRole(role);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ mname.setLocatedRole(role);
+ conv.setModelName(mname);
+
+ ConversationInteraction mobj=new ConversationInteraction();
+ mobj.setToRole(role);
+ conv.getBlock().getContents().add(mobj);
+
+
+ MessageSignature msig=new MessageSignature();
+ mobj.setMessageSignature(msig);
+
+ TypeReference ref=new TypeReference();
+ ref.setNamespace("ns");
+ ref.setLocalpart("lp");
+
+ msig.getTypes().add(ref);
+
+ 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 ReceiveMessageAction) == false) {
+ fail("Action was not ReceiveMessageAction: "+service.getActions().get(0));
+ }
+
+ if (model.getServices().size() != 1) {
+ fail("One service expected: "+model.getServices().size());
+ }
+
+ ReceiveMessageAction action=(ReceiveMessageAction)service.getActions().get(0);
+
+ String mtype=InteractionUtil.getTypeString(ref);
+
+ if (action.getPropertyValue("messageType").equals(mtype)==false) {
+ fail("Message type '"+action.getPropertyValue("messageType")+
+ "' invalid, expecting: "+mtype);
+ }
+
+ if (mra.getNumberOfRoutes() != 1) {
+ fail("One route expected: "+mra.getNumberOfRoutes());
+ }
+ }
+
+ public void testInsertSecondReceiveAction() {
+ ConversationInteractionModelChangeRule rule=new ConversationInteractionModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+ // Add gateway service
+ TestESBService gwservice=(TestESBService)
+ model.createService("testcategory", "gateway");
+ gwservice.setGateway(true);
+
+ MessageRouterAction mra=new MessageRouterAction(gwservice);
+ gwservice.setGatewayAction(mra);
+
+ model.setGatewayService(gwservice);
+
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ Role role=new Role();
+ role.setName("role1");
+
+ context.setRole(role);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ mname.setLocatedRole(role);
+ conv.setModelName(mname);
+
+ ConversationInteraction mobj1=new ConversationInteraction();
+ mobj1.setToRole(role);
+ conv.getBlock().getContents().add(mobj1);
+
+ MessageSignature msig1=new MessageSignature();
+ mobj1.setMessageSignature(msig1);
+
+ TypeReference ref1=new TypeReference();
+ ref1.setNamespace("ns");
+ ref1.setLocalpart("lp1");
+
+ msig1.getTypes().add(ref1);
+
+ if (rule.insert(context, model, mobj1, -1) == false) {
+ fail("Failed to insert 1");
+ }
+
+ ConversationInteraction mobj2=new ConversationInteraction();
+ mobj2.setToRole(role);
+ conv.getBlock().getContents().add(mobj2);
+
+ MessageSignature msig2=new MessageSignature();
+ mobj2.setMessageSignature(msig2);
+
+ TypeReference ref2=new TypeReference();
+ ref2.setNamespace("ns");
+ ref2.setLocalpart("lp2");
+
+ msig2.getTypes().add(ref2);
+
+ // Once first interaction associated with service it
+ // will become session based
+ service.setSessionBased(true);
+
+ if (rule.insert(context, model, mobj2, -1) == false) {
+ fail("Failed to insert 2");
+ }
+
+ // Check actions
+ if (service.getActions().size() != 2) {
+ fail("Expecting 2 actions: "+service.getActions().size());
+ }
+
+ if ((service.getActions().get(0) instanceof ReceiveMessageAction) == false) {
+ fail("Action 1 was not ReceiveMessageAction: "+service.getActions().get(0));
+ }
+
+ if ((service.getActions().get(1) instanceof ScheduleStateAction) == false) {
+ fail("Action 2 was not ScheduleStateAction: "+service.getActions().get(1));
+ }
+
+ if (model.getServices().size() != 2) {
+ fail("Two services expected: "+model.getServices().size());
+ }
+
+ ESBService newService=null;
+ java.util.Iterator<ESBService> iter=model.getServices().iterator();
+ while (newService == null && iter.hasNext()) {
+ ESBService s=iter.next();
+
+ if (s != service) {
+ newService = s;
+ }
+ }
+
+ if (newService == null) {
+ fail("Other service not found");
+ }
+
+ // Check schedule details
+ ScheduleStateAction schedule=(ScheduleStateAction)
+ service.getActions().get(1);
+
+ if (newService.getCategory().equals(schedule.getPropertyValue(
+ ScheduleStateAction.SERVICE_CATEGORY)) == false) {
+ fail("Schedule service category '"+
+ schedule.getPropertyValue(
+ ScheduleStateAction.SERVICE_CATEGORY)+
+ "' invalid, expecting: "+
+ service.getCategory());
+ }
+
+ if (newService.getName().equals(schedule.getPropertyValue(
+ ScheduleStateAction.SERVICE_NAME)) == false) {
+ fail("Schedule service name '"+
+ schedule.getPropertyValue(
+ ScheduleStateAction.SERVICE_NAME)+
+ "' invalid, expecting: "+
+ service.getName());
+ }
+
+ if (schedule.getPropertyValue(ScheduleStateAction.IMMEDIATE) != null) {
+ fail("Schedule should not be immediate");
+ }
+
+ if (newService.getActions().size() != 1) {
+ fail("Expecting 1 action: "+newService.getActions().size());
+ }
+
+ if ((newService.getActions().get(0) instanceof ReceiveMessageAction) == false) {
+ fail("Action was not ReceiveMessageAction: "+newService.getActions().get(0));
+ }
+
+ ReceiveMessageAction action=(ReceiveMessageAction)newService.getActions().get(0);
+
+ String mtype=InteractionUtil.getTypeString(ref2);
+
+ if (action.getPropertyValue("messageType").equals(mtype)==false) {
+ fail("Message type '"+action.getPropertyValue("messageType")+
+ "' invalid, expecting: "+mtype);
+ }
+
+ if (mra.getNumberOfRoutes() != 2) {
+ fail("Two routes expected: "+mra.getNumberOfRoutes());
+ }
+ }
+
+ public void testInsertReceiveRequestAction() {
+ String fromRoleName="role1";
+ String toRoleName="role2";
+ ConversationInteractionModelChangeRule rule=new ConversationInteractionModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ Role fromRole=new Role();
+ fromRole.setName(fromRoleName);
+
+ Role toRole=new Role();
+ toRole.setName(toRoleName);
+
+ context.setRole(toRole);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ mname.setLocatedRole(toRole);
+ conv.setModelName(mname);
+
+ ConversationInteraction mobj=new ConversationInteraction();
+ mobj.setFromRole(fromRole);
+ mobj.setToRole(toRole);
+ conv.getBlock().getContents().add(mobj);
+
+ mobj.setRequestLabel("reqLabel");
+
+
+ MessageSignature msig=new MessageSignature();
+ mobj.setMessageSignature(msig);
+
+ TypeReference ref=new TypeReference();
+ ref.setNamespace("ns");
+ ref.setLocalpart("lp");
+
+ msig.getTypes().add(ref);
+
+ 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 ReceiveMessageAction) == false) {
+ fail("Action was not ReceiveMessageAction: "+service.getActions().get(0));
+ }
+
+ if (model.getServices().size() != 1) {
+ fail("One service expected: "+model.getServices().size());
+ }
+
+ ReceiveMessageAction action=(ReceiveMessageAction)service.getActions().get(0);
+
+ if (action.getPropertyValue(ReceiveMessageAction.CLIENT_EPR).equals(fromRoleName) == false) {
+ fail("Client EPR '"+action.getPropertyValue(ReceiveMessageAction.CLIENT_EPR)+
+ "' invalid, expecting: "+fromRoleName);
+ }
+ }
+
+ public void testInsertFirstSendAction() {
+ ConversationInteractionModelChangeRule rule=new ConversationInteractionModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ Role role=new Role();
+ role.setName("role1");
+
+ context.setRole(role);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ mname.setLocatedRole(role);
+ conv.setModelName(mname);
+
+ ConversationInteraction mobj=new ConversationInteraction();
+ mobj.setFromRole(role);
+ conv.getBlock().getContents().add(mobj);
+
+ MessageSignature msig=new MessageSignature();
+ mobj.setMessageSignature(msig);
+
+ TypeReference ref=new TypeReference();
+ ref.setNamespace("ns");
+ ref.setLocalpart("lp");
+
+ msig.getTypes().add(ref);
+
+ 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 SendMessageAction) == false) {
+ fail("Action was not SendMessageAction: "+service.getActions().get(0));
+ }
+
+ if (model.getServices().size() != 1) {
+ fail("One service expected: "+model.getServices().size());
+ }
+
+ SendMessageAction action=(SendMessageAction)service.getActions().get(0);
+
+ String mtype=InteractionUtil.getTypeString(ref);
+
+ if (action.getPropertyValue("messageType").equals(mtype)==false) {
+ fail("Message type '"+action.getPropertyValue("messageType")+
+ "' invalid, expecting: "+mtype);
+ }
+ }
+
+ public void testInsertSendRequestAction() {
+ String roleName="role1";
+ ConversationInteractionModelChangeRule rule=new ConversationInteractionModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ Role role=new Role();
+ role.setName(roleName);
+
+ context.setRole(role);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ mname.setLocatedRole(role);
+ conv.setModelName(mname);
+
+ ConversationInteraction mobj=new ConversationInteraction();
+ mobj.setFromRole(role);
+ conv.getBlock().getContents().add(mobj);
+
+ mobj.setRequestLabel("reqLabel");
+
+ MessageSignature msig=new MessageSignature();
+ mobj.setMessageSignature(msig);
+
+ TypeReference ref=new TypeReference();
+ ref.setNamespace("ns");
+ ref.setLocalpart("lp");
+
+ msig.getTypes().add(ref);
+
+ 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 SendMessageAction) == false) {
+ fail("Action was not SendMessageAction: "+service.getActions().get(0));
+ }
+
+ if (model.getServices().size() != 2) {
+ fail("Two service expected: "+model.getServices().size());
+ }
+
+ SendMessageAction action=(SendMessageAction)service.getActions().get(0);
+
+ ESBService newService=null;
+ java.util.Iterator<ESBService> iter=model.getServices().iterator();
+ while (newService == null && iter.hasNext()) {
+ ESBService s=iter.next();
+
+ if (s != service) {
+ newService = s;
+ }
+ }
+
+ if (newService == null) {
+ fail("Other service not found");
+ }
+
+ if (newService.getCategory().equals(action.getPropertyValue(
+ SendMessageAction.RESPONSE_SERVICE_CATEGORY)) == false) {
+ fail("Schedule service category '"+
+ action.getPropertyValue(
+ SendMessageAction.RESPONSE_SERVICE_CATEGORY)+
+ "' invalid, expecting: "+
+ service.getCategory());
+ }
+
+ if (newService.getName().equals(action.getPropertyValue(
+ SendMessageAction.RESPONSE_SERVICE_NAME)) == false) {
+ fail("Schedule service name '"+
+ action.getPropertyValue(
+ SendMessageAction.RESPONSE_SERVICE_NAME)+
+ "' invalid, expecting: "+
+ service.getName());
+ }
+ }
+
+ public void testInsertSendNotReplyAction() {
+ String fromRoleName="role1";
+ String toRoleName="role2";
+ ConversationInteractionModelChangeRule rule=new ConversationInteractionModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ Role fromRole=new Role();
+ fromRole.setName(fromRoleName);
+
+ Role toRole=new Role();
+ toRole.setName(toRoleName);
+
+ context.setRole(fromRole);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ mname.setLocatedRole(fromRole);
+ conv.setModelName(mname);
+
+ ConversationInteraction mobj=new ConversationInteraction();
+ mobj.setFromRole(fromRole);
+ mobj.setToRole(toRole);
+ conv.getBlock().getContents().add(mobj);
+
+ mobj.setRequestLabel("reqLabel");
+
+ MessageSignature msig=new MessageSignature();
+ mobj.setMessageSignature(msig);
+
+ TypeReference ref=new TypeReference();
+ ref.setNamespace("ns");
+ ref.setLocalpart("lp");
+
+ msig.getTypes().add(ref);
+
+ 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 SendMessageAction) == false) {
+ fail("Action was not SendMessageAction: "+service.getActions().get(0));
+ }
+
+ if (model.getServices().size() != 2) {
+ fail("Two service expected: "+model.getServices().size());
+ }
+
+ SendMessageAction action=(SendMessageAction)service.getActions().get(0);
+
+ if (action.getPropertyValue(SendMessageAction.SERVICE_CATEGORY_EXPRESSION).
+ equals(InteractionUtil.getRoleServiceCategoryProperty(toRoleName)) == false) {
+ fail("Service category expression '"+
+ action.getPropertyValue(SendMessageAction.SERVICE_CATEGORY_EXPRESSION)+
+ "' invalid, expecting: "+
+ InteractionUtil.getRoleServiceCategoryProperty(toRoleName));
+ }
+
+ if (action.getPropertyValue(SendMessageAction.SERVICE_NAME_EXPRESSION).
+ equals(InteractionUtil.getRoleServiceNameProperty(toRoleName)) == false) {
+ fail("Service name expression '"+
+ action.getPropertyValue(SendMessageAction.SERVICE_NAME_EXPRESSION)+
+ "' invalid, expecting: "+
+ InteractionUtil.getRoleServiceNameProperty(toRoleName));
+ }
+ }
+
+ public void testInsertSendReplyAction() {
+ String fromRoleName="role1";
+ String toRoleName="role2";
+ ConversationInteractionModelChangeRule rule=new ConversationInteractionModelChangeRule();
+
+ TestESBLanguageModel model=new TestESBLanguageModel();
+
+ TestESBService service=(TestESBService)
+ model.createService("testcategory", "testname");
+
+ model.addService(service);
+
+
+ TestModelChangeContext context=new TestModelChangeContext();
+ context.setParent(service);
+
+ Role fromRole=new Role();
+ fromRole.setName(fromRoleName);
+
+ Role toRole=new Role();
+ toRole.setName(toRoleName);
+
+ context.setRole(fromRole);
+
+ Conversation conv=new Conversation();
+ ModelName mname=new ModelName();
+ mname.setLocatedRole(fromRole);
+ conv.setModelName(mname);
+
+ ConversationInteraction mobj=new ConversationInteraction();
+ mobj.setFromRole(fromRole);
+ mobj.setToRole(toRole);
+ conv.getBlock().getContents().add(mobj);
+
+ mobj.setReplyToLabel("replyLabel");
+
+ MessageSignature msig=new MessageSignature();
+ mobj.setMessageSignature(msig);
+
+ TypeReference ref=new TypeReference();
+ ref.setNamespace("ns");
+ ref.setLocalpart("lp");
+
+ msig.getTypes().add(ref);
+
+ 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 SendMessageAction) == false) {
+ fail("Action was not SendMessageAction: "+service.getActions().get(0));
+ }
+
+ SendMessageAction action=(SendMessageAction)service.getActions().get(0);
+
+ if (action.getPropertyValue(SendMessageAction.CLIENT_EPR).equals(toRoleName) == false) {
+ fail("Client EPR '"+action.getPropertyValue(SendMessageAction.CLIENT_EPR)+
+ "' invalid, expecting: "+toRoleName);
+ }
+ }
+}
More information about the overlord-commits
mailing list