Author: scabanovich
Date: 2009-12-22 12:57:31 -0500 (Tue, 22 Dec 2009)
New Revision: 19541
Added:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificPropertyConverter.java
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/FTPListenerConverter.java
Modified:
trunk/esb/plugins/org.jboss.tools.esb.core/resources/meta/esb12.meta
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/ESBLoaderUtil.java
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificActionLoader.java
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/IPropertyConverter.java
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/ListConverter.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5547
Modified: trunk/esb/plugins/org.jboss.tools.esb.core/resources/meta/esb12.meta
===================================================================
--- trunk/esb/plugins/org.jboss.tools.esb.core/resources/meta/esb12.meta 2009-12-22
17:22:02 UTC (rev 19540)
+++ trunk/esb/plugins/org.jboss.tools.esb.core/resources/meta/esb12.meta 2009-12-22
17:57:31 UTC (rev 19541)
@@ -287,6 +287,132 @@
<XDependencies/>
</XModelEntity>
<XModelEntity ImplementingClass="%ESB%"
+
PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.esb.ui.editor.form.ESBXMLFormLayoutData;converter=converter"
name="ESBFTPCache">
+ <XChildrenEntities/>
+ <XEntityRenderer>
+ <ICONS>
+ <ICON info="main.esb.property" type="main"/>
+ </ICONS>
+ </XEntityRenderer>
+ <XModelAttributes>
+ <XModelAttribute default="cache" loader="ElementType"
name="element type">
+ <Editor name="Uneditable"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=general;id=true"
+ default="Cache" name="name" visibility="false"
xmlname="name">
+ <Editor name="Uneditable"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=general;pre=true"
+ name="max nodes" xmlname="maxNodes"/>
+ <XModelAttribute PROPERTIES="category=general;pre=true"
+ name="time to live" xmlname="timeToLiveSeconds"/>
+ <XModelAttribute PROPERTIES="category=general;pre=true"
+ name="max age" xmlname="maxAgeSeconds"/>
+ <XModelAttribute TRIM="no" name="comment"
visibility="false" xmlname="#comment">
+ <Editor name="Note"/>
+ </XModelAttribute>
+ </XModelAttributes>
+ <XActionItem kind="list">
+ <XActionItem ICON="action.empty" displayName="Create"
kind="list" name="EditActions"/>
+ <XActionItemReference entity="ESBPreAlias"
name="CopyActions"/>
+ <XActionItemReference entity="ESBPreAlias"
name="DeleteActions"/>
+ <XActionItemReference entity="ESBPreAlias"
name="Properties"/>
+ <XActionItemReference entity="ESBPreAlias"
name="MoveActions"/>
+ </XActionItem>
+ <XDependencies/>
+ </XModelEntity>
+ <XModelEntity ImplementingClass="%ESB%"
+
PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.esb.ui.editor.form.ESBXMLFormLayoutData;children=%ESBOrdered%;hasConvertedProperties=true"
+ XMLSUBPATH="ftp-listener" name="ESBFTPListener120">
+ <XChildrenEntities>
+ <XChildEntity name="ESBProperty"/>
+ <XChildEntity maxCount="1" name="ESBFTPMessageFilter101"
required="yes"/>
+ <XChildEntity maxCount="1" name="ESBFTPCache"
required="yes"/>
+ <XChildEntity maxCount="1" name="ESBFTPRemote"
required="yes"/>
+ </XChildrenEntities>
+ <XEntityRenderer>
+ <ICONS>
+ <ICON info="main.esb.listener" type="main"/>
+ </ICONS>
+ </XEntityRenderer>
+ <XModelAttributes>
+ <XModelAttribute default="ftp listener" loader="ElementType"
name="element type">
+ <Editor name="Uneditable"/>
+ </XModelAttribute>
+ <XModelAttributeReference
+ attributes="name,channel id ref,max threads,is gateway"
+ entity="ESBListener101" name="listener"/>
+ <XModelAttributeReference
+ attributes="poll frequency seconds,schedule frequency,schedule id ref"
+ entity="ESBScheduledListener101" name="scheduled listener"/>
+ <XModelAttribute TRIM="no" name="comment"
visibility="false" xmlname="#comment">
+ <Editor name="Note"/>
+ </XModelAttribute>
+ </XModelAttributes>
+ <XActionItem kind="list">
+ <XActionItem kind="list" name="CreateActions">
+ <XActionItemReference entity="ESBAction101" name="AddProperty"
path="CreateActions/AddProperty"/>
+ </XActionItem>
+ <XActionItem ICON="action.empty" displayName="Create"
kind="list" name="EditActions"/>
+ <XActionItemReference entity="ESBProperty"
name="CopyActions"/>
+ <XActionItemReference entity="ESBProperty"
name="DeleteActions"/>
+ <XActionItemReference entity="ESBProperty"
name="Properties"/>
+ <XActionItemReference entity="ESBProperty"
name="MoveActions"/>
+ </XActionItem>
+ <XDependencies/>
+ </XModelEntity>
+ <XModelEntity ImplementingClass="%ESB%"
+
PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.esb.ui.editor.form.ESBXMLFormLayoutData;converter=converter"
name="ESBFTPRemote">
+ <XChildrenEntities/>
+ <XEntityRenderer>
+ <ICONS>
+ <ICON info="main.esb.property" type="main"/>
+ </ICONS>
+ </XEntityRenderer>
+ <XModelAttributes>
+ <XModelAttribute default="Remote Filesystem Strategy"
+ loader="ElementType" name="element type">
+ <Editor name="Uneditable"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=general;id=true"
+ default="Remote Filesystem Strategy" name="name"
visibility="false" xmlname="name">
+ <Editor name="Uneditable"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=general;pre=true"
name="class" xmlname="remoteFilesystemStrategy-class">
+ <Editor name="AccessibleJava"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=general;pre=true"
+ name="config file"
xmlname="remoteFilesystemStrategy-configFile">
+ <Constraint loader="Tree">
+ <value name="ESBResourceTree"/>
+ <value name="extensions=xml"/>
+ <value name="linkAction=OpenConfig"/>
+ </Constraint>
+ <Editor name="TreeChooser"/>
+ </XModelAttribute>
+ <XModelAttribute PROPERTIES="category=general;pre=true"
+ name="cache listener"
xmlname="removeFilesystemStrategy-cacheListener">
+ <Editor name="AccessibleJava"/>
+ </XModelAttribute>
+ <XModelAttribute TRIM="no" name="comment"
visibility="false" xmlname="#comment">
+ <Editor name="Note"/>
+ </XModelAttribute>
+ </XModelAttributes>
+ <XActionItem kind="list">
+ <XActionItem
+
HandlerClassName="org.jboss.tools.esb.core.model.handlers.OpenESBResourceHandler"
+ ICON="action.empty"
+ PROPERTIES="actionpath=Open;attribute=config file"
+ displayName="Open Config File" kind="action"
name="OpenConfig"/>
+ <XActionItem ICON="action.empty" displayName="Create"
kind="list" name="EditActions"/>
+ <XActionItemReference entity="ESBPreAlias"
name="CopyActions"/>
+ <XActionItemReference entity="ESBPreAlias"
name="DeleteActions"/>
+ <XActionItemReference entity="ESBPreAlias"
name="Properties"/>
+ <XActionItemReference entity="ESBPreAlias"
name="MoveActions"/>
+ </XActionItem>
+ <XDependencies/>
+ </XModelEntity>
+ <XModelEntity ImplementingClass="%ESB%"
PROPERTIES="formFactory=%Default%;formLayout=org.jboss.tools.esb.ui.editor.form.ESBXMLFormLayoutData;saveDefault=false"
XMLSUBPATH="globals" name="ESBGlobals120">
<XChildrenEntities>
@@ -554,7 +680,7 @@
<XChildEntity name="ESBJCAGateway120"/>
<XChildEntity name="ESBJMSListener101"/>
<XChildEntity name="ESBFSListener101"/>
- <XChildEntity name="ESBFTPListener101"/>
+ <XChildEntity name="ESBFTPListener120"/>
<XChildEntity name="ESBSQLListener120"/>
<XChildEntity name="ESBHibernateListener101"/>
<XChildEntity name="ESBJBRListener101"/>
@@ -592,7 +718,14 @@
</XActionItem>
<XActionItem kind="list" name="Separator"/>
<XActionItemReference entity="ESBListeners101"
name="AddFSListener" path="CreateActions/AddFSListener"/>
- <XActionItemReference entity="ESBListeners101"
name="AddFTPListener" path="CreateActions/AddFTPListener"/>
+ <XActionItem HandlerClassName="%Create%" ICON="action.empty"
+ PROPERTIES="validator.add=true" WizardClassName="%Default%"
+ displayName="FTP Listener..." kind="action"
name="AddFTPListener">
+ <EntityData EntityName="ESBFTPListener120">
+ <AttributeData AttributeName="name"/>
+ <AttributeData AttributeName="channel id ref"
Mandatory="no"/>
+ </EntityData>
+ </XActionItem>
<XActionItemReference entity="ESBListeners101"
name="AddGroovyListener"
path="CreateActions/AddGroovyListener"/>
<XActionItemReference entity="ESBListeners101"
Modified:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/ESBLoaderUtil.java
===================================================================
---
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/ESBLoaderUtil.java 2009-12-22
17:22:02 UTC (rev 19540)
+++
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/ESBLoaderUtil.java 2009-12-22
17:57:31 UTC (rev 19541)
@@ -53,15 +53,20 @@
public void loadChildren(Element element, XModelObject o) {
super.loadChildren(element, o);
- if(SpecificActionLoader.instance.isActionsFolder(o.getModelEntity().getName())) {
+ String entity = o.getModelEntity().getName();
+ if(SpecificActionLoader.instance.isActionsFolder(entity)) {
SpecificActionLoader.instance.convertChildrenToSpecific(o);
- }
+ } else if(SpecificPropertyConverter.instance.isListenersFolder(entity)) {
+ SpecificPropertyConverter.instance.convertChildrenToSpecific(o);
+ } //TODO add other folders
}
public boolean save(Element parent, XModelObject o) {
if(!needToSave(o)) return true;
if(SpecificActionLoader.instance.isPreActionEntity(o)) {
o = SpecificActionLoader.instance.convertSpecificActionToBasic(o);
+ } else
if("true".equals(o.getModelEntity().getProperty("hasConvertedProperties")))
{
+ o = SpecificPropertyConverter.instance.convertSpecificToBasic(o);
}
return super.save(parent, o);
}
Modified:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificActionLoader.java
===================================================================
---
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificActionLoader.java 2009-12-22
17:22:02 UTC (rev 19540)
+++
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificActionLoader.java 2009-12-22
17:57:31 UTC (rev 19541)
@@ -125,23 +125,9 @@
} catch (XModelException e) {
ESBCorePlugin.log(e);
}
- XAttribute[] as = entity.getAttributes();
- for (int i = 0; i < as.length; i++) {
- String pre = as[i].getProperty("pre");
- if(pre == null || pre.length() == 0) continue;
- if("true".equals(pre)) {
- String name = as[i].getXMLName();
- XModelObject p = basic.getChildByPath(name);
- if(p == null) continue;
- String value = p.getAttributeValue("value");
- action.setAttributeValue(as[i].getName(), value);
- action.set(as[i].getXMLName() + ".#comment",
p.getAttributeValue("comment"));
- p.removeFromParent();
- } else {
- //very specific cases
- }
- }
-
+
+ copyBasicPropertiesToSpecificAtttributes(basic, action);
+
XChild[] ce = action.getModelEntity().getChildren();
for (int i = 0; i < ce.length; i++) {
String childEntityName = ce[i].getName();
@@ -176,24 +162,8 @@
}
XModelEntity entity = action.getModelEntity();
- XAttribute[] as = entity.getAttributes();
- for (int i = 0; i < as.length; i++) {
- String pre = as[i].getProperty("pre");
- if(pre == null || pre.length() == 0) continue;
- if("true".equals(pre)) {
- String value = action.getAttributeValue(as[i].getName());
- if(value == null || value.length() == 0 || value.equals(as[i].getDefaultValue())) {
- if(!"always".equals(as[i].getProperty("save"))) continue;
- }
- XModelObject p = action.getModel().createModelObject(ESBConstants.ENT_ESB_PROPERTY,
null);
- p.setAttributeValue("name", as[i].getXMLName());
- p.setAttributeValue("value", value);
- p.setAttributeValue("comment", action.get(as[i].getXMLName() +
".#comment"));
- result.addChild(p);
- } else {
- //very specific cases
- }
- }
+
+ copySpecificAtttributesToBasicProperties(action, result);
XChild[] ce = entity.getChildren();
for (int i = 0; i < ce.length; i++) {
@@ -218,4 +188,46 @@
String converter = childEntity.getProperty("converter");
return (converter == null) ? null : propertyConverters.get(converter);
}
+
+ public static void copyBasicPropertiesToSpecificAtttributes(XModelObject basic,
XModelObject specific) {
+ XModelEntity entity = specific.getModelEntity();
+ XAttribute[] as = entity.getAttributes();
+ for (int i = 0; i < as.length; i++) {
+ String pre = as[i].getProperty("pre");
+ if(pre == null || pre.length() == 0) continue;
+ if("true".equals(pre)) {
+ String name = as[i].getXMLName();
+ XModelObject p = basic.getChildByPath(name);
+ if(p == null) continue;
+ String value = p.getAttributeValue("value");
+ specific.setAttributeValue(as[i].getName(), value);
+ specific.set(as[i].getXMLName() + ".#comment",
p.getAttributeValue("comment"));
+ p.removeFromParent();
+ } else {
+ //very specific cases
+ }
+ }
+ }
+
+ public static void copySpecificAtttributesToBasicProperties(XModelObject specific,
XModelObject basic) {
+ XModelEntity entity = specific.getModelEntity();
+ XAttribute[] as = entity.getAttributes();
+ for (int i = 0; i < as.length; i++) {
+ String pre = as[i].getProperty("pre");
+ if(pre == null || pre.length() == 0) continue;
+ if("true".equals(pre)) {
+ String value = specific.getAttributeValue(as[i].getName());
+ if(value == null || value.length() == 0 || value.equals(as[i].getDefaultValue())) {
+ if(!"always".equals(as[i].getProperty("save"))) continue;
+ }
+ XModelObject p = specific.getModel().createModelObject(ESBConstants.ENT_ESB_PROPERTY,
null);
+ p.setAttributeValue("name", as[i].getXMLName());
+ p.setAttributeValue("value", value);
+ p.setAttributeValue("comment", specific.get(as[i].getXMLName() +
".#comment"));
+ basic.addChild(p);
+ } else {
+ //very specific cases
+ }
+ }
+ }
}
Added:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificPropertyConverter.java
===================================================================
---
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificPropertyConverter.java
(rev 0)
+++
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificPropertyConverter.java 2009-12-22
17:57:31 UTC (rev 19541)
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.esb.core.model;
+
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.common.model.impl.RegularObjectImpl;
+import org.jboss.tools.esb.core.model.converters.FTPListenerConverter;
+import org.jboss.tools.esb.core.model.converters.IPropertyConverter;
+
+/**
+ * When loading from xml, reads 'raw' list of esb property children of loaded
object
+ * and converts them into 'rich' specific properties (attributes or children).
+ * Since just loaded objects are not yet used anywhere, there is no need to make a copy.
+ *
+ * When saving object to xml, converts 'rich' properties into basic esb
properties
+ * and adds them as children; this is done with copy object, so that leave working
+ * model object unmodified.
+ *
+ * Contrary to conversion of actions, no entity change occurs.
+ *
+ * @author Viacheslav Kabanovich
+ */
+public class SpecificPropertyConverter implements ESBConstants {
+ public static SpecificPropertyConverter instance = new SpecificPropertyConverter();
+
+ public SpecificPropertyConverter() {}
+
+ public boolean isListenersFolder(String entity) {
+ return entity.startsWith(ENT_ESB_LISTENERS);
+ }
+
+ public void convertChildrenToSpecific(XModelObject actions) {
+ boolean modified = false;
+
+ XModelObject[] as = actions.getChildren();
+ for (int i = 0; i < as.length; i++) {
+ XModelObject action = convertBasicToSpecific(actions, as[i]);
+ if(action != null) {
+ as[i] = action;
+ modified = true;
+ }
+ }
+ if(modified) {
+ ((RegularObjectImpl)actions).replaceChildren(as);
+ }
+
+ }
+
+ public XModelObject convertBasicToSpecific(XModelObject parent, XModelObject basic) {
+ String entity = basic.getModelEntity().getName();
+ if("ESBFTPListener120".equals(entity)) {
+ IPropertyConverter converter = new FTPListenerConverter();
+ converter.toSpecific(basic, basic);
+ }
+ //returns null because no new object is created
+ return null;
+ }
+
+ public XModelObject convertSpecificToBasic(XModelObject specific) {
+ String entity = specific.getModelEntity().getName();
+ XModelObject basic = specific;
+ if("ESBFTPListener120".equals(entity)) {
+ basic = basic.copy();
+ IPropertyConverter converter = new FTPListenerConverter();
+ converter.toBasic(basic, specific);
+ }
+ return basic;
+ }
+
+}
Property changes on:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/SpecificPropertyConverter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/FTPListenerConverter.java
===================================================================
---
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/FTPListenerConverter.java
(rev 0)
+++
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/FTPListenerConverter.java 2009-12-22
17:57:31 UTC (rev 19541)
@@ -0,0 +1,26 @@
+package org.jboss.tools.esb.core.model.converters;
+
+import org.jboss.tools.common.model.XModelObject;
+import org.jboss.tools.esb.core.model.SpecificActionLoader;
+
+public class FTPListenerConverter implements IPropertyConverter {
+
+ public FTPListenerConverter() {}
+
+ public void toBasic(XModelObject basic, XModelObject specific) {
+ XModelObject cache = specific.getChildByPath("Cache");
+ SpecificActionLoader.copySpecificAtttributesToBasicProperties(cache, basic);
+
+ XModelObject remote = specific.getChildByPath("Remote Filesystem Strategy");
+ SpecificActionLoader.copySpecificAtttributesToBasicProperties(remote, basic);
+ }
+
+ public void toSpecific(XModelObject basic, XModelObject specific) {
+ XModelObject cache = specific.getChildByPath("Cache");
+ SpecificActionLoader.copyBasicPropertiesToSpecificAtttributes(basic, cache);
+
+ XModelObject remote = specific.getChildByPath("Remote Filesystem Strategy");
+ SpecificActionLoader.copyBasicPropertiesToSpecificAtttributes(basic, remote);
+ }
+
+}
Property changes on:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/FTPListenerConverter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/IPropertyConverter.java
===================================================================
---
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/IPropertyConverter.java 2009-12-22
17:22:02 UTC (rev 19540)
+++
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/IPropertyConverter.java 2009-12-22
17:57:31 UTC (rev 19541)
@@ -13,12 +13,16 @@
import org.jboss.tools.common.model.XModelObject;
/**
+ * Used for converting one complex property of out-of-the-box action.
+ *
+ * Used for converting set of properties of FTP listener and other objects.
+ *
* @author Viacheslav Kabanovich
*/
public interface IPropertyConverter {
- public void toSpecific(XModelObject basicAction, XModelObject specificAction);
+ public void toSpecific(XModelObject basic, XModelObject specific);
- public void toBasic(XModelObject basicAction, XModelObject specificAction);
+ public void toBasic(XModelObject basic, XModelObject specific);
}
Modified:
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/ListConverter.java
===================================================================
---
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/ListConverter.java 2009-12-22
17:22:02 UTC (rev 19540)
+++
trunk/esb/plugins/org.jboss.tools.esb.core/src/org/jboss/tools/esb/core/model/converters/ListConverter.java 2009-12-22
17:57:31 UTC (rev 19541)
@@ -21,6 +21,8 @@
import org.jboss.tools.esb.core.model.ESBConstants;
/**
+ * Class for converting out-of-the-box action property that may have list of child tags.
+ *
* @author Viacheslav Kabanovich
*/
public abstract class ListConverter implements IPropertyConverter {