*/
package org.opendaylight.protocol.pcep.spi.pojo;
-import java.util.List;
-
-import javax.annotation.concurrent.GuardedBy;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
+import java.util.List;
+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 com.google.common.base.Preconditions;
-
-public abstract class AbstractPCEPExtensionProviderActivator implements PCEPExtensionProviderActivator {
- private static final Logger LOG = LoggerFactory.getLogger(AbstractPCEPExtensionProviderActivator.class);
+import org.opendaylight.yangtools.concepts.Registration;
- @GuardedBy("this")
- private List<AutoCloseable> registrations;
+public abstract class AbstractPCEPExtensionProviderActivator implements AutoCloseable, PCEPExtensionProviderActivator {
+ @GuardedBy("this")
+ 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 synchronized final void start(final PCEPExtensionProviderContext context) {
- Preconditions.checkState(this.registrations == null);
+ @Override
+ public final synchronized void start(final PCEPExtensionProviderContext context) {
+ checkState(this.registrations == null);
- this.registrations = Preconditions.checkNotNull(startImpl(context));
- }
+ this.registrations = requireNonNull(startImpl(context));
+ }
- @Override
- public synchronized final void stop() {
- Preconditions.checkState(this.registrations != null);
+ @Override
+ public final synchronized void stop() {
+ if (this.registrations == null) {
+ return;
+ }
- for (final AutoCloseable r : this.registrations) {
- try {
- r.close();
- } catch (final Exception e) {
- LOG.warn("Failed to close registration", e);
- }
- }
+ this.registrations.forEach(Registration::close);
+ this.registrations = null;
+ }
- this.registrations = null;
- }
+ @Override
+ public final void close() {
+ stop();
+ }
}