[overlord-commits] Overlord SVN: r206 - in cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src: java/org/jboss/tools/overlord/jbossesb/model/change and 3 other directories.

overlord-commits at lists.jboss.org overlord-commits at lists.jboss.org
Wed Jul 30 10:29:47 EDT 2008


Author: objectiser
Date: 2008-07-30 10:29:46 -0400 (Wed, 30 Jul 2008)
New Revision: 206

Added:
   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
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRuleTest.java
Removed:
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java
Modified:
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBLanguageModel.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/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationModelChangeRule.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/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/CreateSessionActionTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/IfActionTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterActionTest.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/actions/RetrieveSessionActionTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageActionTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetMessageActionTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetStateActionTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SwitchActionTest.java
   cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/WhenActionTest.java
Log:
Some refactoring to support unit tests, and initial unit test for If model change rule.

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModel.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -378,6 +378,17 @@
 	}
 	
 	/**
+	 * This method creates a new ESB service.
+	 * 
+	 * @param category The category
+	 * @param name The name
+	 * @return The new ESB service
+	 */
+	public ESBService createService(String category, String name) {
+		return(new DefaultESBService(this, category, name));
+	}
+	
+	/**
 	 * This method adds a new service to the model.
 	 * 
 	 * @param service The service

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBLanguageModel.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBLanguageModel.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/ESBLanguageModel.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -76,6 +76,15 @@
 	public ESBService getGatewayService();
 	
 	/**
+	 * This method creates a new ESB service.
+	 * 
+	 * @param category The category
+	 * @param name The name
+	 * @return The new ESB service
+	 */
+	public ESBService createService(String category, String name);
+
+	/**
 	 * This method adds a new service to the model.
 	 * 
 	 * @param service The service

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-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationInteractionModelChangeRule.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -124,10 +124,8 @@
 				action.setClientEPR("client");
 				
 				// Create new ESB service
-				
-				// TODO: Create unique service name
-				DefaultESBService respService=new DefaultESBService(
-							esbModel, service.getCategory(),
+				ESBService respService=esbModel.createService(
+								service.getCategory(),
 							esbModel.getUniqueServiceName(service.getCategory(),
 									service.getName()));
 
@@ -154,8 +152,8 @@
 					service.isSessionBased()) {
 				// Already has activities, so need to separate
 				// into another service descriptor
-				DefaultESBService recvService=new DefaultESBService(
-						esbModel, service.getCategory(),
+				ESBService recvService=esbModel.createService(
+						service.getCategory(),
 						esbModel.getUniqueServiceName(service.getCategory(),
 								service.getName()));
 

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationModelChangeRule.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationModelChangeRule.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/ConversationModelChangeRule.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -114,8 +114,7 @@
 		}
 		
 		// Create new ESB service
-		DefaultESBService service=new DefaultESBService(
-					esbModel, category, name);
+		ESBService service=esbModel.createService(category, name);
 
 		esbModel.addService(service);
 		

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-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/java/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRule.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -87,8 +87,8 @@
 			for (int i=0; i < ifElem.getConditionalBlocks().size(); i++) {
 				ConditionalBlock cb=ifElem.getConditionalBlocks().get(i);
 				
-				DefaultESBService subService=new DefaultESBService(
-						esbModel, service.getCategory(),
+				ESBService subService=
+					esbModel.createService(service.getCategory(),
 						esbModel.getUniqueServiceName(service.getCategory(),
 								service.getName()));
 				
@@ -109,8 +109,8 @@
 			
 			if (ifElem.getElseBlock() != null) {
 				
-				DefaultESBService subService=new DefaultESBService(
-						esbModel, service.getCategory(),
+				ESBService subService=
+					esbModel.createService(service.getCategory(),
 						esbModel.getUniqueServiceName(service.getCategory(),
 								service.getName()));
 
@@ -139,8 +139,8 @@
 			for (int i=0; i < ifElem.getConditionalBlocks().size(); i++) {
 				ConditionalBlock cb=ifElem.getConditionalBlocks().get(i);
 				
-				DefaultESBService subService=new DefaultESBService(
-						esbModel, service.getCategory(),
+				ESBService subService=
+					esbModel.createService(service.getCategory(),
 						esbModel.getUniqueServiceName(service.getCategory(),
 								service.getName()));
 
@@ -158,6 +158,29 @@
 				switchAction.addCase(subService.getCategory(),
 						subService.getName(), messageTypes, i);
 			}
+			
+			if (ifElem.getElseBlock() != null) {
+				
+				ESBService subService=
+					esbModel.createService(service.getCategory(),
+						esbModel.getUniqueServiceName(service.getCategory(),
+								service.getName()));
+
+				esbModel.addService(subService);
+
+				context.setParent(subService);
+				
+				for (int j=0; j < ifElem.getElseBlock().getContents().size(); j++) {
+					context.insert(model,
+							ifElem.getElseBlock().getContents().get(j), j);
+				}
+
+				java.util.List<String> messageTypes=new java.util.Vector<String>();
+				messageTypes.add("testType");
+				
+				switchAction.addCase(subService.getCategory(),
+						subService.getName(), messageTypes, -1);
+			}
 		}
 		
 		return(true);

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/DefaultESBLanguageModelTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -19,7 +19,6 @@
 
 import junit.framework.TestCase;
 
-import org.jboss.tools.overlord.jbossesb.model.actions.TestESBService;
 import org.scribble.model.*;
 
 public class DefaultESBLanguageModelTest extends TestCase {

Copied: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java (from rev 205, cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java)
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java	                        (rev 0)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -0,0 +1,108 @@
+/*
+ * 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;
+
+import java.util.Collection;
+
+import org.scribble.model.ModelListener;
+import org.scribble.model.ModelReference;
+import org.w3c.dom.Element;
+
+public class TestESBLanguageModel extends org.scribble.lang.model.LanguageModel
+		implements org.jboss.tools.overlord.jbossesb.model.ESBLanguageModel {
+
+	public TestESBLanguageModel() {
+		org.w3c.dom.Document doc=null;
+		
+		// Create an empty document
+		try {
+			doc = javax.xml.parsers.DocumentBuilderFactory.
+				newInstance().newDocumentBuilder().newDocument();
+			
+			m_esbConfig = doc.createElement(DefaultESBLanguageModel.TOP_LEVEL_ELEMENT);
+
+		} catch(Exception e) {
+			e.printStackTrace();
+		}
+	}
+	public String getOriginalContents() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public ModelReference getModelReference() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public ESBService createService(String category, String name) {
+		TestESBService ret=new TestESBService(category, name);
+		
+		org.w3c.dom.Element service=m_esbConfig.getOwnerDocument().
+					createElement(DefaultESBService.SERVICE_ELEMENT);
+		m_esbConfig.appendChild(service);
+		
+		ret.setService(service);
+		
+		return(ret);
+	}
+
+	public void addService(ESBService service) {
+		m_services.put(service.getCategory()+":"+service.getName(), service);
+	}
+	
+	public void removeService(ESBService service) {
+		m_services.remove(service.getCategory()+":"+service.getName());
+	}
+	
+	public ESBService getService(String category, String name) {
+		return(m_services.get(category+":"+name));
+	}
+
+	public Collection<ESBService> getServices() {
+		return(m_services.values());
+	}
+
+	public ESBService getGatewayService() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void validate(ModelListener l) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public String getUniqueServiceName(String category, String name) {
+		return("serviceName__"+m_count++);
+	}
+
+	public Element getESBConfiguration() {
+		return(m_esbConfig);
+	}
+
+	@Override
+	public String getNotation() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	private java.util.Map<String,ESBService> m_services=new java.util.Hashtable<String,ESBService>();
+	private org.w3c.dom.Element m_esbConfig=null;
+	private int m_count=0;
+}


Property changes on: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBLanguageModel.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java (from rev 205, cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java)
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java	                        (rev 0)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -0,0 +1,202 @@
+/*
+ * 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;
+
+import java.util.List;
+
+import org.scribble.conversation.model.*;
+import org.scribble.model.*;
+import org.w3c.dom.Element;
+
+public class TestESBService extends ModelObject
+		implements org.jboss.tools.overlord.jbossesb.model.ESBService {
+
+	public TestESBService() {
+	}
+	
+	public TestESBService(String category, String name) {
+		m_category = category;
+		m_name = name;
+	}
+	
+	public void convert(List<Activity> activities, ConversionContext context) {
+		activities.addAll(m_contents);
+	}
+	
+	public Conversation convert(ConversionContext context) {
+		return(null);
+	}
+	
+	public List<Activity> getContents() {
+		return(m_contents);
+	}
+
+	public List<ESBAction> getActions() {
+		return(m_actions);
+	}
+
+	public void setCategory(String cat) {
+		m_category = cat;
+	}
+	
+	public String getCategory() {
+		return(m_category);
+	}
+
+	public void setConversationType(String type) {
+		m_conversationType = type;
+	}
+	
+	public String getConversationType() {
+		return(m_conversationType);
+	}
+
+	public void setName(String name) {
+		m_name = name;
+	}
+	
+	public String getName() {
+		return(m_name);
+	}
+	
+	public void setModel(ESBLanguageModel model) {
+		m_model = model;
+	}
+
+	public ESBLanguageModel getModel() {
+		return(m_model);
+	}
+	
+	public Element getService() {
+		return(m_service);
+	}
+	
+	public void setService(Element service) {
+		m_service = service;
+	}
+
+	public ClassLoader getServiceClassLoader() throws Exception {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public String getServiceName() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public int getServicePosition() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public void setSessionClass(Class<?> cls) {
+		m_sessionClass = cls;
+	}
+	
+	public Class<?> getSessionClass() {
+		return(m_sessionClass);
+	}
+
+	public String getSessionName() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void initializeLinks() {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public void setLoop(boolean bool) {
+		m_loop = bool;
+	}
+
+	public boolean isLoop() {
+		return(m_loop);
+	}
+
+	public void setRoot(boolean bool) {
+		m_root = bool;
+	}
+	
+	public boolean isRoot() {
+		return(m_root);
+	}
+
+	public void setCreateSession(boolean bool) {
+		m_createSession = bool;
+	}
+	
+	public boolean isCreateSession() {
+		return(m_createSession);
+	}
+	
+	public void setSessionBased(boolean bool) {
+		m_sessionBased = bool;
+	}
+	
+	public boolean isSessionBased() {
+		return(m_sessionBased);
+	}
+
+	public boolean isGateway() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public ESBAction getGatewayAction() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void validate(ModelListener l) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public String getJMSBusIdRef() {
+		return(m_jmsBusIdRef);
+	}
+	
+	public void setJMSBusIdRef(String busId) {
+		m_jmsBusIdRef = busId;
+	}
+
+	public void addAction(ESBAction action, int pos) {
+		m_actions.add(action);
+	}
+
+	public boolean removeAction(ESBAction action) {
+		return(m_actions.remove(action));
+	}
+
+	private String m_category=null;
+	private String m_name=null;
+	private ESBLanguageModel m_model=null;
+	private Element m_service;
+	private List<ESBAction> m_actions=new java.util.Vector<ESBAction>();
+	private boolean m_root=false;
+	private boolean m_loop=false;
+	private boolean m_sessionBased=false;
+	private boolean m_createSession=false;
+	private Class<?> m_sessionClass=null;
+	private String m_conversationType=null;
+	private List<Activity> m_contents=new java.util.Vector<Activity>();
+	private String m_jmsBusIdRef=null;
+}


Property changes on: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/TestESBService.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/CreateSessionActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/CreateSessionActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/CreateSessionActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,8 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBLanguageModel;
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 
 import junit.framework.TestCase;

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/IfActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/IfActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/IfActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -19,6 +19,8 @@
 
 import junit.framework.TestCase;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBLanguageModel;
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 import org.scribble.model.*;
 import org.scribble.conversation.model.*;

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/MessageRouterActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,8 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBLanguageModel;
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 
 import junit.framework.TestCase;

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-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/PerformActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,8 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBLanguageModel;
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 import org.scribble.conversation.model.*;
 import org.scribble.model.Activity;

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/RetrieveSessionActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/RetrieveSessionActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/RetrieveSessionActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,7 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 
 import junit.framework.TestCase;

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SendMessageActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -18,6 +18,8 @@
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
 import org.jboss.tools.overlord.jbossesb.model.DefaultConversionContext;
+import org.jboss.tools.overlord.jbossesb.model.TestESBLanguageModel;
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 import org.scribble.model.Activity;
 import org.scribble.model.Interaction;

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetMessageActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetMessageActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetMessageActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,7 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 
 import junit.framework.TestCase;

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetStateActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetStateActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SetStateActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,7 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 
 import junit.framework.TestCase;

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SwitchActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SwitchActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/SwitchActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,8 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBLanguageModel;
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 import org.scribble.conversation.model.If;
 import org.scribble.model.Activity;

Deleted: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBLanguageModel.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -1,90 +0,0 @@
-/*
- * 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.actions;
-
-import java.util.Collection;
-
-import org.jboss.tools.overlord.jbossesb.model.*;
-import org.scribble.model.ModelListener;
-import org.scribble.model.ModelReference;
-import org.w3c.dom.Element;
-
-public class TestESBLanguageModel implements org.jboss.tools.overlord.jbossesb.model.ESBLanguageModel {
-
-	public TestESBLanguageModel() {
-		org.w3c.dom.Document doc=null;
-		
-		// Create an empty document
-		try {
-			doc = javax.xml.parsers.DocumentBuilderFactory.
-				newInstance().newDocumentBuilder().newDocument();
-			
-			m_esbConfig = doc.createElement(DefaultESBLanguageModel.TOP_LEVEL_ELEMENT);
-
-		} catch(Exception e) {
-			e.printStackTrace();
-		}
-	}
-	public String getOriginalContents() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public ModelReference getModelReference() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public void addService(ESBService service) {
-		m_services.put(service.getCategory()+":"+service.getName(), service);
-	}
-	
-	public void removeService(ESBService service) {
-		m_services.remove(service.getCategory()+":"+service.getName());
-	}
-	
-	public ESBService getService(String category, String name) {
-		return(m_services.get(category+":"+name));
-	}
-
-	public Collection<ESBService> getServices() {
-		return(m_services.values());
-	}
-
-	public ESBService getGatewayService() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public void validate(ModelListener l) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public String getUniqueServiceName(String category, String name) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public Element getESBConfiguration() {
-		return(m_esbConfig);
-	}
-
-	private java.util.Map<String,ESBService> m_services=new java.util.Hashtable<String,ESBService>();
-	private org.w3c.dom.Element m_esbConfig=null;
-}

Deleted: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/TestESBService.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -1,195 +0,0 @@
-/*
- * 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.actions;
-
-import java.util.List;
-
-import org.jboss.tools.overlord.jbossesb.model.ConversionContext;
-import org.jboss.tools.overlord.jbossesb.model.ESBAction;
-import org.jboss.tools.overlord.jbossesb.model.ESBLanguageModel;
-import org.scribble.conversation.model.Conversation;
-import org.scribble.model.Activity;
-import org.scribble.model.ModelListener;
-import org.w3c.dom.Element;
-
-public class TestESBService implements org.jboss.tools.overlord.jbossesb.model.ESBService {
-
-	public void convert(List<Activity> activities, ConversionContext context) {
-		activities.addAll(m_contents);
-	}
-	
-	public Conversation convert(ConversionContext context) {
-		return(null);
-	}
-	
-	public List<Activity> getContents() {
-		return(m_contents);
-	}
-
-	public List<ESBAction> getActions() {
-		return(m_actions);
-	}
-
-	public void setCategory(String cat) {
-		m_category = cat;
-	}
-	
-	public String getCategory() {
-		return(m_category);
-	}
-
-	public void setConversationType(String type) {
-		m_conversationType = type;
-	}
-	
-	public String getConversationType() {
-		return(m_conversationType);
-	}
-
-	public void setName(String name) {
-		m_name = name;
-	}
-	
-	public String getName() {
-		return(m_name);
-	}
-	
-	public void setModel(ESBLanguageModel model) {
-		m_model = model;
-	}
-
-	public ESBLanguageModel getModel() {
-		return(m_model);
-	}
-	
-	public Element getService() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public ClassLoader getServiceClassLoader() throws Exception {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public String getServiceName() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public int getServicePosition() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
-
-	public void setSessionClass(Class<?> cls) {
-		m_sessionClass = cls;
-	}
-	
-	public Class<?> getSessionClass() {
-		return(m_sessionClass);
-	}
-
-	public String getSessionName() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public void initializeLinks() {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public void setLoop(boolean bool) {
-		m_loop = bool;
-	}
-
-	public boolean isLoop() {
-		return(m_loop);
-	}
-
-	public void setRoot(boolean bool) {
-		m_root = bool;
-	}
-	
-	public boolean isRoot() {
-		return(m_root);
-	}
-
-	public void setCreateSession(boolean bool) {
-		m_createSession = bool;
-	}
-	
-	public boolean isCreateSession() {
-		return(m_createSession);
-	}
-	
-	public void setSessionBased(boolean bool) {
-		m_sessionBased = bool;
-	}
-	
-	public boolean isSessionBased() {
-		return(m_sessionBased);
-	}
-
-	public boolean isGateway() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	public ESBAction getGatewayAction() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public void validate(ModelListener l) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public String getJMSBusIdRef() {
-		return(m_jmsBusIdRef);
-	}
-	
-	public void setJMSBusIdRef(String busId) {
-		m_jmsBusIdRef = busId;
-	}
-
-	public void addAction(ESBAction action, int pos) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	public boolean removeAction(ESBAction action) {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	private String m_category=null;
-	private String m_name=null;
-	private ESBLanguageModel m_model=null;
-	private List<ESBAction> m_actions=new java.util.Vector<ESBAction>();
-	private boolean m_root=false;
-	private boolean m_loop=false;
-	private boolean m_sessionBased=false;
-	private boolean m_createSession=false;
-	private Class<?> m_sessionClass=null;
-	private String m_conversationType=null;
-	private List<Activity> m_contents=new java.util.Vector<Activity>();
-	private String m_jmsBusIdRef=null;
-}

Modified: cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/WhenActionTest.java
===================================================================
--- cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/WhenActionTest.java	2008-07-30 11:09:22 UTC (rev 205)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/actions/WhenActionTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -17,6 +17,8 @@
  */
 package org.jboss.tools.overlord.jbossesb.model.actions;
 
+import org.jboss.tools.overlord.jbossesb.model.TestESBLanguageModel;
+import org.jboss.tools.overlord.jbossesb.model.TestESBService;
 import org.jboss.tools.overlord.jbossesb.model.TestModelListener;
 import org.scribble.conversation.model.*;
 import org.scribble.model.*;

Added: 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	                        (rev 0)
+++ cdl/trunk/tools/plugins/org.jboss.tools.overlord.jbossesb/src/test/org/jboss/tools/overlord/jbossesb/model/change/IfModelChangeRuleTest.java	2008-07-30 14:29:46 UTC (rev 206)
@@ -0,0 +1,538 @@
+/*
+ * 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.scribble.model.*;
+import org.scribble.model.change.*;
+import org.scribble.conversation.model.*;
+
+public class IfModelChangeRuleTest extends TestCase {
+
+	public void testInsertIfAction() {
+		IfModelChangeRule rule=new IfModelChangeRule();
+		
+		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);
+		
+		If mobj=new If();
+		
+		ConditionalBlock cb1=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb1);
+		
+		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 IfAction) == false) {
+			fail("Action was not IfAction: "+service.getActions().get(0));
+		}
+		
+		if (model.getServices().size() != 2) {
+			fail("Two services expected: "+model.getServices().size());
+		}
+		
+		ESBService ifService=null;
+		java.util.Iterator<ESBService> iter=model.getServices().iterator();
+		
+		while (ifService == null && iter.hasNext()) {
+			ifService = iter.next();
+			if (ifService == service) {
+				ifService = null;
+			}
+		}
+		
+		IfAction action=(IfAction)service.getActions().get(0);
+		
+		org.w3c.dom.NodeList paths=action.getPropertyChildNodes("paths");
+		
+		if (paths.getLength() != 1) {
+			fail("Only one path child expected: "+paths.getLength());
+		}
+		
+		org.w3c.dom.Element elem=(org.w3c.dom.Element)paths.item(0);
+		
+		if (elem.getNodeName().equals("if") == false) {
+			fail("If expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(ifService.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+ifService.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(ifService.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+ifService.getName());
+		}
+	}
+
+	public void testInsertIfElseIfAction() {
+		IfModelChangeRule rule=new IfModelChangeRule();
+		
+		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);
+		
+		If mobj=new If();
+		
+		ConditionalBlock cb1=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb1);
+		
+		ConditionalBlock cb2=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb2);
+		
+		ConditionalBlock cb3=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb3);
+		
+		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 IfAction) == false) {
+			fail("Action was not IfAction: "+service.getActions().get(0));
+		}
+		
+		if (model.getServices().size() != 4) {
+			fail("Four services expected: "+model.getServices().size());
+		}
+		
+		ESBService ifService=null;
+		ESBService elseIfService1=null;
+		ESBService elseIfService2=null;
+		java.util.Iterator<ESBService> iter=model.getServices().iterator();
+		
+		while ((ifService == null || elseIfService1 == null ||
+					elseIfService2 == null) && iter.hasNext()) {
+			ESBService serv = iter.next();
+			if (serv.getName().endsWith("__0")) {
+				ifService = serv;
+			}
+			if (serv.getName().endsWith("__1")) {
+				elseIfService1 = serv;
+			}
+			if (serv.getName().endsWith("__2")) {
+				elseIfService2 = serv;
+			}
+		}
+		
+		IfAction action=(IfAction)service.getActions().get(0);
+		
+		org.w3c.dom.NodeList paths=action.getPropertyChildNodes("paths");
+		
+		if (paths.getLength() != 3) {
+			fail("Three path children expected: "+paths.getLength());
+		}
+		
+		org.w3c.dom.Element elem=(org.w3c.dom.Element)paths.item(0);
+		
+		if (elem.getNodeName().equals("if") == false) {
+			fail("If expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(ifService.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+ifService.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(ifService.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+ifService.getName());
+		}
+		
+		elem=(org.w3c.dom.Element)paths.item(1);
+		
+		if (elem.getNodeName().equals("elseif") == false) {
+			fail("ElseIf expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(elseIfService1.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+elseIfService1.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(elseIfService1.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+elseIfService1.getName());
+		}
+		
+		elem=(org.w3c.dom.Element)paths.item(2);
+		
+		if (elem.getNodeName().equals("elseif") == false) {
+			fail("ElseIf(2) expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(elseIfService2.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+elseIfService2.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(elseIfService2.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+elseIfService2.getName());
+		}
+	}
+
+	public void testInsertIfElseAction() {
+		IfModelChangeRule rule=new IfModelChangeRule();
+		
+		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);
+		
+		If mobj=new If();
+		
+		ConditionalBlock cb1=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb1);
+		
+		Block b1=new Block();
+		mobj.setElseBlock(b1);
+		
+		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 IfAction) == false) {
+			fail("Action was not IfAction: "+service.getActions().get(0));
+		}
+		
+		if (model.getServices().size() != 3) {
+			fail("Three services expected: "+model.getServices().size());
+		}
+		
+		ESBService ifService=null;
+		ESBService elseService=null;
+		java.util.Iterator<ESBService> iter=model.getServices().iterator();
+		
+		while ((ifService == null || elseService == null) &&
+							iter.hasNext()) {
+			ESBService serv = iter.next();
+			if (serv.getName().endsWith("__0")) {
+				ifService = serv;
+			}
+			if (serv.getName().endsWith("__1")) {
+				elseService = serv;
+			}
+		}
+		
+		IfAction action=(IfAction)service.getActions().get(0);
+		
+		org.w3c.dom.NodeList paths=action.getPropertyChildNodes("paths");
+		
+		if (paths.getLength() != 2) {
+			fail("Three path children expected: "+paths.getLength());
+		}
+		
+		org.w3c.dom.Element elem=(org.w3c.dom.Element)paths.item(0);
+		
+		if (elem.getNodeName().equals("if") == false) {
+			fail("If expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(ifService.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+ifService.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(ifService.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+ifService.getName());
+		}
+		
+		elem=(org.w3c.dom.Element)paths.item(1);
+		
+		if (elem.getNodeName().equals("else") == false) {
+			fail("Else expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(elseService.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+elseService.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(elseService.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+elseService.getName());
+		}
+	}
+
+	public void testInsertSwitchAction() {
+		IfModelChangeRule rule=new IfModelChangeRule();
+		
+		TestESBLanguageModel model=new TestESBLanguageModel();
+		
+		TestESBService service=(TestESBService)
+			model.createService("testcategory", "testname");
+		
+		model.addService(service);
+		
+		TestModelChangeContext context=new TestModelChangeContext();
+		context.setParent(service);
+		
+		Role role1=new Role();
+		role1.setName("role1");
+		
+		Role role2=new Role();
+		role2.setName("role2");
+		
+		context.setRole(role1);
+		
+		If mobj=new If();
+		
+		mobj.getRoles().add(role2);
+		
+		ConditionalBlock cb1=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb1);
+		
+		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 SwitchAction) == false) {
+			fail("Action was not SwitchAction: "+service.getActions().get(0));
+		}
+		
+		if (model.getServices().size() != 2) {
+			fail("Two services expected: "+model.getServices().size());
+		}
+		
+		ESBService switchService=null;
+		java.util.Iterator<ESBService> iter=model.getServices().iterator();
+		
+		while (switchService == null && iter.hasNext()) {
+			switchService = iter.next();
+			if (switchService == service) {
+				switchService = null;
+			}
+		}
+		
+		SwitchAction action=(SwitchAction)service.getActions().get(0);
+		
+		org.w3c.dom.NodeList paths=action.getPropertyChildNodes("paths");
+		
+		if (paths.getLength() != 1) {
+			fail("Only one path child expected: "+paths.getLength());
+		}
+		
+		org.w3c.dom.Element elem=(org.w3c.dom.Element)paths.item(0);
+		
+		if (elem.getNodeName().equals("case") == false) {
+			fail("Switch expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(switchService.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+switchService.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(switchService.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+switchService.getName());
+		}
+	}
+
+	public void testInsertSwitchMultipleCaseAction() {
+		IfModelChangeRule rule=new IfModelChangeRule();
+		
+		TestESBLanguageModel model=new TestESBLanguageModel();
+		
+		TestESBService service=(TestESBService)
+			model.createService("testcategory", "testname");
+		
+		model.addService(service);
+		
+		TestModelChangeContext context=new TestModelChangeContext();
+		context.setParent(service);
+		
+		Role role1=new Role();
+		role1.setName("role1");
+		
+		Role role2=new Role();
+		role2.setName("role2");
+		
+		context.setRole(role1);
+		
+		If mobj=new If();
+		
+		mobj.getRoles().add(role2);
+		
+		ConditionalBlock cb1=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb1);
+		
+		ConditionalBlock cb2=new ConditionalBlock();
+		mobj.getConditionalBlocks().add(cb2);
+		
+		Block b1=new Block();
+		mobj.setElseBlock(b1);
+		
+		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 SwitchAction) == false) {
+			fail("Action was not SwitchAction: "+service.getActions().get(0));
+		}
+		
+		if (model.getServices().size() != 4) {
+			fail("Four services expected: "+model.getServices().size());
+		}
+		
+		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()) {
+			ESBService serv = iter.next();
+			if (serv.getName().endsWith("__0")) {
+				caseService1 = serv;
+			}
+			if (serv.getName().endsWith("__1")) {
+				caseService2 = serv;
+			}
+			if (serv.getName().endsWith("__2")) {
+				caseService3 = serv;
+			}
+		}
+		
+		SwitchAction action=(SwitchAction)service.getActions().get(0);
+		
+		org.w3c.dom.NodeList paths=action.getPropertyChildNodes("paths");
+		
+		if (paths.getLength() != 3) {
+			fail("Three path children expected: "+paths.getLength());
+		}
+		
+		org.w3c.dom.Element elem=(org.w3c.dom.Element)paths.item(0);
+		
+		if (elem.getNodeName().equals("case") == false) {
+			fail("If expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(caseService1.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+caseService1.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(caseService1.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+caseService1.getName());
+		}
+		
+		elem=(org.w3c.dom.Element)paths.item(1);
+		
+		if (elem.getNodeName().equals("case") == false) {
+			fail("Else expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(caseService2.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+caseService2.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(caseService2.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+caseService2.getName());
+		}
+		
+		elem=(org.w3c.dom.Element)paths.item(2);
+		
+		if (elem.getNodeName().equals("case") == false) {
+			fail("Else expected but got: "+elem.getNodeName());
+		}
+		
+		if (elem.getAttribute("service-category").equals(caseService3.getCategory()) == false) {
+			fail("Service category '"+elem.getAttribute("service-category")+
+					"' not expected: "+caseService3.getCategory());
+		}
+		
+		if (elem.getAttribute("service-name").equals(caseService3.getName()) == false) {
+			fail("Service name '"+elem.getAttribute("service-name")+
+					"' not expected: "+caseService3.getName());
+		}
+	}
+}




More information about the overlord-commits mailing list