X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fbinding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fjava%2Fapi%2Fgenerator%2FGeneratorUtil.java;fp=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fbinding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fjava%2Fapi%2Fgenerator%2FGeneratorUtil.java;h=431835f6c09b3edbd401aba10f04037e8030f10f;hb=4171f99c226775c4646ad95f5484329eafb9c01d;hp=e2f23dcd0544df16538ffe59542e5caa34115e74;hpb=39ff6ed2000232d607877311770c74cef36cf96f;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorUtil.java b/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorUtil.java index e2f23dcd05..431835f6c0 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorUtil.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/controller/sal/java/api/generator/GeneratorUtil.java @@ -24,7 +24,10 @@ import static org.opendaylight.controller.sal.java.api.generator.Constants.RCB; import static org.opendaylight.controller.sal.java.api.generator.Constants.SC; import static org.opendaylight.controller.sal.java.api.generator.Constants.STATIC; import static org.opendaylight.controller.sal.java.api.generator.Constants.TAB; +import static org.opendaylight.controller.sal.java.api.generator.Constants.EXTENDS; +import static org.opendaylight.controller.sal.java.api.generator.Constants.IMPLEMENTS; +import java.util.ArrayList; import java.util.List; import org.opendaylight.controller.sal.binding.model.api.AnnotationType; @@ -62,18 +65,44 @@ public class GeneratorUtil { builder.append(NL); builder.append(NL); createComment(builder, genType.getComment(), indent); - + if (!genType.getAnnotations().isEmpty()) { final List annotations = genType.getAnnotations(); appendAnnotations(builder, annotations); builder.append(NL); } - builder.append(PUBLIC + GAP + type + GAP + genType.getName() + GAP - + LCB); + builder.append(PUBLIC + GAP + type + GAP + genType.getName() + GAP); + + final List genImplements = genType.getImplements(); + if (genType instanceof GeneratedTransferObject) { + GeneratedTransferObject genTO = (GeneratedTransferObject) genType; + + if (genTO.getExtends() != null) { + builder.append(EXTENDS + GAP); + builder.append(genTO.getExtends() + GAP); + } + } + if (!genImplements.isEmpty()) { + if (genType instanceof GeneratedTransferObject) { + builder.append(IMPLEMENTS + GAP); + } else { + builder.append(EXTENDS + GAP); + } + builder.append(genImplements.get(0).getPackageName() + + "." + genImplements.get(0).getName()); + for (int i = 1; i < genImplements.size(); ++i) { + builder.append(", "); + builder.append(genImplements.get(i).getPackageName() + + "." + genImplements.get(i).getName()); + } + } + + builder.append(GAP + LCB); return builder.toString(); } - private static StringBuilder appendAnnotations(final StringBuilder builder, final List annotations) { + private static StringBuilder appendAnnotations(final StringBuilder builder, + final List annotations) { if ((builder != null) && (annotations != null)) { for (final AnnotationType annotation : annotations) { builder.append("@"); @@ -172,13 +201,13 @@ public class GeneratorUtil { createComment(builder, comment, indent); builder.append(NL); builder.append(indent); - + if (!method.getAnnotations().isEmpty()) { final List annotations = method.getAnnotations(); appendAnnotations(builder, annotations); builder.append(NL); } - + builder.append(indent + getExplicitType(type) + GAP + name); builder.append(LB); for (int i = 0; i < parameters.size(); i++) { @@ -202,40 +231,34 @@ public class GeneratorUtil { final List properties = genTransferObject .getProperties(); + final List ctorParams = new ArrayList(); + for (final GeneratedProperty property : properties) { + if (property.isReadOnly()) { + ctorParams.add(property); + } + } + builder.append(indent); builder.append(PUBLIC); builder.append(GAP); builder.append(genTransferObject.getName()); builder.append(LB); - - boolean first = true; - if (properties != null) { - for (final GeneratedProperty property : properties) { - if (first) { - builder.append(getExplicitType(property.getReturnType())); - builder.append(" "); - builder.append(property.getName()); - first = false; - } else { - builder.append(", "); - builder.append(getExplicitType(property.getReturnType())); - builder.append(builder.append(" ")); - builder.append(property.getName()); - } + + if (!ctorParams.isEmpty()) { + builder.append(getExplicitType(ctorParams.get(0).getReturnType())); + builder.append(" "); + builder.append(ctorParams.get(0).getName()); + for (int i = 1; i < ctorParams.size(); ++i) { + final GeneratedProperty param = ctorParams.get(i); + builder.append(", "); + builder.append(getExplicitType(param.getReturnType())); + builder.append(GAP); + builder.append(param.getName()); } } - - builder.append(RB); - builder.append(GAP); - builder.append(LCB); - builder.append(NL); - builder.append(indent); - builder.append(TAB); - builder.append("super();"); - builder.append(NL); - - if (properties != null) { - for (final GeneratedProperty property : properties) { + builder.append(RB + GAP + LCB + NL + indent + TAB + "super();" + NL); + if (!ctorParams.isEmpty()) { + for (final GeneratedProperty property : ctorParams) { builder.append(indent); builder.append(TAB); builder.append("this."); @@ -246,10 +269,8 @@ public class GeneratorUtil { builder.append(NL); } } - builder.append(indent); builder.append(RCB); - return builder.toString(); } @@ -273,6 +294,24 @@ public class GeneratorUtil { builder.append(indent + RCB); return builder.toString(); } + + public static String createSetter(final GeneratedProperty property, + final String indent) { + final StringBuilder builder = new StringBuilder(); + + final Type type = property.getReturnType(); + final String varName = property.getName(); + final char first = Character.toUpperCase(varName.charAt(0)); + final String methodName = "set" + first + varName.substring(1); + + builder.append(indent + PUBLIC + GAP + "void" + GAP + + methodName); + builder.append(LB + getExplicitType(type) + GAP + varName + RB + LCB + NL); + String currentIndent = indent + TAB; + builder.append(currentIndent + "this." + varName + " = " + varName + SC + NL); + builder.append(indent + RCB); + return builder.toString(); + } public static String createHashCode( final List properties, final String indent) { @@ -280,7 +319,7 @@ public class GeneratorUtil { builder.append(indent + "public int hashCode() {" + NL); builder.append(indent + TAB + "final int prime = 31;" + NL); builder.append(indent + TAB + "int result = 1;" + NL); - + for (GeneratedProperty property : properties) { String fieldName = property.getName(); builder.append(indent + TAB + "result = prime * result + (("