Add yang.binding.contract documentation
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / AdapterBuilder.java
index b125acad121d9bb25be3b8bf1b8920c32cc64da1..47e27f0198376e20ee8f2d159721db14a520fdfc 100644 (file)
@@ -7,24 +7,25 @@
  */
 package org.opendaylight.mdsal.binding.dom.adapter;
 
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkState;
+
 import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.collect.MutableClassToInstanceMap;
 import java.util.Set;
-import org.opendaylight.yangtools.concepts.Builder;
+import org.eclipse.jdt.annotation.NonNull;
 
-public abstract class AdapterBuilder<T,D> implements Builder<T> {
+public abstract class AdapterBuilder<T, D> {
 
     private final ClassToInstanceMap<D> delegates = MutableClassToInstanceMap.create();
 
     public abstract Set<? extends Class<? extends D>> getRequiredDelegates();
 
-    protected abstract T createInstance(ClassToInstanceMap<D> delegates);
+    protected abstract @NonNull T createInstance(@NonNull ClassToInstanceMap<D> immutableDelegates);
 
     private void checkAllRequiredServices() {
         for (final Class<? extends D> type : getRequiredDelegates()) {
-            Preconditions.checkState(delegates.get(type) != null, "Requires service %s is not defined.",type);
+            checkState(delegates.get(type) != null, "Requires service %s is not defined.", type);
         }
     }
 
@@ -32,10 +33,14 @@ public abstract class AdapterBuilder<T,D> implements Builder<T> {
         delegates.put(type,impl);
     }
 
-    @Override
-    public final  T build() {
+    /**
+     * Check that all required {@code delegates} are present and return an instance of type {@code T}.
+     *
+     * @return Instance of {@code T}
+     * @throws IllegalStateException if a required delegate instance is missing
+     */
+    public final @NonNull T build() {
         checkAllRequiredServices();
         return createInstance(ImmutableClassToInstanceMap.copyOf(delegates));
     }
-
 }