Author: objectiser
Date: 2009-01-24 18:02:09 -0500 (Sat, 24 Jan 2009)
New Revision: 468
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractStatefulESBModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/AbstractStatelessESBModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationModelChangeRule.java
Removed:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractESBModelChangeRule.java
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/META-INF/MANIFEST.MF
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/generator/Generator.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModel.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBLanguageModel.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/MessageRouterAction.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationInteractionModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/IfModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/LanguageToConversationModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/MessageSignatureModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ParallelModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/RunModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/SpawnModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/TypeReferenceModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhenModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhileModelChangeRule.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModelTest.java
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/TestESBLanguageModel.java
Log:
Set 'stateless' status on the ESBLanguageModel and use in the model change rules -
to distinguish between the change rules for stateful and stateless models.
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/META-INF/MANIFEST.MF
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/META-INF/MANIFEST.MF 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/META-INF/MANIFEST.MF 2009-01-24
23:02:09 UTC (rev 468)
@@ -14,6 +14,7 @@
org.scribble.conversation.model,
org.scribble.lang.model,
org.scribble.core,
+ org.scribble.conformance,
org.eclipse.jface.text,
org.eclipse.ui.workbench.texteditor,
org.eclipse.ui.ide,
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/generator/Generator.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/generator/Generator.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/generator/Generator.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -28,6 +28,7 @@
import org.eclipse.core.resources.IFile;
import org.jboss.tools.overlord.cdl.runtime.jbossesb.generator.BuildSystem;
import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.*;
+import org.scribble.conformance.model.transform.StatelessTransformer;
import org.scribble.conversation.model.ConversationModel;
import org.scribble.extensions.RegistryFactory;
import org.scribble.model.*;
@@ -148,13 +149,29 @@
// Check if stateless version of model is required
if (stateless) {
+ StatelessTransformer transformer=
+ (StatelessTransformer)
+ RegistryFactory.getRegistry().getExtension(
+ StatelessTransformer.class,null);
+
+ if (transformer != null) {
+ Conversation statelessConversation=(Conversation)
+ transformer.transform(lcm.getConversation(),
+ new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION));
+
+ if (statelessConversation != null) {
+ lcm.setConversation(statelessConversation);
+ } else {
+ logger.severe("Failed to transform to stateless conversation");
+ }
+ }
}
ModelReference targetRef=
new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
DefaultESBLanguageModel target=
- new DefaultESBLanguageModel(targetRef);
+ new DefaultESBLanguageModel(targetRef, stateless);
ModelGenerator generator=(ModelGenerator)
RegistryFactory.getRegistry().getExtension(
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModel.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModel.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModel.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -76,9 +76,11 @@
* This constructor initializes a new ESB configuration.
*
* @param source The model reference for the JBossESB configuration
+ * @param stateless Whether the model is stateless
*/
- public DefaultESBLanguageModel(ModelReference source) {
+ public DefaultESBLanguageModel(ModelReference source, boolean stateless) {
m_source = source;
+ m_stateless = stateless;
initializeNewConfig();
}
@@ -179,6 +181,12 @@
while (serviter.hasNext()) {
ESBService service=serviter.next();
+ // If any service is stateless, then mark the model
+ // as stateless
+ if (service.isStateless()) {
+ m_stateless = true;
+ }
+
if (service.isRoot()) {
/*
@@ -607,6 +615,15 @@
}
/**
+ * This method returns whether the model is stateless.
+ *
+ * @return Whether the model is stateless
+ */
+ public boolean isStateless() {
+ return(m_stateless);
+ }
+
+ /**
* This method returns a custom classloader that uses the project's
* classpath to locate classes referenced by the ESB config file.
*
@@ -634,6 +651,7 @@
private String m_contents=null;
private java.util.Map<String,ESBService> m_services=new
java.util.Hashtable<String,ESBService>();
private ClassLoader m_classLoader=null;
+ private boolean m_stateless=false;
public class InnerModelListener implements ModelListener {
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBLanguageModel.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBLanguageModel.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/ESBLanguageModel.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -128,4 +128,11 @@
*/
public String getJMSDefinition(String jmsBusId);
+ /**
+ * This method returns whether the model is stateless.
+ *
+ * @return Whether the model is stateless
+ */
+ public boolean isStateless();
+
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/MessageRouterAction.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/MessageRouterAction.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/actions/stateless/MessageRouterAction.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -42,6 +42,8 @@
*/
public class MessageRouterAction extends AbstractESBAction {
+ private static final long serialVersionUID = 2920316907680509410L;
+
public static final String INITIATE = "initiate";
public static final String SERVICE_NAME = "service-name";
public static final String SERVICE_CATEGORY = "service-category";
@@ -201,7 +203,22 @@
return(ret);
}
+
/**
+ * This method sets the conversation type property.
+ *
+ * @param name The conversation type
+ */
+ public void setConversationType(String type) {
+
+ org.w3c.dom.Element prop=getPropertyElement(CONVERSATION_TYPE);
+
+ if (prop != null) {
+ prop.setAttribute(VALUE_ATTR, type);
+ }
+ }
+
+ /**
* This method returns the mandatory property names.
*
* @return The mandatory property names
Deleted:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractESBModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractESBModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractESBModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -1,173 +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.cdl.runtime.jbossesb.model.change.stateful;
-
-import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.*;
-import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.actions.stateful.*;
-import org.scribble.conversation.model.ConversationInteraction;
-import org.scribble.model.*;
-import org.scribble.model.change.*;
-
-/**
- * This is the abstract ESB model change rule.
- */
-public abstract class AbstractESBModelChangeRule extends AbstractModelChangeRule {
-
- /**
- * This method determines whether the rule is appropriate
- * for the supplied type of model, parent (in the context) and inserted
- * model object.
- *
- * @param context The context
- * @param model The model
- * @param mobj The model object being inserted
- * @param ref The optional reference model object
- * @return Whether the rule supports the supplied information
- */
- @Override
- public boolean isInsertSupported(ModelChangeContext context,
- Model model, ModelObject mobj, ModelObject ref) {
- boolean ret=false;
-
- if ((context.getParent() instanceof ESBService ||
- (ref != null && ref.getSource().getObject()
- instanceof AbstractStatefulESBAction &&
- ((AbstractStatefulESBAction)ref.getSource().getObject()).getService() != null))
&&
- model instanceof ESBLanguageModel) {
- ret = true;
- }
-
- return(ret);
- }
-
- /**
- * This method returns the ESB service associated with the
- * optional model object reference or the context.
- *
- * @param context The context
- * @param ref The optional model object
- * @return The ESB service, or null if not found
- */
- protected ESBService getESBService(ModelChangeContext context,
- ModelObject ref) {
- ESBService ret=(ESBService)context.getParent();
-
- if (ref != null && ref.getSource().getObject() instanceof
AbstractStatefulESBAction) {
- ret = ((AbstractStatefulESBAction)ref.getSource().getObject()).getService();
- }
-
- return(ret);
- }
-
- /**
- * This method determines the position of the supplied
- * model object within the supplied service.
- *
- * @param service The service
- * @param ref The optional model object
- * @return The position, or -1 if not found
- */
- protected int getPosition(ESBService service, ModelObject ref) {
- int ret=-1;
-
- // Check if reference model object provided, and if so,
- // if it has a position within the service
- if (ref != null && ref.getSource().getObject() instanceof ESBAction) {
- ret = service.getActions().indexOf((ESBAction)
- ref.getSource().getObject());
- }
-
- return(ret);
- }
-
- /**
- * This method determines whether an 'initiator' action,
- * inserted at the defined position in the specified
- * service, should actually be placed in a new scheduled
- * service.
- *
- * @param service The current service
- * @param pos The insertion position in that service
- * @return Whether a new service needs to be scheduled to
- * accommodate the initiator action
- */
- protected boolean shouldScheduleNewService(ESBService service,
- int pos) {
- boolean ret=false;
-
- for (int i=0; ret == false && i < pos; i++) {
- ESBAction action=service.getActions().get(i);
-
- if (action.isSessionBased() && !action.isSessionType()) {
- ret = true;
- }
- }
-
- return(ret);
- }
-
- /**
- * This method determines whether the rule is appropriate
- * for the supplied type of model, parent (in the context)
- * and deleted model object.
- *
- * @param context The context
- * @param model The model
- * @param mobj The model object to be removed
- * @return Whether the rule supports the supplied information
- */
- @Override
- public boolean isDeleteSupported(ModelChangeContext context,
- Model model, ModelObject mobj) {
- boolean ret=false;
-
- if (mobj.getSource().getObject() instanceof AbstractStatefulESBAction &&
- (context.getParent() instanceof ESBService ||
- ((AbstractStatefulESBAction)mobj.getSource().getObject()).getService() != null)
&&
- model instanceof ESBLanguageModel) {
- ret = true;
- }
-
- return(ret);
- }
-
- /**
- * This method removes the supplied model object from the
- * supplied model. The model object representation must
- * contain the necessary model specific to remove the
- * object from the underlying model representation.
- *
- * @param context The context
- * @param model The model being changed
- * @param mobj The model object to be deleted
- * @return Whether the change has been applied
- */
- @Override
- public boolean delete(ModelChangeContext context,
- Model model, ModelObject mobj) {
- boolean ret=false;
- ESBService service=getESBService(context, mobj);
- ESBAction action=(ESBAction)mobj.getSource().getObject();
-
- if (action != null && service != null) {
- ret = service.getActions().remove(action);
- }
-
- return(ret);
- }
-}
Copied:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractStatefulESBModelChangeRule.java
(from rev 467,
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractESBModelChangeRule.java)
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractStatefulESBModelChangeRule.java
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/AbstractStatefulESBModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -0,0 +1,199 @@
+/*
+ * 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.cdl.runtime.jbossesb.model.change.stateful;
+
+import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.*;
+import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.actions.stateful.*;
+import org.scribble.model.*;
+import org.scribble.model.change.*;
+
+/**
+ * This is the abstract ESB model change rule.
+ */
+public abstract class AbstractStatefulESBModelChangeRule extends AbstractModelChangeRule
{
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context) and inserted
+ * model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param mobj The model object being inserted
+ * @param ref The optional reference model object
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ public boolean isInsertSupported(ModelChangeContext context,
+ Model model, ModelObject mobj, ModelObject ref) {
+ boolean ret=false;
+
+ if ((context.getParent() instanceof ESBService ||
+ (ref != null && ref.getSource().getObject()
+ instanceof AbstractStatefulESBAction &&
+ ((AbstractStatefulESBAction)ref.getSource().getObject()).getService() != null))
&&
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless() == false) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method returns the ESB service associated with the
+ * optional model object reference or the context.
+ *
+ * @param context The context
+ * @param ref The optional model object
+ * @return The ESB service, or null if not found
+ */
+ protected ESBService getESBService(ModelChangeContext context,
+ ModelObject ref) {
+ ESBService ret=(ESBService)context.getParent();
+
+ if (ref != null && ref.getSource().getObject() instanceof
AbstractStatefulESBAction) {
+ ret = ((AbstractStatefulESBAction)ref.getSource().getObject()).getService();
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines the position of the supplied
+ * model object within the supplied service.
+ *
+ * @param service The service
+ * @param ref The optional model object
+ * @return The position, or -1 if not found
+ */
+ protected int getPosition(ESBService service, ModelObject ref) {
+ int ret=-1;
+
+ // Check if reference model object provided, and if so,
+ // if it has a position within the service
+ if (ref != null && ref.getSource().getObject() instanceof ESBAction) {
+ ret = service.getActions().indexOf((ESBAction)
+ ref.getSource().getObject());
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines whether an 'initiator' action,
+ * inserted at the defined position in the specified
+ * service, should actually be placed in a new scheduled
+ * service.
+ *
+ * @param service The current service
+ * @param pos The insertion position in that service
+ * @return Whether a new service needs to be scheduled to
+ * accommodate the initiator action
+ */
+ protected boolean shouldScheduleNewService(ESBService service,
+ int pos) {
+ boolean ret=false;
+
+ for (int i=0; ret == false && i < pos; i++) {
+ ESBAction action=service.getActions().get(i);
+
+ if (action.isSessionBased() && !action.isSessionType()) {
+ ret = true;
+ }
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context)
+ * and deleted model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param mobj The model object to be removed
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ public boolean isDeleteSupported(ModelChangeContext context,
+ Model model, ModelObject mobj) {
+ boolean ret=false;
+
+ if (mobj.getSource().getObject() instanceof AbstractStatefulESBAction &&
+ (context.getParent() instanceof ESBService ||
+ ((AbstractStatefulESBAction)mobj.getSource().getObject()).getService() != null)
&&
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless() == false) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method removes the supplied model object from the
+ * supplied model. The model object representation must
+ * contain the necessary model specific to remove the
+ * object from the underlying model representation.
+ *
+ * @param context The context
+ * @param model The model being changed
+ * @param mobj The model object to be deleted
+ * @return Whether the change has been applied
+ */
+ @Override
+ public boolean delete(ModelChangeContext context,
+ Model model, ModelObject mobj) {
+ boolean ret=false;
+ ESBService service=getESBService(context, mobj);
+ ESBAction action=(ESBAction)mobj.getSource().getObject();
+
+ if (action != null && service != null) {
+ ret = service.getActions().remove(action);
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context)
+ * and modified model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param fromObj The source model object
+ * @param toObj The model object to be updated
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ public boolean isUpdateSupported(ModelChangeContext context,
+ Model model, ModelObject fromObj, ModelObject toObj) {
+ boolean ret=false;
+
+ if (context.getParent() instanceof ESBService &&
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless() == false) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationInteractionModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationInteractionModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationInteractionModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -31,7 +31,7 @@
* This is the model change rule for the Conversation Interaction.
*/
@RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
-public class ConversationInteractionModelChangeRule extends AbstractESBModelChangeRule {
+public class ConversationInteractionModelChangeRule extends
AbstractStatefulESBModelChangeRule {
/**
* This method determines whether the rule is appropriate
@@ -420,8 +420,7 @@
if (fromObj instanceof ConversationInteraction &&
toObj instanceof ConversationInteraction &&
- context.getParent() instanceof ESBService &&
- model instanceof ESBLanguageModel) {
+ super.isUpdateSupported(context, model, fromObj, toObj)) {
ret = true;
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ConversationModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -50,7 +50,8 @@
boolean ret=false;
if (mobj instanceof Conversation &&
- model instanceof ESBLanguageModel) {
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless() == false) {
ret = true;
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/IfModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/IfModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/IfModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -33,7 +33,7 @@
* This is the model change rule for the If grouping construct.
*/
@RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
-public class IfModelChangeRule extends AbstractESBModelChangeRule {
+public class IfModelChangeRule extends AbstractStatefulESBModelChangeRule {
/**
* This method determines whether the rule is appropriate
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/LanguageToConversationModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/LanguageToConversationModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/LanguageToConversationModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -48,7 +48,8 @@
boolean ret=false;
if (mobj instanceof ConversationModel &&
- model instanceof ESBLanguageModel) {
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless() == false) {
ret = true;
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/MessageSignatureModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/MessageSignatureModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/MessageSignatureModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -49,7 +49,8 @@
if (fromObj instanceof MessageSignature &&
toObj instanceof MessageSignature &&
- model instanceof ESBLanguageModel) {
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless() == false) {
ret = true;
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ParallelModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ParallelModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/ParallelModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -32,7 +32,7 @@
* This is the model change rule for the Parallel grouping construct.
*/
@RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
-public class ParallelModelChangeRule extends AbstractESBModelChangeRule {
+public class ParallelModelChangeRule extends AbstractStatefulESBModelChangeRule {
/**
* This method determines whether the rule is appropriate
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/RunModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/RunModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/RunModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -32,7 +32,7 @@
* This is the model change rule for the Run composition construct.
*/
@RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
-public class RunModelChangeRule extends AbstractESBModelChangeRule {
+public class RunModelChangeRule extends AbstractStatefulESBModelChangeRule {
/**
* This method determines whether the rule is appropriate
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/SpawnModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/SpawnModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/SpawnModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -31,7 +31,7 @@
* This is the model change rule for the Spawn composition construct.
*/
@RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
-public class SpawnModelChangeRule extends AbstractESBModelChangeRule {
+public class SpawnModelChangeRule extends AbstractStatefulESBModelChangeRule {
/**
* This method determines whether the rule is appropriate
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/TypeReferenceModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/TypeReferenceModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/TypeReferenceModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -49,7 +49,8 @@
if (fromObj instanceof TypeReference &&
toObj instanceof TypeReference &&
- model instanceof ESBLanguageModel) {
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless() == false) {
ret = true;
}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhenModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhenModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhenModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -32,7 +32,7 @@
* This is the model change rule for the When grouping construct.
*/
@RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
-public class WhenModelChangeRule extends AbstractESBModelChangeRule {
+public class WhenModelChangeRule extends AbstractStatefulESBModelChangeRule {
/**
* This method determines whether the rule is appropriate
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhileModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhileModelChangeRule.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateful/WhileModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -32,7 +32,7 @@
* This is the model change rule for the While repetition construct.
*/
@RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
-public class WhileModelChangeRule extends AbstractESBModelChangeRule {
+public class WhileModelChangeRule extends AbstractStatefulESBModelChangeRule {
/**
* This method determines whether the rule is appropriate
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/AbstractStatelessESBModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/AbstractStatelessESBModelChangeRule.java
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/AbstractStatelessESBModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -0,0 +1,173 @@
+/*
+ * 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.cdl.runtime.jbossesb.model.change.stateless;
+
+import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.*;
+import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.actions.*;
+import org.scribble.model.*;
+import org.scribble.model.change.*;
+
+/**
+ * This is the abstract stateless ESB model change rule.
+ */
+public abstract class AbstractStatelessESBModelChangeRule extends AbstractModelChangeRule
{
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context) and inserted
+ * model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param mobj The model object being inserted
+ * @param ref The optional reference model object
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ public boolean isInsertSupported(ModelChangeContext context,
+ Model model, ModelObject mobj, ModelObject ref) {
+ boolean ret=false;
+
+ if ((context.getParent() instanceof ESBService ||
+ (ref != null && ref.getSource().getObject()
+ instanceof AbstractESBAction &&
+ ((AbstractESBAction)ref.getSource().getObject()).getService() != null)) &&
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless()) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method returns the ESB service associated with the
+ * optional model object reference or the context.
+ *
+ * @param context The context
+ * @param ref The optional model object
+ * @return The ESB service, or null if not found
+ */
+ protected ESBService getESBService(ModelChangeContext context,
+ ModelObject ref) {
+ ESBService ret=(ESBService)context.getParent();
+
+ if (ref != null && ref.getSource().getObject() instanceof AbstractESBAction) {
+ ret = ((AbstractESBAction)ref.getSource().getObject()).getService();
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines the position of the supplied
+ * model object within the supplied service.
+ *
+ * @param service The service
+ * @param ref The optional model object
+ * @return The position, or -1 if not found
+ */
+ protected int getPosition(ESBService service, ModelObject ref) {
+ int ret=-1;
+
+ // Check if reference model object provided, and if so,
+ // if it has a position within the service
+ if (ref != null && ref.getSource().getObject() instanceof ESBAction) {
+ ret = service.getActions().indexOf((ESBAction)
+ ref.getSource().getObject());
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context)
+ * and deleted model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param mobj The model object to be removed
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ public boolean isDeleteSupported(ModelChangeContext context,
+ Model model, ModelObject mobj) {
+ boolean ret=false;
+
+ if (mobj.getSource().getObject() instanceof AbstractESBAction &&
+ (context.getParent() instanceof ESBService ||
+ ((AbstractESBAction)mobj.getSource().getObject()).getService() != null) &&
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless()) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method removes the supplied model object from the
+ * supplied model. The model object representation must
+ * contain the necessary model specific to remove the
+ * object from the underlying model representation.
+ *
+ * @param context The context
+ * @param model The model being changed
+ * @param mobj The model object to be deleted
+ * @return Whether the change has been applied
+ */
+ @Override
+ public boolean delete(ModelChangeContext context,
+ Model model, ModelObject mobj) {
+ boolean ret=false;
+ ESBService service=getESBService(context, mobj);
+ ESBAction action=(ESBAction)mobj.getSource().getObject();
+
+ if (action != null && service != null) {
+ ret = service.getActions().remove(action);
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context)
+ * and modified model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param fromObj The source model object
+ * @param toObj The model object to be updated
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ public boolean isUpdateSupported(ModelChangeContext context,
+ Model model, ModelObject fromObj, ModelObject toObj) {
+ boolean ret=false;
+
+ if (context.getParent() instanceof ESBService &&
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless()) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+}
Added:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationModelChangeRule.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationModelChangeRule.java
(rev 0)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/java/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/change/stateless/ConversationModelChangeRule.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -0,0 +1,181 @@
+/*
+ * 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.cdl.runtime.jbossesb.model.change.stateless;
+
+import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.*;
+import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.actions.stateless.*;
+import org.jboss.tools.overlord.cdl.runtime.jbossesb.model.util.ConversationUtil;
+import org.scribble.model.*;
+import org.scribble.model.change.*;
+import org.scribble.conversation.model.*;
+import org.scribble.extensions.RegistryInfo;
+
+/**
+ * This is the model change rule for the Conversation.
+ */
+(a)RegistryInfo(extension=ModelChangeRule.class,notation=ESBLanguageModel.JBOSSESB_NOTATION)
+public class ConversationModelChangeRule extends AbstractModelChangeRule {
+
+ private static final String NAME_SUFFIX = "_main";
+
+ /**
+ * This method determines whether the rule is appropriate
+ * for the supplied type of model, parent (in the context) and
+ * model object.
+ *
+ * @param context The context
+ * @param model The model
+ * @param mobj The model object causing the change
+ * @param ref The optional reference model object
+ * @return Whether the rule supports the supplied information
+ */
+ @Override
+ public boolean isInsertSupported(ModelChangeContext context,
+ Model model, ModelObject mobj, ModelObject ref) {
+ boolean ret=false;
+
+ if (mobj instanceof Conversation &&
+ model instanceof ESBLanguageModel &&
+ ((ESBLanguageModel)model).isStateless()) {
+ ret = true;
+ }
+
+ return(ret);
+ }
+
+ /**
+ * This method adds a new model object, within a
+ * parent model object, with the details supplied in
+ * another model object. The supplied model object
+ * will usually be from a different model representation
+ * (e.g. due to a merge), so the details will be
+ * copied and placed in the representation associated
+ * with the supplied model and parent model object.<p>
+ * <p>
+ * If a reference model object is supplied, then the
+ * insertion will occur relative to it. If the reference
+ * object is a block, then it means that the insertion
+ * should occur at the end of the block. Otherwise the
+ * new model object should be inserted before the
+ * reference object, within the containing block.<p>
+ * <p>
+ * If the reference object is not supplied, then the
+ * new model object should be inserted at the end of
+ * the behaviour associated with the parent in the model
+ * change context.
+ *
+ * @param context The context
+ * @param model The model being changed
+ * @param mobj The model object details to be inserted
+ * @param ref The optional reference model object
+ * @return Whether the change has been applied
+ */
+ @Override
+ public boolean insert(ModelChangeContext context,
+ Model model, ModelObject mobj, ModelObject ref) {
+ ESBLanguageModel esbModel=(ESBLanguageModel)model;
+ Conversation conv=(Conversation)mobj;
+
+ String namespace=((Model)conv.getModel()).
+ getNamespace().getName();
+
+ String category=ConversationUtil.getServiceCategory(conv);
+
+ String name=ConversationUtil.getServiceName(conv);
+
+ String sdname="";
+
+ // Check if root conversation
+ if (conv.getParent() instanceof Model) {
+
+ // Register gateway service
+ DefaultESBService gateway=new DefaultESBService(esbModel,
+ category, name);
+
+ MessageRouterAction mra=new MessageRouterAction(gateway);
+
+ // Construct service description name
+ if (namespace != null) {
+ sdname = "{"+namespace+"}";
+ }
+
+ sdname += conv.getModelName().getName()+"-"+
+ conv.getModelName().getLocatedRole().getName();
+
+ mra.setServiceDescriptionName(sdname);
+
+ gateway.addAction(mra, -1);
+
+ esbModel.addService(gateway);
+
+ name += NAME_SUFFIX;
+
+ String ctype=null;
+
+ // Check if conversation has a 'conforms to' reference
+ if (conv.getConformsTo().size() > 0) {
+ // Set conversation type based on first 'conforms to'
+ // reference
+ ConformanceReference cref=conv.getConformsTo().get(0);
+
+ ctype = cref.getNamespace()+"."+
+ cref.getLocalpart()+"@"+
+ cref.getLocatedRole();
+ } else {
+ // Set conversation type based on conversation
+ // namespace and name
+ ctype = namespace+"."+
+ conv.getModelName().getName()+"@"+
+ conv.getModelName().getLocatedRole().getName();
+ }
+
+ if (ctype != null) {
+ mra.setConversationType(ctype);
+ }
+
+ // Process the activities within the conversation
+ java.util.List<Activity> acts=conv.getBlock().getContents();
+
+ context.setParent(gateway);
+
+ for (int i=0; i < acts.size(); i++) {
+ context.insert(model, acts.get(i), null);
+ }
+ }
+
+ /*
+ // Create new ESB service
+ ESBService service=esbModel.createService(category, name);
+
+ esbModel.addService(service);
+
+ // Create 'CreateSession' activity
+ // Process the activities within the conversation
+ java.util.List<Activity> acts=conv.getBlock().getContents();
+
+ context.setParent(service);
+
+ for (int i=0; i < acts.size(); i++) {
+ context.insert(model, acts.get(i), null);
+ }
+ */
+
+ return(true);
+ }
+
+}
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModelTest.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModelTest.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/DefaultESBLanguageModelTest.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -29,7 +29,7 @@
ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
- DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+ DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref, false);
org.w3c.dom.Element config=model.getESBConfiguration();
@@ -113,7 +113,7 @@
ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
- DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+ DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref, false);
org.w3c.dom.Element config=model.getESBConfiguration();
@@ -175,7 +175,7 @@
ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
- DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+ DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref, false);
org.w3c.dom.Element config=model.getESBConfiguration();
@@ -221,7 +221,7 @@
ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
- DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+ DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref, false);
TestESBService service=new TestESBService();
service.setCategory(category);
@@ -241,7 +241,7 @@
ModelReference ref=new ModelReference(ESBLanguageModel.JBOSSESB_NOTATION);
- DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref);
+ DefaultESBLanguageModel model=new DefaultESBLanguageModel(ref, false);
TestESBService service1=new TestESBService();
service1.setCategory(category);
Modified:
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/TestESBLanguageModel.java
===================================================================
---
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/TestESBLanguageModel.java 2009-01-22
20:41:48 UTC (rev 467)
+++
cdl/trunk/tools/plugins/org.jboss.tools.overlord.cdl.runtime.jbossesb/src/test/org/jboss/tools/overlord/cdl/runtime/jbossesb/model/TestESBLanguageModel.java 2009-01-24
23:02:09 UTC (rev 468)
@@ -113,6 +113,11 @@
return null;
}
+ public boolean isStateless() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
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;