public BindingDOMDataBrokerAdapter(final DOMDataBroker domDataBroker, final BindingToNormalizedNodeCodec codec) {
super(domDataBroker, codec);
- final DOMDataTreeChangeService domTreeChange
- = (DOMDataTreeChangeService) domDataBroker.getSupportedExtensions().get(DOMDataTreeChangeService.class);
+ final DOMDataTreeChangeService domTreeChange = domDataBroker.getExtensions()
+ .getInstance(DOMDataTreeChangeService.class);
if (domTreeChange != null) {
treeChangeService = BindingDOMDataTreeChangeServiceAdapter.create(codec, domTreeChange);
} else {
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.MockitoAnnotations.initMocks;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import javax.annotation.Nullable;
import org.junit.Before;
import org.junit.Test;
@Before
public void setUp() throws Exception {
initMocks(this);
+
+ doReturn(ImmutableClassToInstanceMap.of()).when(domService).getExtensions();
bindingDOMAdapterLoader = new BindingDOMAdapterLoader(
new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(),
mockCodecRegistry)) {
import static org.mockito.Mockito.verify;
import static org.mockito.MockitoAnnotations.initMocks;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import javax.annotation.Nullable;
import org.junit.Before;
import org.junit.Test;
public void setUp() throws Exception {
initMocks(this);
doReturn(transactionChain).when(domService).createTransactionChain(any());
+ doReturn(ImmutableClassToInstanceMap.of()).when(domService).getExtensions();
+
BindingDOMAdapterLoader bindingDOMAdapterLoader = new BindingDOMAdapterLoader(
new BindingToNormalizedNodeCodec(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(),
mockCodecRegistry)) {
package org.opendaylight.mdsal.dom.api;
import com.google.common.annotations.Beta;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import java.util.Map;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
/**
* Marker interface for services which can support {@link DOMServiceExtension}. Aside for marking
* which provide access to the specific functionality bound to this service.
*
* @return A map of supported functionality.
+ * @deprecated Use {@link #getExtensions()} instead.
*/
- @Nonnull Map<Class<? extends E>, E> getSupportedExtensions();
+ @Deprecated
+ @NonNull Map<Class<? extends E>, E> getSupportedExtensions();
+
+ /**
+ * Return a map of currently-supported extensions, along with accessor services
+ * which provide access to the specific functionality bound to this service.
+ *
+ * @return A map of supported functionality.
+ */
+ default @NonNull ClassToInstanceMap<E> getExtensions() {
+ return ImmutableClassToInstanceMap.copyOf(getSupportedExtensions());
+ }
}
*/
package org.opendaylight.mdsal.dom.api;
-import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import java.util.Map;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
ListenerRegistration<SchemaContextListener> registerSchemaContextListener(SchemaContextListener listener);
@Override
+ @Deprecated
default Map<Class<? extends DOMSchemaServiceExtension>, DOMSchemaServiceExtension> getSupportedExtensions() {
- return ImmutableMap.of();
+ return ImmutableClassToInstanceMap.of();
}
}
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package org.opendaylight.mdsal.dom.api;
-
/**
* Marker interface for services which can be obtained from a {@link DOMMountPoint}
* instance. No further semantics are implied.
package org.opendaylight.mdsal.dom.broker;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
-import java.util.Collections;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import java.util.EnumMap;
import java.util.Map;
import java.util.Map.Entry;
private final AtomicLong txNum = new AtomicLong();
private final AtomicLong chainNum = new AtomicLong();
- private final Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> extensions;
+ private final ClassToInstanceMap<DOMDataBrokerExtension> extensions;
+
private volatile AutoCloseable closeable;
protected AbstractDOMDataBroker(final Map<LogicalDatastoreType, DOMStore> datastores) {
}
if (treeChange) {
- extensions = ImmutableMap.<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension>of(
+ extensions = ImmutableClassToInstanceMap.of(
DOMDataTreeChangeService.class, new DOMDataTreeChangeService() {
@Override
public <L extends DOMDataTreeChangeListener> ListenerRegistration<L>
}
});
} else {
- extensions = Collections.emptyMap();
+ extensions = ImmutableClassToInstanceMap.of();
}
}
}
@Override
+ @Deprecated
public Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> getSupportedExtensions() {
return extensions;
}
+ @Override
+ public ClassToInstanceMap<DOMDataBrokerExtension> getExtensions() {
+ return extensions;
+ }
+
@Override
public DOMTransactionChain createTransactionChain(final TransactionChainListener listener) {
checkNotClosed();
package org.opendaylight.mdsal.dom.broker;
-import java.util.Collections;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
import org.opendaylight.mdsal.common.api.TransactionChainListener;
}
@Override
+ @Deprecated
public Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> getSupportedExtensions() {
- return Collections.emptyMap();
+ return ImmutableClassToInstanceMap.of();
+ }
+
+ @Override
+ public ClassToInstanceMap<DOMDataBrokerExtension> getExtensions() {
+ return ImmutableClassToInstanceMap.of();
}
@Override
import com.google.common.base.Preconditions;
import com.google.common.base.Verify;
import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
}
@Override
+ @Deprecated
public Map<Class<? extends DOMDataTreeServiceExtension>, DOMDataTreeServiceExtension> getSupportedExtensions() {
- return ImmutableMap.of();
+ return ImmutableClassToInstanceMap.of();
+ }
+
+ @Override
+ public ClassToInstanceMap<DOMDataTreeServiceExtension> getExtensions() {
+ return ImmutableClassToInstanceMap.of();
}
@GuardedBy("this")
package org.opendaylight.mdsal.dom.broker;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ClassToInstanceMap;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
}
@Override
+ @Deprecated
public Map<Class<? extends DOMDataTreeServiceExtension>, DOMDataTreeServiceExtension> getSupportedExtensions() {
return delegateTreeService.getSupportedExtensions();
}
+ @Override
+ public ClassToInstanceMap<DOMDataTreeServiceExtension> getExtensions() {
+ return delegateTreeService.getExtensions();
+ }
+
@Override
public DOMDataTreeProducer createProducer(@Nonnull final Collection<DOMDataTreeIdentifier> subtrees) {
Preconditions.checkState(subtrees.size() == 1);
package org.opendaylight.mdsal.dom.broker.schema;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.util.concurrent.ListenableFuture;
}
@Override
+ public ClassToInstanceMap<DOMSchemaServiceExtension> getExtensions() {
+ return ImmutableClassToInstanceMap.of(DOMYangTextSourceProvider.class, this);
+ }
+
+ @Override
+ @Deprecated
public Map<Class<? extends DOMSchemaServiceExtension>, DOMSchemaServiceExtension> getSupportedExtensions() {
return ImmutableMap.of(DOMYangTextSourceProvider.class, this);
}
import org.junit.Test;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionCommitDeadlockException;
-import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension;
import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
}
private DOMDataTreeChangeService getDOMDataTreeChangeService() {
- final DOMDataBrokerExtension extension = domBroker.getSupportedExtensions()
- .get(DOMDataTreeChangeService.class);
- if (extension == null) {
- return null;
- }
- DOMDataTreeChangeService dataTreeChangeService = null;
- if (extension instanceof DOMDataTreeChangeService) {
- dataTreeChangeService = (DOMDataTreeChangeService) extension;
- }
- return dataTreeChangeService;
+ return domBroker.getExtensions().getInstance(DOMDataTreeChangeService.class);
}
static class CommitExecutorService extends ForwardingExecutorService {
final ShardedDOMDataBrokerAdapter shardedDOMDataBrokerAdapter =
new ShardedDOMDataBrokerAdapter(dataTreeService);
- assertTrue(shardedDOMDataBrokerAdapter.getSupportedExtensions().isEmpty());
+ assertTrue(shardedDOMDataBrokerAdapter.getExtensions().isEmpty());
assertNotNull(shardedDOMDataBrokerAdapter.newWriteOnlyTransaction());
assertNotNull(shardedDOMDataBrokerAdapter.newReadOnlyTransaction());
assertNotNull(shardedDOMDataBrokerAdapter.createTransactionChain(null));
import static org.junit.Assert.assertTrue;
import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import com.google.common.collect.Maps;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.Collection;
private static class TestTreeService implements DOMDataTreeService {
@Override
+ @Deprecated
public Map<Class<? extends DOMDataTreeServiceExtension>, DOMDataTreeServiceExtension> getSupportedExtensions() {
- return ImmutableMap.of();
+ return ImmutableClassToInstanceMap.of();
+ }
+
+ @Override
+ public ClassToInstanceMap<DOMDataTreeServiceExtension> getExtensions() {
+ return ImmutableClassToInstanceMap.of();
}
@Nonnull
@Test
public void getSupportedExtensionsTest() {
- assertEquals(schemaService.getSupportedExtensions().values().iterator().next(), schemaService);
+ assertEquals(schemaService.getExtensions().values().iterator().next(), schemaService);
}
@Test(expected = UnsupportedOperationException.class)
*/
package org.opendaylight.mdsal.dom.spi;
+import com.google.common.collect.ClassToInstanceMap;
import com.google.common.collect.ForwardingObject;
import java.util.Map;
import javax.annotation.Nonnull;
}
@Override
+ @Deprecated
public Map<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> getSupportedExtensions() {
return delegate().getSupportedExtensions();
}
+
+ @Override
+ public ClassToInstanceMap<DOMDataBrokerExtension> getExtensions() {
+ return delegate().getExtensions();
+ }
}
import static org.mockito.Mockito.verify;
import static org.mockito.MockitoAnnotations.initMocks;
+import com.google.common.collect.ImmutableClassToInstanceMap;
import javax.annotation.Nonnull;
import org.junit.Test;
import org.mockito.Mock;
this.createTransactionChain(null);
verify(domDataBroker).createTransactionChain(any());
- doReturn(null).when(domDataBroker).getSupportedExtensions();
+ doReturn(ImmutableClassToInstanceMap.of()).when(domDataBroker).getExtensions();
+ this.getExtensions();
+ verify(domDataBroker).getExtensions();
+
+ doReturn(ImmutableClassToInstanceMap.of()).when(domDataBroker).getSupportedExtensions();
this.getSupportedExtensions();
verify(domDataBroker).getSupportedExtensions();