Author: tfennelly
Date: 2010-01-25 08:33:29 -0500 (Mon, 25 Jan 2010)
New Revision: 19907
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/ValueMapping.java
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/CollectionMapping.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/models/EDIMappingNodeGraphModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeConnection.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigChildNodeGraphModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigGraphModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/xsl/XSLNodeGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateConnectionModelFactory.java
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilderTest.java
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-01.xml
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-02.xml
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-03.xml
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-01.xml
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-02.xml
Log:
https://jira.jboss.org/jira/browse/JBIDE-5293
Need way to control FreeMarker template variable formatting
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/CollectionMapping.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/CollectionMapping.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/CollectionMapping.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -23,7 +23,7 @@
import org.eclipse.core.runtime.Assert;
/**
- * Collection {@link Mapping}.
+ * Collection {@link ValueMapping}.
*
* @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
*/
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -1,75 +1,76 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., 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.
- *
- * (C) 2005-2006, JBoss Inc.
- */
-package org.jboss.tools.smooks.templating.template;
-
-import org.w3c.dom.Node;
-import org.eclipse.core.runtime.Assert;
-
-import java.util.List;
-import java.util.ArrayList;
-
-/**
- * Model template mapping.
- * <p/>
- * Represents a successful mapping. It also tells if the mapping requires
- * other model nodes to be hidden in the Editor view, so as to restrict mappings to these
nodes.
- *
- * @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
- */
-public class Mapping {
-
- private String srcPath;
- private Node mappingNode;
- private List<Node> hideNodes;
-
- /**
- * Public constructor.
- * @param srcPath Source path.
- * @param mappingNode The mapping node.
- */
- public Mapping(String srcPath, Node mappingNode) {
- Assert.isNotNull(srcPath, "srcPath"); //$NON-NLS-1$
- Assert.isNotNull(mappingNode, "mappingNode"); //$NON-NLS-1$
- this.srcPath = srcPath;
- this.mappingNode = mappingNode;
- }
-
- public String getSrcPath() {
- return srcPath;
- }
-
- public Node getMappingNode() {
- return mappingNode;
- }
-
- public List<Node> getHideNodes() {
- return hideNodes;
- }
-
- public void addHideNode(Node node) {
- Assert.isNotNull(node, "node"); //$NON-NLS-1$
-
- if(hideNodes == null) {
- hideNodes = new ArrayList<Node>();
- }
-
- hideNodes.add(node);
- }
-}
+/**
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, JBoss Inc., 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.
+ *
+ * (C) 2009, JBoss Inc.
+ */
+package org.jboss.tools.smooks.templating.template;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.w3c.dom.Node;
+
+/**
+ * Abstract Mapping.
+ * <p/>
+ * Represents a successful mapping. It also tells if the mapping requires
+ * other model nodes to be hidden in the Editor view, so as to restrict mappings to these
nodes.
+ *
+ * @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
+ */
+public abstract class Mapping {
+
+ private String srcPath;
+ private Node mappingNode;
+ private List<Node> hideNodes;
+
+ /**
+ * Public constructor.
+ * @param srcPath Source path.
+ * @param mappingNode The mapping node.
+ */
+ public Mapping(String srcPath, Node mappingNode) {
+ Assert.isNotNull(srcPath, "srcPath"); //$NON-NLS-1$
+ Assert.isNotNull(mappingNode, "mappingNode"); //$NON-NLS-1$
+ this.srcPath = srcPath;
+ this.mappingNode = mappingNode;
+ }
+
+ public String getSrcPath() {
+ return srcPath;
+ }
+
+ public Node getMappingNode() {
+ return mappingNode;
+ }
+
+ public List<Node> getHideNodes() {
+ return hideNodes;
+ }
+
+ public void addHideNode(Node node) {
+ Assert.isNotNull(node, "node"); //$NON-NLS-1$
+
+ if(hideNodes == null) {
+ hideNodes = new ArrayList<Node>();
+ }
+
+ hideNodes.add(node);
+ }
+
+}
\ No newline at end of file
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -40,6 +40,7 @@
import org.jboss.tools.smooks.templating.template.exception.InvalidMappingException;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
import
org.jboss.tools.smooks.templating.template.exception.UnmappedCollectionNodeException;
+import org.jboss.tools.smooks.templating.template.util.FreeMarkerUtil;
import org.milyn.xml.DomUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -49,9 +50,7 @@
/**
* Abstract Template Builder.
* <p/>
- * See <a
- *
href="http://www.jboss.org/community/wiki/SmooksEditorTemplateGenera...
- * >Wiki Docs</a>.
+ * See <a
href="http://www.jboss.org/community/wiki/SmooksEditorTemplateGenera...
Docs</a>.
*
* @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
*/
@@ -136,11 +135,11 @@
* @throws InvalidMappingException
* Invalid mapping.
*/
- public Mapping addValueMapping(String srcPath, Node modelPath) throws
InvalidMappingException {
+ public ValueMapping addValueMapping(String srcPath, Node modelPath) throws
InvalidMappingException {
asserValidMappingNode(modelPath);
assertCollectionsMapped(modelPath);
- Mapping mapping = new Mapping(srcPath, modelPath);
+ ValueMapping mapping = new ValueMapping(srcPath, modelPath);
mappings.add(mapping);
addHideNodes(modelPath, mapping);
@@ -160,12 +159,12 @@
* @throws InvalidMappingException
* Invalid mapping.
*/
- public Mapping addCollectionMapping(String srcCollectionPath, Element
modelCollectionPath, String collectionItemName)
+ public CollectionMapping addCollectionMapping(String srcCollectionPath, Element
modelCollectionPath, String collectionItemName)
throws InvalidMappingException {
asserValidMappingNode(modelCollectionPath);
assertCollectionsMapped(modelCollectionPath.getParentNode());
- Mapping mapping = new CollectionMapping(srcCollectionPath, modelCollectionPath,
collectionItemName);
+ CollectionMapping mapping = new CollectionMapping(srcCollectionPath,
modelCollectionPath, collectionItemName);
mappings.add(mapping);
addHideNodes(modelCollectionPath, mapping);
@@ -418,9 +417,25 @@
"Unexpected Exception. Invalid <smk:list> collection node. Has no child
elements!");
}
+ protected void addValueMapping(Node modelNode, ModelNodeResolver modelNodeResolver,
String dollarVariable) throws TemplateBuilderException, InvalidMappingException {
+ Node targetModelNode = modelNodeResolver.resolveNodeMapping(modelNode);
+ addValueMapping(targetModelNode, dollarVariable);
+ }
+
+ protected void addValueMapping(Node modelNode, String dollarVariable) throws
TemplateBuilderException, InvalidMappingException {
+ String srcPath = FreeMarkerUtil.extractJavaPath(dollarVariable);
+ String rawFormatting = FreeMarkerUtil.extractRawFormatting(dollarVariable);
+
+ ValueMapping mapping = addValueMapping(srcPath, modelNode);
+ if(rawFormatting != null) {
+ Properties encodeProperties = new Properties();
+ encodeProperties.setProperty(ValueMapping.RAW_FORMATING_KEY, rawFormatting);
+ mapping.setEncodeProperties(encodeProperties);
+ }
+ }
+
public static void writeListStart(StringWriter writer, String srcPath, String
collectionItemName) {
- writer
- .write("<smk:list smk:srcPath=\"" + srcPath + "\"
smk:collectionItemName=\"" + collectionItemName + "\"
xmlns:smk=\"" + ModelBuilder.NAMESPACE + "\">");
//$NON-NLS-1$
+ writer.write("<smk:list smk:srcPath=\"" + srcPath + "\"
smk:collectionItemName=\"" + collectionItemName + "\"
xmlns:smk=\"" + ModelBuilder.NAMESPACE + "\">");
//$NON-NLS-1$
}
public static void writeListEnd(StringWriter writer) {
Copied:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/ValueMapping.java
(from rev 19883,
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java)
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/ValueMapping.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/ValueMapping.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -0,0 +1,78 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., 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.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.tools.smooks.templating.template;
+
+import java.util.Properties;
+
+import org.w3c.dom.Node;
+
+/**
+ * Model template value mapping.
+ *
+ * @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
+ */
+public class ValueMapping extends Mapping {
+
+ public static final String RAW_FORMATING_KEY = ValueMapping.class.getName() +
"#RAW_FORMATING_KEY";
+
+ private Class<?> valueType;
+ private Properties encodeProperties;
+
+ /**
+ * Public constructor.
+ * @param srcPath Source path.
+ * @param mappingNode The mapping node.
+ */
+ public ValueMapping(String srcPath, Node mappingNode) {
+ super(srcPath, mappingNode);
+ }
+
+ /**
+ * Get the data type associated with the mapping value.
+ * @return The mapping value type, or null if not defined.
+ */
+ public Class<?> getValueType() {
+ return valueType;
+ }
+
+ /**
+ * Set the data type associated with the mapping value.
+ * @param valueType The mapping value type.
+ */
+ public void setValueType(Class<?> valueType) {
+ this.valueType = valueType;
+ }
+
+ /**
+ * Get the data value templating encoding properties.
+ * @return The data value templating encoding properties, or null if not defined.
+ */
+ public Properties getEncodeProperties() {
+ return encodeProperties;
+ }
+
+ /**
+ * Set the data value templating encoding properties.
+ * @param encodeProperties The data value templating encoding properties.
+ */
+ public void setEncodeProperties(Properties encodeProperties) {
+ this.encodeProperties = encodeProperties;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/ValueMapping.java
___________________________________________________________________
Name: svn:executable
+ *
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilder.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilder.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -158,7 +158,7 @@
}
if(FreeMarkerUtil.isDollarVariable(fields[fieldIndex])) {
- addValueMapping(FreeMarkerUtil.extractJavaPath(fields[fieldIndex]), node);
+ addValueMapping(node, fields[fieldIndex]);
}
fieldIndex++;
}
@@ -209,7 +209,7 @@
if(fieldMapping != null) {
template.append(quoteChar);
- template.append("${" + fieldMapping.getSrcPath() +
"?string}"); //$NON-NLS-1$
+
template.append(FreeMarkerUtil.toFreeMarkerVariable((ValueMapping) fieldMapping));
//$NON-NLS-1$
template.append(quoteChar);
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -19,7 +19,11 @@
*/
package org.jboss.tools.smooks.templating.template.util;
+import java.util.Properties;
+
+import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
+import org.milyn.javabean.decoders.DateDecoder;
/**
* FreeMarker utility methods.
@@ -29,6 +33,16 @@
public class FreeMarkerUtil {
public static String extractJavaPath(String dollarVariable) throws
TemplateBuilderException {
+ return splitDollarVariable(dollarVariable)[0];
+ }
+
+ public static String extractRawFormatting(String dollarVariable) throws
TemplateBuilderException {
+ return splitDollarVariable(dollarVariable)[1];
+ }
+
+ public static String[] splitDollarVariable(String dollarVariable) throws
TemplateBuilderException {
+ String[] splitTokens = new String[2];
+
dollarVariable = dollarVariable.trim();
if(isDollarVariable(dollarVariable)) {
@@ -36,16 +50,65 @@
int questionMarkIdx = withoutDollarBrace.indexOf('?'); //$NON-NLS-1$
if(questionMarkIdx != -1) {
- return withoutDollarBrace.substring(0, questionMarkIdx);
+ splitTokens[0] = withoutDollarBrace.substring(0, questionMarkIdx);
+ splitTokens[1] = withoutDollarBrace.substring(questionMarkIdx + 1); // the raw
formatting
} else {
- return withoutDollarBrace;
+ splitTokens[0] = withoutDollarBrace;
+ splitTokens[1] = null; // no formatting
}
+
+ if(splitTokens[0].endsWith("!")) { //$NON-NLS-1$
+ splitTokens[0] = splitTokens[0].substring(0, splitTokens[0].length() - 1);
+ }
} else {
throw new TemplateBuilderException("Unsupported FreeMarker variable syntax
'" + dollarVariable + "'."); //$NON-NLS-1$
}
+
+ return splitTokens;
}
public static boolean isDollarVariable(String variable) {
return (variable.startsWith("${") &&
variable.endsWith("}")); //$NON-NLS-1$
}
+
+ public static String toFreeMarkerVariable(ValueMapping mapping) {
+ StringBuilder builder = new StringBuilder();
+ Properties encodeProperties = mapping.getEncodeProperties();
+ String rawFormatting;
+
+ if(encodeProperties == null) {
+ encodeProperties = new Properties();
+ }
+
+ builder.append("${" + mapping.getSrcPath() + "!?");
+
+ rawFormatting = encodeProperties.getProperty(ValueMapping.RAW_FORMATING_KEY);
+ if(rawFormatting != null) {
+ builder.append(rawFormatting);
+ builder.append("}");
+ } else {
+ Class<?> valueType = mapping.getValueType();
+ if(valueType != null) {
+
+ if(valueType == java.util.Date.class) {
+ String format = encodeProperties.getProperty(DateDecoder.FORMAT);
+ if(format != null) {
+ builder.append("string('" + format + "')}");
+ } else {
+ builder.append("string.medium}");
+ }
+ } else if(Number.class.isAssignableFrom(valueType)) {
+ builder.append("c}");
+ } else if(valueType == Double.TYPE || valueType == Float.TYPE || valueType ==
Integer.TYPE || valueType == Long.TYPE || valueType == Short.TYPE) {
+ builder.append("c}");
+ } else {
+ builder.append("string}");
+ }
+ } else {
+ builder.append("string}");
+ }
+ }
+
+ return builder.toString();
+ }
}
\ No newline at end of file
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -39,6 +39,7 @@
import org.jboss.tools.smooks.templating.model.ModelBuilder.ElementType;
import org.jboss.tools.smooks.templating.model.xml.XSDModelBuilder;
import org.jboss.tools.smooks.templating.template.*;
+import org.jboss.tools.smooks.templating.template.exception.InvalidMappingException;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
import org.jboss.tools.smooks.templating.template.util.FreeMarkerUtil;
import org.milyn.xml.DomUtils;
@@ -79,7 +80,7 @@
* existing FreeMarker template.
*
* @param modelBuilder The {@link ModelBuilder} instance that describes the XML model
(e.g. {@link XSDModelBuilder}).
- * @param ftlTemplate FreeMarker template from which to extract existing {@link Mapping
mappings}.
+ * @param ftlTemplate FreeMarker template from which to extract existing {@link
ValueMapping mappings}.
* @throws ModelBuilderException Invalid {@link ModelBuilder} instance.
* @throws TemplateBuilderException Error processing FreeMarker template.
*/
@@ -174,7 +175,7 @@
Mapping mapping = getMapping(attribute);
if(mapping != null) {
- writeAttribute(attribute.getNodeName(), "${" + mapping.getSrcPath() +
"?string}", templateWriter); //$NON-NLS-1$
+ writeAttribute(attribute.getNodeName(),
FreeMarkerUtil.toFreeMarkerVariable((ValueMapping)mapping), templateWriter);
//$NON-NLS-1$
} else if(ModelBuilder.isRequired(attribute)) {
writeAttribute(attribute.getNodeName(), attribute.getValue(), templateWriter);
}
@@ -196,11 +197,13 @@
}
private void writeAttribute(String name, String value, Writer templateWriter) throws
IOException {
+ char quoteChar = (value.indexOf('\"') != -1) ? '\'' :
'\"';
+
templateWriter.write(' '); //$NON-NLS-1$
templateWriter.write(name);
- templateWriter.write("=\""); //$NON-NLS-1$
+ templateWriter.write("=" + quoteChar); //$NON-NLS-1$
templateWriter.write(value);
- templateWriter.write("\""); //$NON-NLS-1$
+ templateWriter.write(quoteChar); //$NON-NLS-1$
}
private int writeElementChildren(Element element, int indent, Writer templateWriter)
throws IOException {
@@ -213,7 +216,7 @@
if(ModelBuilder.getElementType(element) == ElementType.simple) {
templateWriter.write(">"); //$NON-NLS-1$
if(mapping != null) {
- templateWriter.write("${" + mapping.getSrcPath() + "?string}");
//$NON-NLS-1$
+ templateWriter.write(FreeMarkerUtil.toFreeMarkerVariable((ValueMapping)mapping));
} else {
templateWriter.write(ModelBuilder.REQUIRED);
}
@@ -297,10 +300,7 @@
// Handle the element itself...
if(FreeMarkerUtil.isDollarVariable(elementText)) {
- String srcPath = FreeMarkerUtil.extractJavaPath(elementText);
- Node targetModelNode = modelNodeResolver.resolveNodeMapping(element);
-
- addValueMapping(srcPath, targetModelNode);
+ addValueMapping(element, modelNodeResolver, elementText);
}
// Add mappings for the attributes...
@@ -313,10 +313,7 @@
String attrValue = attribute.getValue();
if(FreeMarkerUtil.isDollarVariable(attrValue)) {
- String srcPath = FreeMarkerUtil.extractJavaPath(attrValue);
- Node targetModelNode = modelNodeResolver.resolveNodeMapping(attribute);
-
- addValueMapping(srcPath, targetModelNode);
+ addValueMapping(attribute, modelNodeResolver, attrValue);
}
}
}
@@ -361,7 +358,11 @@
rewriteTemplateElement(children.nextElement(), templateRewriteBuffer);
}
} else {
- templateRewriteBuffer.append(element.getCanonicalForm());
+ if(element.getClass().getSimpleName().equals("DollarVariable")) {
+ templateRewriteBuffer.append(element.toString());
+ } else {
+ templateRewriteBuffer.append(element.getCanonicalForm());
+ }
}
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/models/EDIMappingNodeGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/models/EDIMappingNodeGraphModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/edimap/models/EDIMappingNodeGraphModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -138,8 +138,8 @@
* (org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection)
*/
@Override
- public void addTargetConnection(TreeNodeConnection connection) {
- super.addTargetConnection(connection);
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
+ super.addTargetConnection(connection, sourceNode);
}
/*
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -258,7 +258,7 @@
}
}
- public void addTargetConnection(TreeNodeConnection connection) {
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
if (this.targetConnections.indexOf(connection) == -1) {
this.targetConnections.add(connection);
support.firePropertyChange(PRO_ADD_TARGET_CONNECTION, null, connection);
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeConnection.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeConnection.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeConnection.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -60,7 +60,7 @@
}
public void connectTarget() {
- targetNode.addTargetConnection(this);
+ targetNode.addTargetConnection(this, sourceNode);
}
public void disconnectSource() {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigChildNodeGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigChildNodeGraphModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigChildNodeGraphModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -23,6 +23,7 @@
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
/**
* @author Dart
@@ -141,8 +142,8 @@
}
@Override
- public void addTargetConnection(TreeNodeConnection connection) {
- super.addTargetConnection(connection);
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
+ super.addTargetConnection(connection, sourceNode);
Object model = getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model instanceof EObject) {
@@ -176,4 +177,12 @@
domainProvider.getEditingDomain().getCommandStack().execute(command);
}
}
+
+ /**
+ * Add the resource type info to Value Mapping instance.
+ * @param mapping The Value Mapping instance.
+ */
+ public void addMappingTypeInfo(ValueMapping mapping) {
+ // Override in implementation to add typing info associated with implementation type.
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigGraphModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/AbstractResourceConfigGraphModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -23,6 +23,7 @@
import org.jboss.tools.smooks.gef.tree.model.TreeContainerModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
/**
* @author Dart
@@ -57,8 +58,8 @@
ILabelProvider labelProvider);
@Override
- public void addTargetConnection(TreeNodeConnection connection) {
- super.addTargetConnection(connection);
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
+ super.addTargetConnection(connection, sourceNode);
Object model = getData();
if (model instanceof EObject) {
EStructuralFeature feature = null;
@@ -141,5 +142,4 @@
// }
}
}
-
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -17,6 +17,7 @@
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.template.Mapping;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.w3c.dom.Attr;
import org.w3c.dom.Node;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -24,12 +24,15 @@
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
+import
org.jboss.tools.smooks.graphical.editors.model.AbstractResourceConfigChildNodeGraphModel;
+import org.jboss.tools.smooks.graphical.editors.model.AbstractResourceConfigGraphModel;
import org.jboss.tools.smooks.graphical.editors.model.javamapping.JavaBeanGraphModel;
import org.jboss.tools.smooks.model.freemarker.Freemarker;
import org.jboss.tools.smooks.model.freemarker.Template;
import org.jboss.tools.smooks.model.javabean12.BeanType;
import org.jboss.tools.smooks.model.javabean12.ValueType;
import org.jboss.tools.smooks.templating.template.Mapping;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.jboss.tools.smooks.templating.template.exception.InvalidMappingException;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
@@ -109,7 +112,7 @@
* (org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection)
*/
@Override
- public void addTargetConnection(TreeNodeConnection connection) {
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
TemplateBuilder builder = getTemplateBuilder();
Object obj = this.getData();
Node node = null;
@@ -165,11 +168,16 @@
mappingString =
FreemarkerCSVContentGenerator.generateJavaSourcePathWithoutRootNode(
mappingSourceNode, collectionJavaBean);
}
- Mapping mapping = builder.addValueMapping(mappingString, node);
+
+ ValueMapping mapping = builder.addValueMapping(mappingString, node);
+ if(sourceNode instanceof AbstractResourceConfigChildNodeGraphModel) {
+ ((AbstractResourceConfigChildNodeGraphModel)sourceNode).addMappingTypeInfo(mapping);
+ }
+
connection.setData(mapping);
}
changeFreemarkerContents();
- super.addTargetConnection(connection);
+ super.addTargetConnection(connection, sourceNode);
} catch (InvalidMappingException e) {
e.printStackTrace();
}
@@ -267,7 +275,7 @@
Object mapping = connection.getData();
if (builder == null || mapping == null)
return;
- if (mapping instanceof Mapping) {
+ if (mapping instanceof ValueMapping) {
builder.removeMapping((Mapping) mapping);
changeFreemarkerContents();
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -19,6 +19,7 @@
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.template.Mapping;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -10,34 +10,33 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.model.javamapping;
-import java.lang.reflect.Field;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URL;
-import java.nio.charset.Charset;
+import java.lang.reflect.Method;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.Collections;
-import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.Properties;
+import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.command.CompoundCommand;
import org.eclipse.emf.ecore.EObject;
+import
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl.ContainmentUpdatingFeatureMapEntry;
import org.eclipse.emf.edit.command.AddCommand;
import org.eclipse.emf.edit.command.DeleteCommand;
import org.eclipse.emf.edit.command.SetCommand;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.WrapperItemProvider;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.swt.graphics.Image;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.editors.GraphicsConstants;
+import org.jboss.tools.smooks.configuration.editors.uitls.ProjectClassLoader;
import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
-import org.jboss.tools.smooks.configuration.editors.uitls.ProjectClassLoader;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
@@ -55,6 +54,7 @@
import org.jboss.tools.smooks.model.javabean12.ValueType;
import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -249,7 +249,7 @@
* .smooks.gef.tree.model.TreeNodeConnection)
*/
@Override
- public void addTargetConnection(TreeNodeConnection connection) {
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
Object model = getData();
model = AdapterFactoryEditingDomain.unwrap(model);
if (model instanceof ValueType) {
@@ -294,7 +294,7 @@
}
}
} else {
- super.addTargetConnection(connection);
+ super.addTargetConnection(connection, sourceNode);
}
}
@@ -399,4 +399,62 @@
}
+ /* (non-Javadoc)
+ * @see
org.jboss.tools.smooks.graphical.editors.model.AbstractResourceConfigGraphModel#addMappingTypeInfo(org.jboss.tools.smooks.templating.template.ValueMapping)
+ */
+ @Override
+ public void addMappingTypeInfo(ValueMapping mapping) {
+ if(getData() instanceof WrapperItemProvider) {
+ WrapperItemProvider sourceData = (WrapperItemProvider) getData();
+ BeanType bean = (BeanType) sourceData.getOwner();
+ ValueType valueBinding = (ValueType)
((ContainmentUpdatingFeatureMapEntry)sourceData.getValue()).getValue();
+
+ mapping.setValueType(getPropertyType(bean, valueBinding));
+ if(mapping.getEncodeProperties() == null) {
+ mapping.setEncodeProperties(getDecoderParams(valueBinding));
+ }
+ }
+ }
+
+ private Class<?> getPropertyType(BeanType bean, ValueType valueBinding) {
+ try {
+ IJavaProject project = SmooksUIUtils.getJavaProject(bean);
+ ProjectClassLoader classLoader = new ProjectClassLoader(project);
+ Class<?> beanClass = classLoader.loadClass(bean.getClass_());
+ String targetProperty = valueBinding.getProperty();
+
+ if(targetProperty != null && !targetProperty.trim().equals("")) {
+ StringBuilder getterNameBuilder = new StringBuilder();
+
+ getterNameBuilder.append(targetProperty);
+ getterNameBuilder.setCharAt(0, Character.toUpperCase(targetProperty.charAt(0)));
+ getterNameBuilder.insert(0, "get");
+
+ try {
+ Method getterMethod = beanClass.getMethod(getterNameBuilder.toString(), new Class[]
{});
+ return getterMethod.getReturnType();
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ } catch (NoSuchMethodException e) {
+ }
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (JavaModelException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ private Properties getDecoderParams(ValueType valueBinding) {
+ Properties decodeParams = new Properties();
+ EList decodeParamsList = valueBinding.getDecodeParam();
+
+ for(int i = 0; i < decodeParamsList.size(); i++) {
+ DecodeParamType decodeParamObj = (DecodeParamType) decodeParamsList.get(i);
+ decodeParams.setProperty(decodeParamObj.getName(), decodeParamObj.getValue());
+ }
+
+ return decodeParams;
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/xsl/XSLNodeGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/xsl/XSLNodeGraphicalModel.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/xsl/XSLNodeGraphicalModel.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -197,7 +197,7 @@
* (org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection)
*/
@Override
- public void addTargetConnection(TreeNodeConnection connection) {
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
AbstractSmooksGraphicalModel sourceModel = connection.getSourceNode();
Object source = sourceModel.getData();
String selectorString = null;
@@ -242,7 +242,7 @@
}
}
- super.addTargetConnection(connection);
+ super.addTargetConnection(connection, sourceNode);
setXSLContents(getXSLContents());
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateConnectionModelFactory.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateConnectionModelFactory.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateConnectionModelFactory.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -29,6 +29,7 @@
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
import org.jboss.tools.smooks.graphical.editors.ConnectionModelFactoryImpl;
import org.jboss.tools.smooks.graphical.editors.editparts.SmooksGraphUtil;
+import
org.jboss.tools.smooks.graphical.editors.model.AbstractResourceConfigChildNodeGraphModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateConnection;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateGraphicalModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateNodeGraphicalModel;
@@ -37,6 +38,7 @@
import org.jboss.tools.smooks.model.javabean12.BeanType;
import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
import org.jboss.tools.smooks.templating.template.Mapping;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
import org.w3c.dom.Node;
@@ -159,6 +161,11 @@
targetNode.fireConnectionChanged();
collections.add(connection);
connection.setData(mapping);
+
+ if(sourceNode instanceof AbstractResourceConfigChildNodeGraphModel &&
mapping instanceof ValueMapping) {
+ ((AbstractResourceConfigChildNodeGraphModel)sourceNode).addMappingTypeInfo((ValueMapping)
mapping);
+ }
+
break;
}
}
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilderTest.java
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilderTest.java 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilderTest.java 2010-01-25
13:33:29 UTC (rev 19907)
@@ -47,17 +47,17 @@
builder1.addValueMapping("person.address.country",
getFieldElement(builder1.getModel(), "country"));
String template = builder1.buildTemplate();
- //System.out.println(template);
+ System.out.println(template);
assertEquals("<#list people as person>\n" +
-
"\"${person.fname?string}\",\"${person.lname?string}\",\"${person.address.country?string}\"\n"
+
+
"\"${person.fname!?string}\",\"${person.lname!?string}\",\"${person.address.country!?string}\"\n"
+
"</#list>",
template);
CSVFreeMarkerTemplateBuilder builder2 = new
CSVFreeMarkerTemplateBuilder(modelBuilder, ',', '\"', false,
template);
template = builder2.buildTemplate();
- //System.out.println(template);
+ System.out.println(template);
assertEquals("<#list people as person>\n" +
-
"\"${person.fname?string}\",\"${person.lname?string}\",\"${person.address.country?string}\"\n"
+
+
"\"${person.fname!?string}\",\"${person.lname!?string}\",\"${person.address.country!?string}\"\n"
+
"</#list>",
template);
}
@@ -77,7 +77,7 @@
//System.out.println(template);
assertEquals("\"firstname\",\"lastname\",\"country\"\n"
+
"<#list people as person>\n" +
-
"\"${person.fname?string}\",\"${person.lname?string}\",\"${person.address.country?string}\"\n"
+
+
"\"${person.fname!?string}\",\"${person.lname!?string}\",\"${person.address.country!?string}\"\n"
+
"</#list>",
template);
@@ -86,7 +86,7 @@
//System.out.println(template);
assertEquals("\"firstname\",\"lastname\",\"country\"\n"
+
"<#list people as person>\n" +
-
"\"${person.fname?string}\",\"${person.lname?string}\",\"${person.address.country?string}\"\n"
+
+
"\"${person.fname!?string}\",\"${person.lname!?string}\",\"${person.address.country!?string}\"\n"
+
"</#list>",
template);
}
@@ -107,7 +107,7 @@
String template = builder1.buildTemplate();
//System.out.println(template);
assertEquals("<#list people as person>\n" +
-
"'${person.fname?string}'|'${person.lname?string}'|'${person.address.country?string}'\n"
+
+
"'${person.fname!?string}'|'${person.lname!?string}'|'${person.address.country!?string}'\n"
+
"</#list>",
template);
@@ -115,7 +115,7 @@
template = builder2.buildTemplate();
//System.out.println(template);
assertEquals("<#list people as person>\n" +
-
"'${person.fname?string}'|'${person.lname?string}'|'${person.address.country?string}'\n"
+
+
"'${person.fname!?string}'|'${person.lname!?string}'|'${person.address.country!?string}'\n"
+
"</#list>",
template);
}
@@ -133,7 +133,7 @@
String template = builder.buildTemplate();
//System.out.println(template);
assertEquals("<#list people as person>\n" +
-
"\"${person.fname?string}\",,\"${person.address.country?string}\"\n"
+
+
"\"${person.fname!?string}\",,\"${person.address.country!?string}\"\n"
+
"</#list>",
template);
@@ -141,7 +141,7 @@
template = builder2.buildTemplate();
//System.out.println(template);
assertEquals("<#list people as person>\n" +
-
"\"${person.fname?string}\",,\"${person.address.country?string}\"\n"
+
+
"\"${person.fname!?string}\",,\"${person.address.country!?string}\"\n"
+
"</#list>",
template);
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-01.xml
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-01.xml 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-01.xml 2010-01-25
13:33:29 UTC (rev 19907)
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<ns0:creature
xmlns:ns0="http://www.example.org/creature/">
- <dog name="${dog?string}" />
+ <dog name="${dog!?string}" />
</ns0:creature>
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-02.xml
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-02.xml 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-02.xml 2010-01-25
13:33:29 UTC (rev 19907)
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<ns0:creature
xmlns:ns0="http://www.example.org/creature/">
- <cat>${cat?string}</cat>
+ <cat>${cat!?string}</cat>
</ns0:creature>
\ No newline at end of file
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-03.xml
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-03.xml 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/creature-03.xml 2010-01-25
13:33:29 UTC (rev 19907)
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<ns0:creature
xmlns:ns0="http://www.example.org/creature/">
<person>
- <name first="${firstName?string}"
last="${lastName?string}">
- <male>${male?string}</male>
+ <name first="${firstName!?string}"
last="${lastName!?string}">
+ <male>${male!?string}</male>
</name>
- <address>${address?string}</address>
- <age>${age?string}</age>
+ <address>${address!?string}</address>
+ <age>${age!?string}</age>
</person>
</ns0:creature>
\ No newline at end of file
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-01.xml
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-01.xml 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-01.xml 2010-01-25
13:33:29 UTC (rev 19907)
@@ -3,7 +3,7 @@
<ns0:OrderStatusResultHeader>
<ns0:BuyerParty>
<ns1:PartyID
xmlns:ns1="rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
- <ns1:Ident>${order.status.id?string}</ns1:Ident>
+ <ns1:Ident>${order.status.id!?string}</ns1:Ident>
</ns1:PartyID>
</ns0:BuyerParty>
</ns0:OrderStatusResultHeader>
Modified:
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-02.xml
===================================================================
---
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-02.xml 2010-01-25
13:14:36 UTC (rev 19906)
+++
trunk/smooks/tests/org.jboss.tools.smooks.templating.test/src/org/jboss/tools/smooks/templating/template/xml/expected/order-status-expected-02.xml 2010-01-25
13:33:29 UTC (rev 19907)
@@ -3,7 +3,7 @@
<ns0:OrderStatusResultHeader>
<ns0:BuyerParty>
<ns1:PartyID
xmlns:ns1="rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
- <ns1:Ident>${order.status.id?string}</ns1:Ident>
+ <ns1:Ident>${order.status.id!?string}</ns1:Ident>
</ns1:PartyID>
</ns0:BuyerParty>
</ns0:OrderStatusResultHeader>
@@ -11,7 +11,7 @@
<#list order.orderItemsStatusList as itemStatus>
<ns0:OrderStatusResultDetail>
<ns0:OrderStatusResultReference>
-
<ns0:BuyerReferenceNumber>${itemStatus.buyerRefNumber?string}</ns0:BuyerReferenceNumber>
+
<ns0:BuyerReferenceNumber>${itemStatus.buyerRefNumber!?string}</ns0:BuyerReferenceNumber>
</ns0:OrderStatusResultReference>
</ns0:OrderStatusResultDetail>
</#list>