summaryrefslogtreecommitdiffstats
path: root/v3po/vpp-translate-utils
diff options
context:
space:
mode:
Diffstat (limited to 'v3po/vpp-translate-utils')
-rw-r--r--v3po/vpp-translate-utils/pom.xml6
-rw-r--r--v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/FutureJVppCustomizer.java (renamed from v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/VppApiCustomizer.java)15
-rw-r--r--v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/NamingContext.java94
-rw-r--r--v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModule.java24
-rw-r--r--v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModuleFactory.java13
-rw-r--r--v3po/vpp-translate-utils/src/main/yang/vpp-util.yang37
6 files changed, 180 insertions, 9 deletions
diff --git a/v3po/vpp-translate-utils/pom.xml b/v3po/vpp-translate-utils/pom.xml
index b63b6d4f3..51b4c0274 100644
--- a/v3po/vpp-translate-utils/pom.xml
+++ b/v3po/vpp-translate-utils/pom.xml
@@ -17,9 +17,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>io.fd.honeycomb.common</groupId>
- <artifactId>api-parent</artifactId>
+ <artifactId>impl-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
- <relativePath>../../common/api-parent</relativePath>
+ <relativePath>../../common/impl-parent</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -36,7 +36,7 @@
</dependency>
<dependency>
<groupId>io.fd.vpp</groupId>
- <artifactId>vppjapi</artifactId>
+ <artifactId>jvpp</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
diff --git a/v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/VppApiCustomizer.java b/v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/FutureJVppCustomizer.java
index c9351cdc4..61495b71c 100644
--- a/v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/VppApiCustomizer.java
+++ b/v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/FutureJVppCustomizer.java
@@ -17,17 +17,20 @@
package io.fd.honeycomb.v3po.translate.v3po.util;
import com.google.common.annotations.Beta;
+import com.google.common.base.Preconditions;
+import javax.annotation.Nonnull;
+import org.openvpp.jvpp.future.FutureJVpp;
/**
* Abstract utility to hold the vppApi reference.
*/
@Beta
-public abstract class VppApiCustomizer {
+public abstract class FutureJVppCustomizer {
- private final org.openvpp.vppjapi.vppApi vppApi;
+ private final FutureJVpp futureJvpp;
- public VppApiCustomizer(final org.openvpp.vppjapi.vppApi vppApi) {
- this.vppApi = vppApi;
+ public FutureJVppCustomizer(@Nonnull final FutureJVpp futureJvpp) {
+ this.futureJvpp = Preconditions.checkNotNull(futureJvpp, "futureJvpp should not be null");
}
/**
@@ -35,7 +38,7 @@ public abstract class VppApiCustomizer {
*
* @return vppApi reference
*/
- public org.openvpp.vppjapi.vppApi getVppApi() {
- return vppApi;
+ public FutureJVpp getFutureJVpp() {
+ return futureJvpp;
}
}
diff --git a/v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/NamingContext.java b/v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/NamingContext.java
new file mode 100644
index 000000000..96d908e1b
--- /dev/null
+++ b/v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/NamingContext.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ *
+ * 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 io.fd.honeycomb.v3po.translate.v3po.util;
+
+import static com.google.common.base.Preconditions.checkArgument;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+import javax.annotation.Nonnull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Naming context keeping a mapping between int index and string name.
+ * Provides artificial names to unknown indices.
+ */
+public final class NamingContext implements AutoCloseable {
+
+ private static final Logger LOG = LoggerFactory.getLogger(NamingContext.class);
+
+ private final BiMap<String, Integer> nameMapping = HashBiMap.create();
+ private final String artificialNamePrefix;
+
+ public NamingContext(final String artificialNamePrefix) {
+ this.artificialNamePrefix = artificialNamePrefix;
+ }
+
+ @Nonnull
+ public synchronized String getName(final int index) {
+ if(!nameMapping.inverse().containsKey(index)) {
+ final String artificialName = getArtificialName(index);
+ LOG.info("Assigning artificial name: {} for index: {}", artificialName, index);
+ addName(index, artificialName);
+ }
+ return nameMapping.inverse().get(index);
+ }
+
+ @Nonnull
+ public synchronized boolean containsName(final int index) {
+ return nameMapping.inverse().containsKey(index);
+ }
+
+ @Nonnull
+ public synchronized void addName(final int index, final String name) {
+ nameMapping.put(name, index);
+ }
+
+ @Nonnull
+ public synchronized int removeName(final String name) {
+ return nameMapping.remove(name);
+ }
+
+ /**
+ * Returns index value associated with the given name.
+ *
+ * @param name the name whose associated index value is to be returned
+ * @return integer index value matching supplied name
+ * @throws IllegalArgumentException if name was not found
+ */
+ @Nonnull
+ public synchronized int getIndex(String name) {
+ checkArgument(nameMapping.containsKey(name), "Name %s not found. Known names: %s",
+ name, nameMapping);
+ return nameMapping.get(name);
+ }
+
+ @Nonnull
+ public synchronized boolean containsIndex(String interfaceName) {
+ return nameMapping.containsKey(interfaceName);
+ }
+
+ public String getArtificialName(final int index) {
+ return artificialNamePrefix + index;
+ }
+
+ @Override
+ public void close() throws Exception {
+ nameMapping.clear();
+ }
+}
diff --git a/v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModule.java b/v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModule.java
new file mode 100644
index 000000000..81cecb14b
--- /dev/null
+++ b/v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModule.java
@@ -0,0 +1,24 @@
+package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.vpp.util.rev160406;
+
+import io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
+
+public class NamingContextImplModule extends org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.vpp.util.rev160406.AbstractNamingContextImplModule {
+ public NamingContextImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+ super(identifier, dependencyResolver);
+ }
+
+ public NamingContextImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.vpp.util.rev160406.NamingContextImplModule oldModule, java.lang.AutoCloseable oldInstance) {
+ super(identifier, dependencyResolver, oldModule, oldInstance);
+ }
+
+ @Override
+ public void customValidation() {
+ // add custom validation form module attributes here.
+ }
+
+ @Override
+ public java.lang.AutoCloseable createInstance() {
+ return new NamingContext(getArtificialNamePrefix());
+ }
+
+}
diff --git a/v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModuleFactory.java b/v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModuleFactory.java
new file mode 100644
index 000000000..c777dafa1
--- /dev/null
+++ b/v3po/vpp-translate-utils/src/main/java/org/opendaylight/yang/gen/v1/urn/honeycomb/params/xml/ns/yang/vpp/util/rev160406/NamingContextImplModuleFactory.java
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: vpp-util yang module local name: naming-context-impl
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Mon May 02 10:57:32 CEST 2016
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.vpp.util.rev160406;
+public class NamingContextImplModuleFactory extends org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.vpp.util.rev160406.AbstractNamingContextImplModuleFactory {
+
+}
diff --git a/v3po/vpp-translate-utils/src/main/yang/vpp-util.yang b/v3po/vpp-translate-utils/src/main/yang/vpp-util.yang
new file mode 100644
index 000000000..01e759dc2
--- /dev/null
+++ b/v3po/vpp-translate-utils/src/main/yang/vpp-util.yang
@@ -0,0 +1,37 @@
+module vpp-util {
+ yang-version 1;
+ namespace "urn:honeycomb:params:xml:ns:yang:vpp:util";
+ prefix "vpp-u";
+
+ import config { prefix config; revision-date 2013-04-05; }
+
+ description
+ "This module contains utilities for vpp readers/writers";
+
+ revision "2016-04-06" {
+ description
+ "Initial revision.";
+ }
+
+ identity naming-context {
+ base "config:service-type";
+ config:java-class io.fd.honeycomb.v3po.translate.v3po.util.NamingContext;
+ }
+
+ identity naming-context-impl {
+ base config:module-type;
+ config:provided-service naming-context;
+ }
+
+ augment "/config:modules/config:module/config:configuration" {
+ case naming-context-impl {
+ when "/config:modules/config:module/config:type = 'naming-context-impl'";
+
+ leaf artificial-name-prefix {
+ type string;
+ }
+
+ }
+ }
+
+} \ No newline at end of file