<parent>
<groupId>org.opendaylight.genius</groupId>
- <artifactId>binding-parent</artifactId>
+ <artifactId>quality-parent</artifactId>
<version>0.5.0-SNAPSHOT</version>
- <relativePath>../../commons/binding-parent</relativePath>
+ <relativePath>../../commons/quality-parent/</relativePath>
</parent>
<groupId>org.opendaylight.genius</groupId>
<artifactId>tools-api</artifactId>
- <version>0.5.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<!-- <name> formatting is used by autorelease to parse and notify projects on
build failure. Please do not modify this unless you have a good reason. -->
<dependency>
<groupId>org.opendaylight.infrautils</groupId>
<artifactId>metrics-api</artifactId>
- <version>${genius.infrautils.version}</version>
</dependency>
<dependency>
<groupId>org.opendaylight.infrautils</groupId>
<artifactId>infrautils-util</artifactId>
- <version>${genius.infrautils.version}</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>pax-cdi-api</artifactId>
<optional>true</optional>
</dependency>
+
+ <!-- Dependencies with <scope>test -->
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>testutils</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.awaitility</groupId>
+ <artifactId>awaitility</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-test-utils</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.infrautils</groupId>
+ <artifactId>infrautils-testutils</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.truth</groupId>
+ <artifactId>truth</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava-testlib</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal-binding-broker-impl</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>sal-binding-broker-impl</artifactId>
+ <scope>test</scope>
+ <type>test-jar</type>
+ </dependency>
</dependencies>
</project>
import java.util.Collection;
import java.util.concurrent.ExecutorService;
import javax.annotation.Nonnull;
-import javax.inject.Inject;
-
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
private final ExecutorService executorService;
- @Inject
public AbstractAsyncDataTreeChangeListener(DataBroker dataBroker, DataTreeIdentifier<T> dataTreeIdentifier,
ExecutorService executorService) {
super(dataBroker, dataTreeIdentifier);
this.executorService = executorService;
}
- @Inject
public AbstractAsyncDataTreeChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier,
ExecutorService executorService) {
this.executorService = executorService;
}
- @Inject
public AbstractAsyncDataTreeChangeListener(DataBroker dataBroker,
LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier,
import java.util.Collection;
import java.util.concurrent.ExecutorService;
import javax.annotation.Nonnull;
-import javax.inject.Inject;
import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
private final ExecutorService executorService;
- @Inject
public AbstractClusteredAsyncDataTreeChangeListener(DataBroker dataBroker, DataTreeIdentifier<T> dataTreeIdentifier,
ExecutorService executorService) {
super(dataBroker, dataTreeIdentifier);
this.executorService = executorService;
}
- @Inject
public AbstractClusteredAsyncDataTreeChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier,
ExecutorService executorService) {
this.executorService = executorService;
}
- @Inject
public AbstractClusteredAsyncDataTreeChangeListener(DataBroker dataBroker,
LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier,
import java.util.Collection;
import javax.annotation.Nonnull;
-import javax.inject.Inject;
-
import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
public abstract class AbstractClusteredSyncDataTreeChangeListener<T extends DataObject> extends
AbstractDataTreeChangeListener<T> implements ClusteredDataTreeChangeListener<T> {
- @Inject
public AbstractClusteredSyncDataTreeChangeListener(DataBroker dataBroker,
DataTreeIdentifier<T> dataTreeIdentifier) {
super(dataBroker, dataTreeIdentifier);
}
- @Inject
public AbstractClusteredSyncDataTreeChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier) {
super(dataBroker, datastoreType, instanceIdentifier);
}
- @Inject
public AbstractClusteredSyncDataTreeChangeListener(DataBroker dataBroker,
LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier,
import javax.annotation.Nonnull;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
-import javax.inject.Inject;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
private ListenerRegistration<AbstractDataTreeChangeListener<T>> dataChangeListenerRegistration;
private DataStoreMetrics dataStoreMetrics;
- @Inject
AbstractDataTreeChangeListener(DataBroker dataBroker, DataTreeIdentifier<T> dataTreeIdentifier) {
this.dataBroker = dataBroker;
this.dataTreeIdentifier = dataTreeIdentifier;
}
- @Inject
AbstractDataTreeChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier) {
this(dataBroker, new DataTreeIdentifier<>(datastoreType, instanceIdentifier));
}
- @Inject
AbstractDataTreeChangeListener(DataBroker dataBroker,
LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier,
import java.util.Collection;
import javax.annotation.Nonnull;
-import javax.inject.Inject;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
public abstract class AbstractSyncDataTreeChangeListener<T extends DataObject> extends
AbstractDataTreeChangeListener<T> {
- @Inject
public AbstractSyncDataTreeChangeListener(DataBroker dataBroker, DataTreeIdentifier<T> dataTreeIdentifier) {
super(dataBroker, dataTreeIdentifier);
}
- @Inject
public AbstractSyncDataTreeChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier) {
super(dataBroker, datastoreType, instanceIdentifier);
}
- @Inject
public AbstractSyncDataTreeChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
InstanceIdentifier<T> instanceIdentifier,
MetricProvider metricProvider) {
private Meter initCounter(String type) {
String className = clazz.getSimpleName();
// expects the form org.opendaylight.project.module
- String project = clazz.getName().split("\\.")[2];
- String module = clazz.getName().split("\\.")[3];
+ String project = clazz.getName().split("\\.", -1)[2];
+ String module = clazz.getName().split("\\.", -1)[3];
return metricProvider.newMeter(new MetricDescriptor() {
@Override
public Object anchor() {
* @param changes collection of changes
* @param dataStoreMetrics data store metrics
*/
+ @SuppressWarnings("checkstyle:MissingSwitchDefault") // http://errorprone.info/bugpattern/UnnecessaryDefaultInEnumSwitch
default void onDataTreeChanged(@Nonnull Collection<DataTreeModification<T>> changes,
DataStoreMetrics dataStoreMetrics) {
// This code is also in DataTreeEventCallbackRegistrarImpl and any changes should be applied there as well
- for (final DataTreeModification<T> dataTreeModification : changes) {
- final InstanceIdentifier<T> instanceIdentifier = dataTreeModification.getRootPath().getRootIdentifier();
- final DataObjectModification<T> dataObjectModification = dataTreeModification.getRootNode();
- final T dataBefore = dataObjectModification.getDataBefore();
- final T dataAfter = dataObjectModification.getDataAfter();
+ for (DataTreeModification<T> dataTreeModification : changes) {
+ InstanceIdentifier<T> instanceIdentifier = dataTreeModification.getRootPath().getRootIdentifier();
+ DataObjectModification<T> dataObjectModification = dataTreeModification.getRootNode();
+ T dataBefore = dataObjectModification.getDataBefore();
+ T dataAfter = dataObjectModification.getDataAfter();
switch (dataObjectModification.getModificationType()) {
case SUBTREE_MODIFIED:
update(instanceIdentifier, dataBefore, dataAfter);
}
break;
- default:
- break;
}
}
}
* @param instanceIdentifier instance id for this data object
* @param newDataObject newly added object
*/
+ @SuppressWarnings("InconsistentOverloads") // TODO remove when @Deprecated add() is removed
default void add(@Nonnull InstanceIdentifier<T> instanceIdentifier, @Nonnull T newDataObject) {
add(newDataObject);
}
* @param instanceIdentifier instance id for this data object
* @param removedDataObject existing object being removed
*/
+ @SuppressWarnings("InconsistentOverloads") // TODO remove when @Deprecated remove() is removed
default void remove(@Nonnull InstanceIdentifier<T> instanceIdentifier, @Nonnull T removedDataObject) {
remove(removedDataObject);
}
* @param originalDataObject existing object being modified
* @param updatedDataObject modified data object
*/
+ @SuppressWarnings("InconsistentOverloads") // TODO remove when @Deprecated update() is removed
default void update(@Nonnull InstanceIdentifier<T> instanceIdentifier, @Nonnull T originalDataObject,
@Nonnull T updatedDataObject) {
update(originalDataObject, updatedDataObject);
* @return a new FutureRpcResultBuilder
*/
@CheckReturnValue
+ @java.lang.SuppressWarnings("InconsistentOverloads") // Error Prone is too strict here; we do want the Callable last
public static <I, O> FutureRpcResultBuilder<I, O> fromListenableFuture(Logger logger, String rpcMethodName,
@Nullable I input, Callable<ListenableFuture<O>> callable) {
return new FutureRpcResultBuilder<>(logger, rpcMethodName, input, callable);
}
@CheckReturnValue
+ @java.lang.SuppressWarnings("InconsistentOverloads") // Error Prone is too strict here; we do want the Callable last
public static <I, O> FutureRpcResultBuilder<I, O> fromBuilder(Logger logger, String rpcMethodName,
@Nullable I input, Callable<Builder<O>> builder) {
Callable<ListenableFuture<O>> callable = () -> Futures.immediateFuture(builder.call().build());
<parent>
<groupId>org.opendaylight.genius</groupId>
- <artifactId>binding-parent</artifactId>
+ <artifactId>quality-parent</artifactId>
<version>0.5.0-SNAPSHOT</version>
- <relativePath>../../commons/binding-parent</relativePath>
+ <relativePath>../../commons/quality-parent/</relativePath>
</parent>
<groupId>org.opendaylight.genius</groupId>
<dependency>
<groupId>org.opendaylight.infrautils</groupId>
<artifactId>infrautils-testutils</artifactId>
- <version>1.4.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
@Test
public void testFromListenableFutureExceptionAlsoLog() throws Exception {
- final AtomicBoolean afterLogActionCalled = new AtomicBoolean(false);
+ AtomicBoolean afterLogActionCalled = new AtomicBoolean(false);
logCaptureRule.expectError("RPC testFromListenableFutureException() failed; input = null");
TestFutureRpcResults.assertRpcErrorCause(FutureRpcResults.fromListenableFuture(
LOG, "testFromListenableFutureException", null, () -> {