/*
- * 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,
public abstract class AbstractMockedModule implements Module {
protected final AutoCloseable instance;
-
- public AbstractMockedModule() throws Exception {
- instance = prepareMockedInstance();
- }
+ private final ModuleIdentifier id;
protected abstract AutoCloseable prepareMockedInstance() throws Exception;
- public AbstractMockedModule(DynamicMBeanWithInstance old) {
- instance = old.getInstance();
+ @SuppressWarnings("IllegalCatch")
+ public AbstractMockedModule(final DynamicMBeanWithInstance old, final ModuleIdentifier id) {
+ if (old != null) {
+ instance = old.getInstance();
+ } else {
+ try {
+ instance = prepareMockedInstance();
+ } catch (final Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ this.id = id == null ? new ModuleIdentifier(getClass().getCanonicalName(), "mock") : id;
+ }
+
+ @Override
+ public boolean canReuse(final Module oldModule) {
+ return instance != null;
}
@Override
return instance;
}
-
+ @Override
+ public ModuleIdentifier getIdentifier() {
+ return id;
+ }
}