Propagate notification status to generated listener methods
[mdsal.git] / binding / mdsal-binding-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / java / api / generator / JavaFileTemplate.java
index 3aa4f8f7901ba0a5cc998ebb7c4aba8072e3400b..d86bbfe66e561ebafa90b5e9604e0c682f9cf762 100644 (file)
@@ -43,7 +43,6 @@ 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.Augmentable;
-import org.opendaylight.yangtools.yang.binding.AugmentationHolder;
 import org.opendaylight.yangtools.yang.binding.CodeHelpers;
 
 
@@ -68,9 +67,13 @@ class JavaFileTemplate {
      */
     static final @NonNull JavaTypeName OVERRIDE = JavaTypeName.create(Override.class);
     /**
-     * {@code java.lang.SuppressWarnings} as a JavaTypeName.
+     * {@code java.lang.void} as a JavaTypeName.
      */
     static final @NonNull JavaTypeName SUPPRESS_WARNINGS = JavaTypeName.create(SuppressWarnings.class);
+    /**
+     * {@code java.lang.SuppressWarnings} as a JavaTypeName.
+     */
+    static final @NonNull JavaTypeName VOID = JavaTypeName.create(void.class);
 
     /**
      * {@code java.util.Arrays} as a JavaTypeName.
@@ -110,10 +113,6 @@ class JavaFileTemplate {
      * {@code org.opendaylight.yangtools.yang.binding.CodeHelpers} as a JavaTypeName.
      */
     static final @NonNull JavaTypeName CODEHELPERS = JavaTypeName.create(CodeHelpers.class);
-    /**
-     * {@code org.opendaylight.yangtools.yang.binding.AugmentationHolder} as a JavaTypeName.
-     */
-    static final @NonNull JavaTypeName AUGMENTATION_HOLDER = JavaTypeName.create(AugmentationHolder.class);
 
     private static final Comparator<MethodSignature> METHOD_COMPARATOR = new AlphabeticallyTypeMemberComparator<>();
     private static final Type AUGMENTATION_RET_TYPE;
@@ -183,6 +182,14 @@ class JavaFileTemplate {
         return importedName(intype, importedName(NULLABLE));
     }
 
+    final @NonNull String fullyQualifiedNonNull(final @NonNull Type intype) {
+        return fullyQualifiedName(intype, importedName(NONNULL));
+    }
+
+    final @NonNull String fullyQualifiedName(final @NonNull Type intype, final @NonNull String annotation) {
+        return javaType.getFullyQualifiedReference(intype, annotation);
+    }
+
     // Exposed for BuilderTemplate
     boolean isLocalInnerClass(final JavaTypeName name) {
         final Optional<JavaTypeName> optEnc = name.immediatelyEnclosingClass();
@@ -238,6 +245,16 @@ class JavaFileTemplate {
         return null;
     }
 
+    /**
+     * Generate a call to {@link Object#clone()} if target field represents an array. Returns an empty string otherwise.
+     *
+     * @param property Generated property
+     * @return The string used to clone the property, or an empty string
+     */
+    static final String cloneCall(final GeneratedProperty property) {
+        return property.getReturnType().getName().endsWith("[]") ? ".clone()" : "";
+    }
+
     /**
      * Returns set of method signature instances which contains all the methods of the <code>genType</code>
      * and all the methods of the implemented interfaces.