You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2013/02/13 16:04:59 UTC
svn commit: r1445647 - in /myfaces/tobago/trunk:
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/
tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/
tobago-tool/tobago-tool-apt/src/main/java/org/apache...
Author: lofwyr
Date: Wed Feb 13 15:04:58 2013
New Revision: 1445647
URL: http://svn.apache.org/r1445647
Log:
TOBAGO-1221: Remove JSF 1.1 and JDK 1.4 support
- MethodBinding -> MethodExpression
Modified:
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/TagUtils.java
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentInfo.java
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentPropertyInfo.java
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component1.2.stg
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component2.0.stg
myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/tag1.2.stg
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/TagUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/TagUtils.java?rev=1445647&r1=1445646&r2=1445647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/TagUtils.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/TagUtils.java Wed Feb 13 15:04:58 2013
@@ -45,10 +45,17 @@ import javax.faces.el.ValueBinding;
import javax.faces.webapp.UIComponentTag;
import java.lang.reflect.InvocationTargetException;
-
+/**
+ * @deprecated since 1.6.0
+ */
+@Deprecated
public class TagUtils {
private static final Logger LOG = LoggerFactory.getLogger(TagUtils.class);
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setIntegerProperty(UIComponent component, String name, String value) {
if (value != null) {
if (UIComponentTag.isValueReference(value)) {
@@ -67,6 +74,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setBooleanProperty(UIComponent component, String name, String value) {
if (value != null) {
if (UIComponentTag.isValueReference(value)) {
@@ -77,6 +88,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setStringProperty(UIComponent component, String name, String value) {
if (value != null) {
if (UIComponentTag.isValueReference(value)) {
@@ -87,6 +102,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setConverterProperty(UIComponent component, String name, String value) {
if (value != null && component instanceof ValueHolder) {
final FacesContext facesContext = FacesContext.getCurrentInstance();
@@ -101,22 +120,42 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setSeverityProperty(UIComponent component, String name, String value) {
setStringProperty(component, name, value);
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setObjectProperty(UIComponent component, String name, String value) {
setStringProperty(component, name, value);
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setCharacterProperty(UIComponent component, String name, String value) {
setStringProperty(component, name, value);
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static ValueBinding createValueBinding(String value) {
return FacesContext.getCurrentInstance().getApplication().createValueBinding(value);
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setStateChangeListenerMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null && UIComponentTag.isValueReference(value)) {
MethodBinding methodBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(value, args);
@@ -124,6 +163,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setSortActionListenerMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null && UIComponentTag.isValueReference(value)) {
MethodBinding methodBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(value, args);
@@ -131,6 +174,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setSuggestMethodMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null && UIComponentTag.isValueReference(value)) {
MethodBinding methodBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(value, args);
@@ -138,6 +185,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setValueChangeListenerMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null && UIComponentTag.isValueReference(value)) {
MethodBinding methodBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(value, args);
@@ -145,6 +196,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setValidatorMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null && UIComponentTag.isValueReference(value)) {
MethodBinding methodBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(value, args);
@@ -152,6 +207,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setActionListenerMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null && UIComponentTag.isValueReference(value)) {
MethodBinding methodBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(value, args);
@@ -159,6 +218,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setActionMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null) {
if (UIComponentTag.isValueReference(value)) {
@@ -171,6 +234,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setTabChangeListenerMethodBinding(UIComponent component, String value, Class[] args) {
if (value != null && UIComponentTag.isValueReference(value)) {
MethodBinding methodBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(value, args);
@@ -178,6 +245,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setStringArrayProperty(UIComponent component, String name, String value) {
if (value != null) {
if (UIComponentTag.isValueReference(value)) {
@@ -197,6 +268,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setValueBindingProperty(UIComponent component, String name, String value) {
if (value != null && UIComponentTag.isValueReference(value)) {
ValueBinding valueBinding = createValueBinding(value);
@@ -204,6 +279,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static void setOrderByProperty(UIComponent component, String name, String value) {
if (value != null) {
if (UIComponentTag.isValueReference(value)) {
@@ -214,6 +293,10 @@ public class TagUtils {
}
}
+ /**
+ * @deprecated since 1.6.0
+ */
+ @Deprecated
public static String getValueFromEl(String script) {
if (UIComponentTag.isValueReference(script)) {
ValueBinding valueBinding = createValueBinding(script);
Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentInfo.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentInfo.java?rev=1445647&r1=1445646&r2=1445647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentInfo.java (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentInfo.java Wed Feb 13 15:04:58 2013
@@ -61,21 +61,13 @@ public class ComponentInfo extends TagIn
this.invokeOnComponent = invokeOnComponent;
}
- public void addPropertyInfo(ComponentPropertyInfo propertyInfo, ComponentPropertyInfo elAlternative) {
+ public void addPropertyInfo(ComponentPropertyInfo propertyInfo) {
getProperties().add(propertyInfo);
propertyInfo.setIndex(index);
- if (elAlternative != null) {
- getProperties().add(elAlternative);
- elAlternative.setIndex(index);
- }
index++;
if (!propertyInfo.isTransient()) {
nonTransientProperties.add(propertyInfo);
propertyInfo.setNonTransientIndex(nonTransientIndex);
- if (elAlternative != null) {
- nonTransientProperties.add(elAlternative);
- elAlternative.setNonTransientIndex(nonTransientIndex);
- }
nonTransientIndex++;
} else {
transientProperties.add(propertyInfo);
Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentPropertyInfo.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentPropertyInfo.java?rev=1445647&r1=1445646&r2=1445647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentPropertyInfo.java (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/generate/ComponentPropertyInfo.java Wed Feb 13 15:04:58 2013
@@ -21,7 +21,6 @@ package org.apache.myfaces.tobago.apt.ge
public class ComponentPropertyInfo extends PropertyInfo {
private int index;
- private boolean elAlternativeAvailable;
private int nonTransientIndex;
public String getPropertyTemplate() {
@@ -59,12 +58,4 @@ public class ComponentPropertyInfo exten
public int getIndexPlusOne() {
return index + 1;
}
-
- public boolean isElAlternativeAvailable() {
- return elAlternativeAvailable;
- }
-
- public void setElAlternativeAvailable(boolean elAlternativeAvailable) {
- this.elAlternativeAvailable = elAlternativeAvailable;
- }
}
Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java?rev=1445647&r1=1445646&r2=1445647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java Wed Feb 13 15:04:58 2013
@@ -181,13 +181,12 @@ public class ClassesGenerator extends Ab
componentInfo.setSuperClass(componentTag.uiComponentBaseClass());
componentInfo.setDescription(getDescription(declaration));
componentInfo.setDeprecated(declaration.getAnnotation(Deprecated.class) != null);
- List<String> elMethods = checkForElMethods(componentInfo, componentTag.interfaces());
for (String interfaces : componentTag.interfaces()) {
componentInfo.addInterface(interfaces);
}
- Class<? extends UIComponent> facesClass
- = Class.forName(componentTag.uiComponentFacesClass()).asSubclass(UIComponent.class);
+ Class<? extends UIComponent> facesClass
+ = Class.forName(componentTag.uiComponentFacesClass()).asSubclass(UIComponent.class);
for (PropertyInfo info : properties.values()) {
final String infoType = info.getType();
@@ -205,11 +204,10 @@ public class ClassesGenerator extends Ab
// generate = true
}
if (generate) {
- addPropertyToComponent(componentInfo, info, elMethods, false);
+ addPropertyToComponent(componentInfo, info);
}
-// }
- }
+ }
/* boolean found = false;
for (Method method : componentBaseClass.getMethods()) {
if ("invokeOnComponent".equals(method.getName())) {
@@ -235,57 +233,13 @@ public class ClassesGenerator extends Ab
}
}
*/
-/* }
-*/
componentStringTemplate.setAttribute("componentInfo", componentInfo);
writeFile(componentInfo, componentStringTemplate);
}
}
- private List<String> checkForElMethods(ComponentInfo info, String[] interfaces) {
- List<String> elMethods = new ArrayList<String>();
- for (String interfaceName : interfaces) {
- try {
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- info(interfaceName);
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("currently not working!!! ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- Class.forName(interfaceName);
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info(" 1 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- Class interfaceClass2 = Class.forName(interfaceName + "2");
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info(" 2 ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- info.addInterface(interfaceClass2.getName());
- for (Method method : interfaceClass2.getMethods()) {
- Class[] parameter = method.getParameterTypes();
- if (parameter.length == 1 && "javax.el.MethodExpression".equals(parameter[0].getName())) {
- elMethods.add(method.getName());
- }
- }
- } catch (ClassNotFoundException e) {
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info(" X ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- info("/////////////////////////////////////////////////////////////////////////////////////////////////////");
- // ignore
- }
- }
- return elMethods;
-
- }
-
+/*
private Map<String, PropertyInfo> getBaseClassProperties(String baseClass) {
for (TypeElement typeElement : getTypes()) {
@@ -301,44 +255,30 @@ public class ClassesGenerator extends Ab
}
throw new IllegalStateException("No UIComponentTag found for componentClass " + baseClass);
}
+*/
- private ComponentPropertyInfo addPropertyToComponent(
- ComponentInfo componentInfo, PropertyInfo info, List<String> elMethods, boolean methodExpression) {
-
- ComponentPropertyInfo componentPropertyInfo = (ComponentPropertyInfo) info.fill(new ComponentPropertyInfo());
- String possibleUnifiedElAlternative = "set" + info.getUpperCamelCaseName() + "Expression";
- ComponentPropertyInfo elAlternative = null;
-
- if (elMethods.contains(possibleUnifiedElAlternative) && !methodExpression) {
- elAlternative = addPropertyToComponent(componentInfo, info, elMethods, true);
- componentPropertyInfo.setElAlternativeAvailable(true);
- }
+ private ComponentPropertyInfo addPropertyToComponent(ComponentInfo componentInfo, PropertyInfo info) {
+ final ComponentPropertyInfo componentPropertyInfo = (ComponentPropertyInfo) info.fill(new ComponentPropertyInfo());
componentInfo.addImport(componentPropertyInfo.getUnmodifiedType());
componentInfo.addImport("javax.faces.context.FacesContext");
-
if ("markup".equals(info.getName())) {
componentInfo.addInterface("org.apache.myfaces.tobago.component.SupportsMarkup");
}
if ("requiredMessage".equals(info.getName())) {
componentInfo.setMessages(true);
}
- if (methodExpression) {
- componentPropertyInfo.setType("javax.el.MethodExpression");
- componentPropertyInfo.setName(info.getName() + "Expression");
- } else {
- componentInfo.addPropertyInfo(componentPropertyInfo, elAlternative);
- }
+ componentInfo.addPropertyInfo(componentPropertyInfo);
return componentPropertyInfo;
}
private void createRenderer(TypeElement declaration) throws IOException {
- UIComponentTag componentTag = declaration.getAnnotation(UIComponentTag.class);
- String rendererType = componentTag.rendererType();
+ final UIComponentTag componentTag = declaration.getAnnotation(UIComponentTag.class);
+ final String rendererType = componentTag.rendererType();
if (rendererType != null && rendererType.length() > 0) {
- String className = "org.apache.myfaces.tobago.renderkit." + rendererType + "Renderer";
+ final String className = "org.apache.myfaces.tobago.renderkit." + rendererType + "Renderer";
if (renderer.contains(className)) {
// already created
return;
Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component1.2.stg
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component1.2.stg?rev=1445647&r1=1445646&r2=1445647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component1.2.stg (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component1.2.stg Wed Feb 13 15:04:58 2013
@@ -518,17 +518,11 @@ public void set<property.upperCamelCaseN
>>
field() ::= <<
-<if(it.elAlternativeAvailable)>
-<else>
private <it.internalType> <it.propertyName>;
-<endif>
>>
resetField() ::= <<
-<if(it.elAlternativeAvailable)>
-<else>
<it.propertyName> = null;
-<endif>
>>
restoreStateField() ::= <<
@@ -596,10 +590,7 @@ values[<it.nonTransientIndexPlusOne>] =
>>
MethodBindingSaveStateProperty() ::= <<
-<if(it.elAlternativeAvailable)>
-<else>
values[<it.nonTransientIndexPlusOne>] = saveAttachedState(context, <it.propertyName>);
-<endif>
>>
MethodExpressionSaveStateProperty() ::= <<
@@ -663,10 +654,7 @@ OrderByRestoreStateProperty() ::= <<
>>
MethodBindingRestoreStateProperty() ::= <<
-<if(it.elAlternativeAvailable)>
-<else>
<it.propertyName> = (<it.type>) restoreAttachedState(context, values[<it.nonTransientIndexPlusOne>]);
-<endif>
>>
MethodExpressionRestoreStateProperty() ::= <<
Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component2.0.stg
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component2.0.stg?rev=1445647&r1=1445646&r2=1445647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component2.0.stg (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/component2.0.stg Wed Feb 13 15:04:58 2013
@@ -495,22 +495,13 @@ public void set<property.upperCamelCaseN
>>
enumName() ::= <<
-<if(it.elAlternativeAvailable)>
-<else>
<it.propertyName>,
-<endif>
>>
field() ::= <<
-<if(it.elAlternativeAvailable)>
-<else>
private <it.internalType> <it.propertyName>;
-<endif>
>>
resetField() ::= <<
-<if(it.elAlternativeAvailable)>
-<else>
<it.propertyName> = null;
-<endif>
>>
Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/tag1.2.stg
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/tag1.2.stg?rev=1445647&r1=1445646&r2=1445647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/tag1.2.stg (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/resources/org/apache/myfaces/tobago/apt/tag1.2.stg Wed Feb 13 15:04:58 2013
@@ -363,11 +363,6 @@ if (<it.propertyName> != null) {
}
>>
-createMethodBinding(it) ::= <<
-final javax.faces.el.MethodBinding methodBinding = application.createMethodBinding(<it.propertyName>.getExpressionString(),
- new Class[] { <first(it.methodSignature):{ n | <n>.class }><rest(it.methodSignature):{ n | , <n>.class}>} );
->>
-
createStringProperty(it) ::= <<
if (<it.propertyName> != null) {
<if(it.literalOnly)>