Implement multiton support for primitives accessed via primitive getters
Change-Id: Ib5eda427f29336c0496780f36a70f9a24ed838ea
diff --git a/core/api/src/main/java/org/onosproject/store/service/PrimitiveService.java b/core/api/src/main/java/org/onosproject/store/service/PrimitiveService.java
index 7be0480..aa65a86 100644
--- a/core/api/src/main/java/org/onosproject/store/service/PrimitiveService.java
+++ b/core/api/src/main/java/org/onosproject/store/service/PrimitiveService.java
@@ -107,6 +107,13 @@
<V> AtomicValueBuilder<V> atomicValueBuilder();
/**
+ * Creates a new DistributedLockBuilder.
+ *
+ * @return lock builder
+ */
+ DistributedLockBuilder lockBuilder();
+
+ /**
* Creates a new LeaderElectorBuilder.
*
* @return leader elector builder
@@ -126,9 +133,7 @@
*
* @return AsyncAtomicCounter instance
*/
- default AsyncAtomicCounter getAsyncAtomicCounter(String name) {
- return atomicCounterBuilder().withName(name).build();
- }
+ AsyncAtomicCounter getAsyncAtomicCounter(String name);
/**
* Returns an instance of {@code AsyncAtomicIdGenerator} with specified name.
@@ -136,9 +141,7 @@
* @param name ID generator name
* @return AsyncAtomicIdGenerator instance
*/
- default AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
- return atomicIdGeneratorBuilder().withName(name).build();
- }
+ AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name);
/**
* Returns an instance of {@code AtomicCounter} with specified name.
@@ -180,17 +183,17 @@
*/
<V> AsyncDocumentTree<V> getDocumentTree(String name, Serializer serializer);
- /** Returns a set backed instance of {@code AsyncConsistentMultimap} with
+ /**
+ * Returns a set backed instance of {@code AsyncConsistentMultimap} with
* the specified name.
*
- * @param name the multimap name
+ * @param name the multimap name
* @param serializer serializer
- * @param <K> key type
- * @param <V> value type
+ * @param <K> key type
+ * @param <V> value type
* @return set backed {@code AsyncConsistentMultimap} instance
*/
- <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(String name,
- Serializer serializer);
+ <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(String name, Serializer serializer);
/**
* Returns an instance of {@code AsyncConsistentTreeMap} with the specified
@@ -201,8 +204,7 @@
* @param <V> value type
* @return set backed {@code AsyncConsistentTreeMap} instance
*/
- <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(String name,
- Serializer serializer);
+ <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(String name, Serializer serializer);
/**
* Returns an instance of {@code Topic} with specified name.
diff --git a/core/api/src/main/java/org/onosproject/store/service/StorageService.java b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
index 2dd42fa..94843fc 100644
--- a/core/api/src/main/java/org/onosproject/store/service/StorageService.java
+++ b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
@@ -24,201 +24,4 @@
* this service for their distributed state management and coordination.
*/
public interface StorageService extends PrimitiveService {
-
- /**
- * Creates a new EventuallyConsistentMapBuilder.
- *
- * @param <K> key type
- * @param <V> value type
- * @return builder for an eventually consistent map
- */
- <K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder();
-
- /**
- * Creates a new ConsistentMapBuilder.
- *
- * @param <K> key type
- * @param <V> value type
- * @return builder for a consistent map
- */
- <K, V> ConsistentMapBuilder<K, V> consistentMapBuilder();
-
- /**
- * Creates a new ConsistentMapBuilder.
- *
- * @param <V> value type
- * @return builder for a consistent map
- */
- <V> DocumentTreeBuilder<V> documentTreeBuilder();
-
- /**
- * Creates a new {@code AsyncConsistentTreeMapBuilder}.
- *
- * @param <V> value type
- * @return builder for a async consistent tree map
- */
- <V> ConsistentTreeMapBuilder<V> consistentTreeMapBuilder();
-
- /**
- * Creates a new {@code AsyncConsistentSetMultimapBuilder}.
- *
- * @param <K> key type
- * @param <V> value type
- * @return builder for a set based async consistent multimap
- */
- <K, V> ConsistentMultimapBuilder<K, V> consistentMultimapBuilder();
-
- /**
- * Creates a new {@code AtomicCounterMapBuilder}.
- *
- * @param <K> key type
- * @return builder for an atomic counter map
- */
- <K> AtomicCounterMapBuilder<K> atomicCounterMapBuilder();
-
- /**
- * Creates a new DistributedSetBuilder.
- *
- * @param <E> set element type
- * @return builder for an distributed set
- */
- <E> DistributedSetBuilder<E> setBuilder();
-
- /**
- * Creates a new AtomicCounterBuilder.
- *
- * @return atomic counter builder
- */
- AtomicCounterBuilder atomicCounterBuilder();
-
- /**
- * Creates a new AtomicIdGeneratorBuilder.
- *
- * @return atomic ID generator builder
- */
- AtomicIdGeneratorBuilder atomicIdGeneratorBuilder();
-
- /**
- * Creates a new AtomicValueBuilder.
- *
- * @param <V> atomic value type
- * @return atomic value builder
- */
- <V> AtomicValueBuilder<V> atomicValueBuilder();
-
- /**
- * Creates a new DistributedLockBuilder.
- *
- * @return lock builder
- */
- DistributedLockBuilder lockBuilder();
-
- /**
- * Creates a new LeaderElectorBuilder.
- *
- * @return leader elector builder
- */
- LeaderElectorBuilder leaderElectorBuilder();
-
- /**
- * Creates a new transaction context builder.
- *
- * @return a builder for a transaction context.
- */
- TransactionContextBuilder transactionContextBuilder();
-
- /**
- * Returns an instance of {@code AsyncAtomicCounter} with specified name.
- * @param name counter name
- *
- * @return AsyncAtomicCounter instance
- */
- default AsyncAtomicCounter getAsyncAtomicCounter(String name) {
- return atomicCounterBuilder().withName(name).build();
- }
-
- /**
- * Returns an instance of {@code AsyncAtomicIdGenerator} with specified name.
- *
- * @param name ID generator name
- * @return AsyncAtomicIdGenerator instance
- */
- default AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
- return atomicIdGeneratorBuilder().withName(name).build();
- }
-
- /**
- * Returns an instance of {@code AtomicCounter} with specified name.
- * @param name counter name
- *
- * @return AtomicCounter instance
- */
- default AtomicCounter getAtomicCounter(String name) {
- return getAsyncAtomicCounter(name).asAtomicCounter();
- }
-
- /**
- * Returns an instance of {@code AtomicIdGenerator} with specified name.
- *
- * @param name ID generator name
- * @return AtomicIdGenerator instance
- */
- default AtomicIdGenerator getAtomicIdGenerator(String name) {
- return getAsyncAtomicIdGenerator(name).asAtomicIdGenerator();
- }
-
- /**
- * Returns an instance of {@code WorkQueue} with specified name.
- *
- * @param <E> work element type
- * @param name work queue name
- * @param serializer serializer
- * @return WorkQueue instance
- */
- <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer);
-
- /**
- * Returns an instance of {@code AsyncDocumentTree} with specified name.
- *
- * @param <V> tree node value type
- * @param name document tree name
- * @param serializer serializer
- * @return AsyncDocumentTree instance
- */
- <V> AsyncDocumentTree<V> getDocumentTree(String name, Serializer serializer);
-
- /** Returns a set backed instance of {@code AsyncConsistentMultimap} with
- * the specified name.
- *
- * @param name the multimap name
- * @param serializer serializer
- * @param <K> key type
- * @param <V> value type
- * @return set backed {@code AsyncConsistentMultimap} instance
- */
- <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(String name,
- Serializer serializer);
-
- /**
- * Returns an instance of {@code AsyncConsistentTreeMap} with the specified
- * name.
- *
- * @param name the treemap name
- * @param serializer serializer
- * @param <V> value type
- * @return set backed {@code AsyncConsistentTreeMap} instance
- */
- <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(String name,
- Serializer serializer);
-
- /**
- * Returns an instance of {@code Topic} with specified name.
- *
- * @param <T> topic message type
- * @param name topic name
- * @param serializer serializer
- *
- * @return Topic instance
- */
- <T> Topic<T> getTopic(String name, Serializer serializer);
}
diff --git a/core/api/src/test/java/org/onosproject/store/service/CoordinationServiceAdapter.java b/core/api/src/test/java/org/onosproject/store/service/CoordinationServiceAdapter.java
index f05d9aa..927cd27 100644
--- a/core/api/src/test/java/org/onosproject/store/service/CoordinationServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/store/service/CoordinationServiceAdapter.java
@@ -70,6 +70,11 @@
}
@Override
+ public DistributedLockBuilder lockBuilder() {
+ return null;
+ }
+
+ @Override
public LeaderElectorBuilder leaderElectorBuilder() {
return null;
}
@@ -80,6 +85,16 @@
}
@Override
+ public AsyncAtomicCounter getAsyncAtomicCounter(String name) {
+ return null;
+ }
+
+ @Override
+ public AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+ return null;
+ }
+
+ @Override
public <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer) {
return null;
}
diff --git a/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java b/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java
index 4d528e2..8ead51c 100644
--- a/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/store/service/StorageServiceAdapter.java
@@ -70,6 +70,16 @@
}
@Override
+ public AsyncAtomicCounter getAsyncAtomicCounter(String name) {
+ return null;
+ }
+
+ @Override
+ public AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+ return null;
+ }
+
+ @Override
public <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer) {
return null;
}
diff --git a/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java b/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java
index e41d2ad..f250bfe 100644
--- a/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java
+++ b/core/api/src/test/java/org/onosproject/store/service/TestStorageService.java
@@ -59,6 +59,16 @@
}
@Override
+ public AsyncAtomicCounter getAsyncAtomicCounter(String name) {
+ return atomicCounterBuilder().withName(name).build();
+ }
+
+ @Override
+ public AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+ return atomicIdGeneratorBuilder().withName(name).build();
+ }
+
+ @Override
public <T> Topic<T> getTopic(String name, Serializer serializer) {
return new TestTopic(name);
}
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CoordinationManager.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CoordinationManager.java
index e7ed20a..2355e35 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CoordinationManager.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CoordinationManager.java
@@ -33,7 +33,8 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.primitives.DistributedPrimitiveCreator;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.AsyncAtomicValue;
+import org.onosproject.store.service.AsyncAtomicCounter;
+import org.onosproject.store.service.AsyncAtomicIdGenerator;
import org.onosproject.store.service.AsyncConsistentMultimap;
import org.onosproject.store.service.AsyncConsistentTreeMap;
import org.onosproject.store.service.AsyncDocumentTree;
@@ -45,6 +46,7 @@
import org.onosproject.store.service.ConsistentMultimapBuilder;
import org.onosproject.store.service.ConsistentTreeMapBuilder;
import org.onosproject.store.service.CoordinationService;
+import org.onosproject.store.service.DistributedLockBuilder;
import org.onosproject.store.service.DistributedSetBuilder;
import org.onosproject.store.service.DocumentTreeBuilder;
import org.onosproject.store.service.EventuallyConsistentMapBuilder;
@@ -82,6 +84,7 @@
private StoragePartition partition;
private DistributedPrimitiveCreator primitiveCreator;
+ private DistributedPrimitiveManager primitiveManager;
@Activate
public void activate() {
@@ -97,6 +100,7 @@
clusterService);
partition.open().join();
primitiveCreator = partition.client();
+ primitiveManager = new DistributedPrimitiveManager(primitiveCreator);
log.info("Started");
}
@@ -190,6 +194,12 @@
}
@Override
+ public DistributedLockBuilder lockBuilder() {
+ checkPermission(STORAGE_WRITE);
+ return new DefaultDistributedLockBuilder(primitiveCreator);
+ }
+
+ @Override
public TransactionContextBuilder transactionContextBuilder() {
throw new UnsupportedOperationException();
}
@@ -201,38 +211,43 @@
}
@Override
+ public AsyncAtomicCounter getAsyncAtomicCounter(String name) {
+ checkPermission(STORAGE_WRITE);
+ return primitiveManager.getAsyncAtomicCounter(name);
+ }
+
+ @Override
+ public AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+ checkPermission(STORAGE_WRITE);
+ return primitiveManager.getAsyncAtomicIdGenerator(name);
+ }
+
+ @Override
public <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return primitiveCreator.newWorkQueue(name, serializer);
+ return primitiveManager.getWorkQueue(name, serializer);
}
@Override
public <V> AsyncDocumentTree<V> getDocumentTree(String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return primitiveCreator.newAsyncDocumentTree(name, serializer);
+ return primitiveManager.getDocumentTree(name, serializer);
}
@Override
- public <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(
- String name, Serializer serializer) {
+ public <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return primitiveCreator.newAsyncConsistentSetMultimap(name,
- serializer);
+ return primitiveManager.getAsyncSetMultimap(name, serializer);
}
@Override
- public <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(
- String name, Serializer serializer) {
+ public <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return primitiveCreator.newAsyncConsistentTreeMap(name, serializer);
+ return primitiveManager.getAsyncTreeMap(name, serializer);
}
@Override
public <T> Topic<T> getTopic(String name, Serializer serializer) {
- AsyncAtomicValue<T> atomicValue = this.<T>atomicValueBuilder()
- .withName("topic-" + name)
- .withSerializer(serializer)
- .build();
- return new DefaultDistributedTopic<>(atomicValue);
+ return primitiveManager.getTopic(name, serializer);
}
}
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DistributedPrimitiveManager.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DistributedPrimitiveManager.java
new file mode 100644
index 0000000..bddae9b
--- /dev/null
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DistributedPrimitiveManager.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.store.primitives.impl;
+
+import java.util.Map;
+import java.util.function.Function;
+
+import com.google.common.collect.Maps;
+import org.onosproject.store.primitives.DistributedPrimitiveCreator;
+import org.onosproject.store.service.AsyncAtomicCounter;
+import org.onosproject.store.service.AsyncAtomicIdGenerator;
+import org.onosproject.store.service.AsyncAtomicValue;
+import org.onosproject.store.service.AsyncConsistentMultimap;
+import org.onosproject.store.service.AsyncConsistentTreeMap;
+import org.onosproject.store.service.AsyncDocumentTree;
+import org.onosproject.store.service.DistributedPrimitive;
+import org.onosproject.store.service.Serializer;
+import org.onosproject.store.service.Topic;
+import org.onosproject.store.service.WorkQueue;
+
+/**
+ * Primitive instance manager.
+ */
+public class DistributedPrimitiveManager {
+ private final Map<String, DistributedPrimitive> primitives = Maps.newConcurrentMap();
+ private final DistributedPrimitiveCreator primitiveCreator;
+
+ DistributedPrimitiveManager(DistributedPrimitiveCreator primitiveCreator) {
+ this.primitiveCreator = primitiveCreator;
+ }
+
+ /**
+ * Returns a cached primitive instance.
+ *
+ * @param name the primitive name
+ * @param factory the primitive factory
+ * @param <T> the primitive type
+ * @return the primitive instance
+ */
+ @SuppressWarnings("unchecked")
+ private <T extends DistributedPrimitive> T getPrimitive(String name, Function<String, T> factory) {
+ return (T) primitives.computeIfAbsent(name, factory);
+ }
+
+ /**
+ * Returns an instance of {@code AsyncAtomicCounter} with specified name.
+ * @param name counter name
+ *
+ * @return AsyncAtomicCounter instance
+ */
+ public AsyncAtomicCounter getAsyncAtomicCounter(String name) {
+ return getPrimitive(name, primitiveCreator::newAsyncCounter);
+ }
+
+ /**
+ * Returns an instance of {@code AsyncAtomicIdGenerator} with specified name.
+ *
+ * @param name ID generator name
+ * @return AsyncAtomicIdGenerator instance
+ */
+ public AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+ return getPrimitive(name, primitiveCreator::newAsyncIdGenerator);
+ }
+
+ /**
+ * Returns an instance of {@code WorkQueue} with specified name.
+ *
+ * @param <E> work element type
+ * @param name work queue name
+ * @param serializer serializer
+ * @return WorkQueue instance
+ */
+ public <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer) {
+ return getPrimitive(name, n -> primitiveCreator.newWorkQueue(n, serializer));
+ }
+
+ /**
+ * Returns an instance of {@code AsyncDocumentTree} with specified name.
+ *
+ * @param <V> tree node value type
+ * @param name document tree name
+ * @param serializer serializer
+ * @return AsyncDocumentTree instance
+ */
+ public <V> AsyncDocumentTree<V> getDocumentTree(String name, Serializer serializer) {
+ return getPrimitive(name, n -> primitiveCreator.newAsyncDocumentTree(n, serializer));
+ }
+
+ /**
+ * Returns a set backed instance of {@code AsyncConsistentMultimap} with
+ * the specified name.
+ *
+ * @param name the multimap name
+ * @param serializer serializer
+ * @param <K> key type
+ * @param <V> value type
+ * @return set backed {@code AsyncConsistentMultimap} instance
+ */
+ public <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(String name, Serializer serializer) {
+ return getPrimitive(name, n -> primitiveCreator.newAsyncConsistentSetMultimap(n, serializer));
+ }
+
+ /**
+ * Returns an instance of {@code AsyncConsistentTreeMap} with the specified
+ * name.
+ *
+ * @param name the treemap name
+ * @param serializer serializer
+ * @param <V> value type
+ * @return set backed {@code AsyncConsistentTreeMap} instance
+ */
+ public <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(String name, Serializer serializer) {
+ return getPrimitive(name, n -> primitiveCreator.newAsyncConsistentTreeMap(n, serializer));
+ }
+
+ /**
+ * Returns an instance of {@code Topic} with specified name.
+ *
+ * @param <T> topic message type
+ * @param name topic name
+ * @param serializer serializer
+ *
+ * @return Topic instance
+ */
+ public <T> Topic<T> getTopic(String name, Serializer serializer) {
+ AsyncAtomicValue<T> atomicValue =
+ getPrimitive(name, n -> primitiveCreator.newAsyncAtomicValue("topic-" + n, serializer));
+ return new DefaultDistributedTopic<>(atomicValue);
+ }
+}
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageManager.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageManager.java
index e90d802..57676eb 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageManager.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/StorageManager.java
@@ -35,7 +35,8 @@
import org.onosproject.store.primitives.PartitionService;
import org.onosproject.store.primitives.TransactionId;
import org.onosproject.store.serializers.KryoNamespaces;
-import org.onosproject.store.service.AsyncAtomicValue;
+import org.onosproject.store.service.AsyncAtomicCounter;
+import org.onosproject.store.service.AsyncAtomicIdGenerator;
import org.onosproject.store.service.AsyncConsistentMultimap;
import org.onosproject.store.service.AsyncConsistentTreeMap;
import org.onosproject.store.service.AsyncDocumentTree;
@@ -107,6 +108,7 @@
() -> TransactionId.from(UUID.randomUUID().toString());
private DistributedPrimitiveCreator federatedPrimitiveCreator;
private TransactionManager transactionManager;
+ private DistributedPrimitiveManager primitiveManager;
@Activate
public void activate() {
@@ -116,6 +118,7 @@
.forEach(id -> partitionMap.put(id, partitionService.getDistributedPrimitiveCreator(id)));
federatedPrimitiveCreator = new FederatedDistributedPrimitiveCreator(partitionMap, BUCKETS);
transactionManager = new TransactionManager(this, partitionService, BUCKETS);
+ primitiveManager = new DistributedPrimitiveManager(federatedPrimitiveCreator);
log.info("Started");
}
@@ -184,8 +187,7 @@
@Override
public <K, V> ConsistentMultimapBuilder<K, V> consistentMultimapBuilder() {
checkPermission(STORAGE_WRITE);
- return new DefaultConsistentMultimapBuilder<K, V>(
- federatedPrimitiveCreator);
+ return new DefaultConsistentMultimapBuilder<>(federatedPrimitiveCreator);
}
@Override
@@ -241,31 +243,47 @@
}
@Override
+ public AsyncAtomicCounter getAsyncAtomicCounter(String name) {
+ checkPermission(STORAGE_WRITE);
+ return primitiveManager.getAsyncAtomicCounter(name);
+ }
+
+ @Override
+ public AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+ checkPermission(STORAGE_WRITE);
+ return primitiveManager.getAsyncAtomicIdGenerator(name);
+ }
+
+ @Override
public <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return federatedPrimitiveCreator.newWorkQueue(name, serializer);
+ return primitiveManager.getWorkQueue(name, serializer);
}
@Override
public <V> AsyncDocumentTree<V> getDocumentTree(String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return federatedPrimitiveCreator.newAsyncDocumentTree(name, serializer);
+ return primitiveManager.getDocumentTree(name, serializer);
}
@Override
public <K, V> AsyncConsistentMultimap<K, V> getAsyncSetMultimap(
String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return federatedPrimitiveCreator.newAsyncConsistentSetMultimap(name,
- serializer);
+ return primitiveManager.getAsyncSetMultimap(name, serializer);
}
@Override
public <V> AsyncConsistentTreeMap<V> getAsyncTreeMap(
String name, Serializer serializer) {
checkPermission(STORAGE_WRITE);
- return federatedPrimitiveCreator.newAsyncConsistentTreeMap(name,
- serializer);
+ return primitiveManager.getAsyncTreeMap(name, serializer);
+ }
+
+ @Override
+ public <T> Topic<T> getTopic(String name, Serializer serializer) {
+ checkPermission(STORAGE_WRITE);
+ return primitiveManager.getTopic(name, serializer);
}
@Override
@@ -315,13 +333,4 @@
return new MapInfo(name, map.size());
}).collect(Collectors.toList());
}
-
- @Override
- public <T> Topic<T> getTopic(String name, Serializer serializer) {
- AsyncAtomicValue<T> atomicValue = this.<T>atomicValueBuilder()
- .withName("topic-" + name)
- .withSerializer(serializer)
- .build();
- return new DefaultDistributedTopic<>(atomicValue);
- }
}
diff --git a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/StorageServiceAdapter.java b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/StorageServiceAdapter.java
index 4ba8a2c..5c38e27 100644
--- a/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/StorageServiceAdapter.java
+++ b/protocols/pcep/server/ctl/src/test/java/org/onosproject/pcelabelstore/util/StorageServiceAdapter.java
@@ -15,6 +15,8 @@
*/
package org.onosproject.pcelabelstore.util;
+import org.onosproject.store.service.AsyncAtomicCounter;
+import org.onosproject.store.service.AsyncAtomicIdGenerator;
import org.onosproject.store.service.AsyncDocumentTree;
import org.onosproject.store.service.AsyncConsistentMultimap;
import org.onosproject.store.service.AsyncConsistentTreeMap;
@@ -91,6 +93,16 @@
}
@Override
+ public AsyncAtomicCounter getAsyncAtomicCounter(String name) {
+ return null;
+ }
+
+ @Override
+ public AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+ return null;
+ }
+
+ @Override
public <E> WorkQueue<E> getWorkQueue(String name, Serializer serializer) {
return null;
}