From: lsedlak Date: Thu, 27 Jun 2013 14:26:15 +0000 (+0200) Subject: Fixed bug in GeneratedPropertyBuilderImpl. X-Git-Tag: releasepom-0.1.0~332^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=ef73599077ea6f0d2ec85cd3d0f3aa35a321ce75 Fixed bug in GeneratedPropertyBuilderImpl. Default value for GeneratedProperty is set to true; Added extends of AbstractBaseType for EnumerationBuilderImpl, AnnotationTypeBuilderImpl, AbstractGeneratedTypeBuilder and AbstractGeneratedType; Signed-off-by: Lukas Sedlak --- diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java index ef65a0e8f0..b37f91fe44 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java @@ -1,5 +1,7 @@ package org.opendaylight.controller.binding.generator.util; +import java.util.*; + import org.opendaylight.controller.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl; import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder; import org.opendaylight.controller.yang.common.QName; @@ -8,25 +10,19 @@ import org.opendaylight.controller.yang.model.api.SchemaNode; import org.opendaylight.controller.yang.model.api.SchemaPath; import org.opendaylight.controller.yang.model.api.TypeDefinition; -import java.util.*; - public final class BindingGeneratorUtil { - private static final String[] SET_VALUES = new String[]{"abstract", - "assert", "boolean", "break", "byte", "case", "catch", "char", - "class", "const", "continue", "default", "double", "do", "else", - "enum", "extends", "false", "final", "finally", "float", "for", - "goto", "if", "implements", "import", "instanceof", "int", - "interface", "long", "native", "new", "null", "package", "private", - "protected", "public", "return", "short", "static", "strictfp", - "super", "switch", "synchronized", "this", "throw", "throws", - "transient", "true", "try", "void", "volatile", "while"}; + private static final String[] SET_VALUES = new String[] { "abstract", "assert", "boolean", "break", "byte", "case", + "catch", "char", "class", "const", "continue", "default", "double", "do", "else", "enum", "extends", + "false", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", + "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", + "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", + "true", "try", "void", "volatile", "while" }; private BindingGeneratorUtil() { } - public static final Set JAVA_RESERVED_WORDS = new HashSet( - Arrays.asList(SET_VALUES)); + public static final Set JAVA_RESERVED_WORDS = new HashSet(Arrays.asList(SET_VALUES)); public static String validateJavaPackage(final String packageName) { if (packageName != null) { @@ -57,16 +53,12 @@ public final class BindingGeneratorUtil { return parameterName; } - public static GeneratedTOBuilder schemaNodeToTransferObjectBuilder( - final String packageName, final SchemaNode schemaNode, - final String transObjectName) { - if (packageName != null && schemaNode != null - && transObjectName != null) { + public static GeneratedTOBuilder schemaNodeToTransferObjectBuilder(final String packageName, + final SchemaNode schemaNode, final String transObjectName) { + if (packageName != null && schemaNode != null && transObjectName != null) { - final String genTOName = BindingGeneratorUtil - .parseToClassName(transObjectName); - final GeneratedTOBuilder newType = new GeneratedTOBuilderImpl( - packageName, genTOName); + final String genTOName = BindingGeneratorUtil.parseToClassName(transObjectName); + final GeneratedTOBuilder newType = new GeneratedTOBuilderImpl(packageName, genTOName); return newType; @@ -74,14 +66,12 @@ public final class BindingGeneratorUtil { return null; } - public static String moduleNamespaceToPackageName( - final Module module) { + public static String moduleNamespaceToPackageName(final Module module) { final StringBuilder packageNameBuilder = new StringBuilder(); final Calendar calendar = Calendar.getInstance(); if (module.getRevision() == null) { - throw new IllegalArgumentException("Module " + module.getName() - + " does not specify revision date!"); + throw new IllegalArgumentException("Module " + module.getName() + " does not specify revision date!"); } packageNameBuilder.append("org.opendaylight.yang.gen.v"); packageNameBuilder.append(module.getYangVersion()); @@ -112,11 +102,9 @@ public final class BindingGeneratorUtil { return validateJavaPackage(packageNameBuilder.toString()); } - public static String packageNameForGeneratedType( - final String basePackageName, final SchemaPath schemaPath) { + public static String packageNameForGeneratedType(final String basePackageName, final SchemaPath schemaPath) { if (basePackageName == null) { - throw new IllegalArgumentException("Base Package Name cannot be " + - "NULL!"); + throw new IllegalArgumentException("Base Package Name cannot be NULL!"); } if (schemaPath == null) { throw new IllegalArgumentException("Schema Path cannot be NULL!"); @@ -137,15 +125,13 @@ public final class BindingGeneratorUtil { return validateJavaPackage(builder.toString()); } - public static String packageNameForTypeDefinition( - final String basePackageName, final TypeDefinition typeDefinition) { + public static String packageNameForTypeDefinition(final String basePackageName, + final TypeDefinition typeDefinition) { if (basePackageName == null) { - throw new IllegalArgumentException("Base Package Name cannot be " + - "NULL!"); + throw new IllegalArgumentException("Base Package Name cannot be NULL!"); } if (typeDefinition == null) { - throw new IllegalArgumentException("Type Definition reference " + - "cannot be NULL!"); + throw new IllegalArgumentException("Type Definition reference cannot be NULL!"); } final StringBuilder builder = new StringBuilder(); @@ -199,11 +185,9 @@ public final class BindingGeneratorUtil { // check if 'toBeRemoved' character is not the only character in // 'text' if (sb.length() == 0) { - throw new IllegalArgumentException("Name can not be '" - + toBeRemoved + "'"); + throw new IllegalArgumentException("Name can not be '" + toBeRemoved + "'"); } - String replacement = String.valueOf(sb.charAt(toBeRemovedPos)) - .toUpperCase(); + String replacement = String.valueOf(sb.charAt(toBeRemovedPos)).toUpperCase(); sb.setCharAt(toBeRemovedPos, replacement.charAt(0)); toBeRemovedPos = sb.indexOf(toBeRemoved); } diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedType.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedType.java index 5609f73064..8c7ee35344 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedType.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedType.java @@ -43,7 +43,7 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat this.comment = comment; this.annotations = toUnmodifiableAnnotations(annotationBuilders); this.implementsTypes = Collections.unmodifiableList(implementsTypes); - this.constants = toUnmodifiableConstants(constants); + this.constants = Collections.unmodifiableList(constants); this.enumerations = toUnmodifiableEnumerations(enumBuilders); this.methodSignatures = toUnmodifiableMethods(methodBuilders); this.enclosedTypes = toUnmodifiableEnclosedTypes(enclosedGenTypeBuilders, enclosedGenTOBuilders); @@ -94,15 +94,6 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat return Collections.unmodifiableList(enums); } - protected List toUnmodifiableConstants( - List constants) { - for (final Constant constant : constants) { - constants.add(new ConstantImpl(this, constant.getType(), - constant.getName(), constant.getValue())); - } - return Collections.unmodifiableList(constants); - } - @Override public Type getParentType() { return parent; diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java index 02c0060dff..5aeb2c5177 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.binding.generator.util.generated.type.builder; +import org.opendaylight.controller.binding.generator.util.AbstractBaseType; import org.opendaylight.controller.sal.binding.model.api.AccessModifier; import org.opendaylight.controller.sal.binding.model.api.Constant; import org.opendaylight.controller.sal.binding.model.api.Type; @@ -15,7 +16,7 @@ import org.opendaylight.controller.sal.binding.model.api.type.builder.*; import java.util.ArrayList; import java.util.List; -abstract class AbstractGeneratedTypeBuilder implements GeneratedTypeBuilder { +abstract class AbstractGeneratedTypeBuilder extends AbstractBaseType implements GeneratedTypeBuilder { private final String packageName; private String comment = ""; @@ -31,6 +32,7 @@ abstract class AbstractGeneratedTypeBuilder implements GeneratedTypeBuilder { private boolean isAbstract; public AbstractGeneratedTypeBuilder(final String packageName, final String name) { + super(packageName, name); if (packageName == null) { throw new IllegalArgumentException("Package Name for Generated Type cannot be null!"); } @@ -41,22 +43,6 @@ abstract class AbstractGeneratedTypeBuilder implements GeneratedTypeBuilder { this.name = name; } - @Override - public String getPackageName() { - return packageName; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getFullyQualifiedName() { - return packageName + "." + name; - } - - protected String getComment() { return comment; } diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AnnotationTypeBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AnnotationTypeBuilderImpl.java index c125af556a..3b49952483 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AnnotationTypeBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/AnnotationTypeBuilderImpl.java @@ -11,10 +11,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.opendaylight.controller.binding.generator.util.AbstractBaseType; import org.opendaylight.controller.sal.binding.model.api.AnnotationType; import org.opendaylight.controller.sal.binding.model.api.type.builder.AnnotationTypeBuilder; -final class AnnotationTypeBuilderImpl implements AnnotationTypeBuilder { +final class AnnotationTypeBuilderImpl extends AbstractBaseType implements AnnotationTypeBuilder { private final String packageName; private final String name; @@ -22,28 +23,13 @@ final class AnnotationTypeBuilderImpl implements AnnotationTypeBuilder { private final List parameters; public AnnotationTypeBuilderImpl(final String packageName, final String name) { - super(); + super(packageName, name); this.packageName = packageName; this.name = name; annotationBuilders = new ArrayList<>(); parameters = new ArrayList<>(); } - @Override - public String getPackageName() { - return packageName; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getFullyQualifiedName() { - return packageName + "." + name; - } - @Override public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) { if (packageName != null && name != null) { diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/EnumerationBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/EnumerationBuilderImpl.java index 8bf5b5d4cb..c45c76584b 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/EnumerationBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/EnumerationBuilderImpl.java @@ -11,39 +11,25 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.opendaylight.controller.binding.generator.util.AbstractBaseType; import org.opendaylight.controller.sal.binding.model.api.AnnotationType; import org.opendaylight.controller.sal.binding.model.api.Enumeration; import org.opendaylight.controller.sal.binding.model.api.Type; import org.opendaylight.controller.sal.binding.model.api.type.builder.AnnotationTypeBuilder; import org.opendaylight.controller.sal.binding.model.api.type.builder.EnumBuilder; -public final class EnumerationBuilderImpl implements EnumBuilder { +public final class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuilder { private final String packageName; private final String name; private final List values; - private final List annotationBuilders = new ArrayList(); + private final List annotationBuilders = new ArrayList<>(); public EnumerationBuilderImpl(final String packageName, final String name) { - super(); + super(packageName, name); this.packageName = packageName; this.name = name; values = new ArrayList<>(); } - - @Override - public String getPackageName() { - return packageName; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getFullyQualifiedName() { - return packageName + "." + name; - } @Override public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) { diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java index 9b61163fc0..888608540c 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImpl.java @@ -20,6 +20,7 @@ final class GeneratedPropertyBuilderImpl extends AbstractTypeMemberBuilder imple public GeneratedPropertyBuilderImpl(String name) { super(name); + this.isReadOnly = true; } @Override diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java index 7c26531f37..d55f84923c 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.controller.yang.model.util; import java.util.ArrayList; @@ -5,41 +12,30 @@ import java.util.Iterator; import java.util.List; import java.util.Set; -import org.opendaylight.controller.yang.model.api.ContainerSchemaNode; -import org.opendaylight.controller.yang.model.api.DataNodeContainer; -import org.opendaylight.controller.yang.model.api.DataSchemaNode; -import org.opendaylight.controller.yang.model.api.GroupingDefinition; -import org.opendaylight.controller.yang.model.api.LeafListSchemaNode; -import org.opendaylight.controller.yang.model.api.LeafSchemaNode; -import org.opendaylight.controller.yang.model.api.ListSchemaNode; +import org.opendaylight.controller.yang.model.api.*; public class DataNodeIterator implements Iterator { private final DataNodeContainer container; - private List allLists; - private List allContainers; - private List allLeafs; - private List allLeafLists; - private List allChilds; + private final List allLists; + private final List allContainers; + private final List allChoices; + private final List allChilds; public DataNodeIterator(final DataNodeContainer container) { if (container == null) { throw new IllegalArgumentException("Data Node Container MUST be specified and cannot be NULL!"); } - init(); + this.allContainers = new ArrayList<>(); + this.allLists = new ArrayList<>(); + this.allChilds = new ArrayList<>(); + this.allChoices = new ArrayList<>(); + this.container = container; traverse(this.container); } - private void init() { - this.allContainers = new ArrayList(); - this.allLists = new ArrayList(); - this.allLeafs = new ArrayList(); - this.allLeafLists = new ArrayList(); - this.allChilds = new ArrayList(); - } - public List allContainers() { return allContainers; } @@ -48,12 +44,8 @@ public class DataNodeIterator implements Iterator { return allLists; } - public List allLeafs() { - return allLeafs; - } - - public List allLeafLists() { - return allLeafLists; + public List allChoices() { + return allChoices; } private void traverse(final DataNodeContainer dataNode) { @@ -61,9 +53,9 @@ public class DataNodeIterator implements Iterator { return; } - final Set childs = dataNode.getChildNodes(); - if (childs != null) { - for (DataSchemaNode childNode : childs) { + final Set childNodes = dataNode.getChildNodes(); + if (childNodes != null) { + for (DataSchemaNode childNode : childNodes) { if (childNode.isAugmenting()) { continue; } @@ -76,19 +68,22 @@ public class DataNodeIterator implements Iterator { final ListSchemaNode list = (ListSchemaNode) childNode; allLists.add(list); traverse(list); - } else if (childNode instanceof LeafSchemaNode) { - final LeafSchemaNode leaf = (LeafSchemaNode) childNode; - allLeafs.add(leaf); - } else if (childNode instanceof LeafListSchemaNode) { - final LeafListSchemaNode leafList = (LeafListSchemaNode) childNode; - allLeafLists.add(leafList); + } else if (childNode instanceof ChoiceNode) { + final ChoiceNode choiceNode = (ChoiceNode) childNode; + allChoices.add(choiceNode); + final Set cases = choiceNode.getCases(); + if (cases != null) { + for (final ChoiceCaseNode caseNode : cases) { + traverse(caseNode); + } + } } } } final Set groupings = dataNode.getGroupings(); - if(groupings != null) { - for(GroupingDefinition grouping : groupings) { + if (groupings != null) { + for (GroupingDefinition grouping : groupings) { traverse(grouping); } } @@ -97,10 +92,10 @@ public class DataNodeIterator implements Iterator { @Override public boolean hasNext() { if (container.getChildNodes() != null) { - Set childs = container.getChildNodes(); + final Set childNodes = container.getChildNodes(); - if ((childs != null) && !childs.isEmpty()) { - return childs.iterator().hasNext(); + if ((childNodes != null) && !childNodes.isEmpty()) { + return childNodes.iterator().hasNext(); } } return false;