diff options
Diffstat (limited to 'framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationIdStore.java')
-rw-r--r-- | framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationIdStore.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationIdStore.java b/framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationIdStore.java new file mode 100644 index 00000000..6e6b9587 --- /dev/null +++ b/framework/src/onos/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationIdStore.java @@ -0,0 +1,70 @@ +/* + * Copyright 2014-2015 Open Networking Laboratory + * + * 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.trivial; + +import com.google.common.collect.ImmutableSet; +import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Service; +import org.onosproject.core.ApplicationId; +import org.onosproject.core.ApplicationIdStore; +import org.onosproject.core.DefaultApplicationId; + +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Simple implementation of the application ID registry using in-memory + * structures. + */ +@Component(immediate = true) +@Service +public class SimpleApplicationIdStore implements ApplicationIdStore { + + private static final AtomicInteger ID_DISPENSER = new AtomicInteger(1); + + private final Map<Short, DefaultApplicationId> appIds = new ConcurrentHashMap<>(); + private final Map<String, DefaultApplicationId> appIdsByName = new ConcurrentHashMap<>(); + + @Override + public Set<ApplicationId> getAppIds() { + return ImmutableSet.<ApplicationId>copyOf(appIds.values()); + } + + @Override + public ApplicationId getAppId(Short id) { + return appIds.get(id); + } + + @Override + public ApplicationId getAppId(String name) { + return appIdsByName.get(name); + } + + @Override + public ApplicationId registerApplication(String name) { + DefaultApplicationId appId = appIdsByName.get(name); + if (appId == null) { + short id = (short) ID_DISPENSER.getAndIncrement(); + appId = new DefaultApplicationId(id, name); + appIds.put(id, appId); + appIdsByName.put(name, appId); + } + return appId; + } + +} |