[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