Author: bpoussin Date: 2012-01-02 17:56:31 +0100 (Mon, 02 Jan 2012) New Revision: 1273 Url: http://nuiton.org/repositories/revision/wikitty/1273 Log: Evolution #1674: Change method argument for collection adder method in generated object - addAll(Collection - add(<Type>... - remove(<Type>... Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2012-01-02 15:08:12 UTC (rev 1272) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2012-01-02 16:56:31 UTC (rev 1273) @@ -704,7 +704,7 @@ } @Override - public void addAllLabels(Set<String> labels) { + public void addAllLabels(Collection<String> labels) { this.labels.addAll(labels); } @@ -713,8 +713,10 @@ * @param element */ @Override - public void addLabels(String element) { - labels.add(element); + public void addLabels(String... element) { + for (String v : element) { + labels.add(v); + } } /** @@ -722,8 +724,10 @@ * @param element */ @Override - public void removeLabels(String element) { - labels.remove(element); + public void removeLabels(String... element) { + for (String v : element) { + labels.remove(v); + } } /** Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2012-01-02 15:08:12 UTC (rev 1272) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2012-01-02 16:56:31 UTC (rev 1273) @@ -338,17 +338,23 @@ if (WikittyTransformerUtil.isAttributeCollection(attribute)) { // attributed is a collection, we will generate operations get, add, remove and clear - String attributeTypeSimpleNameInSet = WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionStrict = + WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionGeneric = + "Collection<" + attributeType + ">"; + String attributeTypeVarargs = attributeType + "..."; + String getFieldMethodName = WikittyTransformerUtil.generateGetFieldAsCall(attribute); // now, for this attribute, we will generate add, remove and clear methods // adding operations to contract getterName = "get" + StringUtils.capitalize(attributeName); - ObjectModelOperation getter = addOperation(abstractClass, getterName, attributeTypeSimpleNameInSet); + ObjectModelOperation getter = addOperation( + abstractClass, getterName, attributeTypeCollectionStrict); addAnnotation(abstractClass, getter, "Override"); String getterBody = "" /*{ - <%=attributeTypeSimpleNameInSet%> result = <%=helperClassName%>.<%=getterName%>(getWikitty()); + <%=attributeTypeCollectionStrict%> result = <%=helperClassName%>.<%=getterName%>(getWikitty()); return result; }*/; setOperationBody(getter, getterBody); @@ -356,10 +362,10 @@ String setterName = "set" + capitalizedAttributeName; ObjectModelOperation setter = addOperation(abstractClass, setterName, "void"); addAnnotation(abstractClass, setter, "Override"); - addParameter(setter, attributeTypeSimpleNameInSet, attributeName); + addParameter(setter, attributeTypeCollectionStrict, attributeName); String setterBody = "" /*{ - <%=attributeTypeSimpleNameInSet%> oldValue = get<%=capitalizedAttributeName%>(); + <%=attributeTypeCollectionStrict%> oldValue = get<%=capitalizedAttributeName%>(); <%=helperClassName%>.<%=setterName%>(getWikitty(), <%=attributeName%>); getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, oldValue, <%= getter.getName() %>()); }*/; @@ -368,10 +374,10 @@ String addAllName = "addAll" + capitalizedAttributeName; ObjectModelOperation addAll = addOperation(abstractClass, addAllName, "void"); addAnnotation(abstractClass, addAll, "Override"); - addParameter(addAll, attributeTypeSimpleNameInSet, attributeName); + addParameter(addAll, attributeTypeCollectionGeneric, attributeName); String addAllBody = "" /*{ - <%=attributeTypeSimpleNameInSet%> oldValue = get<%=capitalizedAttributeName%>(); + <%=attributeTypeCollectionStrict%> oldValue = get<%=capitalizedAttributeName%>(); <%=helperClassName%>.<%=addAllName%>(getWikitty(), <%=attributeName%>); getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, oldValue, <%= getter.getName() %>()); }*/; @@ -380,22 +386,24 @@ String addName = "add" + capitalizedAttributeName; ObjectModelOperation adder = addOperation(abstractClass, addName, "void"); addAnnotation(abstractClass, adder, "Override"); - addParameter(adder, "String", "element"); + addParameter(adder, attributeTypeVarargs, "element"); String adderBody = "" /*{ + <%=attributeTypeCollectionStrict%> oldValue = get<%=capitalizedAttributeName%>(); <%=helperClassName%>.<%=addName%>(getWikitty(), element); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%= getter.getName() %>()); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, oldValue, <%= getter.getName() %>()); }*/; setOperationBody(adder, adderBody); String removeName = "remove" + StringUtils.capitalize(attributeName); ObjectModelOperation remover = addOperation(abstractClass, removeName, "void"); addAnnotation(abstractClass, remover, "Override"); - addParameter(remover, "String", "element"); + addParameter(remover, attributeTypeVarargs, "element"); String removerBody = "" /*{ + <%=attributeTypeCollectionStrict%> oldValue = get<%=capitalizedAttributeName%>(); <%=helperClassName%>.<%=removeName%>(getWikitty(), element); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, oldValue, <%=getter.getName()%>()); }*/; setOperationBody(remover, removerBody); @@ -586,18 +594,23 @@ if (WikittyTransformerUtil.isAttributeCollection(attribute)) { // attributed is a collection, we will generate operations get, add, remove and clear - String attributeTypeSimpleNameInSet = WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionStrict = + WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionGeneric = + "Collection<" + attributeType + ">"; + String attributeTypeVarargs = attributeType + "..."; + String getFieldMethodName = WikittyTransformerUtil.generateGetFieldAsCall(attribute); String attributeNameCapitalized = StringUtils.capitalize(attributeName); // now, for this attribute, we will generate add, remove and clear methods // adding operations to contract getterName = "get" + attributeNameCapitalized; - ObjectModelOperation getter = addOperation(abstractClassForThisMetaExtension, getterName, attributeTypeSimpleNameInSet); + ObjectModelOperation getter = addOperation(abstractClassForThisMetaExtension, getterName, attributeTypeCollectionStrict); addAnnotation(abstractClassForThisMetaExtension, getter, "Override"); String getterBody = "" /*{ - <%=attributeTypeSimpleNameInSet%> result; + <%=attributeTypeCollectionStrict%> result; if (extensionForMetaExtension == null) { result = <%=helperClassName%>.<%=getterName%>(getWikitty()); } else { @@ -610,68 +623,76 @@ String setterName = "set" + attributeNameCapitalized; ObjectModelOperation setter = addOperation(abstractClassForThisMetaExtension, setterName, "void"); addAnnotation(abstractClassForThisMetaExtension, setter, "Override"); - addParameter(setter, attributeTypeSimpleNameInSet, "values"); + addParameter(setter, attributeTypeCollectionStrict, "values"); String setterBody = "" /*{ + String fieldName; + <%=attributeTypeCollectionStrict%> oldValue = <%=getter.getName()%>(); if (extensionForMetaExtension == null) { <%=helperClassName%>.<%=setterName%>(getWikitty(), values); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); + fieldName = <%=fieldVariableName%>; } else { <%=helperClassName%>.<%=setterName%>(extensionForMetaExtension.getName(), getWikitty(), values); - String fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); - getPropertyChangeSupport().firePropertyChange(fieldName, null, <%=getter.getName()%>()); + fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); } + getPropertyChangeSupport().firePropertyChange(fieldName, oldValue, <%=getter.getName()%>()); }*/; setOperationBody(setter, setterBody); String addAllName = "addAll" + attributeNameCapitalized; ObjectModelOperation addAll = addOperation(abstractClassForThisMetaExtension, addAllName, "void"); addAnnotation(abstractClassForThisMetaExtension, addAll, "Override"); - addParameter(addAll, attributeTypeSimpleNameInSet, "values"); + addParameter(addAll, attributeTypeCollectionGeneric, "values"); String addAllBody = "" /*{ + String fieldName; + <%=attributeTypeCollectionStrict%> oldValue = <%=getter.getName()%>(); if (extensionForMetaExtension == null) { <%=helperClassName%>.<%=addAllName%>(getWikitty(), values); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); + fieldName = <%=fieldVariableName%>; } else { <%=helperClassName%>.<%=addAllName%>(extensionForMetaExtension.getName(), getWikitty(), values); - String fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); - getPropertyChangeSupport().firePropertyChange(fieldName, null, <%=getter.getName()%>()); + fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); } + getPropertyChangeSupport().firePropertyChange(fieldName, oldValue, <%=getter.getName()%>()); }*/; setOperationBody(addAll, addAllBody); String addName = "add" + attributeNameCapitalized; ObjectModelOperation adder = addOperation(abstractClassForThisMetaExtension, addName, "void"); addAnnotation(abstractClassForThisMetaExtension, adder, "Override"); - addParameter(adder, "String", "element"); + addParameter(adder, attributeTypeVarargs, "element"); String adderBody = "" /*{ + String fieldName; + <%=attributeTypeCollectionStrict%> oldValue = <%=getter.getName()%>(); if (extensionForMetaExtension == null) { <%=helperClassName%>.<%=addName%>(getWikitty(), element); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); + fieldName = <%=fieldVariableName%>; } else { <%=helperClassName%>.<%=addName%>(extensionForMetaExtension.getName(), getWikitty(), element); - String fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); - getPropertyChangeSupport().firePropertyChange(fieldName, null, <%=getter.getName()%>()); + fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); } + getPropertyChangeSupport().firePropertyChange(fieldName, oldValue, <%=getter.getName()%>()); }*/; setOperationBody(adder, adderBody); String removeName = "remove" + attributeNameCapitalized; ObjectModelOperation remover = addOperation(abstractClassForThisMetaExtension, removeName, "void"); addAnnotation(abstractClassForThisMetaExtension, remover, "Override"); - addParameter(remover, "String", "element"); + addParameter(remover, attributeTypeVarargs, "element"); String removerBody = "" /*{ + String fieldName; + <%=attributeTypeCollectionStrict%> oldValue = <%=getter.getName()%>(); if (extensionForMetaExtension == null) { <%=helperClassName%>.<%=removeName%>(getWikitty(), element); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); + fieldName = <%=fieldVariableName%>; } else { <%=helperClassName%>.<%=removeName%>(extensionForMetaExtension.getName(), getWikitty(), element); - String fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); - getPropertyChangeSupport().firePropertyChange(fieldName, null, <%=getter.getName()%>()); + fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); } + getPropertyChangeSupport().firePropertyChange(fieldName, oldValue, <%=getter.getName()%>()); }*/; setOperationBody(remover, removerBody); @@ -680,14 +701,16 @@ addAnnotation(abstractClassForThisMetaExtension, clear, "Override"); String clearBody = "" /*{ + String fieldName; + <%=attributeTypeCollectionStrict%> oldValue = <%=getter.getName()%>(); if (extensionForMetaExtension == null) { <%=helperClassName%>.<%=clearName%>(getWikitty()); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); + fieldName = <%=fieldVariableName%>; } else { <%=helperClassName%>.<%=clearName%>(extensionForMetaExtension.getName(), getWikitty()); - String fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); - getPropertyChangeSupport().firePropertyChange(fieldName, null, <%=getter.getName()%>()); + fieldName = <%=helperClassName%>.getMetaFieldName(extensionForMetaExtension, "<%=attributeName%>"); } + getPropertyChangeSupport().firePropertyChange(fieldName, oldValue, <%=getter.getName()%>()); }*/; setOperationBody(clear, clearBody); Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2012-01-02 15:08:12 UTC (rev 1272) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2012-01-02 16:56:31 UTC (rev 1273) @@ -231,28 +231,30 @@ if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) { // attributed is a collection, we will generate operations get, add, remove and clear - String attributeTypeSimpleNameInSet = WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionStrict = WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionGeneric = "Collection<" + attributeType + ">"; + String attributeTypeVarargs = attributeType + "..."; // now, for this attribute, we will generate add, remove and clear methods // adding operations to contract String getterName = "get" + StringUtils.capitalize(attributeName); - getter = addOperation(contract, getterName, attributeTypeSimpleNameInSet); + getter = addOperation(contract, getterName, attributeTypeCollectionStrict); String setterName = "set" + StringUtils.capitalize(attributeName); ObjectModelOperation setter = addOperation(contract, setterName, "void"); - addParameter(setter, attributeTypeSimpleNameInSet, attributeName); + addParameter(setter, attributeTypeCollectionStrict, attributeName); String addAllName = "addAll" + StringUtils.capitalize(attributeName); ObjectModelOperation addAll = addOperation(contract, addAllName, "void"); - addParameter(addAll, attributeTypeSimpleNameInSet, attributeName); + addParameter(addAll, attributeTypeCollectionGeneric, attributeName); String addName = "add" + StringUtils.capitalize(attributeName); ObjectModelOperation adder = addOperation(contract, addName, "void"); - addParameter(adder, "String", "element"); + addParameter(adder, attributeTypeVarargs, "element"); String removeName = "remove" + StringUtils.capitalize(attributeName); ObjectModelOperation remover = addOperation(contract, removeName, "void"); - addParameter(remover, "String", "element"); + addParameter(remover, attributeTypeVarargs, "element"); String clearName = "clear" + StringUtils.capitalize(attributeName); addOperation(contract, clearName, "void"); Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 2012-01-02 15:08:12 UTC (rev 1272) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 2012-01-02 16:56:31 UTC (rev 1273) @@ -191,25 +191,31 @@ // get, add, remove and clear //calculate template parameters - String attributeTypeInSet = WikittyTransformerUtil.generateResultType(attribute, true); - String attributeTypeInSetImpl = null; + String attributeTypeCollectionStrict = + WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionGeneric = + "Collection<" + attributeType + ">"; + String attributeTypeVarargs = attributeType + "..."; + + + String attributeTypeCollectionStrictImpl = null; String collectionType = WikittyTransformerUtil.getCollectionTypeName(attribute); if (Set.class.getSimpleName().equals(collectionType)){ addImport(abstractClass, Set.class); addImport(abstractClass, LinkedHashSet.class); - attributeTypeInSetImpl = "LinkedHashSet<String>"; + attributeTypeCollectionStrictImpl = "LinkedHashSet<String>"; } if (List.class.getSimpleName().equals(collectionType)){ addImport(abstractClass, List.class); addImport(abstractClass, ArrayList.class); - attributeTypeInSetImpl = "ArrayList<String>"; + attributeTypeCollectionStrictImpl = "ArrayList<String>"; } //adding the attribute ObjectModelAttribute modelAttribute = addAttribute(abstractClass, - attributeName + " = new " + attributeTypeInSetImpl + "()", - attributeTypeInSet); + attributeName + " = new " + attributeTypeCollectionStrictImpl + "()", + attributeTypeCollectionStrict); String annotation = "WikittyField(fqn=\""+ businessEntity.getName() + "." + attributeName +"\")"; addAnnotation(abstractClass, modelAttribute, annotation); addImport(abstractClass, "org.nuiton.wikitty.entities.WikittyField"); @@ -217,7 +223,7 @@ // adding the getter getterName = "get" + StringUtils.capitalize(attributeName); - ObjectModelOperation getter = addOperation(abstractClass, getterName, attributeTypeInSet); + ObjectModelOperation getter = addOperation(abstractClass, getterName, attributeTypeCollectionStrict); addAnnotation(abstractClass, getter, "Override"); String getterBody = "" /*{ @@ -229,14 +235,14 @@ getterName = "set" + StringUtils.capitalize(attributeName); ObjectModelOperation setter = addOperation(abstractClass, getterName, "void"); addAnnotation(abstractClass, setter, "Override"); - addParameter(setter, attributeTypeInSet, attributeName); + addParameter(setter, attributeTypeCollectionStrict, attributeName); String setterBody = "" /*{ if (<%=attributeName%> == null){ - this.<%=attributeName%> = new <%=attributeTypeInSetImpl%>(); + this.<%=attributeName%> = new <%=attributeTypeCollectionStrictImpl%>(); } else { // make copy to prevent modification of source collection - this.<%=attributeName%>=new <%=attributeTypeInSetImpl%>(<%=attributeName%>); + this.<%=attributeName%>=new <%=attributeTypeCollectionStrictImpl%>(<%=attributeName%>); } modificationCount++; }*/; @@ -246,11 +252,11 @@ String addAllName = "addAll" + StringUtils.capitalize(attributeName); ObjectModelOperation addAll = addOperation(abstractClass, addAllName, "void"); addAnnotation(abstractClass, addAll, "Override"); - addParameter(addAll, attributeTypeInSet, attributeName); + addParameter(addAll, attributeTypeCollectionGeneric, attributeName); String addAllBody = "" /*{ if (this.<%=attributeName%> == null){ - this.<%=attributeName%> = new <%=attributeTypeInSetImpl%>(); + this.<%=attributeName%> = new <%=attributeTypeCollectionStrictImpl%>(); } this.<%=attributeName%>.addAll(<%=attributeName%>); modificationCount++; @@ -261,13 +267,15 @@ String addName = "add" + StringUtils.capitalize(attributeName); ObjectModelOperation adder = addOperation(abstractClass, addName, "void"); addAnnotation(abstractClass, adder, "Override"); - addParameter(adder, attributeType, "element"); + addParameter(adder, attributeTypeVarargs, "element"); String adderBody = "" /*{ if (this.<%=attributeName%> == null){ - this.<%=attributeName%> = new <%=attributeTypeInSetImpl%>(); + this.<%=attributeName%> = new <%=attributeTypeCollectionStrictImpl%>(); } - this.<%=attributeName%>.add(element); + for (<%=attributeType%> v : element) { + this.<%=attributeName%>.add(v); + } modificationCount++; }*/; setOperationBody(adder, adderBody); @@ -276,11 +284,15 @@ String removeName = "remove" + StringUtils.capitalize(attributeName); ObjectModelOperation remover = addOperation(abstractClass, removeName, "void"); addAnnotation(abstractClass, remover, "Override"); - addParameter(remover, attributeType, "element"); + addParameter(remover, attributeTypeVarargs, "element"); String removerBody = "" /*{ - <%=attributeName%>.remove(element); - modificationCount++; + if (this.<%=attributeName%> != null) { + for (<%=attributeType%> v : element) { + <%=attributeName%>.remove(element); + } + modificationCount++; + } }*/; setOperationBody(remover, removerBody); @@ -290,8 +302,10 @@ addAnnotation(abstractClass, clear, "Override"); String clearBody = "" /*{ - <%=attributeName%>.clear(); - modificationCount++; + if (this.<%=attributeName%> != null) { + <%=attributeName%>.clear(); + modificationCount++; + } }*/; setOperationBody(clear, clearBody); Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2012-01-02 15:08:12 UTC (rev 1272) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2012-01-02 16:56:31 UTC (rev 1273) @@ -121,26 +121,36 @@ if (WikittyTransformerUtil.isAttributeCollection(attribute)) { // attributed is a collection, we will generate operations get, add, remove and clear - String attributeTypeSimpleNameInSet = WikittyTransformerUtil.generateResultType(attribute, true); - String getFieldMethodName = WikittyTransformerUtil.generateGetFieldAsCall(attribute); - String attributeNameCapitalized = StringUtils.capitalize(attributeName); + String attributeTypeCollectionStrict = + WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionGeneric = + "Collection<" + attributeType + ">"; + String attributeTypeVarargs = attributeType + "..."; + String getFieldMethodName = + WikittyTransformerUtil.generateGetFieldAsCall(attribute); + String attributeNameCapitalized = + StringUtils.capitalize(attributeName); + // now, for this attribute, we will generate add, remove and clear methods // adding operations to contract String getterName = "get" + attributeNameCapitalized; - ObjectModelOperation getter = addOperation(helper, getterName, attributeTypeSimpleNameInSet, ObjectModelModifier.STATIC); + ObjectModelOperation getter = addOperation( + helper, getterName, attributeTypeCollectionStrict, + ObjectModelModifier.STATIC); addParameter(getter, "Wikitty", "wikitty"); String getterBody = "" /*{ - <%=attributeTypeSimpleNameInSet%> result = wikitty.<%=getFieldMethodName%>(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attributeType%>.class); + <%=attributeTypeCollectionStrict%> result = wikitty.<%=getFieldMethodName%>(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attributeType%>.class); return result; }*/; setOperationBody(getter, getterBody); String setterName = "set" + attributeNameCapitalized; - ObjectModelOperation setter = addOperation(helper, setterName, "void", ObjectModelModifier.STATIC); + ObjectModelOperation setter = addOperation( + helper, setterName, "void", ObjectModelModifier.STATIC); addParameter(setter, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); - addParameter(setter, attributeTypeSimpleNameInSet, attributeName); + addParameter(setter, attributeTypeCollectionStrict, attributeName); String setterBody = "" /*{ wikitty.setField(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attributeName%>); @@ -148,14 +158,15 @@ setOperationBody(setter, setterBody); String addAllName = "addAll" + attributeNameCapitalized; - ObjectModelOperation addAll = addOperation(helper, addAllName, "void", ObjectModelModifier.STATIC); + ObjectModelOperation addAll = addOperation( + helper, addAllName, "void", ObjectModelModifier.STATIC); addParameter(addAll, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); - addParameter(addAll, attributeTypeSimpleNameInSet, attributeName); + addParameter(addAll, attributeTypeCollectionGeneric, attributeName); String addAllBody = "" /*{ if(<%=attributeName%> != null){ - for (String id:<%=attributeName%>){ - add<%=attributeNameCapitalized%>(wikitty, id); + for (<%=attributeType%> v:<%=attributeName%>){ + add<%=attributeNameCapitalized%>(wikitty, v); } } }*/; @@ -164,20 +175,24 @@ String addName = "add" + attributeNameCapitalized; ObjectModelOperation adder = addOperation(helper, addName, "void", ObjectModelModifier.STATIC); addParameter(adder, "Wikitty", "wikitty"); - addParameter(adder, attributeType, "element"); + addParameter(adder, attributeTypeVarargs, "element"); String adderBody = "" /*{ - wikitty.addToField(<%=extensionVariableName%>, <%=fieldVariableName%>, element); + for (<%=attributeType%> v : element) { + wikitty.addToField(<%=extensionVariableName%>, <%=fieldVariableName%>, v); + } }*/; setOperationBody(adder, adderBody); String removeName = "remove" + StringUtils.capitalize(attributeName); ObjectModelOperation remover = addOperation(helper, removeName, "void", ObjectModelModifier.STATIC); addParameter(remover, "Wikitty", "wikitty"); - addParameter(remover, attributeType, "element"); + addParameter(remover, attributeTypeVarargs, "element"); String removerBody = "" /*{ - wikitty.removeFromField(<%=extensionVariableName%>, <%=fieldVariableName%>, element); + for (<%=attributeType%> v : element) { + wikitty.removeFromField(<%=extensionVariableName%>, <%=fieldVariableName%>, v); + } }*/; setOperationBody(remover, removerBody); @@ -383,29 +398,37 @@ if (WikittyTransformerUtil.isAttributeCollection(attribute)) { // attributed is a collection, we will generate operations get, add, remove and clear - String attributeTypeSimpleNameInSet = WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionStrict = + WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeCollectionGeneric = + "Collection<" + attributeType + ">"; + String attributeTypeVarargs = attributeType + "..."; + String getFieldMethodName = WikittyTransformerUtil.generateGetFieldAsCall(attribute); String capitalizedAttributeName = StringUtils.capitalize(attributeName); // now, for this attribute, we will generate add, remove and clear methods // adding operations to contract String getterName = "get" + capitalizedAttributeName; - ObjectModelOperation getter = addOperation(helper, getterName, attributeTypeSimpleNameInSet, ObjectModelModifier.STATIC); + ObjectModelOperation getter = addOperation( + helper, getterName, attributeTypeCollectionStrict, + ObjectModelModifier.STATIC); addParameter(getter, "String", "extensionName"); addParameter(getter, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); String getterBody = "" /*{ String fieldName = getMetaFieldName(extensionName, "<%=attributeName%>"); - <%=attributeTypeSimpleNameInSet%> result = (<%=attributeTypeSimpleNameInSet%>) wikitty.getFqField(fieldName); + <%=attributeTypeCollectionStrict%> result = (<%=attributeTypeCollectionStrict%>) wikitty.getFqField(fieldName); return result; }*/; setOperationBody(getter, getterBody); String setterName = "set" + capitalizedAttributeName; - ObjectModelOperation setter = addOperation(helper, setterName, "void", ObjectModelModifier.STATIC); + ObjectModelOperation setter = addOperation( + helper, setterName, "void", ObjectModelModifier.STATIC); addParameter(setter, "String", "extensionName"); addParameter(setter, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); - addParameter(setter, attributeTypeSimpleNameInSet, attributeName); + addParameter(setter, attributeTypeCollectionStrict, attributeName); String setterBody = "" /*{ clear<%=capitalizedAttributeName%>(extensionName, wikitty); @@ -414,10 +437,11 @@ setOperationBody(setter, setterBody); String addAllName = "addAll" + capitalizedAttributeName; - ObjectModelOperation addAll = addOperation(helper, addAllName, "void", ObjectModelModifier.STATIC); + ObjectModelOperation addAll = addOperation( + helper, addAllName, "void", ObjectModelModifier.STATIC); addParameter(addAll, "String", "extensionName"); addParameter(addAll, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); - addParameter(addAll, attributeTypeSimpleNameInSet, attributeName); + addParameter(addAll, attributeTypeCollectionGeneric, attributeName); String addAllBody = "" /*{ if(<%=attributeName%> != null){ @@ -429,14 +453,17 @@ setOperationBody(addAll, addAllBody); String addName = "add" + capitalizedAttributeName; - ObjectModelOperation adder = addOperation(helper, addName, "void", ObjectModelModifier.STATIC); + ObjectModelOperation adder = addOperation( + helper, addName, "void", ObjectModelModifier.STATIC); addParameter(adder, "String", "extensionName"); addParameter(adder, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); - addParameter(adder, attributeType, "element"); + addParameter(adder, attributeTypeVarargs, "element"); String adderBody = "" -/*{ - String fieldName = getMetaFieldName(extensionName, "<%=attributeName%>"); - wikitty.addToField(fieldName, element); +/*{ + for (<%=attributeType%> v : element) { + String fieldName = getMetaFieldName(extensionName, "<%=attributeName%>"); + wikitty.addToField(fieldName, v); + } }*/; setOperationBody(adder, adderBody); @@ -444,11 +471,13 @@ ObjectModelOperation remover = addOperation(helper, removeName, "void", ObjectModelModifier.STATIC); addParameter(remover, "String", "extensionName"); addParameter(remover, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); - addParameter(remover, attributeType, "element"); + addParameter(remover, attributeTypeVarargs, "element"); String removerBody = "" /*{ - String fieldName = getMetaFieldName(extensionName, "<%=attributeName%>"); - wikitty.removeFromField(fieldName, element); + for (<%=attributeType%> v : element) { + String fieldName = getMetaFieldName(extensionName, "<%=attributeName%>"); + wikitty.removeFromField(fieldName, v); + } }*/; setOperationBody(remover, removerBody);