/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2013, 2017 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
import static org.junit.Assert.assertNull;
import java.io.Closeable;
-
import javax.annotation.Nullable;
-
import org.opendaylight.controller.config.api.ModuleIdentifier;
import org.opendaylight.controller.config.api.RuntimeBeanRegistratorAwareModule;
import org.opendaylight.controller.config.api.runtime.RootRuntimeBeanRegistrator;
* This class has two exported interfaces and two runtime beans. Recreation is
* triggered by setting Recreate attribute to true.
*/
-public class TestingScheduledThreadPoolModule implements Module,
- TestingScheduledThreadPoolConfigBeanMXBean,
- RuntimeBeanRegistratorAwareModule,
- TestingScheduledThreadPoolServiceInterface {
+public class TestingScheduledThreadPoolModule implements Module, TestingScheduledThreadPoolConfigBeanMXBean,
+ RuntimeBeanRegistratorAwareModule, TestingScheduledThreadPoolServiceInterface {
private final ModuleIdentifier identifier;
@Nullable
@Nullable
private final TestingScheduledThreadPoolImpl oldInstance;
- private final int threadCount = 10;
+ private int threadCount = 10;
private TestingScheduledThreadPoolImpl instance;
private RootRuntimeBeanRegistrator runtimeBeanRegistrator;
private boolean recreate;
- public TestingScheduledThreadPoolModule(ModuleIdentifier identifier,
- @Nullable AutoCloseable oldCloseable,
- @Nullable TestingScheduledThreadPoolImpl oldInstance) {
+ public TestingScheduledThreadPoolModule(final ModuleIdentifier identifier,
+ @Nullable final AutoCloseable oldCloseable, @Nullable final TestingScheduledThreadPoolImpl oldInstance) {
this.identifier = identifier;
this.oldCloseable = oldCloseable;
this.oldInstance = oldInstance;
}
@Override
- public void setRuntimeBeanRegistrator(
- RootRuntimeBeanRegistrator runtimeBeanRegistrator) {
+ public void setRuntimeBeanRegistrator(final RootRuntimeBeanRegistrator runtimeBeanRegistrator) {
this.runtimeBeanRegistrator = runtimeBeanRegistrator;
}
public void validate() {
assertNull(runtimeBeanRegistrator);
// check thread count
- checkState(threadCount > 0,
- "Parameter 'ThreadCount' must be greater than 0");
+ checkState(threadCount > 0, "Parameter 'ThreadCount' must be greater than 0");
+ }
+
+ @Override
+ public boolean canReuse(final Module oldModule) {
+ return getClass().isInstance(oldModule)
+ && getThreadCount() == ((TestingScheduledThreadPoolModule) oldModule).getThreadCount();
}
@Override
}
@Override
+ public void setThreadCount(final int threadCount) {
+ this.threadCount = threadCount;
+ }
+
+ @Override
+ @SuppressWarnings("IllegalCatch")
public Closeable getInstance() {
assertNotNull(runtimeBeanRegistrator);
if (instance == null) {
if (oldCloseable != null) {
try {
oldCloseable.close();
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new RuntimeException(e);
}
}
// close old threadpool and esp. unregister runtime beans
- instance = new TestingScheduledThreadPoolImpl(
- runtimeBeanRegistrator, threadCount);
+ instance = new TestingScheduledThreadPoolImpl(runtimeBeanRegistrator, threadCount);
}
}
return instance;
}
@Override
- public void setRecreate(boolean recreate) {
+ public void setRecreate(final boolean recreate) {
this.recreate = recreate;
}
public ModuleIdentifier getIdentifier() {
return identifier;
}
-
-
}