Bump yangtools to 13.0.0
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / main / java / org / opendaylight / mdsal / binding / dom / adapter / FutureSchema.java
index b89f7f406d702e10ec2d281d23d4f9c22a009d37..fbe1d71f70b23168a5ae009665ea9367adc26782 100644 (file)
@@ -5,7 +5,6 @@
  * 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.mdsal.binding.dom.adapter;
 
 import static java.util.Objects.requireNonNull;
@@ -19,10 +18,12 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.function.Predicate;
-import javax.annotation.concurrent.GuardedBy;
-import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
+import org.checkerframework.checker.lock.qual.GuardedBy;
+import org.opendaylight.mdsal.binding.runtime.api.BindingRuntimeContext;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 abstract class FutureSchema implements AutoCloseable {
     private static final class Waiting extends FutureSchema {
@@ -47,15 +48,16 @@ abstract class FutureSchema implements AutoCloseable {
 
         final boolean waitForSchema() {
             try {
-                schemaPromise.get(FutureSchema.this.duration, FutureSchema.this.unit);
+                schemaPromise.get(duration, unit);
                 return true;
             } catch (final InterruptedException | ExecutionException e) {
                 throw new IllegalStateException(e);
             } catch (final TimeoutException e) {
+                LOG.trace("Wait for {} timed out", schemaPromise, e);
                 return false;
             } finally {
-                synchronized (FutureSchema.this.postponedOperations) {
-                    FutureSchema.this.postponedOperations.remove(this);
+                synchronized (postponedOperations) {
+                    postponedOperations.remove(this);
                 }
             }
         }
@@ -71,6 +73,8 @@ abstract class FutureSchema implements AutoCloseable {
         }
     }
 
+    private static final Logger LOG = LoggerFactory.getLogger(FutureSchema.class);
+
     @GuardedBy("postponedOperations")
     private final Set<FutureSchemaPredicate> postponedOperations = new LinkedHashSet<>();
     private final long duration;
@@ -79,7 +83,7 @@ abstract class FutureSchema implements AutoCloseable {
     private volatile BindingRuntimeContext runtimeContext;
 
     FutureSchema(final long time, final TimeUnit unit) {
-        this.duration = time;
+        duration = time;
         this.unit = requireNonNull(unit);
     }
 
@@ -128,7 +132,7 @@ abstract class FutureSchema implements AutoCloseable {
         return addPostponedOpAndWait(new FutureSchemaPredicate() {
             @Override
             public boolean test(final BindingRuntimeContext input) {
-                return input.getSchemaContext().findModule(module).isPresent();
+                return input.modelContext().findModule(module).isPresent();
             }
         });
     }
@@ -139,7 +143,7 @@ abstract class FutureSchema implements AutoCloseable {
             public boolean test(final BindingRuntimeContext context) {
                 return bindingClasses.stream().allMatch(clz -> {
                     if (Augmentation.class.isAssignableFrom(clz)) {
-                        return context.getAugmentationDefinition(clz) != null;
+                        return context.getAugmentationDefinition(clz.asSubclass(Augmentation.class)) != null;
                     }
 
                     return context.getSchemaDefinition(clz) != null;