diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/JerseyCodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithms/JerseyCodeGenerator.java index 7c66b96..58cc392 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/JerseyCodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/JerseyCodeGenerator.java @@ -86,9 +86,8 @@ } for (Edge e : rn.getInEdges()) { ResourceDependency re = (ResourceDependency) e; - String srcResName = ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName() - .substring(0, 1).toUpperCase() - + ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName().substring(1); + IdentifierTemplate srcRes = ((ResourceNode) re.getSource()).getIdentifierTemplate(); + String srcResName = srcRes.getResourceName().substring(0, 1).toUpperCase() + srcRes.getResourceName().substring(1); if (((PushPullAttribute) re.getAttribute()).getOptions().get(0) != PushPullValue.PUSH) { if (!bDeclareClientField) { // Declare a client field to connect to the source resource of pull transfer. @@ -98,11 +97,18 @@ } else { // Declare an update method in the type of the destination resource. ArrayList vars = new ArrayList<>(); - String srcName = ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName(); - Type srcType = ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceStateType(); + String srcName = srcRes.getResourceName(); + Type srcType = srcRes.getResourceStateType(); VariableDeclaration param = new VariableDeclaration(srcType, srcName); param.addAnnotation(new Annotation("FormParam", "\"" + srcName + "\"")); vars.add(param); + for (IdentifierTemplate refRes: re.getChannelGenerator().getReferenceIdentifierTemplates()) { + if (refRes != rn.getIdentifierTemplate()) { + param = new VariableDeclaration(refRes.getResourceStateType(), refRes.getResourceName()); + param.addAnnotation(new Annotation("FormParam", "\"" + refRes.getResourceName() + "\"")); + vars.add(param); + } + } MethodDeclaration update = new MethodDeclaration("update" + srcResName, false, typeVoid, vars); for (ChannelMember cm: re.getChannelGenerator().getOutputChannelMembers()) { if (cm.getIdentifierTemplate() == rn.getIdentifierTemplate()) { @@ -124,23 +130,23 @@ } } - // Declare a client field to connect to the source resource of reference transfer. - if (!bDeclareClientField) { - for (ChannelGenerator cg : model.getChannelGenerators()) { - DataflowChannelGenerator dcg = ((DataflowChannelGenerator) cg); - for (ChannelMember cm : dcg.getOutputChannelMembers()) { - if (cm.getIdentifierTemplate().getResourceName().equals(type.getTypeName().toLowerCase())) { - if (dcg.getReferenceChannelMembers().size() > 0) { - // If there exists one or more reference channel member. - type.addField(new FieldDeclaration(typeClient, "client", "ClientBuilder.newClient()")); - bDeclareClientField = true; - break; - } - } - } - if (bDeclareClientField) break; - } - } +// // Declare a client field to connect to the source resource of reference transfer. +// if (!bDeclareClientField) { +// for (ChannelGenerator cg : model.getChannelGenerators()) { +// DataflowChannelGenerator dcg = ((DataflowChannelGenerator) cg); +// for (ChannelMember cm : dcg.getOutputChannelMembers()) { +// if (cm.getIdentifierTemplate().getResourceName().equals(type.getTypeName().toLowerCase())) { +// if (dcg.getReferenceChannelMembers().size() > 0) { +// // If there exists one or more reference channel member. +// type.addField(new FieldDeclaration(typeClient, "client", "ClientBuilder.newClient()")); +// bDeclareClientField = true; +// break; +// } +// } +// } +// if (bDeclareClientField) break; +// } +// } // Declare input methods in resources. for (ChannelGenerator cg : model.getIOChannelGenerators()) {