protected void writePropertyListMethods()

in maven2-plugins/myfaces-faces-plugin/src/main/java/org/apache/myfaces/buildtools/maven2/plugin/faces/generator/component/MyFacesComponentGenerator.java [159:271]


  protected void writePropertyListMethods(PrettyWriter out, PropertyBean property, Collection ignoreList)
  {
    String propName = property.getPropertyName();
    String generic;
    String type;
    boolean isValidator = GeneratorHelper.isValidator(property, _is12);
    if (isValidator)
    {
      generic = "<Validator>";
      type = "Validator";
    }
    else if (property.getAttributeClassParameters().length == 1)
    {
      generic = Util.getGenericsFromProperty(property);
      type = Util.getClassFromFullClass(property.getAttributeClassParameters()[0]);
    }
    else
    {
      throw new IllegalArgumentException("only one Generic Parameter is allowed for Lists");
    }

    String singularName = getSingular(propName);
    String propVar = Util.getVariableFromName(singularName);
    String description = property.getDescription();
    String addMethod = Util.getPrefixedPropertyName("add", singularName);
    String removeMethod = Util.getPrefixedPropertyName("remove", singularName);
    String getMethod = Util.getPrefixedPropertyName("get", singularName + "s");
    String fieldPropName = property.getFieldPropertyName() + (isValidator ? "List" : "");

    out.println();
    out.println("// Property: " + propName);
    out.println("private List" + generic + " " + fieldPropName + ";");
    if (ignoreList == null || !ignoreList.contains(addMethod))
    {
      out.println();
      out.println("/**");
      if (description != null)
      {
        out.println(" * Adds a " + convertMultilineComment(description));
      }
      out.println(" */");
      out.println("public void " + addMethod + "( " + type + " " +
          propVar + ")");
      out.println("{");
      out.indent();
      out.println("if (" + propVar + " == null) throw new NullPointerException(\"" + propVar + "\");");
      out.println("if (" + fieldPropName + " == null)");
      out.println("  " + fieldPropName + " = new ArrayList" + generic + "();");
      out.println();
      out.println(fieldPropName + ".add(" + propVar + ");");
      out.unindent();
      out.println("}");
    }

    if (ignoreList == null || !ignoreList.contains(removeMethod))
    {
      out.println();
      out.println("/**");
      if (description != null)
      {
        out.println(" * Removes a " + convertMultilineComment(description));
      }
      out.println(" */");
      out.println("public void " + removeMethod + "( " + type + " " + propVar + ")");
      out.println("{");
      out.indent();
      out.println("if (" + propVar + " == null || " + fieldPropName + " == null)");
      out.println("  return;");
      out.println();
      out.println(fieldPropName + ".remove(" + propVar + ");");
      out.unindent();
      out.println("}");
    }

    if (ignoreList == null || !ignoreList.contains(getMethod))
    {
      if (isValidator)
      {
        out.println("private static final " + type + "[] EMPTY_" + type.toUpperCase() + "_ARRAY = new " + type + "[0];");
      }
      out.println();
      out.println("/**");
      if (description != null)
      {
        out.println(" * Gets all " + convertMultilineComment(description));
      }
      out.println(" */");
      if (isValidator)
      {
        out.println("public " + type + "[] " + getMethod + "()");
      }
      else
      {
        out.println("public List" + generic + " " + getMethod + "()");
      }
      out.println("{");
      out.indent();
      if (isValidator)
      {
        out.println("return " + fieldPropName + "== null? EMPTY_" + type.toUpperCase() + "_ARRAY : " + fieldPropName + ".toArray(new " + type + "[" + fieldPropName + ".size()]);");
      }
      else
      {
        out.println("if (" + fieldPropName + " == null)");
        out.indent();
        out.println(fieldPropName + " = new ArrayList<" + type + ">();");
        out.unindent();
        out.println("return " + fieldPropName + ";");
      }
      out.unindent();
      out.println("}");
    }
  }