import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTABLE_AUGMENTATION_NAME
import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.DATA_CONTAINER_IMPLEMENTED_INTERFACE_NAME
-import com.google.common.collect.ImmutableMap
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
import org.opendaylight.mdsal.binding.model.api.Type
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping
+import org.opendaylight.yangtools.yang.binding.AbstractAugmentable
import org.opendaylight.yangtools.yang.binding.DataObject
class BuilderImplTemplate extends AbstractBuilderTemplate {
}
override body() '''
- private static final class «type.name» implements «targetType.importedName» {
-
- «generateFields(true)»
-
+ «targetType.annotations.generateDeprecatedAnnotation»
+ private static final class «type.name»
+ «val impIface = targetType.importedName»
«IF augmentType !== null»
- private «generateAugmentField()»
+ extends «AbstractAugmentable.importedName»<«impIface»>
«ENDIF»
+ implements «impIface» {
- «generateCopyConstructor(builderType, type)»
+ «generateFields(true)»
- @«Deprecated.importedName»
- @«Override.importedName»
- public «Class.importedName»<«targetType.importedName»> getImplementedInterface() {
- return «targetType.importedName».class;
- }
+ «generateCopyConstructor(builderType, type)»
«generateGetters(true)»
}
'''
+ override generateDeprecatedAnnotation(AnnotationType ann) {
+ return generateAnnotation(ann)
+ }
+
/**
* Template method which generates the method <code>hashCode()</code>.
*
private int hash = 0;
private volatile boolean hashValid = false;
- @«Override.importedName»
+ @«OVERRIDE.importedName»
public int hashCode() {
if (hashValid) {
return hash;
«hashCodeResult(properties)»
«IF augmentType !== null»
- result = prime * result + «Objects.importedName».hashCode(«AUGMENTATION_FIELD»);
+ result = prime * result + «JU_OBJECTS.importedName».hashCode(augmentations());
«ENDIF»
hash = result;
*/
def protected generateEquals() '''
«IF !properties.empty || augmentType !== null»
- @«Override.importedName»
+ @«OVERRIDE.importedName»
public boolean equals(«Object.importedName» obj) {
if (this == obj) {
return true;
if (getClass() == obj.getClass()) {
// Simple case: we are comparing against self
«type.name» otherImpl = («type.name») obj;
- if (!«Objects.importedName».equals(«AUGMENTATION_FIELD», otherImpl.«AUGMENTATION_FIELD»)) {
+ 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 : «AUGMENTATION_FIELD».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;
}
'''
override protected generateCopyAugmentation(Type implType) '''
- this.«AUGMENTATION_FIELD» = «ImmutableMap.importedName».copyOf(base.«AUGMENTATION_FIELD»);
+ super(base.«AUGMENTATION_FIELD»);
'''
}
\ No newline at end of file