Register PCEP session to stats handler only after it is fully initialized
[bgpcep.git] / pcep / spi / src / main / java / org / opendaylight / protocol / pcep / spi / pojo / AbstractPCEPExtensionProviderActivator.java
index 442beca1766c6deda6df3456320fd0a400fe0e8f..e865c274b9a696b6b392c6b364c8c3a9cba65845 100644 (file)
@@ -7,45 +7,37 @@
  */
 package org.opendaylight.protocol.pcep.spi.pojo;
 
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
 
 import java.util.List;
-
-import javax.annotation.concurrent.GuardedBy;
-
+import org.checkerframework.checker.lock.qual.GuardedBy;
+import org.checkerframework.checker.lock.qual.Holding;
 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderActivator;
 import org.opendaylight.protocol.pcep.spi.PCEPExtensionProviderContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.opendaylight.yangtools.concepts.Registration;
 
 public abstract class AbstractPCEPExtensionProviderActivator implements AutoCloseable, PCEPExtensionProviderActivator {
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractPCEPExtensionProviderActivator.class);
-
     @GuardedBy("this")
-    private List<AutoCloseable> registrations;
+    private List<? extends Registration> registrations;
 
-    @GuardedBy("this")
-    protected abstract List<AutoCloseable> startImpl(PCEPExtensionProviderContext context);
+    @Holding("this")
+    protected abstract List<? extends Registration> startImpl(PCEPExtensionProviderContext context);
 
     @Override
     public final synchronized void start(final PCEPExtensionProviderContext context) {
-        Preconditions.checkState(this.registrations == null);
+        checkState(this.registrations == null);
 
-        this.registrations = Preconditions.checkNotNull(startImpl(context));
+        this.registrations = requireNonNull(startImpl(context));
     }
 
     @Override
     public final synchronized void stop() {
-        Preconditions.checkState(this.registrations != null);
-
-        for (final AutoCloseable r : this.registrations) {
-            try {
-                r.close();
-            } catch (final Exception e) {
-                LOG.warn("Failed to close registration", e);
-            }
+        if (this.registrations == null) {
+            return;
         }
 
+        this.registrations.forEach(Registration::close);
         this.registrations = null;
     }