*/
package org.opendaylight.mdsal.binding.java.api.generator
+import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTATION_FIELD
import com.google.common.base.MoreObjects
import java.util.Collections
import java.util.Comparator
import java.util.List
-import java.util.Map
import java.util.Set
import org.opendaylight.mdsal.binding.model.api.AnnotationType
import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
import org.opendaylight.mdsal.binding.model.api.Type
import org.opendaylight.mdsal.binding.model.util.Types
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
import org.opendaylight.yangtools.yang.binding.Identifiable
abstract class AbstractBuilderTemplate extends BaseTemplate {
def protected final generateAugmentField() {
val augmentTypeRef = augmentType.importedName
return '''
- «Map.importedName»<«Class.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> «AUGMENTATION_FIELD» = «Collections.importedName».emptyMap();
+ «JU_MAP.importedName»<«CLASS.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> «AUGMENTATION_FIELD» = «Collections.importedName».emptyMap();
'''
}
override generateToString(Collection<GeneratedProperty> properties) '''
«IF properties !== null»
@«OVERRIDE.importedName»
- public «String.importedName» toString() {
+ public «STRING.importedName» toString() {
final «MoreObjects.importedName».ToStringHelper helper = «MoreObjects.importedName».toStringHelper("«targetType.name»");
«FOR property : properties»
- «CodeHelpers.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
+ «CODEHELPERS.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
«ENDFOR»
«IF augmentType !== null»
- «CodeHelpers.importedName».appendValue(helper, "«AUGMENTATION_FIELD»", augmentations().values());
+ «CODEHELPERS.importedName».appendValue(helper, "«AUGMENTATION_FIELD»", augmentations().values());
«ENDIF»
return helper.toString();
}
package org.opendaylight.mdsal.binding.java.api.generator
import static org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil.encodeAngleBrackets
+import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
import com.google.common.base.CharMatcher
import com.google.common.base.MoreObjects
import org.opendaylight.mdsal.binding.model.util.TypeConstants
import org.opendaylight.mdsal.binding.model.util.Types
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
import org.opendaylight.yangtools.yang.common.QName
import org.opendaylight.yangtools.yang.common.Uint8
import org.opendaylight.yangtools.yang.common.Uint16
def protected generateToString(Collection<GeneratedProperty> properties) '''
«IF !properties.empty»
@«OVERRIDE.importedName»
- public «String.importedName» toString() {
+ public «STRING.importedName» toString() {
final «MoreObjects.importedName».ToStringHelper helper = «MoreObjects.importedName».toStringHelper(«type.importedName».class);
«FOR property : properties»
- «CodeHelpers.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
+ «CODEHELPERS.importedName».appendValue(helper, "«property.fieldName»", «property.fieldName»);
«ENDFOR»
return helper.toString();
}
«FOR currentConstant : type.getConstantDefinitions»
«IF currentConstant.getName.startsWith(TypeConstants.PATTERN_CONSTANT_NAME)
&& fieldUpperCase.equals(currentConstant.getName.substring(TypeConstants.PATTERN_CONSTANT_NAME.length))»
- «CodeHelpers.importedName».checkPattern(value, «Constants.MEMBER_PATTERN_LIST»«fieldName», «Constants.MEMBER_REGEX_LIST»«fieldName»);
+ «CODEHELPERS.importedName».checkPattern(value, «Constants.MEMBER_PATTERN_LIST»«fieldName», «Constants.MEMBER_REGEX_LIST»«fieldName»);
«ENDIF»
«ENDFOR»
'''
import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME
import java.util.List
-import java.util.Map
-import java.util.Objects
import org.opendaylight.mdsal.binding.model.api.AnnotationType
import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
import org.opendaylight.mdsal.binding.model.api.GeneratedType
«hashCodeResult(properties)»
«IF augmentType !== null»
- result = prime * result + «Objects.importedName».hashCode(augmentations());
+ result = prime * result + «JU_OBJECTS.importedName».hashCode(augmentations());
«ENDIF»
hash = result;
if (getClass() == obj.getClass()) {
// Simple case: we are comparing against self
«type.name» otherImpl = («type.name») obj;
- if (!«Objects.importedName».equals(augmentations(), otherImpl.augmentations())) {
+ if (!«JU_OBJECTS.importedName».equals(augmentations(), otherImpl.augmentations())) {
return false;
}
} else {
// Hard case: compare our augments with presence there...
- for («Map.importedName».Entry<«Class.importedName»<? extends «augmentType.importedName»>, «augmentType.importedName»> e : augmentations().entrySet()) {
+ for («JU_MAP.importedName».Entry<«CLASS.importedName»<? extends «augmentType.importedName»>, «augmentType.importedName»> e : augmentations().entrySet()) {
if (!e.getValue().equals(other.«AUGMENTABLE_AUGMENTATION_NAME»(e.getKey()))) {
return false;
}
import java.util.List
import java.util.Map
import java.util.Set
-import java.util.regex.Pattern
import org.opendaylight.mdsal.binding.model.api.AnnotationType
import org.opendaylight.mdsal.binding.model.api.GeneratedProperty
import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
import org.opendaylight.yangtools.concepts.Builder
import org.opendaylight.yangtools.yang.binding.AugmentationHolder
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
import org.opendaylight.yangtools.yang.binding.DataObject
/**
«FOR impl : targetType.getAllIfcs»
«generateIfCheck(impl, done)»
«ENDFOR»
- «CodeHelpers.importedName».validValue(isValidArg, arg, "«targetType.getAllIfcs.toListOfNames»");
+ «CODEHELPERS.importedName».validValue(isValidArg, arg, "«targetType.getAllIfcs.toListOfNames»");
}
«ENDIF»
«ENDIF»
«IF c.getName.startsWith(TypeConstants.PATTERN_CONSTANT_NAME)»
«val cValue = c.value as Map<String, String>»
«val String fieldSuffix = c.getName.substring(TypeConstants.PATTERN_CONSTANT_NAME.length)»
+ «val jurPatternRef = JUR_PATTERN.importedName»
«IF cValue.size == 1»
«val firstEntry = cValue.entrySet.iterator.next»
- private static final «Pattern.importedName» «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «Pattern.importedName».compile("«firstEntry.key.escapeJava»");
+ private static final «jurPatternRef» «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «jurPatternRef».compile("«firstEntry.key.escapeJava»");
private static final String «Constants.MEMBER_REGEX_LIST»«fieldSuffix» = "«firstEntry.value.escapeJava»";
«ELSE»
- private static final «Pattern.importedName»[] «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «CodeHelpers.importedName».compilePatterns(«ImmutableList.importedName».of(
+ private static final «jurPatternRef»[] «Constants.MEMBER_PATTERN_LIST»«fieldSuffix» = «CODEHELPERS.importedName».compilePatterns(«ImmutableList.importedName».of(
«FOR v : cValue.keySet SEPARATOR ", "»"«v.escapeJava»"«ENDFOR»));
private static final String[] «Constants.MEMBER_REGEX_LIST»«fieldSuffix» = { «
FOR v : cValue.values SEPARATOR ", "»"«v.escapeJava»"«ENDFOR» };
*/
@Deprecated(forRemoval = true)
public «type.getName» «setterName»(final «uintType.importedName» value) {
- return «setterName»(«CodeHelpers.importedName».compatUint(value));
+ return «setterName»(«CODEHELPERS.importedName».compatUint(value));
}
«ENDIF»
'''
«IF augmentType !== null»
«val augmentTypeRef = augmentType.importedName»
- public «type.name» add«AUGMENTATION_FIELD_UPPER»(«Class.importedName»<? extends «augmentTypeRef»> augmentationType, «augmentTypeRef» augmentationValue) {
+ «val jlClassRef = CLASS.importedName»
+ public «type.name» add«AUGMENTATION_FIELD_UPPER»(«jlClassRef»<? extends «augmentTypeRef»> augmentationType, «augmentTypeRef» augmentationValue) {
if (augmentationValue == null) {
return remove«AUGMENTATION_FIELD_UPPER»(augmentationType);
}
return this;
}
- public «type.name» remove«AUGMENTATION_FIELD_UPPER»(«Class.importedName»<? extends «augmentTypeRef»> augmentationType) {
+ public «type.name» remove«AUGMENTATION_FIELD_UPPER»(«jlClassRef»<? extends «augmentTypeRef»> augmentationType) {
if (this.«AUGMENTATION_FIELD» instanceof «HashMap.importedName») {
this.«AUGMENTATION_FIELD».remove(augmentationType);
}
private def generateAugmentation() '''
@«SUPPRESS_WARNINGS.importedName»({ "unchecked", "checkstyle:methodTypeParameterName"})
- public <E$$ extends «augmentType.importedName»> E$$ «AUGMENTABLE_AUGMENTATION_NAME»(«Class.importedName»<E$$> augmentationType) {
- return (E$$) «AUGMENTATION_FIELD».get(«CodeHelpers.importedName».nonNullValue(augmentationType, "augmentationType"));
+ public <E$$ extends «augmentType.importedName»> E$$ «AUGMENTABLE_AUGMENTATION_NAME»(«CLASS.importedName»<E$$> augmentationType) {
+ return (E$$) «AUGMENTATION_FIELD».get(«CODEHELPERS.importedName».nonNullValue(augmentationType, "augmentationType"));
}
'''
return '''
if (base instanceof «augmentationHolderRef») {
@SuppressWarnings("unchecked")
- «Map.importedName»<«Class.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> aug =((«augmentationHolderRef»<«typeRef»>) base).augmentations();
+ «JU_MAP.importedName»<«CLASS.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> aug =((«augmentationHolderRef»<«typeRef»>) base).augmentations();
if (!aug.isEmpty()) {
this.«AUGMENTATION_FIELD» = new «hashMapRef»<>(aug);
}
import java.util.Comparator
import java.util.List
import java.util.Map
-import java.util.regex.Pattern
import javax.management.ConstructorParameters
import org.gaul.modernizer_maven_annotations.SuppressModernizer
import org.opendaylight.mdsal.binding.model.api.ConcreteType
import org.opendaylight.mdsal.binding.model.api.Restrictions
import org.opendaylight.mdsal.binding.model.api.Type
import org.opendaylight.mdsal.binding.model.util.TypeConstants
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
import org.opendaylight.yangtools.yang.common.Empty
import org.opendaylight.yangtools.yang.common.Uint16
import org.opendaylight.yangtools.yang.common.Uint32
* If we have patterns, we need to apply them to the value field. This is a sad consequence of how this code is
* structured.
*/»
- «CodeHelpers.importedName».requireValue(_value);
+ «CODEHELPERS.importedName».requireValue(_value);
«genPatternEnforcer("_value")»
«FOR p : properties»
return ""
}
- val compatUint = CodeHelpers.importedName + ".compatUint("
+ val compatUint = CODEHELPERS.importedName + ".compatUint("
return '''
/**
def private genPatternEnforcer(String ref) '''
«FOR c : consts»
«IF c.name == TypeConstants.PATTERN_CONSTANT_NAME»
- «CodeHelpers.importedName».checkPattern(«ref», «Constants.MEMBER_PATTERN_LIST», «Constants.MEMBER_REGEX_LIST»);
+ «CODEHELPERS.importedName».checkPattern(«ref», «Constants.MEMBER_PATTERN_LIST», «Constants.MEMBER_REGEX_LIST»);
«ENDIF»
«ENDFOR»
'''
'''
def protected bitsArgs() '''
- «List.importedName»<«String.importedName»> properties = «Lists.importedName».newArrayList(«allProperties.propsAsArgs»);
+ «JU_LIST.importedName»<«STRING.importedName»> properties = «Lists.importedName».newArrayList(«allProperties.propsAsArgs»);
if (!properties.contains(defaultValue)) {
throw new «IllegalArgumentException.importedName»("invalid default parameter");
}
«FOR c : consts»
«IF c.name == TypeConstants.PATTERN_CONSTANT_NAME»
«val cValue = c.value as Map<String, String>»
- public static final «List.importedName»<String> «TypeConstants.PATTERN_CONSTANT_NAME» = «ImmutableList.importedName».of(«
+ «val jurPatternRef = JUR_PATTERN.importedName»
+ public static final «JU_LIST.importedName»<String> «TypeConstants.PATTERN_CONSTANT_NAME» = «ImmutableList.importedName».of(«
FOR v : cValue.keySet SEPARATOR ", "»"«v.escapeJava»"«ENDFOR»);
«IF cValue.size == 1»
- private static final «Pattern.importedName» «Constants.MEMBER_PATTERN_LIST» = «Pattern.importedName».compile(«TypeConstants.PATTERN_CONSTANT_NAME».get(0));
+ private static final «jurPatternRef» «Constants.MEMBER_PATTERN_LIST» = «jurPatternRef».compile(«TypeConstants.PATTERN_CONSTANT_NAME».get(0));
private static final String «Constants.MEMBER_REGEX_LIST» = "«cValue.values.iterator.next.escapeJava»";
«ELSE»
- private static final «Pattern.importedName»[] «Constants.MEMBER_PATTERN_LIST» = «CodeHelpers.importedName».compilePatterns(«TypeConstants.PATTERN_CONSTANT_NAME»);
+ private static final «jurPatternRef»[] «Constants.MEMBER_PATTERN_LIST» = «CODEHELPERS.importedName».compilePatterns(«TypeConstants.PATTERN_CONSTANT_NAME»);
private static final String[] «Constants.MEMBER_REGEX_LIST» = { «
FOR v : cValue.values SEPARATOR ", "»"«v.escapeJava»"«ENDFOR» };
«ENDIF»
«hashCodeResult(genTO.hashCodeIdentifiers)»
return result;
«ELSE»
- return «CodeHelpers.importedName».wrapperHashCode(«genTO.hashCodeIdentifiers.get(0).fieldName»);
+ return «CODEHELPERS.importedName».wrapperHashCode(«genTO.hashCodeIdentifiers.get(0).fieldName»);
«ENDIF»
}
'''
package org.opendaylight.mdsal.binding.java.api.generator
import static org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil.encodeAngleBrackets
+import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
import com.google.common.collect.ImmutableMap
import com.google.common.collect.ImmutableMap.Builder
-import java.util.Map
-import java.util.Objects
import java.util.Optional
import org.opendaylight.mdsal.binding.model.api.Enumeration
import org.opendaylight.mdsal.binding.model.api.GeneratedType
public enum «enums.name» implements «org.opendaylight.yangtools.yang.binding.Enumeration.importedName» {
«writeEnumeration(enums)»
- private static final «Map.importedName»<«String.importedName», «enums.name»> NAME_MAP;
- private static final «Map.importedName»<«Integer.importedName», «enums.name»> VALUE_MAP;
+ private static final «JU_MAP.importedName»<«STRING.importedName», «enums.name»> NAME_MAP;
+ private static final «JU_MAP.importedName»<«Integer.importedName», «enums.name»> VALUE_MAP;
static {
- final «Builder.importedName»<«String.importedName», «enums.name»> nb = «ImmutableMap.importedName».builder();
+ final «Builder.importedName»<«STRING.importedName», «enums.name»> nb = «ImmutableMap.importedName».builder();
final «Builder.importedName»<«Integer.importedName», «enums.name»> vb = «ImmutableMap.importedName».builder();
for («enums.name» enumItem : «enums.name».values()) {
vb.put(enumItem.value, enumItem);
VALUE_MAP = vb.build();
}
- private final «String.importedName» name;
+ private final «STRING.importedName» name;
private final int value;
- private «enums.name»(int value, «String.importedName» name) {
+ private «enums.name»(int value, «STRING.importedName» name) {
this.value = value;
this.name = name;
}
@«OVERRIDE.importedName»
- public «String.importedName» getName() {
+ public «STRING.importedName» getName() {
return name;
}
* @return corresponding «enums.name» item, if present
* @throws NullPointerException if name is null
*/
- public static «Optional.importedName»<«enums.name»> forName(«String.importedName» name) {
- return «Optional.importedName».ofNullable(NAME_MAP.get(«Objects.importedName».requireNonNull(name)));
+ public static «Optional.importedName»<«enums.name»> forName(«STRING.importedName» name) {
+ return «Optional.importedName».ofNullable(NAME_MAP.get(«JU_OBJECTS.importedName».requireNonNull(name)));
}
/**
import org.opendaylight.mdsal.binding.model.api.MethodSignature
import org.opendaylight.mdsal.binding.model.api.Type
import org.opendaylight.mdsal.binding.model.util.TypeConstants
-import org.opendaylight.yangtools.yang.binding.CodeHelpers
/**
* Template for generating JAVA interfaces.
def private generateDefaultImplementedInterface() '''
@«OVERRIDE.importedName»
- default «Class.importedName»<«type.fullyQualifiedName»> «DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME»() {
+ default «CLASS.importedName»<«type.fullyQualifiedName»> «DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME»() {
return «type.fullyQualifiedName».class;
}
'''
«formatDataForJavaDoc(method, "@return " + asCode(ret.fullyQualifiedName) + " " + asCode(propertyNameFromGetter(method)) + ", or an empty list if it is not present")»
«method.annotations.generateAnnotations»
default «ret.importedNonNull» «name»() {
- return «CodeHelpers.importedName».nonnull(«getGetterMethodForNonnull(name)»());
+ return «CODEHELPERS.importedName».nonnull(«getGetterMethodForNonnull(name)»());
}
'''
import static java.util.Objects.requireNonNull;
import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.opendaylight.mdsal.binding.model.api.ConcreteType;
import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
import org.opendaylight.mdsal.binding.model.api.Restrictions;
import org.opendaylight.mdsal.binding.model.api.Type;
import org.opendaylight.mdsal.binding.model.util.Types;
+import org.opendaylight.yangtools.yang.binding.CodeHelpers;
/**
* Base Java file template. Contains a non-null type and imports which the generated code refers to.
*/
class JavaFileTemplate {
- static final JavaTypeName NONNULL = JavaTypeName.create("org.eclipse.jdt.annotation", "NonNull");
- static final JavaTypeName NULLABLE = JavaTypeName.create("org.eclipse.jdt.annotation", "Nullable");
+ /**
+ * {@code java.lang.Class} as a JavaTypeName.
+ */
+ static final JavaTypeName CLASS = JavaTypeName.create(Class.class);
+ /**
+ * {@code java.lang.Deprecated} as a JavaTypeName.
+ */
static final JavaTypeName DEPRECATED = JavaTypeName.create(Deprecated.class);
+ /**
+ * {@code java.lang.Override} as a JavaTypeName.
+ */
static final JavaTypeName OVERRIDE = JavaTypeName.create(Override.class);
+
+ /**
+ * {@code java.lang.SuppressWarnings} as a JavaTypeName.
+ */
static final JavaTypeName SUPPRESS_WARNINGS = JavaTypeName.create(SuppressWarnings.class);
+ /**
+ * {@code java.util.Arrays} as a JavaTypeName.
+ */
+ static final JavaTypeName JU_ARRAYS = JavaTypeName.create(Arrays.class);
+ /**
+ * {@code java.util.List} as a JavaTypeName.
+ */
+ static final JavaTypeName JU_LIST = JavaTypeName.create(List.class);
+ /**
+ * {@code java.util.Map} as a JavaTypeName.
+ */
+ static final JavaTypeName JU_MAP = JavaTypeName.create(Map.class);
+ /**
+ * {@code java.util.Objects} as a JavaTypeName.
+ */
+ static final JavaTypeName JU_OBJECTS = JavaTypeName.create(Objects.class);
+ /**
+ * {@code java.util.regex.Pattern} as a JavaTypeName.
+ */
+ static final JavaTypeName JUR_PATTERN = JavaTypeName.create(Pattern.class);
+
+ /**
+ * {@code org.eclipse.jdt.annotation.NonNull} as a JavaTypeName.
+ */
+ static final JavaTypeName NONNULL = JavaTypeName.create("org.eclipse.jdt.annotation", "NonNull");
+ /**
+ * {@code org.eclipse.jdt.annotation.Nullable} as a JavaTypeName.
+ */
+ static final JavaTypeName NULLABLE = JavaTypeName.create("org.eclipse.jdt.annotation", "Nullable");
+
+ /**
+ * {@code org.opendaylight.yangtools.yang.binding.CodeHelpers} as a JavaTypeName.
+ */
+ static final JavaTypeName CODEHELPERS = JavaTypeName.create(CodeHelpers.class);
+
private final AbstractJavaGeneratedType javaType;
private final GeneratedType type;
* @return Imported class name
*/
final String importedUtilClass(final GeneratedProperty property) {
- return importedName(property.getReturnType().getName().indexOf('[') != -1 ? Arrays.class : Objects.class);
+ return importedName(property.getReturnType().getName().indexOf('[') != -1 ? JU_ARRAYS : JU_OBJECTS);
}
static final Restrictions restrictionsForSetter(final Type actualType) {
import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
import static org.opendaylight.mdsal.binding.model.util.Types.getOuterClassName;
-import java.util.Arrays
import java.util.Base64;
import org.gaul.modernizer_maven_annotations.SuppressModernizer
import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject
*
* @return String representation of this union's value.
*/
- public «String.importedName» stringValue() {
+ public «STRING.importedName» stringValue() {
«FOR property : finalProperties»
«val field = property.fieldName»
if («field» != null) {
return «field».toString();
«ELSEIF BYTE_ARRAY.equals(propRet)»
««« type binary
- return new «String.importedName»(«field»);
+ return new «STRING.importedName»(«field»);
«ELSEIF propRet.fullyQualifiedName.startsWith("java.lang") || propRet instanceof Enumeration
|| propRet.fullyQualifiedName.startsWith("java.math")»
««« type int*, decimal64 or enumeration*
&& (propRet as GeneratedTransferObject).typedef // Is it a typedef
&& (propRet as GeneratedTransferObject).baseType instanceof BitsTypeDefinition»
««« generated bits typedef
- return «Arrays.importedName».toString(«field».getValue());
+ return «JU_ARRAYS.importedName».toString(«field».getValue());
«ELSE»
««« generated type
return «field».getValue().toString();