TRINIDAD-1414 - Implement support for specifying List<String> attribute type as String
Applying the plugin specific patch;
Thanks to Yee-wah Lee
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java
index 6070690..52f573c 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/GeneratorHelper.java
@@ -72,6 +72,17 @@
"java.awt.Color".equals(propClassParams[0]));
}
+ // Allows List of known types, kept in sync
+ // with UIXComponentELTag's set*List methods.
+ public static boolean isKnownTypeList (
+ String propClass,
+ String[] propClassParams)
+ {
+ return ("java.util.List".equals(propClass) &&
+ propClassParams.length == 1 &&
+ "java.lang.String".equals(propClassParams[0]));
+ }
+
public static boolean isColor(
String propClass)
{
diff --git a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
index 72e06b7..885fb0d 100644
--- a/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
+++ b/maven-faces-plugin/src/main/java/org/apache/myfaces/trinidadbuild/plugin/faces/generator/taglib/TrinidadComponentTagGenerator.java
@@ -291,6 +291,12 @@
{
_writeSetColor(out, componentClass, propName, false);
}
+ else if (GeneratorHelper.isKnownTypeList(propClass,
+ property.getPropertyClassParameters()))
+ {
+ _writeSetKnownTypeList (out, componentClass, propName,
+ property.getPropertyClassParameters()[0]);
+ }
else if (GeneratorHelper.isConverter(propClass))
{
_writeSetConverter(out, componentClass, propName);
@@ -849,6 +855,63 @@
out.println("}");
}
+ private void _writeSetKnownTypeList(
+ PrettyWriter out,
+ String componentClass,
+ String propName,
+ String propFullClass) throws IOException
+ {
+ String propKey = Util.getConstantNameFromProperty(propName, "_KEY");
+ String propVar = "_" + propName;
+
+ String propClass = Util.getClassFromFullClass(propFullClass);
+ String boxedClass = Util.getBoxedClass(propClass);
+
+ System.out.println ("_writeSetList: propFullClass = " + propFullClass +
+ " propClass= " + propClass +
+ " boxedClass=" + boxedClass);
+ if (_is12)
+ {
+ out.println("set" + boxedClass + "ListProperty" +
+ "(bean, " + componentClass + "." + propKey +
+ ", " + propVar + ");");
+ }
+ else
+ {
+ out.println("if (" + propVar + " != null)");
+ out.println("{");
+ out.indent();
+ out.println("if (isValueReference(" + propVar + "))");
+ out.println("{");
+ out.indent();
+ out.println("ValueBinding vb = createValueBinding(" + propVar + ");");
+ out.println("bean.setValueBinding(" + componentClass + "." + propKey + ", vb);");
+ out.unindent();
+ out.println("}");
+ out.println("else");
+ out.println("{");
+ out.indent();
+ out.println("try");
+ out.println("{");
+ out.indent();
+ out.println("bean.setProperty(" + componentClass + "." + propKey + ",");
+ out.println(" TagUtils.getStringList(" + propVar + "));");
+ out.unindent();
+ out.println("}");
+ out.println("catch (ParseException pe)");
+ out.println("{");
+ out.indent();
+ out.println("setValidationError(");
+ out.println(" pe.getMessage() + \": \" + \"Position \" + pe.getErrorOffset());");
+ out.unindent();
+ out.println("}");
+ out.unindent();
+ out.println("}");
+ out.unindent();
+ out.println("}");
+ }
+ }
+
private void _writeSetConverter(
PrettyWriter out,