diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java index 0513bd4..35c57b8 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -600,7 +601,9 @@ private static void replaceJsonTermWithConstructorInvocation(Expression exp, Type replacedJsonType, String replacingClassName, TypeDeclaration childComponent) { Map subTerms = ((Term) exp).getSubTerms(Term.class); - for (Entry termEnt: subTerms.entrySet()) { + Iterator> termEntItr = subTerms.entrySet().iterator(); + while (termEntItr.hasNext()) { + Entry termEnt = termEntItr.next(); Term jsonTerm = termEnt.getValue(); if (jsonTerm.getType().equals(replacedJsonType)) { String constructorInvocation = "new " + replacingClassName + "("; @@ -610,11 +613,18 @@ JsonAccessor jsonMember = new JsonAccessor(DataConstraintModel.dot); jsonMember.addChild(jsonTerm); jsonMember.addChild(new Constant("\"" + var.getName() + "\"")); - constructorInvocation = constructorInvocation + jsonMember.reduce().toImplementation(new String[] {""}) + delimiter; + Expression param = jsonMember.reduce(); + if (param != null) { + constructorInvocation = constructorInvocation + delimiter + param.toImplementation(new String[] {""}); + } else { + constructorInvocation = constructorInvocation + delimiter + var.getName(); + } delimiter = ", "; } constructorInvocation += ")"; ((Term) exp).replaceSubTerm(termEnt.getKey(), new Constant(constructorInvocation)); + subTerms = ((Term) exp).getSubTerms(Term.class); + termEntItr = subTerms.entrySet().iterator(); } } }