HONEYCOMB-9: Remove references to VPP from translation layer
authorMaros Marsalek <mmarsale@cisco.com>
Tue, 12 Apr 2016 08:13:18 +0000 (10:13 +0200)
committerMaros Marsalek <mmarsale@cisco.com>
Tue, 12 Apr 2016 08:13:18 +0000 (10:13 +0200)
Change-Id: I281db366a112edc08203e8cb392a212708d4552a
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
77 files changed:
v3po/artifacts/pom.xml
v3po/features/pom.xml
v3po/features/src/main/features/features.xml
v3po/impl/pom.xml
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/V3poProvider.java
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/ReaderRegistry.java [moved from v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppReaderRegistry.java with 60% similarity]
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppConfigDataTree.java
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppDataBrokerInitializationProvider.java
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppDataTree.java
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppOperationalDataTree.java
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppWriteTransaction.java
v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/WriterRegistry.java [moved from v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppWriterRegistry.java with 57% similarity]
v3po/impl/src/test/java/io/fd/honeycomb/v3po/impl/data/VPPConfigDataTreeTest.java
v3po/impl/src/test/java/io/fd/honeycomb/v3po/impl/data/VppDataBrokerInitializationProviderTest.java
v3po/impl/src/test/java/io/fd/honeycomb/v3po/impl/data/VppOperationalDataTreeTest.java
v3po/pom.xml
v3po/translate-api/pom.xml [moved from v3po/vpp-facade-api/pom.xml with 98% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/Context.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/Context.java with 96% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/SubtreeManager.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/SubtreeManager.java with 96% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/TranslationException.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/VppException.java with 70% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/VppApiInvocationException.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/VppApiInvocationException.java with 95% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/read/ChildReader.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/read/ChildVppReader.java with 90% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/read/ListReader.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/read/ListVppReader.java with 87% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/read/ReadContext.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/read/ReadContext.java with 90% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/read/ReadFailedException.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/read/ReadFailedException.java with 88% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/read/Reader.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/read/VppReader.java with 85% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/read/ReaderRegistry.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/read/ReaderRegistry.java with 93% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/write/ChildWriter.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/write/ChildVppWriter.java with 90% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/write/WriteContext.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/write/WriteContext.java with 94% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/write/Writer.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/write/VppWriter.java with 75% similarity]
v3po/translate-api/src/main/java/io/fd/honeycomb/v3po/translate/write/WriterRegistry.java [moved from v3po/vpp-facade-api/src/main/java/io/fd/honeycomb/v3po/vpp/facade/write/WriterRegistry.java with 89% similarity]
v3po/translate-api/src/test/java/io/fd/honeycomb/v3po/translate/ReadFailedExceptionTest.java [moved from v3po/vpp-facade-api/src/test/java/io/fd/honeycomb/v3po/vpp/facade/ReadFailedExceptionTest.java with 73% similarity]
v3po/translate-api/src/test/java/io/fd/honeycomb/v3po/translate/VppApiInvocationExceptionTest.java [moved from v3po/vpp-facade-api/src/test/java/io/fd/honeycomb/v3po/vpp/facade/VppApiInvocationExceptionTest.java with 97% similarity]
v3po/translate-impl/pom.xml [moved from v3po/vpp-facade-impl/pom.xml with 91% similarity]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/read/AbstractCompositeReader.java [moved from v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/AbstractCompositeVppReader.java with 83% similarity]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/read/CompositeChildReader.java [moved from v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/CompositeChildVppReader.java with 53% similarity]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/read/CompositeListReader.java [moved from v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/CompositeListVppReader.java with 61% similarity]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/read/CompositeRootReader.java [new file with mode: 0644]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/write/AbstractCompositeWriter.java [moved from v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/AbstractCompositeVppWriter.java with 75% similarity]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/write/CompositeChildWriter.java [moved from v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/CompositeChildVppWriter.java with 65% similarity]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/write/CompositeListWriter.java [moved from v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/CompositeListVppWriter.java with 76% similarity]
v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/write/CompositeRootWriter.java [moved from v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/CompositeRootVppWriter.java with 58% similarity]
v3po/translate-spi/pom.xml [moved from v3po/vpp-facade-spi/pom.xml with 96% similarity]
v3po/translate-spi/src/main/java/io/fd/honeycomb/v3po/translate/spi/read/ChildReaderCustomizer.java [moved from v3po/vpp-facade-spi/src/main/java/io/fd/honeycomb/v3po/vpp/facade/spi/read/ChildVppReaderCustomizer.java with 85% similarity]
v3po/translate-spi/src/main/java/io/fd/honeycomb/v3po/translate/spi/read/ListReaderCustomizer.java [moved from v3po/vpp-facade-spi/src/main/java/io/fd/honeycomb/v3po/vpp/facade/spi/read/ListVppReaderCustomizer.java with 84% similarity]
v3po/translate-spi/src/main/java/io/fd/honeycomb/v3po/translate/spi/read/RootReaderCustomizer.java [moved from v3po/vpp-facade-spi/src/main/java/io/fd/honeycomb/v3po/vpp/facade/spi/read/RootVppReaderCustomizer.java with 84% similarity]
v3po/translate-spi/src/main/java/io/fd/honeycomb/v3po/translate/spi/write/ChildWriterCustomizer.java [moved from v3po/vpp-facade-spi/src/main/java/io/fd/honeycomb/v3po/vpp/facade/spi/write/ChildVppWriterCustomizer.java with 86% similarity]
v3po/translate-spi/src/main/java/io/fd/honeycomb/v3po/translate/spi/write/ListWriterCustomizer.java [moved from v3po/vpp-facade-spi/src/main/java/io/fd/honeycomb/v3po/vpp/facade/spi/write/ListVppWriterCustomizer.java with 85% similarity]
v3po/translate-spi/src/main/java/io/fd/honeycomb/v3po/translate/spi/write/RootWriterCustomizer.java [moved from v3po/vpp-facade-spi/src/main/java/io/fd/honeycomb/v3po/vpp/facade/spi/write/RootVppWriterCustomizer.java with 92% similarity]
v3po/translate-utils/pom.xml [moved from v3po/vpp-facade-utils/pom.xml with 90% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/RWUtils.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/util/VppRWUtils.java with 83% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/ReflectionUtils.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/util/ReflectionUtils.java with 98% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/DelegatingReaderRegistry.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/util/DelegatingReaderRegistry.java with 75% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/NoopReaderCustomizer.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/util/NoopReaderCustomizer.java with 83% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/ReflexiveChildReaderCustomizer.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/util/ReflexiveChildReaderCustomizer.java with 89% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/read/ReflexiveRootReaderCustomizer.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/util/ReflexiveRootReaderCustomizer.java with 96% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/write/DelegatingWriterRegistry.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/DelegatingWriterRegistry.java with 85% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/write/NoopWriterCustomizer.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/NoopWriterCustomizer.java with 88% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/write/ReflexiveChildWriterCustomizer.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/ReflexiveChildWriterCustomizer.java with 90% similarity]
v3po/translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/util/write/TransactionWriteContext.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/TransactionWriteContext.java with 95% similarity]
v3po/translate-utils/src/test/java/io/fd/honeycomb/v3po/translate/impl/write/util/DelegatingWriterRegistryTest.java [moved from v3po/vpp-facade-utils/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/DelegatingWriterRegistryTest.java with 83% similarity]
v3po/translate-utils/src/test/java/io/fd/honeycomb/v3po/translate/impl/write/util/TransactionWriteContextTest.java [moved from v3po/vpp-facade-utils/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/TransactionWriteContextTest.java with 97% similarity]
v3po/v3po2vpp/pom.xml
v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/vpp/BridgeDomainCustomizer.java [moved from v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vpp/BridgeDomainCustomizer.java with 94% similarity]
v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/vppstate/BridgeDomainCustomizer.java [moved from v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vppstate/BridgeDomainCustomizer.java with 95% similarity]
v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/translate/v3po/vppstate/VersionCustomizer.java [moved from v3po/v3po2vpp/src/main/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vppstate/VersionCustomizer.java with 87% similarity]
v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/vpp/BridgeDomainCustomizerTest.java [moved from v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vpp/BridgeDomainCustomizerTest.java with 74% similarity]
v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/vpp/BridgeDomainTestUtils.java [moved from v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vpp/BridgeDomainTestUtils.java with 97% similarity]
v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/vpp/VppTest.java [moved from v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vpp/VppTest.java with 89% similarity]
v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/vpp/VppUtils.java [moved from v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vpp/VppUtils.java with 61% similarity]
v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/vppstate/VppStateTest.java [moved from v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vppstate/VppStateTest.java with 94% similarity]
v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/translate/v3po/vppstate/VppStateUtils.java [moved from v3po/v3po2vpp/src/test/java/io/fd/honeycomb/v3po/vpp/facade/v3po/vppstate/VppStateUtils.java with 63% similarity]
v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/CompositeRootVppReader.java [deleted file]
v3po/vpp-facade-impl/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/DelegatingWriterRegistryTest.java [deleted file]
v3po/vpp-facade-impl/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/TransactionWriteContextTest.java [deleted file]
v3po/vpp-translate-utils/pom.xml [new file with mode: 0644]
v3po/vpp-translate-utils/src/main/java/io/fd/honeycomb/v3po/translate/v3po/util/VppApiCustomizer.java [moved from v3po/vpp-facade-utils/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/util/VppApiCustomizer.java with 95% similarity]

index cdfb7c2..1764b67 100644 (file)
       </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
-        <artifactId>vpp-facade-api</artifactId>
+        <artifactId>translate-api</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
-        <artifactId>vpp-facade-spi</artifactId>
+        <artifactId>translate-spi</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
-        <artifactId>vpp-facade-impl</artifactId>
+        <artifactId>translate-impl</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
         <groupId>${project.groupId}</groupId>
-        <artifactId>vpp-facade-utils</artifactId>
+        <artifactId>translate-utils</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>vpp-translate-utils</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
index 142d803..810cec5 100644 (file)
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>vpp-facade-api</artifactId>
+      <artifactId>translate-api</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>vpp-facade-spi</artifactId>
+      <artifactId>translate-spi</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>vpp-facade-impl</artifactId>
+      <artifactId>translate-impl</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>vpp-facade-utils</artifactId>
+      <artifactId>translate-utils</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>vpp-translate-utils</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
index cea5999..1f52378 100644 (file)
     <feature version='${netconf.version}'>odl-netconf-connector-ssh</feature>
     <feature version='${mdsal.version}'>odl-netconf-mdsal</feature>
     <bundle>mvn:io.fd.honeycomb.v3po/v3po-impl/${project.version}</bundle>
-    <bundle>mvn:io.fd.honeycomb.v3po/vpp-facade-api/${project.version}</bundle>
-    <bundle>mvn:io.fd.honeycomb.v3po/vpp-facade-spi/${project.version}</bundle>
-    <bundle>mvn:io.fd.honeycomb.v3po/vpp-facade-utils/${project.version}</bundle>
-    <bundle>mvn:io.fd.honeycomb.v3po/vpp-facade-impl/${project.version}</bundle>
+    <bundle>mvn:io.fd.honeycomb.v3po/translate-api/${project.version}</bundle>
+    <bundle>mvn:io.fd.honeycomb.v3po/translate-spi/${project.version}</bundle>
+    <bundle>mvn:io.fd.honeycomb.v3po/translate-utils/${project.version}</bundle>
+    <bundle>mvn:io.fd.honeycomb.v3po/vpp-translate-utils/${project.version}</bundle>
+    <bundle>mvn:io.fd.honeycomb.v3po/translate-impl/${project.version}</bundle>
     <bundle>mvn:io.fd.honeycomb.v3po/v3po2vpp/${project.version}</bundle>
     <bundle>wrap:mvn:io.fd.vpp/vppjapi/1.0.0-SNAPSHOT</bundle>
     <configfile finalname="${configfile.directory}/v3po.xml">mvn:io.fd.honeycomb.v3po/v3po-impl/${project.version}/xml/config</configfile>
index a8109a8..56dcf85 100644 (file)
@@ -36,7 +36,7 @@
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>vpp-facade-impl</artifactId>
+      <artifactId>translate-impl</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
index 931ecef..0ea4525 100644 (file)
@@ -21,8 +21,8 @@ import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import io.fd.honeycomb.v3po.impl.data.VppDataBrokerInitializationProvider;
-import io.fd.honeycomb.v3po.impl.data.VppReaderRegistry;
-import io.fd.honeycomb.v3po.impl.data.VppWriterRegistry;
+import io.fd.honeycomb.v3po.impl.data.ReaderRegistry;
+import io.fd.honeycomb.v3po.impl.data.WriterRegistry;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
@@ -196,8 +196,8 @@ public class V3poProvider implements BindingAwareProvider, AutoCloseable, Broker
                                                    vppPollOperData);
         startOperationalUpdateTimer();
 
-        final VppReaderRegistry readerRegistry = VppReaderRegistry.getInstance(api);
-        final VppWriterRegistry writerRegistry = VppWriterRegistry.getInstance(api);
+        final ReaderRegistry readerRegistry = ReaderRegistry.getInstance(api);
+        final WriterRegistry writerRegistry = WriterRegistry.getInstance(api);
 
         // TODO make configurable:
         vppDataBrokerInitializationProvider = new VppDataBrokerInitializationProvider(db, readerRegistry, writerRegistry);
@@ -18,20 +18,19 @@ package io.fd.honeycomb.v3po.impl.data;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.Multimap;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeListVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeRootVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.util.DelegatingReaderRegistry;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.util.ReflexiveChildReaderCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.util.ReflexiveRootReaderCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReaderRegistry;
-import io.fd.honeycomb.v3po.vpp.facade.read.VppReader;
-import io.fd.honeycomb.v3po.vpp.facade.v3po.vppstate.BridgeDomainCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.v3po.vppstate.VersionCustomizer;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeChildReader;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeListReader;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeRootReader;
+import io.fd.honeycomb.v3po.translate.util.read.DelegatingReaderRegistry;
+import io.fd.honeycomb.v3po.translate.util.read.ReflexiveChildReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.util.read.ReflexiveRootReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.read.ChildReader;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.read.Reader;
+import io.fd.honeycomb.v3po.translate.v3po.vppstate.BridgeDomainCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.vppstate.VersionCustomizer;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -50,47 +49,47 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.openvpp.vppjapi.vppApi;
 
 // TODO use some DI framework instead of singleton
-public class VppReaderRegistry implements ReaderRegistry {
+public class ReaderRegistry implements io.fd.honeycomb.v3po.translate.read.ReaderRegistry {
 
-    private static VppReaderRegistry instance;
+    private static ReaderRegistry instance;
 
     private final DelegatingReaderRegistry reader;
 
-    private VppReaderRegistry(@Nonnull final vppApi vppApi) {
-        final CompositeRootVppReader<VppState, VppStateBuilder> vppStateReader = initVppStateReader(vppApi);
+    private ReaderRegistry(@Nonnull final vppApi vppApi) {
+        final CompositeRootReader<VppState, VppStateBuilder> vppStateReader = initVppStateReader(vppApi);
         // TODO add more root readers
-        reader = new DelegatingReaderRegistry(Collections.<VppReader<? extends DataObject>>singletonList(vppStateReader));
+        reader = new DelegatingReaderRegistry(Collections.<Reader<? extends DataObject>>singletonList(vppStateReader));
     }
 
-    private static CompositeRootVppReader<VppState, VppStateBuilder> initVppStateReader(@Nonnull final vppApi vppApi) {
+    private static CompositeRootReader<VppState, VppStateBuilder> initVppStateReader(@Nonnull final vppApi vppApi) {
 
-        final ChildVppReader<Version> versionReader = new CompositeChildVppReader<>(
+        final ChildReader<Version> versionReader = new CompositeChildReader<>(
                 Version.class, new VersionCustomizer(vppApi));
 
-        final CompositeListVppReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder>
-                bridgeDomainReader = new CompositeListVppReader<>(
+        final CompositeListReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder>
+                bridgeDomainReader = new CompositeListReader<>(
                 BridgeDomain.class,
                 new BridgeDomainCustomizer(vppApi));
 
-        final ChildVppReader<BridgeDomains> bridgeDomainsReader = new CompositeChildVppReader<>(
+        final ChildReader<BridgeDomains> bridgeDomainsReader = new CompositeChildReader<>(
                 BridgeDomains.class,
-                VppRWUtils.singletonChildReaderList(bridgeDomainReader),
+                RWUtils.singletonChildReaderList(bridgeDomainReader),
                 new ReflexiveChildReaderCustomizer<>(BridgeDomainsBuilder.class));
 
-        final List<ChildVppReader<? extends ChildOf<VppState>>> childVppReaders = new ArrayList<>();
+        final List<ChildReader<? extends ChildOf<VppState>>> childVppReaders = new ArrayList<>();
         childVppReaders.add(versionReader);
         childVppReaders.add(bridgeDomainsReader);
 
-        return new CompositeRootVppReader<>(
+        return new CompositeRootReader<>(
                 VppState.class,
                 childVppReaders,
-                VppRWUtils.<VppState>emptyAugReaderList(),
+                RWUtils.<VppState>emptyAugReaderList(),
                 new ReflexiveRootReaderCustomizer<>(VppStateBuilder.class));
     }
 
-    public static synchronized VppReaderRegistry getInstance(@Nonnull final vppApi vppApi) {
+    public static synchronized ReaderRegistry getInstance(@Nonnull final vppApi vppApi) {
         if (instance == null) {
-            instance = new VppReaderRegistry(vppApi);
+            instance = new ReaderRegistry(vppApi);
         }
         return instance;
     }
index 72848ad..1a631fc 100644 (file)
@@ -21,10 +21,9 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.util.TransactionWriteContext;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriterRegistry;
+import io.fd.honeycomb.v3po.translate.TranslationException;
+import io.fd.honeycomb.v3po.translate.util.write.TransactionWriteContext;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
 import java.util.Collections;
 import java.util.Map;
 import javax.annotation.Nonnull;
@@ -54,7 +53,7 @@ public final class VppConfigDataTree implements VppDataTree {
 
     private final BindingNormalizedNodeSerializer serializer;
     private final DataTree dataTree;
-    private final VppWriterRegistry writer;
+    private final WriterRegistry writer;
     public static final ReadableVppDataTree EMPTY_OPERATIONAL = new ReadableVppDataTree() {
         @Override
         public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(
@@ -72,7 +71,7 @@ public final class VppConfigDataTree implements VppDataTree {
      * @param vppWriter  service for translation between Java Binding Data and Vpp.
      */
     public VppConfigDataTree(@Nonnull final BindingNormalizedNodeSerializer serializer,
-                             @Nonnull final DataTree dataTree, @Nonnull final VppWriterRegistry vppWriter) {
+                             @Nonnull final DataTree dataTree, @Nonnull final WriterRegistry vppWriter) {
         this.serializer = checkNotNull(serializer, "serializer should not be null");
         this.dataTree = checkNotNull(dataTree, "dataTree should not be null");
         this.writer = checkNotNull(vppWriter, "vppWriter should not be null");
@@ -85,7 +84,7 @@ public final class VppConfigDataTree implements VppDataTree {
 
     @Override
     public void commit(final DataTreeModification modification)
-            throws DataValidationFailedException, VppException {
+            throws DataValidationFailedException, TranslationException {
         dataTree.validate(modification);
 
         final DataTreeCandidate candidate = dataTree.prepare(modification);
@@ -109,21 +108,21 @@ public final class VppConfigDataTree implements VppDataTree {
         final DOMDataReadOnlyTransaction afterTx = new VppReadOnlyTransaction(EMPTY_OPERATIONAL, modificationSnapshot);
         try(final WriteContext ctx = new TransactionWriteContext(serializer, beforeTx, afterTx)) {
             writer.update(nodesBefore, nodesAfter, ctx);
-        } catch (WriterRegistry.BulkUpdateException e) {
+        } catch (io.fd.honeycomb.v3po.translate.write.WriterRegistry.BulkUpdateException e) {
             LOG.warn("Failed to apply all changes", e);
             LOG.info("Trying to revert successful changes for current transaction");
 
             try {
                 e.revertChanges();
                 LOG.info("Changes successfully reverted");
-            } catch (WriterRegistry.Reverter.RevertFailedException revertFailedException) {
+            } catch (io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter.RevertFailedException revertFailedException) {
                 // fail with failed revert
                 LOG.error("Failed to revert successful changes", revertFailedException);
                 throw revertFailedException;
             }
 
             throw e; // fail with success revert
-        } catch (VppException e) {
+        } catch (TranslationException e) {
             LOG.error("Error while processing data change (before={}, after={})", nodesBefore, nodesAfter, e);
             throw e;
         }
index d84f0b7..bdfc890 100644 (file)
@@ -24,7 +24,7 @@ import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import io.fd.honeycomb.v3po.impl.LoggingFuturesCallBack;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReaderRegistry;
+import io.fd.honeycomb.v3po.translate.read.ReaderRegistry;
 import java.util.Collection;
 import java.util.Collections;
 import javassist.ClassPool;
@@ -85,13 +85,13 @@ public final class VppDataBrokerInitializationProvider implements Provider, Auto
     private final DataBroker bindingBroker;
     private final ReaderRegistry readerRegistry;
     private final InstanceIdentifier<Node> mountPointPath;
-    private final VppWriterRegistry writerRegistry;
+    private final WriterRegistry writerRegistry;
     private ObjectRegistration<DOMMountPoint> mountPointRegistration;
     private DOMDataBroker broker;
 
     public VppDataBrokerInitializationProvider(@Nonnull final DataBroker bindingBroker,
                                                final ReaderRegistry readerRegistry,
-                                               final VppWriterRegistry writerRegistry) {
+                                               final WriterRegistry writerRegistry) {
         this.bindingBroker = checkNotNull(bindingBroker, "bindingBroker should not be null");
         this.readerRegistry = checkNotNull(readerRegistry, "readerRegistry should not be null");
         this.writerRegistry = checkNotNull(writerRegistry, "writerRegistry should not be null");
index 7e62b57..aba8ab1 100644 (file)
@@ -17,7 +17,7 @@
 package io.fd.honeycomb.v3po.impl.data;
 
 import com.google.common.annotations.Beta;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
+import io.fd.honeycomb.v3po.translate.TranslationException;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException;
 
@@ -31,9 +31,9 @@ public interface VppDataTree {
      *
      * @param modification VPP data tree modification
      * @throws DataValidationFailedException if modification data is not valid
-     * @throws VppException if commit failed while updating VPP state
+     * @throws TranslationException if commit failed while updating VPP state
      */
-    void commit(final DataTreeModification modification) throws DataValidationFailedException, VppException;
+    void commit(final DataTreeModification modification) throws DataValidationFailedException, TranslationException;
 
     /**
      * Creates read-only snapshot of a VppDataTree.
index 12d2816..8f606fd 100644 (file)
@@ -26,10 +26,10 @@ import com.google.common.collect.Collections2;
 import com.google.common.collect.Multimap;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReaderRegistry;
+import io.fd.honeycomb.v3po.translate.Context;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.read.ReaderRegistry;
 import java.util.Collection;
 import java.util.Map;
 import javax.annotation.Nonnull;
index 1baa586..b33fffa 100644 (file)
@@ -26,7 +26,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
+import io.fd.honeycomb.v3po.translate.TranslationException;
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.NotThreadSafe;
 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
@@ -121,7 +121,7 @@ final class VppWriteTransaction implements DOMDataWriteTransaction {
         try {
             configDataTree.commit(modification);
             status = COMMITED;
-        } catch (DataValidationFailedException | VppException e) {
+        } catch (DataValidationFailedException | TranslationException e) {
             status = FAILED;
             LOG.error("Failed to commit VPP state modification", e);
             return Futures.immediateFailedCheckedFuture(
 
 package io.fd.honeycomb.v3po.impl.data;
 
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeChildVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeListVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeRootVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.util.DelegatingWriterRegistry;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.util.NoopWriterCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.util.ReflexiveChildWriterCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.v3po.vpp.BridgeDomainCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.write.ChildVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.VppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriterRegistry;
+import io.fd.honeycomb.v3po.translate.TranslationException;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.impl.write.CompositeChildWriter;
+import io.fd.honeycomb.v3po.translate.impl.write.CompositeListWriter;
+import io.fd.honeycomb.v3po.translate.impl.write.CompositeRootWriter;
+import io.fd.honeycomb.v3po.translate.util.write.DelegatingWriterRegistry;
+import io.fd.honeycomb.v3po.translate.util.write.NoopWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.util.write.ReflexiveChildWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.vpp.BridgeDomainCustomizer;
+import io.fd.honeycomb.v3po.translate.write.ChildWriter;
+import io.fd.honeycomb.v3po.translate.write.Writer;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -45,39 +44,39 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.openvpp.vppjapi.vppApi;
 
 // TODO use some DI framework instead of singleton
-public class VppWriterRegistry implements WriterRegistry {
+public class WriterRegistry implements io.fd.honeycomb.v3po.translate.write.WriterRegistry {
 
-    private static VppWriterRegistry instance;
+    private static WriterRegistry instance;
 
     private final DelegatingWriterRegistry writer;
 
-    private VppWriterRegistry(@Nonnull final vppApi vppApi) {
-        final CompositeRootVppWriter<Vpp> vppWriter = initVppStateWriter(vppApi);
-        writer = new DelegatingWriterRegistry(Collections.<VppWriter<? extends DataObject>>singletonList(vppWriter));
+    private WriterRegistry(@Nonnull final vppApi vppApi) {
+        final CompositeRootWriter<Vpp> vppWriter = initVppStateWriter(vppApi);
+        writer = new DelegatingWriterRegistry(Collections.<Writer<? extends DataObject>>singletonList(vppWriter));
     }
 
-    private static CompositeRootVppWriter<Vpp> initVppStateWriter(@Nonnull final vppApi vppApi) {
-        final CompositeListVppWriter<BridgeDomain, BridgeDomainKey> bridgeDomainWriter = new CompositeListVppWriter<>(
+    private static CompositeRootWriter<Vpp> initVppStateWriter(@Nonnull final vppApi vppApi) {
+        final CompositeListWriter<BridgeDomain, BridgeDomainKey> bridgeDomainWriter = new CompositeListWriter<>(
             BridgeDomain.class,
             new BridgeDomainCustomizer(vppApi));
 
-        final ChildVppWriter<BridgeDomains> bridgeDomainsWriter = new CompositeChildVppWriter<>(
+        final ChildWriter<BridgeDomains> bridgeDomainsWriter = new CompositeChildWriter<>(
             BridgeDomains.class,
-            VppRWUtils.singletonChildWriterList(bridgeDomainWriter),
+            RWUtils.singletonChildWriterList(bridgeDomainWriter),
             new ReflexiveChildWriterCustomizer<BridgeDomains>());
 
-        final List<ChildVppWriter<? extends ChildOf<Vpp>>> childWriters = new ArrayList<>();
+        final List<ChildWriter<? extends ChildOf<Vpp>>> childWriters = new ArrayList<>();
         childWriters.add(bridgeDomainsWriter);
 
-        return new CompositeRootVppWriter<>(
+        return new CompositeRootWriter<>(
             Vpp.class,
             childWriters,
             new NoopWriterCustomizer<Vpp>());
     }
 
-    public static synchronized VppWriterRegistry getInstance(@Nonnull final vppApi vppApi) {
+    public static synchronized WriterRegistry getInstance(@Nonnull final vppApi vppApi) {
         if (instance == null) {
-            instance = new VppWriterRegistry(vppApi);
+            instance = new WriterRegistry(vppApi);
         }
         return instance;
     }
@@ -91,7 +90,7 @@ public class VppWriterRegistry implements WriterRegistry {
     @Override
     public void update(@Nonnull final InstanceIdentifier<? extends DataObject> id,
                        @Nullable final DataObject dataBefore,
-                       @Nullable final DataObject data, @Nonnull final WriteContext ctx) throws VppException {
+                       @Nullable final DataObject data, @Nonnull final WriteContext ctx) throws TranslationException {
         writer.update(id, dataBefore, data, ctx);
     }
 
@@ -99,7 +98,7 @@ public class VppWriterRegistry implements WriterRegistry {
     public void update(@Nonnull final Map<InstanceIdentifier<?>, DataObject> dataBefore,
                        @Nonnull final Map<InstanceIdentifier<?>, DataObject> dataAfter,
                        @Nonnull final WriteContext ctx)
-        throws VppException {
+        throws TranslationException {
         writer.update(dataBefore, dataAfter, ctx);
     }
 }
index 207a64a..c4315cd 100644 (file)
@@ -31,9 +31,8 @@ import static org.mockito.MockitoAnnotations.initMocks;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriterRegistry;
+import io.fd.honeycomb.v3po.translate.TranslationException;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -60,7 +59,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
 public class VPPConfigDataTreeTest {
 
     @Mock
-    private VppWriterRegistry vppWriter;
+    private WriterRegistry vppWriter;
     @Mock
     private BindingNormalizedNodeSerializer serializer;
     @Mock
@@ -156,11 +155,12 @@ public class VPPConfigDataTreeTest {
         final DataObject dataBefore = mockDataObject("before", Ethernet.class);
         final DataObject dataAfter = mockDataObject("after", Ethernet.class);
 
-        final WriterRegistry.Reverter reverter = mock(WriterRegistry.Reverter.class);
+        final io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter reverter = mock(
+            io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter.class);
 
         // Fail on update:
-        final VppException failedOnUpdateException = new VppException("update failed");
-        doThrow(new WriterRegistry.BulkUpdateException(InstanceIdentifier.create(Ethernet.class), reverter,
+        final TranslationException failedOnUpdateException = new TranslationException("update failed");
+        doThrow(new io.fd.honeycomb.v3po.translate.write.WriterRegistry.BulkUpdateException(InstanceIdentifier.create(Ethernet.class), reverter,
                 failedOnUpdateException)).when(vppWriter).update(anyMap(), anyMap(), any(WriteContext.class));
 
         // Prepare modification:
@@ -175,7 +175,7 @@ public class VPPConfigDataTreeTest {
         // Run the test
         try {
             proxy.commit(modification);
-        } catch (WriterRegistry.BulkUpdateException e) {
+        } catch (io.fd.honeycomb.v3po.translate.write.WriterRegistry.BulkUpdateException e) {
             verify(vppWriter).update(anyMap(), anyMap(), any(WriteContext.class));
             verify(reverter).revert();
             assertEquals(failedOnUpdateException, e.getCause());
@@ -191,16 +191,17 @@ public class VPPConfigDataTreeTest {
         final DataObject dataBefore = mockDataObject("before", Ethernet.class);
         final DataObject dataAfter = mockDataObject("after", Ethernet.class);
 
-        final WriterRegistry.Reverter reverter = mock(WriterRegistry.Reverter.class);
+        final io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter reverter = mock(
+            io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter.class);
 
         // Fail on update:
-        doThrow(new WriterRegistry.BulkUpdateException(InstanceIdentifier.create(Ethernet.class), reverter,
-                new VppException("update failed"))).when(vppWriter).update(anyMap(), anyMap(), any(WriteContext.class));
+        doThrow(new io.fd.honeycomb.v3po.translate.write.WriterRegistry.BulkUpdateException(InstanceIdentifier.create(Ethernet.class), reverter,
+                new TranslationException("update failed"))).when(vppWriter).update(anyMap(), anyMap(), any(WriteContext.class));
 
         // Fail on revert:
-        final VppException failedOnRevertException = new VppException("update failed");
-        final WriterRegistry.Reverter.RevertFailedException revertFailedException =
-                new WriterRegistry.Reverter.RevertFailedException(Collections.<InstanceIdentifier<?>>emptyList(),
+        final TranslationException failedOnRevertException = new TranslationException("update failed");
+        final io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter.RevertFailedException revertFailedException =
+                new io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter.RevertFailedException(Collections.<InstanceIdentifier<?>>emptyList(),
                         failedOnRevertException);
         doThrow(revertFailedException).when(reverter).revert();
 
@@ -216,7 +217,7 @@ public class VPPConfigDataTreeTest {
         // Run the test
         try {
             proxy.commit(modification);
-        } catch (WriterRegistry.Reverter.RevertFailedException e) {
+        } catch (io.fd.honeycomb.v3po.translate.write.WriterRegistry.Reverter.RevertFailedException e) {
             verify(vppWriter).update(anyMap(), anyMap(), any(WriteContext.class));
             verify(reverter).revert();
             assertEquals(failedOnRevertException, e.getCause());
index 2c50ec9..51f57a2 100644 (file)
@@ -26,7 +26,7 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.MockitoAnnotations.initMocks;
 
 import com.google.common.util.concurrent.CheckedFuture;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReaderRegistry;
+import io.fd.honeycomb.v3po.translate.read.ReaderRegistry;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
@@ -45,7 +45,7 @@ public class VppDataBrokerInitializationProviderTest {
     @Mock
     private ReaderRegistry readerRegistry;
     @Mock
-    private VppWriterRegistry writerRegistry;
+    private WriterRegistry writerRegistry;
 
 
     private VppDataBrokerInitializationProvider provider;
index 09e7094..049c2a0 100644 (file)
@@ -34,8 +34,8 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.Multimap;
 import com.google.common.util.concurrent.CheckedFuture;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReaderRegistry;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.ReaderRegistry;
 import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
@@ -121,7 +121,7 @@ public class VppOperationalDataTreeTest {
 
     @Test
     public void testReadFailed() throws Exception{
-        doThrow(io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException.class).when(reader).readAll(any(ReadContext.class));
+        doThrow(io.fd.honeycomb.v3po.translate.read.ReadFailedException.class).when(reader).readAll(any(ReadContext.class));
 
         final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> future =
                 operationalData.read( YangInstanceIdentifier.EMPTY);
@@ -129,7 +129,7 @@ public class VppOperationalDataTreeTest {
         try {
             future.checkedGet();
         } catch (ReadFailedException e) {
-            assertTrue(e.getCause() instanceof io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException);
+            assertTrue(e.getCause() instanceof io.fd.honeycomb.v3po.translate.read.ReadFailedException);
             return;
         }
         fail("ReadFailedException was expected");
index cb9073c..7fdf97b 100644 (file)
   </prerequisites>
   <modules>
     <module>api</module>
-    <module>vpp-facade-spi</module>
-    <module>vpp-facade-api</module>
-    <module>vpp-facade-impl</module>
-    <module>vpp-facade-utils</module>
+    <module>translate-spi</module>
+    <module>translate-api</module>
+    <module>translate-impl</module>
+    <module>translate-utils</module>
+    <module>vpp-translate-utils</module>
     <module>v3po2vpp</module>
     <module>impl</module>
     <module>karaf</module>
similarity index 98%
rename from v3po/vpp-facade-api/pom.xml
rename to v3po/translate-api/pom.xml
index 0406f1e..42501e7 100644 (file)
@@ -24,7 +24,7 @@
 
     <modelVersion>4.0.0</modelVersion>
     <groupId>io.fd.honeycomb.v3po</groupId>
-    <artifactId>vpp-facade-api</artifactId>
+    <artifactId>translate-api</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade;
+package io.fd.honeycomb.v3po.translate;
 
 import com.google.common.annotations.Beta;
 
 /**
- * Base exception for Vpp translation layer
+ * Base exception for the translation layer
  */
 @Beta
-public class VppException extends Exception {
+public class TranslationException extends Exception {
 
-    public VppException(final String s) {
+    public TranslationException(final String s) {
         super(s);
     }
 
-    public VppException(final String s, final Throwable cause) {
+    public TranslationException(final String s, final Throwable cause) {
         super(s, cause);
     }
 
-    public VppException(final Throwable cause) {
+    public TranslationException(final Throwable cause) {
         super(cause);
     }
 }
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade;
+package io.fd.honeycomb.v3po.translate;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Preconditions;
@@ -24,7 +24,7 @@ import javax.annotation.Nonnull;
  * Thrown when Vpp jAPI method invocation failed.
  */
 @Beta
-public class VppApiInvocationException extends VppException {
+public class VppApiInvocationException extends TranslationException {
     private final String methodName;
     private final int ctxId;
     private final int errorCode;
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.read;
+package io.fd.honeycomb.v3po.translate.read;
 
 import com.google.common.annotations.Beta;
 import javax.annotation.Nonnull;
@@ -23,12 +23,12 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Child VPP reader allowing its parent to pass the builder object
+ * Child reader allowing its parent to pass the builder object
  *
  * @param <C> Specific DataObject derived type, that is handled by this reader
  */
 @Beta
-public interface ChildVppReader<C extends DataObject> extends VppReader<C> {
+public interface ChildReader<C extends DataObject> extends Reader<C> {
 
     /**
      * Reads subtree starting from node managed by this reader and place the subtree within parent builder object if the
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.read;
+package io.fd.honeycomb.v3po.translate.read;
 
 import com.google.common.annotations.Beta;
 import java.util.List;
@@ -25,12 +25,12 @@ import org.opendaylight.yangtools.yang.binding.Identifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * List VPP reader, allowing read of all the elements
+ * List reader, allowing read of all the elements
  *
  * @param <D> Specific DataObject derived type, that is handled by this reader
  */
 @Beta
-public interface ListVppReader<D extends DataObject & Identifiable<K>, K extends Identifier<D>> extends VppReader<D> {
+public interface ListReader<D extends DataObject & Identifiable<K>, K extends Identifier<D>> extends Reader<D> {
 
     /**
      * Read all elements in this list
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.read;
+package io.fd.honeycomb.v3po.translate.read;
 
-import io.fd.honeycomb.v3po.vpp.facade.Context;
+import io.fd.honeycomb.v3po.translate.Context;
 import javax.annotation.Nonnull;
 
 /**
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.read;
+package io.fd.honeycomb.v3po.translate.read;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
+import io.fd.honeycomb.v3po.translate.TranslationException;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Thrown when Vpp reader or customizer is not able to read data for the given id.
+ * Thrown when a reader or customizer is not able to read data for the given id.
  */
-public class ReadFailedException extends VppException {
+public class ReadFailedException extends TranslationException {
 
     private final InstanceIdentifier<?> failedId;
 
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.read;
+package io.fd.honeycomb.v3po.translate.read;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.vpp.facade.SubtreeManager;
+import io.fd.honeycomb.v3po.translate.SubtreeManager;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Base VPP reader, responsible for translation between DataObjects and VPP APIs
+ * Base reader, responsible for translation between DataObjects and any other side
  *
  * @param <D> Specific DataObject derived type, that is handled by this reader
  */
 @Beta
-public interface VppReader<D extends DataObject> extends SubtreeManager<D> {
+public interface Reader<D extends DataObject> extends SubtreeManager<D> {
 
     // TODO make async
 
     /**
-     * Reads from VPP data identified by id
+     * Reads data identified by id
      *
      * @param id unique identifier of subtree to be read. The subtree must contain managed data object type. For
      *           identifiers pointing below node managed by this reader, it's reader's responsibility to filter out the
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.read;
+package io.fd.honeycomb.v3po.translate.read;
 
 import com.google.common.annotations.Beta;
 import com.google.common.collect.Multimap;
@@ -26,7 +26,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  * Simple delegating reader suitable as a holder for all other root readers, providing readAll feature.
  */
 @Beta
-public interface ReaderRegistry extends VppReader<DataObject> {
+public interface ReaderRegistry extends Reader<DataObject> {
 
     /**
      * Performs read on all registered root readers and merges the results into a Multimap. Keys represent identifiers
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.write;
+package io.fd.honeycomb.v3po.translate.write;
 
 import com.google.common.annotations.Beta;
 import javax.annotation.Nonnull;
@@ -22,12 +22,12 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Child VPP writer allowing its parent to pass the builder object
+ * Child writer allowing its parent to pass the builder object
  *
- * @param <C> Specific DataObject derived type, that is handled by this writer
+ * @param <D> Specific DataObject derived type, that is handled by this writer
  */
 @Beta
-public interface ChildVppWriter<D extends DataObject> extends VppWriter<D> {
+public interface ChildWriter<D extends DataObject> extends Writer<D> {
 
     /**
      * Extract data object managed by this writer from parent data and perform write.
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.write;
+package io.fd.honeycomb.v3po.translate.write;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
+import io.fd.honeycomb.v3po.translate.Context;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.write;
+package io.fd.honeycomb.v3po.translate.write;
 
 import com.google.common.annotations.Beta;
-import io.fd.honeycomb.v3po.vpp.facade.SubtreeManager;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
+import io.fd.honeycomb.v3po.translate.TranslationException;
+import io.fd.honeycomb.v3po.translate.SubtreeManager;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Base VPP writer, responsible for translation between DataObjects and VPP APIs. Handling all update operations(create,
+ * Base writer, responsible for translation between DataObjects and any other side. Handling all update operations(create,
  * update, delete)
  *
  * @param <D> Specific DataObject derived type, that is handled by this writer
  */
 @Beta
-public interface VppWriter<D extends DataObject> extends SubtreeManager<D> {
+public interface Writer<D extends DataObject> extends SubtreeManager<D> {
 
     /**
      * Handle update operation. U from CRUD.
@@ -40,10 +40,10 @@ public interface VppWriter<D extends DataObject> extends SubtreeManager<D> {
      * @param dataBefore Old data
      * @param dataAfter  New, updated data
      * @param ctx        Write context enabling writer to get information about candidate data as well as current data
-     * @throws VppException if update failed
+     * @throws TranslationException if update failed
      */
     void update(@Nonnull final InstanceIdentifier<? extends DataObject> id,
                 @Nullable final DataObject dataBefore,
                 @Nullable final DataObject dataAfter,
-                @Nonnull final WriteContext ctx) throws VppException;
+                @Nonnull final WriteContext ctx) throws TranslationException;
 }
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.write;
+package io.fd.honeycomb.v3po.translate.write;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
+import io.fd.honeycomb.v3po.translate.TranslationException;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Nonnull;
@@ -28,26 +28,26 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Special {@link VppWriter} capable of performing bulk updates
+ * Special {@link Writer} capable of performing bulk updates
  */
 @Beta
-public interface WriterRegistry extends VppWriter<DataObject> {
+public interface WriterRegistry extends Writer<DataObject> {
 
     /**
      * Performs bulk update
      *
      * @throws BulkUpdateException in case bulk update fails
-     * @throws VppException        in case some other error occurs while processing update request
+     * @throws TranslationException        in case some other error occurs while processing update request
      */
     void update(@Nonnull final Map<InstanceIdentifier<?>, DataObject> dataBefore,
                 @Nonnull final Map<InstanceIdentifier<?>, DataObject> dataAfter,
-                @Nonnull final WriteContext ctx) throws VppException;
+                @Nonnull final WriteContext ctx) throws TranslationException;
 
     /**
      * Thrown when bulk update failed.
      */
     @Beta
-    class BulkUpdateException extends VppException {
+    class BulkUpdateException extends TranslationException {
 
         private final Reverter reverter;
         private final InstanceIdentifier<?> failedId; // TODO change to VppDataModification
@@ -103,7 +103,7 @@ public interface WriterRegistry extends VppWriter<DataObject> {
          * Thrown when some of the changes applied during bulk update were not reverted.
          */
         @Beta
-        class RevertFailedException extends VppException {
+        class RevertFailedException extends TranslationException {
 
             // TODO change to list of VppDataModifications to make debugging easier
             private final List<InstanceIdentifier<?>> notRevertedChanges;
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade;
+package io.fd.honeycomb.v3po.translate;
 
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
 import org.junit.Assert;
 import org.junit.Test;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.BridgeDomain;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.bridge.domains.bridge.domain.Interface;
+import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public class ReadFailedExceptionTest {
 
     @Test
     public void testInstantiation() {
-        final InstanceIdentifier<BridgeDomain> id = InstanceIdentifier.create(BridgeDomain.class);
+        final InstanceIdentifier<DataObject> id = InstanceIdentifier.create(DataObject.class);
         ReadFailedException e = new ReadFailedException(id);
         Assert.assertEquals(id, e.getFailedId());
         Assert.assertNull(e.getCause());
@@ -36,7 +35,7 @@ public class ReadFailedExceptionTest {
 
     @Test
     public void testInstantiationWithCause() {
-        final InstanceIdentifier<Interface> id = InstanceIdentifier.create(Interface.class);
+        final InstanceIdentifier<DataObject> id = InstanceIdentifier.create(DataObject.class);
         final RuntimeException cause = new RuntimeException();
         ReadFailedException e = new ReadFailedException(id, cause);
         Assert.assertEquals(id, e.getFailedId());
similarity index 91%
rename from v3po/vpp-facade-impl/pom.xml
rename to v3po/translate-impl/pom.xml
index fff69c2..214d48f 100644 (file)
 
     <modelVersion>4.0.0</modelVersion>
     <groupId>io.fd.honeycomb.v3po</groupId>
-    <artifactId>vpp-facade-impl</artifactId>
+    <artifactId>translate-impl</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-api</artifactId>
+            <artifactId>translate-api</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-spi</artifactId>
+            <artifactId>translate-spi</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-utils</artifactId>
+            <artifactId>translate-utils</artifactId>
             <version>${project.version}</version>
         </dependency>
 
@@ -77,7 +77,7 @@
                     <instructions>
                         <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
                         <Export-Package>
-                            io.fd.honeycomb.v3po.vpp.facade.impl.*
+                            io.fd.honeycomb.v3po.translate.impl.*
                         </Export-Package>
                     </instructions>
                 </configuration>
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.read;
+package io.fd.honeycomb.v3po.translate.impl.read;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
@@ -22,12 +22,12 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.ReflectionUtils;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
-import io.fd.honeycomb.v3po.vpp.facade.read.VppReader;
+import io.fd.honeycomb.v3po.translate.util.ReflectionUtils;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.read.ChildReader;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.read.Reader;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Collections;
@@ -45,19 +45,19 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Beta
-abstract class AbstractCompositeVppReader<D extends DataObject, B extends Builder<D>> implements VppReader<D> {
+abstract class AbstractCompositeReader<D extends DataObject, B extends Builder<D>> implements Reader<D> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractCompositeVppReader.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractCompositeReader.class);
 
-    private final Map<Class<? extends DataObject>, ChildVppReader<? extends ChildOf<D>>> childReaders;
-    private final Map<Class<? extends DataObject>, ChildVppReader<? extends Augmentation<D>>> augReaders;
+    private final Map<Class<? extends DataObject>, ChildReader<? extends ChildOf<D>>> childReaders;
+    private final Map<Class<? extends DataObject>, ChildReader<? extends Augmentation<D>>> augReaders;
     private final InstanceIdentifier<D> instanceIdentifier;
 
-    AbstractCompositeVppReader(final Class<D> managedDataObjectType,
-            final List<ChildVppReader<? extends ChildOf<D>>> childReaders,
-            final List<ChildVppReader<? extends Augmentation<D>>> augReaders) {
-        this.childReaders = VppRWUtils.uniqueLinkedIndex(childReaders, VppRWUtils.MANAGER_CLASS_FUNCTION);
-        this.augReaders = VppRWUtils.uniqueLinkedIndex(augReaders, VppRWUtils.MANAGER_CLASS_AUG_FUNCTION);
+    AbstractCompositeReader(final Class<D> managedDataObjectType,
+                            final List<ChildReader<? extends ChildOf<D>>> childReaders,
+                            final List<ChildReader<? extends Augmentation<D>>> augReaders) {
+        this.childReaders = RWUtils.uniqueLinkedIndex(childReaders, RWUtils.MANAGER_CLASS_FUNCTION);
+        this.augReaders = RWUtils.uniqueLinkedIndex(augReaders, RWUtils.MANAGER_CLASS_AUG_FUNCTION);
         this.instanceIdentifier = InstanceIdentifier.create(managedDataObjectType);
     }
 
@@ -82,12 +82,12 @@ abstract class AbstractCompositeVppReader<D extends DataObject, B extends Builde
         readCurrentAttributes(id, builder, ctx);
 
         // TODO expect exceptions from reader
-        for (ChildVppReader<? extends ChildOf<D>> child : childReaders.values()) {
+        for (ChildReader<? extends ChildOf<D>> child : childReaders.values()) {
             LOG.debug("{}: Reading child from: {}", this, child);
             child.read(id, builder, ctx);
         }
 
-        for (ChildVppReader<? extends Augmentation<D>> child : augReaders.values()) {
+        for (ChildReader<? extends Augmentation<D>> child : augReaders.values()) {
             LOG.debug("{}: Reading augment from: {}", this, child);
             child.read(id, builder, ctx);
         }
@@ -120,16 +120,16 @@ abstract class AbstractCompositeVppReader<D extends DataObject, B extends Builde
                                                        @Nonnull final ReadContext ctx)
             throws ReadFailedException {
         LOG.debug("{}: Reading subtree: {}", this, id);
-        final Class<? extends DataObject> next = VppRWUtils.getNextId(id, getManagedDataObjectType()).getType();
-        final ChildVppReader<? extends ChildOf<D>> vppReader = childReaders.get(next);
+        final Class<? extends DataObject> next = RWUtils.getNextId(id, getManagedDataObjectType()).getType();
+        final ChildReader<? extends ChildOf<D>> reader = childReaders.get(next);
 
-        if (vppReader != null) {
-            LOG.debug("{}: Reading subtree: {} from: {}", this, id, vppReader);
-            return vppReader.read(id, ctx);
+        if (reader != null) {
+            LOG.debug("{}: Reading subtree: {} from: {}", this, id, reader);
+            return reader.read(id, ctx);
         } else {
             LOG.debug("{}: Dedicated subtree reader missing for: {}. Reading current and filtering", this, next);
             // If there's no dedicated reader, use read current
-            final InstanceIdentifier<D> currentId = VppRWUtils.cutId(id, getManagedDataObjectType());
+            final InstanceIdentifier<D> currentId = RWUtils.cutId(id, getManagedDataObjectType());
             final Optional<D> current = readCurrent(currentId, ctx);
             // then perform post-reading filtering (return only requested sub-node)
             final Optional<? extends DataObject> readSubtree = current.isPresent()
@@ -168,7 +168,7 @@ abstract class AbstractCompositeVppReader<D extends DataObject, B extends Builde
         // FIXME this needs to be recursive. right now it expects only 1 additional element in ID + test
 
         final InstanceIdentifier.PathArgument nextId =
-            VppRWUtils.getNextId(absolutPath, InstanceIdentifier.create(parent.getClass()));
+            RWUtils.getNextId(absolutPath, InstanceIdentifier.create(parent.getClass()));
 
         Optional<Method> method = ReflectionUtils.findMethodReflex(managedType, "get",
             Collections.<Class<?>>emptyList(), nextId.getType());
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.read;
+package io.fd.honeycomb.v3po.translate.impl.read;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
-import io.fd.honeycomb.v3po.vpp.facade.spi.read.ChildVppReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.read.ChildReader;
+import io.fd.honeycomb.v3po.translate.spi.read.ChildReaderCustomizer;
 import java.util.List;
 import javax.annotation.Nonnull;
 import javax.annotation.concurrent.ThreadSafe;
@@ -33,18 +33,18 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Composite implementation of {@link ChildVppReader} able to place the read result into
+ * Composite implementation of {@link ChildReader} able to place the read result into
  * parent builder object.
  */
 @Beta
 @ThreadSafe
-public final class CompositeChildVppReader<C extends DataObject, B extends Builder<C>> extends AbstractCompositeVppReader<C, B>
-    implements ChildVppReader<C> {
+public final class CompositeChildReader<C extends DataObject, B extends Builder<C>> extends AbstractCompositeReader<C, B>
+    implements ChildReader<C> {
 
-    private final ChildVppReaderCustomizer<C, B> customizer;
+    private final ChildReaderCustomizer<C, B> customizer;
 
     /**
-     * Create new {@link CompositeChildVppReader}
+     * Create new {@link CompositeChildReader}
      *
      * @param managedDataObjectType Class object for managed data type
      * @param childReaders Child nodes(container, list) readers
@@ -52,29 +52,29 @@ public final class CompositeChildVppReader<C extends DataObject, B extends Build
      * @param customizer Customizer instance to customize this generic reader
      *
      */
-    public CompositeChildVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                   @Nonnull final List<ChildVppReader<? extends ChildOf<C>>> childReaders,
-                                   @Nonnull final List<ChildVppReader<? extends Augmentation<C>>> augReaders,
-                                   @Nonnull final ChildVppReaderCustomizer<C, B> customizer) {
+    public CompositeChildReader(@Nonnull final Class<C> managedDataObjectType,
+                                @Nonnull final List<ChildReader<? extends ChildOf<C>>> childReaders,
+                                @Nonnull final List<ChildReader<? extends Augmentation<C>>> augReaders,
+                                @Nonnull final ChildReaderCustomizer<C, B> customizer) {
         super(managedDataObjectType, childReaders, augReaders);
         this.customizer = customizer;
     }
 
     /**
-     * @see {@link CompositeChildVppReader#CompositeChildVppReader(Class, List, List, ChildVppReaderCustomizer)}
+     * @see {@link CompositeChildReader#CompositeChildReader(Class, List, List, ChildReaderCustomizer)}
      */
-    public CompositeChildVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                   @Nonnull final List<ChildVppReader<? extends ChildOf<C>>> childReaders,
-                                   @Nonnull final ChildVppReaderCustomizer<C, B> customizer) {
-        this(managedDataObjectType, childReaders, VppRWUtils.<C>emptyAugReaderList(), customizer);
+    public CompositeChildReader(@Nonnull final Class<C> managedDataObjectType,
+                                @Nonnull final List<ChildReader<? extends ChildOf<C>>> childReaders,
+                                @Nonnull final ChildReaderCustomizer<C, B> customizer) {
+        this(managedDataObjectType, childReaders, RWUtils.<C>emptyAugReaderList(), customizer);
     }
 
     /**
-     * @see {@link CompositeChildVppReader#CompositeChildVppReader(Class, List, List, ChildVppReaderCustomizer)}
+     * @see {@link CompositeChildReader#CompositeChildReader(Class, List, List, ChildReaderCustomizer)}
      */
-    public CompositeChildVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                   @Nonnull final ChildVppReaderCustomizer<C, B> customizer) {
-        this(managedDataObjectType, VppRWUtils.<C>emptyChildReaderList(), VppRWUtils.<C>emptyAugReaderList(),
+    public CompositeChildReader(@Nonnull final Class<C> managedDataObjectType,
+                                @Nonnull final ChildReaderCustomizer<C, B> customizer) {
+        this(managedDataObjectType, RWUtils.<C>emptyChildReaderList(), RWUtils.<C>emptyAugReaderList(),
             customizer);
     }
 
@@ -82,7 +82,7 @@ public final class CompositeChildVppReader<C extends DataObject, B extends Build
     public final void read(@Nonnull final InstanceIdentifier<? extends DataObject> parentId,
                            @Nonnull final Builder<? extends DataObject> parentBuilder,
                            @Nonnull final ReadContext ctx) throws ReadFailedException {
-        final Optional<C> read = readCurrent(VppRWUtils.appendTypeToId(parentId, getManagedDataObjectType()), ctx);
+        final Optional<C> read = readCurrent(RWUtils.appendTypeToId(parentId, getManagedDataObjectType()), ctx);
 
         if(read.isPresent()) {
             customizer.merge(parentBuilder, read.get());
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.read;
+package io.fd.honeycomb.v3po.translate.impl.read;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.read.ListVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
-import io.fd.honeycomb.v3po.vpp.facade.spi.read.ListVppReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.read.ChildReader;
+import io.fd.honeycomb.v3po.translate.read.ListReader;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.spi.read.ListReaderCustomizer;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.Nonnull;
@@ -41,7 +41,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Composite implementation of {@link io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader} able to place the read result into parent builder object intended
+ * Composite implementation of {@link ChildReader} able to place the read result into parent builder object intended
  * for list node type.
  *
  * This reader checks if the IDs are wildcarded in which case it performs read of all list entries. In case the ID has a
@@ -49,44 +49,44 @@ import org.slf4j.LoggerFactory;
  */
 @Beta
 @ThreadSafe
-public final class CompositeListVppReader<C extends DataObject & Identifiable<K>, K extends Identifier<C>, B extends Builder<C>>
-        extends AbstractCompositeVppReader<C, B> implements ChildVppReader<C>, ListVppReader<C, K> {
+public final class CompositeListReader<C extends DataObject & Identifiable<K>, K extends Identifier<C>, B extends Builder<C>>
+        extends AbstractCompositeReader<C, B> implements ChildReader<C>, ListReader<C, K> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(CompositeListVppReader.class);
+    private static final Logger LOG = LoggerFactory.getLogger(CompositeListReader.class);
 
-    private final ListVppReaderCustomizer<C, K, B> customizer;
+    private final ListReaderCustomizer<C, K, B> customizer;
 
     /**
-     * Create new {@link CompositeListVppReader}
+     * Create new {@link CompositeListReader}
      *
      * @param managedDataObjectType Class object for managed data type. Must come from a list node type.
      * @param childReaders          Child nodes(container, list) readers
      * @param augReaders            Child augmentations readers
      * @param customizer            Customizer instance to customize this generic reader
      */
-    public CompositeListVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                  @Nonnull final List<ChildVppReader<? extends ChildOf<C>>> childReaders,
-                                  @Nonnull final List<ChildVppReader<? extends Augmentation<C>>> augReaders,
-                                  @Nonnull final ListVppReaderCustomizer<C, K, B> customizer) {
+    public CompositeListReader(@Nonnull final Class<C> managedDataObjectType,
+                               @Nonnull final List<ChildReader<? extends ChildOf<C>>> childReaders,
+                               @Nonnull final List<ChildReader<? extends Augmentation<C>>> augReaders,
+                               @Nonnull final ListReaderCustomizer<C, K, B> customizer) {
         super(managedDataObjectType, childReaders, augReaders);
         this.customizer = customizer;
     }
 
     /**
-     * @see {@link CompositeListVppReader#CompositeListVppReader(Class, List, List, ListVppReaderCustomizer)}
+     * @see {@link CompositeListReader#CompositeListReader(Class, List, List, ListReaderCustomizer)}
      */
-    public CompositeListVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                  @Nonnull final List<ChildVppReader<? extends ChildOf<C>>> childReaders,
-                                  @Nonnull final ListVppReaderCustomizer<C, K, B> customizer) {
-        this(managedDataObjectType, childReaders, VppRWUtils.<C>emptyAugReaderList(), customizer);
+    public CompositeListReader(@Nonnull final Class<C> managedDataObjectType,
+                               @Nonnull final List<ChildReader<? extends ChildOf<C>>> childReaders,
+                               @Nonnull final ListReaderCustomizer<C, K, B> customizer) {
+        this(managedDataObjectType, childReaders, RWUtils.<C>emptyAugReaderList(), customizer);
     }
 
     /**
-     * @see {@link CompositeListVppReader#CompositeListVppReader(Class, List, List, ListVppReaderCustomizer)}
+     * @see {@link CompositeListReader#CompositeListReader(Class, List, List, ListReaderCustomizer)}
      */
-    public CompositeListVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                  @Nonnull final ListVppReaderCustomizer<C, K, B> customizer) {
-        this(managedDataObjectType, VppRWUtils.<C>emptyChildReaderList(), VppRWUtils.<C>emptyAugReaderList(),
+    public CompositeListReader(@Nonnull final Class<C> managedDataObjectType,
+                               @Nonnull final ListReaderCustomizer<C, K, B> customizer) {
+        this(managedDataObjectType, RWUtils.<C>emptyChildReaderList(), RWUtils.<C>emptyAugReaderList(),
                 customizer);
     }
 
@@ -95,7 +95,7 @@ public final class CompositeListVppReader<C extends DataObject & Identifiable<K>
                      @Nonnull final Builder<? extends DataObject> parentBuilder,
                      @Nonnull final ReadContext ctx) throws ReadFailedException {
         // Create ID pointing to current node
-        final InstanceIdentifier<C> currentId = VppRWUtils.appendTypeToId(id, getManagedDataObjectType());
+        final InstanceIdentifier<C> currentId = RWUtils.appendTypeToId(id, getManagedDataObjectType());
         // Read all, since current ID is definitely wildcarded
         final List<C> ifcs = readList(currentId, ctx);
         customizer.merge(parentBuilder, ifcs);
@@ -112,8 +112,8 @@ public final class CompositeListVppReader<C extends DataObject & Identifiable<K>
         final ArrayList<C> allEntries = new ArrayList<>(allIds.size());
         for (K key : allIds) {
             final InstanceIdentifier.IdentifiableItem<C, K> currentBdItem =
-                    VppRWUtils.getCurrentIdItem(id, key);
-            final InstanceIdentifier<C> keyedId = VppRWUtils.replaceLastInId(id, currentBdItem);
+                    RWUtils.getCurrentIdItem(id, key);
+            final InstanceIdentifier<C> keyedId = RWUtils.replaceLastInId(id, currentBdItem);
             final Optional<C> read = readCurrent(keyedId, ctx);
             final DataObject singleItem = read.get();
             checkArgument(getManagedDataObjectType().getTargetType().isAssignableFrom(singleItem.getClass()));
diff --git a/v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/read/CompositeRootReader.java b/v3po/translate-impl/src/main/java/io/fd/honeycomb/v3po/translate/impl/read/CompositeRootReader.java
new file mode 100644 (file)
index 0000000..f297abb
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * 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.impl.read;
+
+import com.google.common.annotations.Beta;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.read.ChildReader;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.Reader;
+import io.fd.honeycomb.v3po.translate.spi.read.RootReaderCustomizer;
+import java.util.List;
+import javax.annotation.Nonnull;
+import javax.annotation.concurrent.ThreadSafe;
+import org.opendaylight.yangtools.concepts.Builder;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.ChildOf;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Composite implementation of {@link Reader}
+ */
+@Beta
+@ThreadSafe
+public final class CompositeRootReader<C extends DataObject, B extends Builder<C>> extends AbstractCompositeReader<C, B>
+    implements Reader<C> {
+
+    private final RootReaderCustomizer<C, B> customizer;
+
+    /**
+     * Create new {@link CompositeRootReader}
+     *
+     * @param managedDataObjectType Class object for managed data type
+     * @param childReaders Child nodes(container, list) readers
+     * @param augReaders Child augmentations readers
+     * @param customizer Customizer instance to customize this generic reader
+     *
+     */
+    public CompositeRootReader(@Nonnull final Class<C> managedDataObjectType,
+                               @Nonnull final List<ChildReader<? extends ChildOf<C>>> childReaders,
+                               @Nonnull final List<ChildReader<? extends Augmentation<C>>> augReaders,
+                               @Nonnull final RootReaderCustomizer<C, B> customizer) {
+        super(managedDataObjectType, childReaders, augReaders);
+        this.customizer = customizer;
+    }
+
+    /**
+     * @see {@link CompositeRootReader#CompositeRootReader(Class, List, List, RootReaderCustomizer)}
+     */
+    public CompositeRootReader(@Nonnull final Class<C> managedDataObjectType,
+                               @Nonnull final List<ChildReader<? extends ChildOf<C>>> childReaders,
+                               @Nonnull final RootReaderCustomizer<C, B> customizer) {
+        this(managedDataObjectType, childReaders, RWUtils.<C>emptyAugReaderList(), customizer);
+    }
+
+    /**
+     * @see {@link CompositeRootReader#CompositeRootReader(Class, List, List, RootReaderCustomizer)}
+     */
+    public CompositeRootReader(@Nonnull final Class<C> managedDataObjectType,
+                               @Nonnull final RootReaderCustomizer<C, B> customizer) {
+        this(managedDataObjectType, RWUtils.<C>emptyChildReaderList(), RWUtils.<C>emptyAugReaderList(),
+            customizer);
+    }
+
+    @Override
+    protected void readCurrentAttributes(@Nonnull final InstanceIdentifier<C> id, @Nonnull final B builder,
+                                         @Nonnull final ReadContext ctx) throws ReadFailedException {
+        customizer.readCurrentAttributes(id, builder, ctx.getContext());
+    }
+
+    @Override
+    protected B getBuilder(@Nonnull final InstanceIdentifier<C> id) {
+        return customizer.getBuilder(id);
+    }
+
+}
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write;
+package io.fd.honeycomb.v3po.translate.impl.write;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.write.ChildVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.VppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.TranslationException;
+import io.fd.honeycomb.v3po.translate.write.ChildWriter;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.write.Writer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -39,20 +39,20 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public abstract class AbstractCompositeVppWriter<D extends DataObject> implements VppWriter<D> {
+public abstract class AbstractCompositeWriter<D extends DataObject> implements Writer<D> {
 
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractCompositeVppWriter.class);
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractCompositeWriter.class);
 
-    private final Map<Class<? extends DataObject>, ChildVppWriter<? extends ChildOf<D>>> childWriters;
-    private final Map<Class<? extends DataObject>, ChildVppWriter<? extends Augmentation<D>>> augWriters;
+    private final Map<Class<? extends DataObject>, ChildWriter<? extends ChildOf<D>>> childWriters;
+    private final Map<Class<? extends DataObject>, ChildWriter<? extends Augmentation<D>>> augWriters;
     private final InstanceIdentifier<D> instanceIdentifier;
 
-    public AbstractCompositeVppWriter(final Class<D> type,
-                                      final List<ChildVppWriter<? extends ChildOf<D>>> childWriters,
-                                      final List<ChildVppWriter<? extends Augmentation<D>>> augWriters) {
+    public AbstractCompositeWriter(final Class<D> type,
+                                   final List<ChildWriter<? extends ChildOf<D>>> childWriters,
+                                   final List<ChildWriter<? extends Augmentation<D>>> augWriters) {
         this.instanceIdentifier = InstanceIdentifier.create(type);
-        this.childWriters = VppRWUtils.uniqueLinkedIndex(childWriters, VppRWUtils.MANAGER_CLASS_FUNCTION);
-        this.augWriters = VppRWUtils.uniqueLinkedIndex(augWriters, VppRWUtils.MANAGER_CLASS_AUG_FUNCTION);
+        this.childWriters = RWUtils.uniqueLinkedIndex(childWriters, RWUtils.MANAGER_CLASS_FUNCTION);
+        this.augWriters = RWUtils.uniqueLinkedIndex(augWriters, RWUtils.MANAGER_CLASS_AUG_FUNCTION);
     }
 
     protected void writeCurrent(final InstanceIdentifier<D> id, final D data, final WriteContext ctx) {
@@ -61,12 +61,12 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
         LOG.trace("{}: Writing current attributes", this);
         writeCurrentAttributes(id, data, ctx);
 
-        for (ChildVppWriter<? extends ChildOf<D>> child : childWriters.values()) {
+        for (ChildWriter<? extends ChildOf<D>> child : childWriters.values()) {
             LOG.debug("{}: Writing child in: {}", this, child);
             child.writeChild(id, data, ctx);
         }
 
-        for (ChildVppWriter<? extends Augmentation<D>> child : augWriters.values()) {
+        for (ChildWriter<? extends Augmentation<D>> child : augWriters.values()) {
             LOG.debug("{}: Writing augment in: {}", this, child);
             child.writeChild(id, data, ctx);
         }
@@ -87,12 +87,12 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
         LOG.trace("{}: Updating current attributes", this);
         updateCurrentAttributes(id, dataBefore, dataAfter, ctx);
 
-        for (ChildVppWriter<? extends ChildOf<D>> child : childWriters.values()) {
+        for (ChildWriter<? extends ChildOf<D>> child : childWriters.values()) {
             LOG.debug("{}: Updating child in: {}", this, child);
             child.updateChild(id, dataBefore, dataAfter, ctx);
         }
 
-        for (ChildVppWriter<? extends Augmentation<D>> child : augWriters.values()) {
+        for (ChildWriter<? extends Augmentation<D>> child : augWriters.values()) {
             LOG.debug("{}: Updating augment in: {}", this, child);
             child.updateChild(id, dataBefore, dataAfter, ctx);
         }
@@ -104,12 +104,12 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
         LOG.debug("{}: Deleting current: {} dataBefore: {}", this, id, dataBefore);
 
         // delete in reversed order
-        for (ChildVppWriter<? extends Augmentation<D>> child : reverseCollection(augWriters.values())) {
+        for (ChildWriter<? extends Augmentation<D>> child : reverseCollection(augWriters.values())) {
             LOG.debug("{}: Deleting augment in: {}", this, child);
             child.deleteChild(id, dataBefore, ctx);
         }
 
-        for (ChildVppWriter<? extends ChildOf<D>> child : reverseCollection(childWriters.values())) {
+        for (ChildWriter<? extends ChildOf<D>> child : reverseCollection(childWriters.values())) {
             LOG.debug("{}: Deleting child in: {}", this, child);
             child.deleteChild(id, dataBefore, ctx);
         }
@@ -123,7 +123,7 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
     public void update(@Nonnull final InstanceIdentifier<? extends DataObject> id,
                        @Nullable final DataObject dataBefore,
                        @Nullable final DataObject dataAfter,
-                       @Nonnull final WriteContext ctx) throws VppException {
+                       @Nonnull final WriteContext ctx) throws TranslationException {
         LOG.debug("{}: Updating : {}", this, id);
         LOG.trace("{}: Updating : {}, from: {} to: {}", this, id, dataBefore, dataAfter);
 
@@ -168,20 +168,20 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
     }
 
     private void writeSubtree(final InstanceIdentifier<? extends DataObject> id,
-                              final DataObject dataAfter, final WriteContext ctx) throws VppException {
+                              final DataObject dataAfter, final WriteContext ctx) throws TranslationException {
         LOG.debug("{}: Writing subtree: {}", this, id);
-        final VppWriter<? extends ChildOf<D>> vppWriter = getNextWriter(id);
+        final Writer<? extends ChildOf<D>> writer = getNextWriter(id);
 
-        if (vppWriter != null) {
-            LOG.debug("{}: Writing subtree: {} in: {}", this, id, vppWriter);
-            vppWriter.update(id, null, dataAfter, ctx);
+        if (writer != null) {
+            LOG.debug("{}: Writing subtree: {} in: {}", this, id, writer);
+            writer.update(id, null, dataAfter, ctx);
         } else {
             // If there's no dedicated writer, use write current
             // But we need current data after to do so
-            final InstanceIdentifier<D> currentId = VppRWUtils.cutId(id, getManagedDataObjectType());
+            final InstanceIdentifier<D> currentId = RWUtils.cutId(id, getManagedDataObjectType());
             Optional<DataObject> currentDataAfter = ctx.readAfter(currentId);
             LOG.debug("{}: Dedicated subtree writer missing for: {}. Writing current.", this,
-                VppRWUtils.getNextId(id, getManagedDataObjectType()).getType(), currentDataAfter);
+                RWUtils.getNextId(id, getManagedDataObjectType()).getType(), currentDataAfter);
             writeCurrent(currentId, castToManaged(currentDataAfter.get()), ctx);
         }
     }
@@ -192,13 +192,13 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
 
     @SuppressWarnings("unchecked")
     private void deleteSubtree(final InstanceIdentifier<? extends DataObject> id,
-                               final DataObject dataBefore, final WriteContext ctx) throws VppException {
+                               final DataObject dataBefore, final WriteContext ctx) throws TranslationException {
         LOG.debug("{}: Deleting subtree: {}", this, id);
-        final VppWriter<? extends ChildOf<D>> vppWriter = getNextWriter(id);
+        final Writer<? extends ChildOf<D>> writer = getNextWriter(id);
 
-        if (vppWriter != null) {
-            LOG.debug("{}: Deleting subtree: {} in: {}", this, id, vppWriter);
-            vppWriter.update(id, dataBefore, null, ctx);
+        if (writer != null) {
+            LOG.debug("{}: Deleting subtree: {} in: {}", this, id, writer);
+            writer.update(id, dataBefore, null, ctx);
         } else {
             updateSubtreeFromCurrent(id, ctx);
         }
@@ -206,11 +206,11 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
 
     @SuppressWarnings("unchecked")
     private void updateSubtreeFromCurrent(final InstanceIdentifier<? extends DataObject> id, final WriteContext ctx) {
-        final InstanceIdentifier<D> currentId = VppRWUtils.cutId(id, getManagedDataObjectType());
+        final InstanceIdentifier<D> currentId = RWUtils.cutId(id, getManagedDataObjectType());
         Optional<DataObject> currentDataBefore = ctx.readBefore(currentId);
         Optional<DataObject> currentDataAfter = ctx.readAfter(currentId);
         LOG.debug("{}: Dedicated subtree writer missing for: {}. Updating current without subtree", this,
-            VppRWUtils.getNextId(id, getManagedDataObjectType()).getType(), currentDataAfter);
+            RWUtils.getNextId(id, getManagedDataObjectType()).getType(), currentDataAfter);
         updateCurrent((InstanceIdentifier<D>) id, castToManaged(currentDataBefore.orNull()),
             castToManaged(currentDataAfter.orNull()), ctx);
     }
@@ -219,20 +219,20 @@ public abstract class AbstractCompositeVppWriter<D extends DataObject> implement
     private void updateSubtree(final InstanceIdentifier<? extends DataObject> id,
                                final DataObject dataBefore,
                                final DataObject dataAfter,
-                               final WriteContext ctx) throws VppException {
+                               final WriteContext ctx) throws TranslationException {
         LOG.debug("{}: Updating subtree: {}", this, id);
-        final VppWriter<? extends ChildOf<D>> vppWriter = getNextWriter(id);
+        final Writer<? extends ChildOf<D>> writer = getNextWriter(id);
 
-        if (vppWriter != null) {
-            LOG.debug("{}: Updating subtree: {} in: {}", this, id, vppWriter);
-            vppWriter.update(id, dataBefore, dataAfter, ctx);
+        if (writer != null) {
+            LOG.debug("{}: Updating subtree: {} in: {}", this, id, writer);
+            writer.update(id, dataBefore, dataAfter, ctx);
         } else {
             updateSubtreeFromCurrent(id, ctx);
         }
     }
 
-    private VppWriter<? extends ChildOf<D>> getNextWriter(final InstanceIdentifier<? extends DataObject> id) {
-        final Class<? extends DataObject> next = VppRWUtils.getNextId(id, getManagedDataObjectType()).getType();
+    private Writer<? extends ChildOf<D>> getNextWriter(final InstanceIdentifier<? extends DataObject> id) {
+        final Class<? extends DataObject> next = RWUtils.getNextId(id, getManagedDataObjectType()).getType();
         return childWriters.get(next);
     }
 
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write;
+package io.fd.honeycomb.v3po.translate.impl.write;
 
 import com.google.common.base.Optional;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.spi.write.ChildVppWriterCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.write.ChildVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.write.ChildWriter;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.spi.write.ChildWriterCustomizer;
 import java.util.List;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
@@ -28,28 +28,28 @@ import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-public class CompositeChildVppWriter<D extends DataObject> extends AbstractCompositeVppWriter<D>
-    implements ChildVppWriter<D> {
+public class CompositeChildWriter<D extends DataObject> extends AbstractCompositeWriter<D>
+    implements ChildWriter<D> {
 
-    private final ChildVppWriterCustomizer<D> customizer;
+    private final ChildWriterCustomizer<D> customizer;
 
-    public CompositeChildVppWriter(@Nonnull final Class<D> type,
-                                   @Nonnull final List<ChildVppWriter<? extends ChildOf<D>>> childWriters,
-                                   @Nonnull final List<ChildVppWriter<? extends Augmentation<D>>> augWriters,
-                                   @Nonnull final ChildVppWriterCustomizer<D> customizer) {
+    public CompositeChildWriter(@Nonnull final Class<D> type,
+                                @Nonnull final List<ChildWriter<? extends ChildOf<D>>> childWriters,
+                                @Nonnull final List<ChildWriter<? extends Augmentation<D>>> augWriters,
+                                @Nonnull final ChildWriterCustomizer<D> customizer) {
         super(type, childWriters, augWriters);
         this.customizer = customizer;
     }
 
-    public CompositeChildVppWriter(@Nonnull final Class<D> type,
-                                   @Nonnull final List<ChildVppWriter<? extends ChildOf<D>>> childWriters,
-                                   @Nonnull final ChildVppWriterCustomizer<D> customizer) {
-        this(type, childWriters, VppRWUtils.<D>emptyAugWriterList(), customizer);
+    public CompositeChildWriter(@Nonnull final Class<D> type,
+                                @Nonnull final List<ChildWriter<? extends ChildOf<D>>> childWriters,
+                                @Nonnull final ChildWriterCustomizer<D> customizer) {
+        this(type, childWriters, RWUtils.<D>emptyAugWriterList(), customizer);
     }
 
-    public CompositeChildVppWriter(@Nonnull final Class<D> type,
-                                   @Nonnull final ChildVppWriterCustomizer<D> customizer) {
-        this(type, VppRWUtils.<D>emptyChildWriterList(), VppRWUtils.<D>emptyAugWriterList(), customizer);
+    public CompositeChildWriter(@Nonnull final Class<D> type,
+                                @Nonnull final ChildWriterCustomizer<D> customizer) {
+        this(type, RWUtils.<D>emptyChildWriterList(), RWUtils.<D>emptyAugWriterList(), customizer);
     }
 
     @Override
@@ -73,7 +73,7 @@ public class CompositeChildVppWriter<D extends DataObject> extends AbstractCompo
     @Override
     public void writeChild(@Nonnull final InstanceIdentifier<? extends DataObject> parentId,
                            @Nonnull final DataObject parentData, @Nonnull WriteContext ctx) {
-        final InstanceIdentifier<D> currentId = VppRWUtils.appendTypeToId(parentId, getManagedDataObjectType());
+        final InstanceIdentifier<D> currentId = RWUtils.appendTypeToId(parentId, getManagedDataObjectType());
         final Optional<D> currentData = customizer.extract(currentId, parentData);
         if(currentData.isPresent()) {
             writeCurrent(currentId, currentData.get(), ctx);
@@ -84,7 +84,7 @@ public class CompositeChildVppWriter<D extends DataObject> extends AbstractCompo
     public void deleteChild(@Nonnull final InstanceIdentifier<? extends DataObject> parentId,
                             @Nonnull final DataObject parentData,
                             @Nonnull final WriteContext ctx) {
-        final InstanceIdentifier<D> currentId = VppRWUtils.appendTypeToId(parentId, getManagedDataObjectType());
+        final InstanceIdentifier<D> currentId = RWUtils.appendTypeToId(parentId, getManagedDataObjectType());
         final Optional<D> currentData = customizer.extract(currentId, parentData);
         if(currentData.isPresent()) {
             deleteCurrent(currentId, currentData.get(), ctx);
@@ -95,7 +95,7 @@ public class CompositeChildVppWriter<D extends DataObject> extends AbstractCompo
     public void updateChild(@Nonnull final InstanceIdentifier<? extends DataObject> parentId,
                             @Nonnull final DataObject parentDataBefore, @Nonnull final DataObject parentDataAfter,
                             @Nonnull final WriteContext ctx) {
-        final InstanceIdentifier<D> currentId = VppRWUtils.appendTypeToId(parentId, getManagedDataObjectType());
+        final InstanceIdentifier<D> currentId = RWUtils.appendTypeToId(parentId, getManagedDataObjectType());
         final Optional<D> before = customizer.extract(currentId, parentDataBefore);
         final Optional<D> after = customizer.extract(currentId, parentDataAfter);
         if(before.isPresent() && after.isPresent()) {
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write;
+package io.fd.honeycomb.v3po.translate.impl.write;
 
 import com.google.common.base.Function;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.spi.write.ListVppWriterCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.write.ChildVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.spi.write.ListWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.write.ChildWriter;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Nonnull;
@@ -34,8 +34,9 @@ import org.opendaylight.yangtools.yang.binding.Identifiable;
 import org.opendaylight.yangtools.yang.binding.Identifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-public class CompositeListVppWriter<D extends DataObject & Identifiable<K>, K extends Identifier<D>> extends AbstractCompositeVppWriter<D>
-    implements ChildVppWriter<D> {
+public class CompositeListWriter<D extends DataObject & Identifiable<K>, K extends Identifier<D>> extends
+    AbstractCompositeWriter<D>
+    implements ChildWriter<D> {
 
     public static final Function<DataObject, Object> INDEX_FUNCTION = new Function<DataObject, Object>() {
         @Override
@@ -47,25 +48,25 @@ public class CompositeListVppWriter<D extends DataObject & Identifiable<K>, K ex
     };
 
 
-    private final ListVppWriterCustomizer<D, K> customizer;
+    private final ListWriterCustomizer<D, K> customizer;
 
-    public CompositeListVppWriter(@Nonnull final Class<D> type,
-                                  @Nonnull final List<ChildVppWriter<? extends ChildOf<D>>> childWriters,
-                                  @Nonnull final List<ChildVppWriter<? extends Augmentation<D>>> augWriters,
-                                  @Nonnull final ListVppWriterCustomizer<D, K> customizer) {
+    public CompositeListWriter(@Nonnull final Class<D> type,
+                               @Nonnull final List<ChildWriter<? extends ChildOf<D>>> childWriters,
+                               @Nonnull final List<ChildWriter<? extends Augmentation<D>>> augWriters,
+                               @Nonnull final ListWriterCustomizer<D, K> customizer) {
         super(type, childWriters, augWriters);
         this.customizer = customizer;
     }
 
-    public CompositeListVppWriter(@Nonnull final Class<D> type,
-                                  @Nonnull final List<ChildVppWriter<? extends ChildOf<D>>> childWriters,
-                                  @Nonnull final ListVppWriterCustomizer<D, K> customizer) {
-        this(type, childWriters, VppRWUtils.<D>emptyAugWriterList(), customizer);
+    public CompositeListWriter(@Nonnull final Class<D> type,
+                               @Nonnull final List<ChildWriter<? extends ChildOf<D>>> childWriters,
+                               @Nonnull final ListWriterCustomizer<D, K> customizer) {
+        this(type, childWriters, RWUtils.<D>emptyAugWriterList(), customizer);
     }
 
-    public CompositeListVppWriter(@Nonnull final Class<D> type,
-                                  @Nonnull final ListVppWriterCustomizer<D, K> customizer) {
-        this(type, VppRWUtils.<D>emptyChildWriterList(), VppRWUtils.<D>emptyAugWriterList(), customizer);
+    public CompositeListWriter(@Nonnull final Class<D> type,
+                               @Nonnull final ListWriterCustomizer<D, K> customizer) {
+        this(type, RWUtils.<D>emptyChildWriterList(), RWUtils.<D>emptyAugWriterList(), customizer);
 
     }
 
@@ -91,7 +92,7 @@ public class CompositeListVppWriter<D extends DataObject & Identifiable<K>, K ex
     public void writeChild(@Nonnull final InstanceIdentifier<? extends DataObject> parentId,
                            @Nonnull final DataObject parentData,
                            @Nonnull final WriteContext ctx) {
-        final InstanceIdentifier<D> currentId = VppRWUtils.appendTypeToId(parentId, getManagedDataObjectType());
+        final InstanceIdentifier<D> currentId = RWUtils.appendTypeToId(parentId, getManagedDataObjectType());
         final List<D> currentData = customizer.extract(currentId, parentData);
         for (D entry : currentData) {
             writeCurrent(currentId, entry, ctx);
@@ -102,7 +103,7 @@ public class CompositeListVppWriter<D extends DataObject & Identifiable<K>, K ex
     public void deleteChild(@Nonnull final InstanceIdentifier<? extends DataObject> parentId,
                             @Nonnull final DataObject parentDataBefore,
                             @Nonnull final WriteContext ctx) {
-        final InstanceIdentifier<D> currentId = VppRWUtils.appendTypeToId(parentId, getManagedDataObjectType());
+        final InstanceIdentifier<D> currentId = RWUtils.appendTypeToId(parentId, getManagedDataObjectType());
         final List<D> dataBefore = customizer.extract(currentId, parentDataBefore);
         for (D entry : dataBefore) {
             deleteCurrent(currentId, entry, ctx);
@@ -113,7 +114,7 @@ public class CompositeListVppWriter<D extends DataObject & Identifiable<K>, K ex
     public void updateChild(@Nonnull final InstanceIdentifier<? extends DataObject> parentId,
                             @Nonnull final DataObject parentDataBefore, @Nonnull final DataObject parentDataAfter,
                             @Nonnull final WriteContext ctx) {
-        final InstanceIdentifier<D> currentId = VppRWUtils.appendTypeToId(parentId, getManagedDataObjectType());
+        final InstanceIdentifier<D> currentId = RWUtils.appendTypeToId(parentId, getManagedDataObjectType());
         final ImmutableMap<Object, D>
             dataBefore = Maps.uniqueIndex(customizer.extract(currentId, parentDataBefore), INDEX_FUNCTION);
         final ImmutableMap<Object, D>
@@ -172,7 +173,7 @@ public class CompositeListVppWriter<D extends DataObject & Identifiable<K>, K ex
     }
 
     private InstanceIdentifier<D> getSpecificId(final InstanceIdentifier<D> currentId, final D current) {
-        return VppRWUtils.replaceLastInId(currentId,
+        return RWUtils.replaceLastInId(currentId,
             new InstanceIdentifier.IdentifiableItem<>(currentId.getTargetType(), current.getKey()));
     }
 }
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write;
+package io.fd.honeycomb.v3po.translate.impl.write;
 
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.spi.write.RootVppWriterCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.write.ChildVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.spi.write.RootWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.write.ChildWriter;
 import java.util.List;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
@@ -27,27 +27,27 @@ import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-public class CompositeRootVppWriter<D extends DataObject> extends AbstractCompositeVppWriter<D> {
+public class CompositeRootWriter<D extends DataObject> extends AbstractCompositeWriter<D> {
 
-    private final RootVppWriterCustomizer<D> customizer;
+    private final RootWriterCustomizer<D> customizer;
 
-    public CompositeRootVppWriter(@Nonnull final Class<D> type,
-                                  @Nonnull final List<ChildVppWriter<? extends ChildOf<D>>> childWriters,
-                                  @Nonnull final List<ChildVppWriter<? extends Augmentation<D>>> augWriters,
-                                  @Nonnull final RootVppWriterCustomizer<D> customizer) {
+    public CompositeRootWriter(@Nonnull final Class<D> type,
+                               @Nonnull final List<ChildWriter<? extends ChildOf<D>>> childWriters,
+                               @Nonnull final List<ChildWriter<? extends Augmentation<D>>> augWriters,
+                               @Nonnull final RootWriterCustomizer<D> customizer) {
         super(type, childWriters, augWriters);
         this.customizer = customizer;
     }
 
-    public CompositeRootVppWriter(@Nonnull final Class<D> type,
-                                  @Nonnull final List<ChildVppWriter<? extends ChildOf<D>>> childWriters,
-                                  @Nonnull final RootVppWriterCustomizer<D> customizer) {
-        this(type, childWriters, VppRWUtils.<D>emptyAugWriterList(), customizer);
+    public CompositeRootWriter(@Nonnull final Class<D> type,
+                               @Nonnull final List<ChildWriter<? extends ChildOf<D>>> childWriters,
+                               @Nonnull final RootWriterCustomizer<D> customizer) {
+        this(type, childWriters, RWUtils.<D>emptyAugWriterList(), customizer);
     }
 
-    public CompositeRootVppWriter(@Nonnull final Class<D> type,
-                                  @Nonnull final RootVppWriterCustomizer<D> customizer) {
-        this(type, VppRWUtils.<D>emptyChildWriterList(), VppRWUtils.<D>emptyAugWriterList(), customizer);
+    public CompositeRootWriter(@Nonnull final Class<D> type,
+                               @Nonnull final RootWriterCustomizer<D> customizer) {
+        this(type, RWUtils.<D>emptyChildWriterList(), RWUtils.<D>emptyAugWriterList(), customizer);
     }
 
     @Override
similarity index 96%
rename from v3po/vpp-facade-spi/pom.xml
rename to v3po/translate-spi/pom.xml
index 87f9c28..17e1088 100644 (file)
@@ -24,7 +24,7 @@
 
     <modelVersion>4.0.0</modelVersion>
     <groupId>io.fd.honeycomb.v3po</groupId>
-    <artifactId>vpp-facade-spi</artifactId>
+    <artifactId>translate-spi</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
@@ -47,7 +47,7 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-api</artifactId>
+            <artifactId>translate-api</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.spi.read;
+package io.fd.honeycomb.v3po.translate.spi.read;
 
 import com.google.common.annotations.Beta;
 import javax.annotation.Nonnull;
@@ -22,14 +22,14 @@ import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 /**
- * CompositeChildVppReader SPI to customize its behavior
+ * CompositeChildReader SPI to customize its behavior
  *
  * @param <C> Specific DataObject derived type (Identifiable), that is handled by this customizer
  * @param <B> Specific Builder for handled type (C)
  */
 @Beta
-public interface ChildVppReaderCustomizer<C extends DataObject, B extends Builder<C>> extends
-    RootVppReaderCustomizer<C, B> {
+public interface ChildReaderCustomizer<C extends DataObject, B extends Builder<C>> extends
+    RootReaderCustomizer<C, B> {
 
     // FIXME need to capture parent builder type, but that's inconvenient at best, is it ok to leave it Builder<?> and
     // cast in specific customizers ? ... probably better than adding another type parameter
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.spi.read;
+package io.fd.honeycomb.v3po.translate.spi.read;
 
 import com.google.common.annotations.Beta;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
+import io.fd.honeycomb.v3po.translate.Context;
 import java.util.List;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.concepts.Builder;
@@ -27,15 +27,15 @@ import org.opendaylight.yangtools.yang.binding.Identifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * CompositeListVppReader SPI to customize its behavior
+ * CompositeListReader SPI to customize its behavior
  *
  * @param <C> Specific DataObject derived type (Identifiable), that is handled by this customizer
  * @param <K> Specific Identifier for handled type (C)
  * @param <B> Specific Builder for handled type (C)
  */
 @Beta
-public interface ListVppReaderCustomizer<C extends DataObject & Identifiable<K>, K extends Identifier<C>, B extends Builder<C>>
-    extends RootVppReaderCustomizer<C, B> {
+public interface ListReaderCustomizer<C extends DataObject & Identifiable<K>, K extends Identifier<C>, B extends Builder<C>>
+    extends RootReaderCustomizer<C, B> {
 
     /**
      * Return list with IDs of all list nodes to be read.
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.spi.read;
+package io.fd.honeycomb.v3po.translate.spi.read;
 
 import com.google.common.annotations.Beta;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.Context;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * CompositeRootVppReader SPI to customize its behavior
+ * CompositeRootReader SPI to customize its behavior
  *
  * @param <C> Specific DataObject derived type, that is handled by this customizer
  * @param <B> Specific Builder for handled type (C)
  */
 @Beta
-public interface RootVppReaderCustomizer<C extends DataObject, B extends Builder<C>> {
+public interface RootReaderCustomizer<C extends DataObject, B extends Builder<C>> {
 
     /**
      * Creates new builder that will be used to build read value.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.spi.write;
+package io.fd.honeycomb.v3po.translate.spi.write;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
@@ -23,12 +23,12 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * CompositeChildVppWriter SPI to customize its behavior
+ * CompositeChildWriter SPI to customize its behavior
  *
  * @param <D> Specific DataObject derived type (Identifiable), that is handled by this customizer
  */
 @Beta
-public interface ChildVppWriterCustomizer<D extends DataObject> extends RootVppWriterCustomizer<D> {
+public interface ChildWriterCustomizer<D extends DataObject> extends RootWriterCustomizer<D> {
 
     /**
      * Get child of parentData identified by currentId
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.spi.write;
+package io.fd.honeycomb.v3po.translate.spi.write;
 
 import com.google.common.annotations.Beta;
 import java.util.List;
@@ -25,13 +25,14 @@ import org.opendaylight.yangtools.yang.binding.Identifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * CompositeListVppWriter SPI to customize its behavior
+ * CompositeListWriter SPI to customize its behavior
  *
  * @param <C> Specific DataObject derived type (Identifiable), that is handled by this customizer
  * @param <K> Specific Identifier for handled type (C)
  */
 @Beta
-public interface ListVppWriterCustomizer<C extends DataObject & Identifiable<K>, K extends Identifier<C>> extends RootVppWriterCustomizer<C> {
+public interface ListWriterCustomizer<C extends DataObject & Identifiable<K>, K extends Identifier<C>> extends
+    RootWriterCustomizer<C> {
 
     /**
      * Get children of parentData identified by currentId
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.spi.write;
+package io.fd.honeycomb.v3po.translate.spi.write;
 
 import com.google.common.annotations.Beta;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
+import io.fd.honeycomb.v3po.translate.Context;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * CompositeRootVppReader SPI to customize its behavior
+ * CompositeRootReader SPI to customize its behavior
  *
  * @param <D> Specific DataObject derived type, that is handled by this customizer
  */
 @Beta
-public interface RootVppWriterCustomizer<D extends DataObject> {
+public interface RootWriterCustomizer<D extends DataObject> {
 
     /**
      * Handle write operation. C from CRUD.
similarity index 90%
rename from v3po/vpp-facade-utils/pom.xml
rename to v3po/translate-utils/pom.xml
index 83c7d74..d547cb4 100644 (file)
@@ -24,7 +24,7 @@
 
     <modelVersion>4.0.0</modelVersion>
     <groupId>io.fd.honeycomb.v3po</groupId>
-    <artifactId>vpp-facade-utils</artifactId>
+    <artifactId>translate-utils</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-api</artifactId>
+            <artifactId>translate-api</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-spi</artifactId>
+            <artifactId>translate-spi</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>io.fd.vpp</groupId>
-            <artifactId>vppjapi</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.controller</groupId>
             <artifactId>sal-core-api</artifactId>
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.util;
+package io.fd.honeycomb.v3po.translate.util;
 
 import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
-import io.fd.honeycomb.v3po.vpp.facade.SubtreeManager;
-import io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.write.ChildVppWriter;
+import io.fd.honeycomb.v3po.translate.read.ChildReader;
+import io.fd.honeycomb.v3po.translate.write.ChildWriter;
+import io.fd.honeycomb.v3po.translate.SubtreeManager;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -36,9 +36,9 @@ import org.opendaylight.yangtools.yang.binding.Identifiable;
 import org.opendaylight.yangtools.yang.binding.Identifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-public final class VppRWUtils {
+public final class RWUtils {
 
-    private VppRWUtils() {}
+    private RWUtils() {}
 
     /**
      * Find next item in ID after provided type
@@ -58,35 +58,35 @@ public final class VppRWUtils {
         return Iterables.get(pathArguments, i + 1);
     }
 
-    public static <T> List<ChildVppReader<? extends ChildOf<T>>> emptyChildReaderList() {
+    public static <T> List<ChildReader<? extends ChildOf<T>>> emptyChildReaderList() {
         return Collections.emptyList();
     }
 
-    public static <T> List<ChildVppWriter<? extends ChildOf<T>>> emptyChildWriterList() {
+    public static <T> List<ChildWriter<? extends ChildOf<T>>> emptyChildWriterList() {
         return Collections.emptyList();
     }
 
-    public static <T> List<ChildVppReader<? extends Augmentation<T>>> emptyAugReaderList() {
+    public static <T> List<ChildReader<? extends Augmentation<T>>> emptyAugReaderList() {
         return Collections.emptyList();
     }
 
-    public static <T> List<ChildVppWriter<? extends Augmentation<T>>> emptyAugWriterList() {
+    public static <T> List<ChildWriter<? extends Augmentation<T>>> emptyAugWriterList() {
         return Collections.emptyList();
     }
 
-    public static <T> List<ChildVppReader<? extends Augmentation<T>>> singletonAugReaderList(
-        ChildVppReader<? extends Augmentation<T>> item) {
-        return Collections.<ChildVppReader<? extends Augmentation<T>>>singletonList(item);
+    public static <T> List<ChildReader<? extends Augmentation<T>>> singletonAugReaderList(
+        ChildReader<? extends Augmentation<T>> item) {
+        return Collections.<ChildReader<? extends Augmentation<T>>>singletonList(item);
     }
 
-    public static <T> List<ChildVppReader<? extends ChildOf<T>>> singletonChildReaderList(
-        ChildVppReader<? extends ChildOf<T>> item) {
-        return Collections.<ChildVppReader<? extends ChildOf<T>>>singletonList(item);
+    public static <T> List<ChildReader<? extends ChildOf<T>>> singletonChildReaderList(
+        ChildReader<? extends ChildOf<T>> item) {
+        return Collections.<ChildReader<? extends ChildOf<T>>>singletonList(item);
     }
 
-    public static <T> List<ChildVppWriter<? extends ChildOf<T>>> singletonChildWriterList(
-        ChildVppWriter<? extends ChildOf<T>> item) {
-        return Collections.<ChildVppWriter<? extends ChildOf<T>>>singletonList(item);
+    public static <T> List<ChildWriter<? extends ChildOf<T>>> singletonChildWriterList(
+        ChildWriter<? extends ChildOf<T>> item) {
+        return Collections.<ChildWriter<? extends ChildOf<T>>>singletonList(item);
     }
 
     /**
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.read.util;
+package io.fd.honeycomb.v3po.translate.util.read;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -22,12 +22,12 @@ import com.google.common.base.Optional;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.Multimap;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.read.ListVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReaderRegistry;
-import io.fd.honeycomb.v3po.vpp.facade.read.VppReader;
+import io.fd.honeycomb.v3po.translate.read.ListReader;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.ReadFailedException;
+import io.fd.honeycomb.v3po.translate.read.ReaderRegistry;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.read.Reader;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -47,15 +47,15 @@ public final class DelegatingReaderRegistry implements ReaderRegistry {
 
     private static final Logger LOG = LoggerFactory.getLogger(DelegatingReaderRegistry.class);
 
-    private final Map<Class<? extends DataObject>, VppReader<? extends DataObject>> rootReaders;
+    private final Map<Class<? extends DataObject>, Reader<? extends DataObject>> rootReaders;
 
     /**
      * Create new {@link DelegatingReaderRegistry}
      *
      * @param rootReaders List of delegate readers
      */
-    public DelegatingReaderRegistry(@Nonnull final List<VppReader<? extends DataObject>> rootReaders) {
-        this.rootReaders = VppRWUtils.uniqueLinkedIndex(checkNotNull(rootReaders), VppRWUtils.MANAGER_CLASS_FUNCTION);
+    public DelegatingReaderRegistry(@Nonnull final List<Reader<? extends DataObject>> rootReaders) {
+        this.rootReaders = RWUtils.uniqueLinkedIndex(checkNotNull(rootReaders), RWUtils.MANAGER_CLASS_FUNCTION);
     }
 
     @Override
@@ -67,12 +67,12 @@ public final class DelegatingReaderRegistry implements ReaderRegistry {
         LOG.trace("Reading from all delegates: {}", rootReaders.values());
 
         final Multimap<InstanceIdentifier<? extends DataObject>, DataObject> objects = LinkedListMultimap.create();
-        for (VppReader<? extends DataObject> rootReader : rootReaders.values()) {
+        for (Reader<? extends DataObject> rootReader : rootReaders.values()) {
             LOG.debug("Reading from delegate: {}", rootReader);
 
-            if (rootReader instanceof ListVppReader) {
+            if (rootReader instanceof ListReader) {
                 final List<? extends DataObject> listEntries =
-                        ((ListVppReader) rootReader).readList(rootReader.getManagedDataObjectType(), ctx);
+                        ((ListReader) rootReader).readList(rootReader.getManagedDataObjectType(), ctx);
                 if (!listEntries.isEmpty()) {
                     objects.putAll(rootReader.getManagedDataObjectType(), listEntries);
                 }
@@ -94,11 +94,11 @@ public final class DelegatingReaderRegistry implements ReaderRegistry {
             throws ReadFailedException {
         final InstanceIdentifier.PathArgument first = checkNotNull(
                 Iterables.getFirst(id.getPathArguments(), null), "Empty id");
-        final VppReader<? extends DataObject> vppReader = rootReaders.get(first.getType());
-        checkNotNull(vppReader,
+        final Reader<? extends DataObject> reader = rootReaders.get(first.getType());
+        checkNotNull(reader,
                 "Unable to read %s. Missing reader. Current readers for: %s", id, rootReaders.keySet());
-        LOG.debug("Reading from delegate: {}", vppReader);
-        return vppReader.read(id, ctx);
+        LOG.debug("Reading from delegate: {}", reader);
+        return reader.read(id, ctx);
     }
 
     /**
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.read.util;
+package io.fd.honeycomb.v3po.translate.util.read;
 
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.spi.read.RootVppReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.Context;
+import io.fd.honeycomb.v3po.translate.spi.read.RootReaderCustomizer;
 import org.opendaylight.yangtools.concepts.Builder;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public abstract class NoopReaderCustomizer<C extends DataObject, B extends Builder<C>> implements
-    RootVppReaderCustomizer<C, B> {
+    RootReaderCustomizer<C, B> {
 
     @Override
     public void readCurrentAttributes(InstanceIdentifier<C> id, final B builder, final Context context) {
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.read.util;
+package io.fd.honeycomb.v3po.translate.util.read;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.ReflectionUtils;
-import io.fd.honeycomb.v3po.vpp.facade.spi.read.ChildVppReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.util.ReflectionUtils;
+import io.fd.honeycomb.v3po.translate.spi.read.ChildReaderCustomizer;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Collections;
@@ -31,7 +31,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
  */
 public class ReflexiveChildReaderCustomizer<C extends DataObject, B extends Builder<C>>
     extends ReflexiveRootReaderCustomizer<C, B>
-    implements ChildVppReaderCustomizer<C,B> {
+    implements ChildReaderCustomizer<C,B> {
 
     public ReflexiveChildReaderCustomizer(final Class<B> builderClass) {
         super(builderClass);
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write.util;
+package io.fd.honeycomb.v3po.translate.util.write;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -24,11 +24,11 @@ import com.google.common.collect.Collections2;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.write.VppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriterRegistry;
+import io.fd.honeycomb.v3po.translate.TranslationException;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.write.Writer;
+import io.fd.honeycomb.v3po.translate.write.WriterRegistry;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -57,15 +57,15 @@ public final class DelegatingWriterRegistry implements WriterRegistry {
                 }
             };
 
-    private final Map<Class<? extends DataObject>, VppWriter<? extends DataObject>> rootWriters;
+    private final Map<Class<? extends DataObject>, Writer<? extends DataObject>> rootWriters;
 
     /**
      * Create new {@link DelegatingWriterRegistry}
      *
      * @param rootWriters List of delegate writers
      */
-    public DelegatingWriterRegistry(@Nonnull final List<VppWriter<? extends DataObject>> rootWriters) {
-        this.rootWriters = VppRWUtils.uniqueLinkedIndex(checkNotNull(rootWriters), VppRWUtils.MANAGER_CLASS_FUNCTION);
+    public DelegatingWriterRegistry(@Nonnull final List<Writer<? extends DataObject>> rootWriters) {
+        this.rootWriters = RWUtils.uniqueLinkedIndex(checkNotNull(rootWriters), RWUtils.MANAGER_CLASS_FUNCTION);
     }
 
     /**
@@ -82,25 +82,25 @@ public final class DelegatingWriterRegistry implements WriterRegistry {
     public void update(@Nonnull final InstanceIdentifier<? extends DataObject> id,
                        @Nullable final DataObject dataBefore,
                        @Nullable final DataObject dataAfter,
-                       @Nonnull final WriteContext ctx) throws VppException {
+                       @Nonnull final WriteContext ctx) throws TranslationException {
         final InstanceIdentifier.PathArgument first = checkNotNull(
                 Iterables.getFirst(id.getPathArguments(), null), "Empty id");
-        final VppWriter<? extends DataObject> vppWriter = rootWriters.get(first.getType());
-        checkNotNull(vppWriter,
+        final Writer<? extends DataObject> writer = rootWriters.get(first.getType());
+        checkNotNull(writer,
                 "Unable to write %s. Missing writer. Current writers for: %s", id, rootWriters.keySet());
-        vppWriter.update(id, dataBefore, dataAfter, ctx);
+        writer.update(id, dataBefore, dataAfter, ctx);
     }
 
     @Override
     public void update(@Nonnull final Map<InstanceIdentifier<?>, DataObject> nodesBefore,
                        @Nonnull final Map<InstanceIdentifier<?>, DataObject> nodesAfter,
-                       @Nonnull final WriteContext ctx) throws VppException {
+                       @Nonnull final WriteContext ctx) throws TranslationException {
         checkAllWritersPresent(nodesBefore);
         checkAllWritersPresent(nodesAfter);
 
         final List<InstanceIdentifier<?>> processedNodes = Lists.newArrayList();
 
-        for (Map.Entry<Class<? extends DataObject>, VppWriter<? extends DataObject>> rootWriterEntry : rootWriters
+        for (Map.Entry<Class<? extends DataObject>, Writer<? extends DataObject>> rootWriterEntry : rootWriters
                 .entrySet()) {
 
             final InstanceIdentifier<? extends DataObject> id = rootWriterEntry.getValue().getManagedDataObjectType();
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write.util;
+package io.fd.honeycomb.v3po.translate.util.write;
 
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.spi.write.RootVppWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.spi.write.RootWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.Context;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -26,7 +26,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  * Customizer not performing any changes on current level. Suitable for nodes that don't have any leaves and all of
  * its child nodes are managed by dedicated writers
  */
-public class NoopWriterCustomizer<D extends DataObject> implements RootVppWriterCustomizer<D> {
+public class NoopWriterCustomizer<D extends DataObject> implements RootWriterCustomizer<D> {
 
     @Override
     public void writeCurrentAttributes(@Nonnull final InstanceIdentifier<D> id, @Nonnull final D dataAfter,
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write.util;
+package io.fd.honeycomb.v3po.translate.util.write;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Iterables;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.ReflectionUtils;
-import io.fd.honeycomb.v3po.vpp.facade.spi.write.ChildVppWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.util.ReflectionUtils;
+import io.fd.honeycomb.v3po.translate.spi.write.ChildWriterCustomizer;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Collections;
@@ -32,7 +32,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  * Might be slow !
  */
 public class ReflexiveChildWriterCustomizer<C extends DataObject> extends NoopWriterCustomizer<C> implements
-    ChildVppWriterCustomizer<C> {
+    ChildWriterCustomizer<C> {
 
     @Nonnull
     @Override
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write.util;
+package io.fd.honeycomb.v3po.translate.util.write;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.Context;
 import java.util.Map;
 import javax.annotation.Nonnull;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write.util;
+package io.fd.honeycomb.v3po.translate.impl.write.util;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
@@ -24,10 +24,11 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
-import io.fd.honeycomb.v3po.vpp.facade.write.VppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriterRegistry;
+import io.fd.honeycomb.v3po.translate.TranslationException;
+import io.fd.honeycomb.v3po.translate.util.write.DelegatingWriterRegistry;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.write.Writer;
+import io.fd.honeycomb.v3po.translate.write.WriterRegistry;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -49,9 +50,9 @@ public class DelegatingWriterRegistryTest {
     private final InstanceIdentifier<Interfaces> interfaceId;
 
     private WriteContext ctx;
-    private VppWriter<Vpp> vppWriter;
-    private VppWriter<VppState> vppStateWriter;
-    private VppWriter<Interfaces> interfacesWriter;
+    private Writer<Vpp> writer;
+    private Writer<VppState> vppStateWriter;
+    private Writer<Interfaces> interfacesWriter;
 
     private DelegatingWriterRegistry registry;
 
@@ -62,8 +63,8 @@ public class DelegatingWriterRegistryTest {
     }
 
     @SuppressWarnings("unchecked")
-    private <D extends DataObject> VppWriter<D> mockWriter(Class<D> clazz) {
-        final VppWriter<D> mock = (VppWriter<D>) Mockito.mock(VppWriter.class);
+    private <D extends DataObject> Writer<D> mockWriter(Class<D> clazz) {
+        final Writer<D> mock = (Writer<D>) Mockito.mock(Writer.class);
         doReturn(InstanceIdentifier.create(clazz)).when(mock).getManagedDataObjectType();
         return mock;
     }
@@ -89,12 +90,12 @@ public class DelegatingWriterRegistryTest {
     @Before
     public void setUp() {
         ctx = mock(WriteContext.class);
-        vppWriter = mockWriter(Vpp.class);
+        writer = mockWriter(Vpp.class);
         vppStateWriter = mockWriter(VppState.class);
         interfacesWriter = mockWriter(Interfaces.class);
 
-        final List<VppWriter<? extends DataObject>> writers = new ArrayList<>();
-        writers.add(vppWriter);
+        final List<Writer<? extends DataObject>> writers = new ArrayList<>();
+        writers.add(writer);
         writers.add(vppStateWriter);
         writers.add(interfacesWriter);
 
@@ -116,7 +117,7 @@ public class DelegatingWriterRegistryTest {
         final DataObject dataAfter2 = mockDataObject("VppState after", VppState.class);
 
         // Fail on update
-        doThrow(new VppException("vpp failed")).when(vppStateWriter)
+        Mockito.doThrow(new TranslationException("vpp failed")).when(vppStateWriter)
                 .update(vppStateId, dataBefore2, dataAfter2, ctx);
 
         // Run the test
@@ -125,14 +126,14 @@ public class DelegatingWriterRegistryTest {
         } catch (WriterRegistry.BulkUpdateException e) {
             // Check second update failed
             assertEquals(vppStateId, e.getFailedId());
-            verify(vppWriter).update(vppId, dataBefore1, dataAfter1, ctx);
+            verify(writer).update(vppId, dataBefore1, dataAfter1, ctx);
             verify(vppStateWriter).update(vppStateId, dataBefore2, dataAfter2, ctx);
 
             // Try to revert changes
             e.revertChanges();
 
             // Check revert was successful
-            verify(vppWriter).update(vppId, dataAfter1, dataBefore1, ctx);
+            verify(writer).update(vppId, dataAfter1, dataBefore1, ctx);
             verify(vppStateWriter, never()).update(vppStateId, dataAfter2, dataBefore2, ctx);
 
             return;
@@ -153,11 +154,11 @@ public class DelegatingWriterRegistryTest {
         final DataObject dataAfter3 = mockDataObject("Interfaces after", Interfaces.class);
 
         // Fail on the third update
-        doThrow(new VppException("vpp failed")).when(interfacesWriter)
+        doThrow(new TranslationException("vpp failed")).when(interfacesWriter)
                 .update(interfaceId, dataBefore3, dataAfter3, ctx);
 
         // Fail on the second revert
-        doThrow(new VppException("vpp failed again")).when(vppWriter)
+        doThrow(new TranslationException("vpp failed again")).when(writer)
                 .update(vppId, dataAfter1, dataBefore1, ctx);
 
         // Run the test
@@ -166,7 +167,7 @@ public class DelegatingWriterRegistryTest {
         } catch (WriterRegistry.BulkUpdateException e) {
             // Check third update failed
             assertEquals(interfaceId, e.getFailedId());
-            verify(vppWriter).update(vppId, dataBefore1, dataAfter1, ctx);
+            verify(writer).update(vppId, dataBefore1, dataAfter1, ctx);
             verify(vppStateWriter).update(vppStateId, dataBefore2, dataAfter2, ctx);
             verify(interfacesWriter).update(interfaceId, dataBefore3, dataAfter3, ctx);
 
@@ -176,7 +177,7 @@ public class DelegatingWriterRegistryTest {
             } catch (WriterRegistry.Reverter.RevertFailedException e2) {
                 // Check second revert failed
                 assertEquals(Collections.singletonList(vppId), e2.getNotRevertedChanges());
-                verify(vppWriter).update(vppId, dataAfter1, dataBefore1, ctx);
+                verify(writer).update(vppId, dataAfter1, dataBefore1, ctx);
                 verify(vppStateWriter).update(vppStateId, dataAfter2, dataBefore2, ctx);
                 verify(interfacesWriter, never()).update(interfaceId, dataAfter3, dataBefore3, ctx);
                 return;
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.impl.write.util;
+package io.fd.honeycomb.v3po.translate.impl.write.util;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -29,7 +29,8 @@ import static org.mockito.MockitoAnnotations.initMocks;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
+import io.fd.honeycomb.v3po.translate.Context;
+import io.fd.honeycomb.v3po.translate.util.write.TransactionWriteContext;
 import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
index eb4aca7..e147305 100644 (file)
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-spi</artifactId>
+            <artifactId>translate-spi</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-utils</artifactId>
+            <artifactId>translate-utils</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>vpp-translate-utils</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
@@ -53,7 +58,7 @@
         <!-- Testing Dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
-            <artifactId>vpp-facade-impl</artifactId>
+            <artifactId>translate-impl</artifactId>
             <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vpp;
+package io.fd.honeycomb.v3po.translate.v3po.vpp;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppApiCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.spi.write.ListVppWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.spi.write.ListWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.util.VppApiCustomizer;
+import io.fd.honeycomb.v3po.translate.Context;
 import java.util.List;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
 
 public class BridgeDomainCustomizer
     extends VppApiCustomizer
-    implements ListVppWriterCustomizer<BridgeDomain, BridgeDomainKey> {
+    implements ListWriterCustomizer<BridgeDomain, BridgeDomainKey> {
 
     private static final Logger LOG = LoggerFactory.getLogger(BridgeDomainCustomizer.class);
 
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vppstate;
+package io.fd.honeycomb.v3po.translate.v3po.vppstate;
 
 import com.google.common.collect.Lists;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppApiCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.spi.read.ListVppReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.spi.read.ListReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.v3po.util.VppApiCustomizer;
+import io.fd.honeycomb.v3po.translate.Context;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.Nonnull;
@@ -41,7 +41,7 @@ import org.openvpp.vppjapi.vppBridgeDomainInterfaceDetails;
 import org.openvpp.vppjapi.vppL2Fib;
 
 public final class BridgeDomainCustomizer extends VppApiCustomizer
-    implements ListVppReaderCustomizer<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> {
+    implements ListReaderCustomizer<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> {
 
     public BridgeDomainCustomizer(@Nonnull final org.openvpp.vppjapi.vppApi vppApi) {
         super(vppApi);
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vppstate;
+package io.fd.honeycomb.v3po.translate.v3po.vppstate;
 
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppApiCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.spi.read.ChildVppReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.Context;
+import io.fd.honeycomb.v3po.translate.v3po.util.VppApiCustomizer;
+import io.fd.honeycomb.v3po.translate.spi.read.ChildReaderCustomizer;
 import javax.annotation.Nonnull;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppStateBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.state.Version;
@@ -30,7 +30,7 @@ import org.openvpp.vppjapi.vppVersion;
 
 public final class VersionCustomizer
     extends VppApiCustomizer
-    implements ChildVppReaderCustomizer<Version, VersionBuilder> {
+    implements ChildReaderCustomizer<Version, VersionBuilder> {
 
     public VersionCustomizer(@Nonnull final org.openvpp.vppjapi.vppApi vppApi) {
         super(vppApi);
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vpp;
+package io.fd.honeycomb.v3po.translate.v3po.vpp;
 
-import static io.fd.honeycomb.v3po.vpp.facade.v3po.vpp.BridgeDomainTestUtils.BD_NAME_TO_ID_ANSWER;
-import static io.fd.honeycomb.v3po.vpp.facade.v3po.vpp.BridgeDomainTestUtils.bdIdentifierForName;
-import static io.fd.honeycomb.v3po.vpp.facade.v3po.vpp.BridgeDomainTestUtils.bdNameToID;
-import static io.fd.honeycomb.v3po.vpp.facade.v3po.vpp.BridgeDomainTestUtils.booleanToByte;
-import static io.fd.honeycomb.v3po.vpp.facade.v3po.vpp.BridgeDomainTestUtils.intToBoolean;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.anyString;
@@ -28,7 +23,7 @@ import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.MockitoAnnotations.initMocks;
 
-import io.fd.honeycomb.v3po.vpp.facade.Context;
+import io.fd.honeycomb.v3po.translate.Context;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -65,8 +60,8 @@ public class BridgeDomainCustomizerTest {
         initMocks(this);
         customizer = new BridgeDomainCustomizer(api);
 
-        PowerMockito.doAnswer(BD_NAME_TO_ID_ANSWER).when(api).findOrAddBridgeDomainId(anyString());
-        PowerMockito.doAnswer(BD_NAME_TO_ID_ANSWER).when(api).bridgeDomainIdFromName(anyString());
+        PowerMockito.doAnswer(BridgeDomainTestUtils.BD_NAME_TO_ID_ANSWER).when(api).findOrAddBridgeDomainId(anyString());
+        PowerMockito.doAnswer(BridgeDomainTestUtils.BD_NAME_TO_ID_ANSWER).when(api).bridgeDomainIdFromName(anyString());
         PowerMockito.when(api.getRetval(anyInt(), anyInt())).thenReturn(RESPONSE_NOT_READY).thenReturn(0);
         PowerMockito.doReturn(0).when(api).getRetval(anyInt(), anyInt());
     }
@@ -84,41 +79,41 @@ public class BridgeDomainCustomizerTest {
                                               final int forward, final int learn, final int uuf) {
         return new BridgeDomainBuilder()
                 .setName(bdName)
-                .setArpTermination(intToBoolean(arpTerm))
-                .setFlood(intToBoolean(flood))
-                .setForward(intToBoolean(forward))
-                .setLearn(intToBoolean(learn))
-                .setUnknownUnicastFlood(intToBoolean(uuf))
+                .setArpTermination(BridgeDomainTestUtils.intToBoolean(arpTerm))
+                .setFlood(BridgeDomainTestUtils.intToBoolean(flood))
+                .setForward(BridgeDomainTestUtils.intToBoolean(forward))
+                .setLearn(BridgeDomainTestUtils.intToBoolean(learn))
+                .setUnknownUnicastFlood(BridgeDomainTestUtils.intToBoolean(uuf))
                 .build();
     }
 
     private final int verifyBridgeDomainAddOrUpdateWasInvoked(final BridgeDomain bd) {
-        final int bdn1Id = bdNameToID(bd.getName());
-        final byte arpTerm = booleanToByte(bd.isArpTermination());
-        final byte flood = booleanToByte(bd.isFlood());
-        final byte forward = booleanToByte(bd.isForward());
-        final byte learn = booleanToByte(bd.isLearn());
-        final byte uuf = booleanToByte(bd.isUnknownUnicastFlood());
+        final int bdn1Id = BridgeDomainTestUtils.bdNameToID(bd.getName());
+        final byte arpTerm = BridgeDomainTestUtils.booleanToByte(bd.isArpTermination());
+        final byte flood = BridgeDomainTestUtils.booleanToByte(bd.isFlood());
+        final byte forward = BridgeDomainTestUtils.booleanToByte(bd.isForward());
+        final byte learn = BridgeDomainTestUtils.booleanToByte(bd.isLearn());
+        final byte uuf = BridgeDomainTestUtils.booleanToByte(bd.isUnknownUnicastFlood());
         return verify(api).bridgeDomainAddDel(bdn1Id, flood, forward, learn, uuf, arpTerm, ADD_OR_UPDATE_BD);
     }
 
     private int verifyBridgeDomainAddOrUpdateWasNotInvoked(final BridgeDomain bd) {
-        final int bdn1Id = bdNameToID(bd.getName());
-        final byte arpTerm = booleanToByte(bd.isArpTermination());
-        final byte flood = booleanToByte(bd.isFlood());
-        final byte forward = booleanToByte(bd.isForward());
-        final byte learn = booleanToByte(bd.isLearn());
-        final byte uuf = booleanToByte(bd.isUnknownUnicastFlood());
+        final int bdn1Id = BridgeDomainTestUtils.bdNameToID(bd.getName());
+        final byte arpTerm = BridgeDomainTestUtils.booleanToByte(bd.isArpTermination());
+        final byte flood = BridgeDomainTestUtils.booleanToByte(bd.isFlood());
+        final byte forward = BridgeDomainTestUtils.booleanToByte(bd.isForward());
+        final byte learn = BridgeDomainTestUtils.booleanToByte(bd.isLearn());
+        final byte uuf = BridgeDomainTestUtils.booleanToByte(bd.isUnknownUnicastFlood());
         return verify(api, never()).bridgeDomainAddDel(bdn1Id, flood, forward, learn, uuf, arpTerm, ADD_OR_UPDATE_BD);
     }
 
     private int verifyBridgeDomainDeletedWasInvoked(final BridgeDomain bd) {
-        final int bdn1Id = bdNameToID(bd.getName());
+        final int bdn1Id = BridgeDomainTestUtils.bdNameToID(bd.getName());
         return verify(api).bridgeDomainAddDel(bdn1Id, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO);
     }
 
     private int verifyBridgeDomainDeletedWasNotInvoked(final BridgeDomain bd) {
-        final int bdn1Id = bdNameToID(bd.getName());
+        final int bdn1Id = BridgeDomainTestUtils.bdNameToID(bd.getName());
         return verify(api, never()).bridgeDomainAddDel(bdn1Id, ZERO, ZERO, ZERO, ZERO, ZERO, ZERO);
     }
 
@@ -127,7 +122,7 @@ public class BridgeDomainCustomizerTest {
         final String bdName = "bd1";
         final BridgeDomain bd = generateBridgeDomain("bd1");
 
-        customizer.writeCurrentAttributes(bdIdentifierForName(bdName), bd, ctx);
+        customizer.writeCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, ctx);
 
         verifyBridgeDomainAddOrUpdateWasInvoked(bd);
     }
@@ -141,7 +136,7 @@ public class BridgeDomainCustomizerTest {
         PowerMockito.doReturn(-1).when(api).findOrAddBridgeDomainId(bdName);
 
         try {
-            customizer.writeCurrentAttributes(bdIdentifierForName(bdName), bd, ctx);
+            customizer.writeCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, ctx);
         } catch (IllegalStateException e) {
             verifyBridgeDomainAddOrUpdateWasNotInvoked(bd);
             return;
@@ -158,7 +153,7 @@ public class BridgeDomainCustomizerTest {
         final BridgeDomain bd = generateBridgeDomain(bdName);
 
         try {
-            customizer.writeCurrentAttributes(bdIdentifierForName(bdName), bd, ctx);
+            customizer.writeCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, ctx);
         } catch (IllegalStateException e) {
             verifyBridgeDomainAddOrUpdateWasInvoked(bd);
             return;
@@ -171,7 +166,7 @@ public class BridgeDomainCustomizerTest {
         final String bdName = "bd1";
         final BridgeDomain bd = generateBridgeDomain("bd1");
 
-        customizer.deleteCurrentAttributes(bdIdentifierForName(bdName), bd, ctx);
+        customizer.deleteCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, ctx);
 
         verifyBridgeDomainDeletedWasInvoked(bd);
     }
@@ -185,7 +180,7 @@ public class BridgeDomainCustomizerTest {
         PowerMockito.doReturn(-1).when(api).bridgeDomainIdFromName(bdName);
 
         try {
-            customizer.deleteCurrentAttributes(bdIdentifierForName(bdName), bd, ctx);
+            customizer.deleteCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, ctx);
         } catch (IllegalStateException e) {
             verifyBridgeDomainDeletedWasNotInvoked(bd);
             return;
@@ -202,7 +197,7 @@ public class BridgeDomainCustomizerTest {
         final BridgeDomain bd = generateBridgeDomain(bdName);
 
         try {
-            customizer.deleteCurrentAttributes(bdIdentifierForName(bdName), bd, ctx);
+            customizer.deleteCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, ctx);
         } catch (IllegalStateException e) {
             verifyBridgeDomainDeletedWasInvoked(bd);
             return;
@@ -225,7 +220,7 @@ public class BridgeDomainCustomizerTest {
                 generateBridgeDomain(bdName, arpTermBefore ^ 1, floodBefore ^ 1, forwardBefore ^ 1, learnBefore ^ 1,
                         uufBefore ^ 1);
 
-        final KeyedInstanceIdentifier<BridgeDomain, BridgeDomainKey> id = bdIdentifierForName(bdName);
+        final KeyedInstanceIdentifier<BridgeDomain, BridgeDomainKey> id = BridgeDomainTestUtils.bdIdentifierForName(bdName);
 
         customizer.updateCurrentAttributes(id, dataBefore, dataAfter, ctx);
 
@@ -241,7 +236,7 @@ public class BridgeDomainCustomizerTest {
         PowerMockito.doReturn(-1).when(api).bridgeDomainIdFromName(bdName);
 
         try {
-            customizer.updateCurrentAttributes(bdIdentifierForName(bdName), bd, bd, ctx);
+            customizer.updateCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, bd, ctx);
         } catch (IllegalStateException e) {
             verifyBridgeDomainAddOrUpdateWasNotInvoked(bd);
             return;
@@ -258,7 +253,7 @@ public class BridgeDomainCustomizerTest {
         final BridgeDomain bd = generateBridgeDomain(bdName);
 
         try {
-            customizer.updateCurrentAttributes(bdIdentifierForName(bdName), bd, bd, ctx);
+            customizer.updateCurrentAttributes(BridgeDomainTestUtils.bdIdentifierForName(bdName), bd, bd, ctx);
         } catch (IllegalStateException e) {
             verifyBridgeDomainAddOrUpdateWasInvoked(bd);
             return;
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vpp;
+package io.fd.honeycomb.v3po.translate.v3po.vpp;
 
-import static io.fd.honeycomb.v3po.vpp.facade.v3po.vpp.BridgeDomainTestUtils.BD_NAME_TO_ID_ANSWER;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.mock;
@@ -25,10 +24,10 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyZeroInteractions;
 
 import com.google.common.collect.Lists;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeRootVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.util.DelegatingWriterRegistry;
-import io.fd.honeycomb.v3po.vpp.facade.write.VppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.impl.write.CompositeRootWriter;
+import io.fd.honeycomb.v3po.translate.write.WriteContext;
+import io.fd.honeycomb.v3po.translate.util.write.DelegatingWriterRegistry;
+import io.fd.honeycomb.v3po.translate.write.Writer;
 import java.util.Collections;
 import java.util.List;
 import org.junit.Before;
@@ -55,7 +54,7 @@ public class VppTest {
 
     private vppApi api;
     private DelegatingWriterRegistry rootRegistry;
-    private CompositeRootVppWriter<Vpp> vppWriter;
+    private CompositeRootWriter<Vpp> vppWriter;
     private WriteContext ctx;
 
     final byte zero = (byte) 0;
@@ -70,12 +69,12 @@ public class VppTest {
     public void setUp() throws Exception {
         api = PowerMockito.mock(vppApi.class);
         ctx = mock(WriteContext.class);
-        PowerMockito.doAnswer(BD_NAME_TO_ID_ANSWER).when(api).findOrAddBridgeDomainId(anyString());
-        PowerMockito.doAnswer(BD_NAME_TO_ID_ANSWER).when(api).bridgeDomainIdFromName(anyString());
+        PowerMockito.doAnswer(BridgeDomainTestUtils.BD_NAME_TO_ID_ANSWER).when(api).findOrAddBridgeDomainId(anyString());
+        PowerMockito.doAnswer(BridgeDomainTestUtils.BD_NAME_TO_ID_ANSWER).when(api).bridgeDomainIdFromName(anyString());
         PowerMockito.doReturn(1).when(api).getRetval(anyInt(), anyInt());
         vppWriter = VppUtils.getVppWriter(api);
         rootRegistry = new DelegatingWriterRegistry(
-            Collections.<VppWriter<? extends DataObject>>singletonList(vppWriter));
+            Collections.<Writer<? extends DataObject>>singletonList(vppWriter));
     }
 
     @Test
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vpp;
-
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeChildVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeListVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeRootVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.util.NoopWriterCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.util.ReflexiveChildWriterCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.write.ChildVppWriter;
+package io.fd.honeycomb.v3po.translate.v3po.vpp;
+
+import io.fd.honeycomb.v3po.translate.impl.write.CompositeChildWriter;
+import io.fd.honeycomb.v3po.translate.impl.write.CompositeListWriter;
+import io.fd.honeycomb.v3po.translate.impl.write.CompositeRootWriter;
+import io.fd.honeycomb.v3po.translate.util.write.NoopWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.util.write.ReflexiveChildWriterCustomizer;
+import io.fd.honeycomb.v3po.translate.write.ChildWriter;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.Nonnull;
@@ -40,21 +40,21 @@ final class VppUtils {
     /**
      * Create root Vpp writer with all its children wired
      */
-    static CompositeRootVppWriter<Vpp> getVppWriter(@Nonnull final vppApi vppApi) {
+    static CompositeRootWriter<Vpp> getVppWriter(@Nonnull final vppApi vppApi) {
 
-        final CompositeListVppWriter<BridgeDomain, BridgeDomainKey> bridgeDomainWriter = new CompositeListVppWriter<>(
+        final CompositeListWriter<BridgeDomain, BridgeDomainKey> bridgeDomainWriter = new CompositeListWriter<>(
             BridgeDomain.class,
             new BridgeDomainCustomizer(vppApi));
 
-        final ChildVppWriter<BridgeDomains> bridgeDomainsReader = new CompositeChildVppWriter<>(
+        final ChildWriter<BridgeDomains> bridgeDomainsReader = new CompositeChildWriter<>(
             BridgeDomains.class,
-            VppRWUtils.singletonChildWriterList(bridgeDomainWriter),
+            RWUtils.singletonChildWriterList(bridgeDomainWriter),
             new ReflexiveChildWriterCustomizer<BridgeDomains>());
 
-        final List<ChildVppWriter<? extends ChildOf<Vpp>>> childWriters = new ArrayList<>();
+        final List<ChildWriter<? extends ChildOf<Vpp>>> childWriters = new ArrayList<>();
         childWriters.add(bridgeDomainsReader);
 
-        return new CompositeRootVppWriter<>(
+        return new CompositeRootWriter<>(
             Vpp.class,
             childWriters,
             new NoopWriterCustomizer<Vpp>());
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vppstate;
+package io.fd.honeycomb.v3po.translate.v3po.vppstate;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -26,11 +26,11 @@ import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeListVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeRootVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.util.DelegatingReaderRegistry;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.VppReader;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeListReader;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeRootReader;
+import io.fd.honeycomb.v3po.translate.util.read.DelegatingReaderRegistry;
+import io.fd.honeycomb.v3po.translate.read.ReadContext;
+import io.fd.honeycomb.v3po.translate.read.Reader;
 import java.util.Collections;
 import java.util.List;
 import org.junit.Before;
@@ -71,7 +71,7 @@ public class VppStateTest {
     public static final vppVersion VERSION = new vppVersion("test", "1", "2", "33");
 
     private vppApi api;
-    private CompositeRootVppReader<VppState, VppStateBuilder> vppStateReader;
+    private CompositeRootReader<VppState, VppStateBuilder> vppStateReader;
     private DelegatingReaderRegistry readerRegistry;
     private vppBridgeDomainDetails bdDetails;
     private vppBridgeDomainDetails bdDetails2;
@@ -120,7 +120,7 @@ public class VppStateTest {
         PowerMockito.doReturn(new int[] {1, 2}).when(api).bridgeDomainDump(Matchers.anyInt());
         PowerMockito.doReturn(VERSION).when(api).getVppVersion();
         vppStateReader = VppStateUtils.getVppStateReader(api);
-        readerRegistry = new DelegatingReaderRegistry(Collections.<VppReader<? extends DataObject>>singletonList(vppStateReader));
+        readerRegistry = new DelegatingReaderRegistry(Collections.<Reader<? extends DataObject>>singletonList(vppStateReader));
     }
 
     private vppL2Fib[] getL2Fibs() {
@@ -210,7 +210,7 @@ public class VppStateTest {
     public void testReadBridgeDomainAll() throws Exception {
         VppState readRoot = (VppState) readerRegistry.read(InstanceIdentifier.create(VppState.class), ctx).get();
 
-        final CompositeListVppReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> bridgeDomainReader =
+        final CompositeListReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> bridgeDomainReader =
             VppStateUtils.getBridgeDomainReader(api);
 
         final List<BridgeDomain> read =
  * limitations under the License.
  */
 
-package io.fd.honeycomb.v3po.vpp.facade.v3po.vppstate;
+package io.fd.honeycomb.v3po.translate.v3po.vppstate;
 
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeListVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.CompositeRootVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.util.ReflexiveChildReaderCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.impl.read.util.ReflexiveRootReaderCustomizer;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeChildReader;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeListReader;
+import io.fd.honeycomb.v3po.translate.impl.read.CompositeRootReader;
+import io.fd.honeycomb.v3po.translate.util.read.ReflexiveChildReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.util.read.ReflexiveRootReaderCustomizer;
+import io.fd.honeycomb.v3po.translate.util.RWUtils;
+import io.fd.honeycomb.v3po.translate.read.ChildReader;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.Nonnull;
@@ -44,33 +44,33 @@ final class VppStateUtils {
     /**
      * Create root VppState reader with all its children wired
      */
-    static CompositeRootVppReader<VppState, VppStateBuilder> getVppStateReader(@Nonnull final vppApi vppApi) {
+    static CompositeRootReader<VppState, VppStateBuilder> getVppStateReader(@Nonnull final vppApi vppApi) {
 
-        final ChildVppReader<Version> versionReader = new CompositeChildVppReader<>(
+        final ChildReader<Version> versionReader = new CompositeChildReader<>(
             Version.class, new VersionCustomizer(vppApi));
 
-        final CompositeListVppReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> bridgeDomainReader =
+        final CompositeListReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> bridgeDomainReader =
             getBridgeDomainReader(vppApi);
 
-        final ChildVppReader<BridgeDomains> bridgeDomainsReader = new CompositeChildVppReader<>(
+        final ChildReader<BridgeDomains> bridgeDomainsReader = new CompositeChildReader<>(
             BridgeDomains.class,
-            VppRWUtils.singletonChildReaderList(bridgeDomainReader),
+            RWUtils.singletonChildReaderList(bridgeDomainReader),
             new ReflexiveChildReaderCustomizer<>(BridgeDomainsBuilder.class));
 
-        final List<ChildVppReader<? extends ChildOf<VppState>>> childVppReaders = new ArrayList<>();
+        final List<ChildReader<? extends ChildOf<VppState>>> childVppReaders = new ArrayList<>();
         childVppReaders.add(versionReader);
         childVppReaders.add(bridgeDomainsReader);
 
-        return new CompositeRootVppReader<>(
+        return new CompositeRootReader<>(
             VppState.class,
             childVppReaders,
-            VppRWUtils.<VppState>emptyAugReaderList(),
+            RWUtils.<VppState>emptyAugReaderList(),
             new ReflexiveRootReaderCustomizer<>(VppStateBuilder.class));
     }
 
-    static CompositeListVppReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> getBridgeDomainReader(
+    static CompositeListReader<BridgeDomain, BridgeDomainKey, BridgeDomainBuilder> getBridgeDomainReader(
         final @Nonnull vppApi vppApi) {
-        return new CompositeListVppReader<>(
+        return new CompositeListReader<>(
         BridgeDomain.class,
         new BridgeDomainCustomizer(vppApi));
     }
diff --git a/v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/CompositeRootVppReader.java b/v3po/vpp-facade-impl/src/main/java/io/fd/honeycomb/v3po/vpp/facade/impl/read/CompositeRootVppReader.java
deleted file mode 100644 (file)
index 95f2a8e..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.vpp.facade.impl.read;
-
-import com.google.common.annotations.Beta;
-import io.fd.honeycomb.v3po.vpp.facade.impl.util.VppRWUtils;
-import io.fd.honeycomb.v3po.vpp.facade.read.ChildVppReader;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadContext;
-import io.fd.honeycomb.v3po.vpp.facade.read.ReadFailedException;
-import io.fd.honeycomb.v3po.vpp.facade.read.VppReader;
-import io.fd.honeycomb.v3po.vpp.facade.spi.read.RootVppReaderCustomizer;
-import java.util.List;
-import javax.annotation.Nonnull;
-import javax.annotation.concurrent.ThreadSafe;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.opendaylight.yangtools.yang.binding.Augmentation;
-import org.opendaylight.yangtools.yang.binding.ChildOf;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- * Composite implementation of {@link io.fd.honeycomb.v3po.vpp.facade.read.VppReader}
- */
-@Beta
-@ThreadSafe
-public final class CompositeRootVppReader<C extends DataObject, B extends Builder<C>> extends AbstractCompositeVppReader<C, B>
-    implements VppReader<C> {
-
-    private final RootVppReaderCustomizer<C, B> customizer;
-
-    /**
-     * Create new {@link CompositeRootVppReader}
-     *
-     * @param managedDataObjectType Class object for managed data type
-     * @param childReaders Child nodes(container, list) readers
-     * @param augReaders Child augmentations readers
-     * @param customizer Customizer instance to customize this generic reader
-     *
-     */
-    public CompositeRootVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                  @Nonnull final List<ChildVppReader<? extends ChildOf<C>>> childReaders,
-                                  @Nonnull final List<ChildVppReader<? extends Augmentation<C>>> augReaders,
-                                  @Nonnull final RootVppReaderCustomizer<C, B> customizer) {
-        super(managedDataObjectType, childReaders, augReaders);
-        this.customizer = customizer;
-    }
-
-    /**
-     * @see {@link CompositeRootVppReader#CompositeRootVppReader(Class, List, List, RootVppReaderCustomizer)}
-     */
-    public CompositeRootVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                  @Nonnull final List<ChildVppReader<? extends ChildOf<C>>> childReaders,
-                                  @Nonnull final RootVppReaderCustomizer<C, B> customizer) {
-        this(managedDataObjectType, childReaders, VppRWUtils.<C>emptyAugReaderList(), customizer);
-    }
-
-    /**
-     * @see {@link CompositeRootVppReader#CompositeRootVppReader(Class, List, List, RootVppReaderCustomizer)}
-     */
-    public CompositeRootVppReader(@Nonnull final Class<C> managedDataObjectType,
-                                  @Nonnull final RootVppReaderCustomizer<C, B> customizer) {
-        this(managedDataObjectType, VppRWUtils.<C>emptyChildReaderList(), VppRWUtils.<C>emptyAugReaderList(),
-            customizer);
-    }
-
-    @Override
-    protected void readCurrentAttributes(@Nonnull final InstanceIdentifier<C> id, @Nonnull final B builder,
-                                         @Nonnull final ReadContext ctx) throws ReadFailedException {
-        customizer.readCurrentAttributes(id, builder, ctx.getContext());
-    }
-
-    @Override
-    protected B getBuilder(@Nonnull final InstanceIdentifier<C> id) {
-        return customizer.getBuilder(id);
-    }
-
-}
diff --git a/v3po/vpp-facade-impl/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/DelegatingWriterRegistryTest.java b/v3po/vpp-facade-impl/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/DelegatingWriterRegistryTest.java
deleted file mode 100644 (file)
index 6730cfe..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * 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.vpp.facade.impl.write.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-
-import io.fd.honeycomb.v3po.vpp.facade.VppException;
-import io.fd.honeycomb.v3po.vpp.facade.impl.write.CompositeRootVppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.VppWriter;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriteContext;
-import io.fd.honeycomb.v3po.vpp.facade.write.WriterRegistry;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.Vpp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppState;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class DelegatingWriterRegistryTest {
-
-    private final InstanceIdentifier<Vpp> vppId;
-    private final InstanceIdentifier<VppState> vppStateId;
-    private final InstanceIdentifier<Interfaces> interfaceId;
-
-    private WriteContext ctx;
-    private CompositeRootVppWriter<Vpp> vppWriter;
-    private CompositeRootVppWriter<VppState> vppStateWriter;
-    private CompositeRootVppWriter<Interfaces> interfacesWriter;
-
-    private DelegatingWriterRegistry registry;
-
-    public DelegatingWriterRegistryTest() {
-        vppId = InstanceIdentifier.create(Vpp.class);
-        vppStateId = InstanceIdentifier.create(VppState.class);
-        interfaceId = InstanceIdentifier.create(Interfaces.class);
-    }
-
-    @SuppressWarnings("unchecked")
-    private <D extends DataObject> CompositeRootVppWriter<D> mockWriter(Class<D> clazz) {
-        final CompositeRootVppWriter<D> mock = (CompositeRootVppWriter<D>) Mockito.mock(CompositeRootVppWriter.class);
-        doReturn(InstanceIdentifier.create(clazz)).when(mock).getManagedDataObjectType();
-        return mock;
-    }
-
-    private DataObject mockDataObject(final String name, final Class<? extends DataObject> classToMock) {
-        final DataObject dataBefore = mock(classToMock, name);
-        doReturn(classToMock).when(dataBefore).getImplementedInterface();
-        return dataBefore;
-    }
-
-    @SuppressWarnings("unchecked")
-    private static Map<InstanceIdentifier<?>, DataObject> asMap(DataObject... objects) {
-        final Map<InstanceIdentifier<?>, DataObject> map = new HashMap<>();
-        for (DataObject object : objects) {
-            final Class<? extends DataObject> implementedInterface =
-                    (Class<? extends DataObject>) object.getImplementedInterface();
-            final InstanceIdentifier<?> id = InstanceIdentifier.create(implementedInterface);
-            map.put(id, object);
-        }
-        return map;
-    }
-
-    @Before
-    public void setUp() {
-        ctx = mock(WriteContext.class);
-        vppWriter = mockWriter(Vpp.class);
-        vppStateWriter = mockWriter(VppState.class);
-        interfacesWriter = mockWriter(Interfaces.class);
-
-        final List<VppWriter<? extends DataObject>> writers = new ArrayList<>();
-        writers.add(vppWriter);
-        writers.add(vppStateWriter);
-        writers.add(interfacesWriter);
-
-        registry = new DelegatingWriterRegistry(writers);
-    }
-
-    @Test(expected = UnsupportedOperationException.class)
-    public void testGetManagedDataObjectType() {
-        registry.getManagedDataObjectType();
-    }
-
-    @Test
-    public void testBulkUpdateRevert() throws Exception {
-        // Prepare data changes:
-        final DataObject dataBefore1 = mockDataObject("Vpp before", Vpp.class);
-        final DataObject dataAfter1 = mockDataObject("Vpp after", Vpp.class);
-
-        final DataObject dataBefore2 = mockDataObject("VppState before", VppState.class);
-        final DataObject dataAfter2 = mockDataObject("VppState after", VppState.class);
-
-        // Fail on update
-        doThrow(new VppException("vpp failed")).when(vppStateWriter)
-                .update(vppStateId, dataBefore2, dataAfter2, ctx);
-
-        // Run the test
-        try {
-            registry.update(asMap(dataBefore1, dataBefore2), asMap(dataAfter1, dataAfter2), ctx);
-        } catch (WriterRegistry.BulkUpdateException e) {
-            // Check second update failed
-            assertEquals(vppStateId, e.getFailedId());
-            verify(vppWriter).update(vppId, dataBefore1, dataAfter1, ctx);
-            verify(vppStateWriter).update(vppStateId, dataBefore2, dataAfter2, ctx);
-
-            // Try to revert changes
-            e.revertChanges();
-
-            // Check revert was successful
-            verify(vppWriter).update(vppId, dataAfter1, dataBefore1, ctx);
-            verify(vppStateWriter, never()).update(vppStateId, dataAfter2, dataBefore2, ctx);
-
-            return;
-        }
-        fail("BulkUpdateException expected");
-    }
-
-    @Test
-    public void testBulkUpdateRevertFail() throws Exception {
-        // Prepare data changes:
-        final DataObject dataBefore1 = mockDataObject("Vpp before", Vpp.class);
-        final DataObject dataAfter1 = mockDataObject("Vpp after", Vpp.class);
-
-        final DataObject dataBefore2 = mockDataObject("VppState before", VppState.class);
-        final DataObject dataAfter2 = mockDataObject("VppState after", VppState.class);
-
-        final DataObject dataBefore3 = mockDataObject("Interfaces before", Interfaces.class);
-        final DataObject dataAfter3 = mockDataObject("Interfaces after", Interfaces.class);
-
-        // Fail on the third update
-        doThrow(new VppException("vpp failed")).when(interfacesWriter)
-                .update(interfaceId, dataBefore3, dataAfter3, ctx);
-
-        // Fail on the second revert
-        doThrow(new VppException("vpp failed again")).when(vppWriter)
-                .update(vppId, dataAfter1, dataBefore1, ctx);
-
-        // Run the test
-        try {
-            registry.update(asMap(dataBefore1, dataBefore2, dataBefore3), asMap(dataAfter1, dataAfter2, dataAfter3), ctx);
-        } catch (WriterRegistry.BulkUpdateException e) {
-            // Check third update failed
-            assertEquals(interfaceId, e.getFailedId());
-            verify(vppWriter).update(vppId, dataBefore1, dataAfter1, ctx);
-            verify(vppStateWriter).update(vppStateId, dataBefore2, dataAfter2, ctx);
-            verify(interfacesWriter).update(interfaceId, dataBefore3, dataAfter3, ctx);
-
-            // Try to revert changes
-            try {
-                e.revertChanges();
-            } catch (WriterRegistry.Reverter.RevertFailedException e2) {
-                // Check second revert failed
-                assertEquals(Collections.singletonList(vppId), e2.getNotRevertedChanges());
-                verify(vppWriter).update(vppId, dataAfter1, dataBefore1, ctx);
-                verify(vppStateWriter).update(vppStateId, dataAfter2, dataBefore2, ctx);
-                verify(interfacesWriter, never()).update(interfaceId, dataAfter3, dataBefore3, ctx);
-                return;
-            }
-            fail("WriterRegistry.Revert.RevertFailedException expected");
-        }
-        fail("BulkUpdateException expected");
-    }
-}
\ No newline at end of file
diff --git a/v3po/vpp-facade-impl/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/TransactionWriteContextTest.java b/v3po/vpp-facade-impl/src/test/java/io/fd/honeycomb/v3po/vpp/facade/impl/write/util/TransactionWriteContextTest.java
deleted file mode 100644 (file)
index 0e46e2f..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * 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.vpp.facade.impl.write.util;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.mockito.MockitoAnnotations.initMocks;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import io.fd.honeycomb.v3po.vpp.facade.Context;
-import java.util.Map;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.Vpp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.VppState;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.BridgeDomains;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev150105.vpp.bridge.domains.BridgeDomain;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-
-public class TransactionWriteContextTest {
-
-    @Mock
-    private BindingNormalizedNodeSerializer serializer;
-    @Mock
-    private DOMDataReadOnlyTransaction beforeTx;
-    @Mock
-    private DOMDataReadOnlyTransaction afterTx;
-    @Mock
-    private CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> future;
-    @Mock
-    private Optional<org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode<?, ?>> optional;
-    @Mock
-    private Map.Entry entry;
-
-    private TransactionWriteContext transactionWriteContext;
-
-    @Before
-    public void setUp() {
-        initMocks(this);
-        transactionWriteContext = new TransactionWriteContext(serializer, beforeTx, afterTx);
-    }
-
-    @Test
-    public void testReadBeforeNoData() throws Exception {
-        when(beforeTx.read(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn(future);
-        when(future.checkedGet()).thenReturn(optional);
-        when(optional.isPresent()).thenReturn(false);
-
-        final InstanceIdentifier<BridgeDomain> instanceId =
-                InstanceIdentifier.create(Vpp.class).child(BridgeDomains.class).child(BridgeDomain.class);
-
-        final Optional<DataObject> dataObjects = transactionWriteContext.readBefore(instanceId);
-        assertNotNull(dataObjects);
-        assertFalse(dataObjects.isPresent());
-
-        verify(serializer).toYangInstanceIdentifier(instanceId);
-        verify(serializer, never()).fromNormalizedNode(any(YangInstanceIdentifier.class), any(NormalizedNode.class));
-    }
-
-
-    @Test
-    public void testReadBefore() throws Exception {
-        when(beforeTx.read(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn(future);
-        when(future.checkedGet()).thenReturn(optional);
-        when(optional.isPresent()).thenReturn(true);
-
-        final InstanceIdentifier<BridgeDomain> instanceId =
-                InstanceIdentifier.create(Vpp.class).child(BridgeDomains.class).child(BridgeDomain.class);
-        final YangInstanceIdentifier yangId = YangInstanceIdentifier.builder().node(VppState.QNAME).node(
-                BridgeDomains.QNAME).node(BridgeDomain.QNAME).build();
-        when(serializer.toYangInstanceIdentifier(any(InstanceIdentifier.class))).thenReturn(yangId);
-        when(serializer.fromNormalizedNode(eq(yangId), any(NormalizedNode.class))).thenReturn(entry);
-        when(entry.getValue()).thenReturn(mock(DataObject.class));
-
-        final Optional<DataObject> dataObjects = transactionWriteContext.readBefore(instanceId);
-        assertNotNull(dataObjects);
-        assertTrue(dataObjects.isPresent());
-
-        verify(serializer).toYangInstanceIdentifier(instanceId);
-        verify(serializer).fromNormalizedNode(eq(yangId), any(NormalizedNode.class));
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void testReadBeforeFailed() throws Exception {
-        when(beforeTx.read(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn(future);
-        when(future.checkedGet()).thenThrow(ReadFailedException.class);
-        transactionWriteContext.readBefore(mock(InstanceIdentifier.class));
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void testReadAfterFailed() throws Exception {
-        when(afterTx.read(eq(LogicalDatastoreType.CONFIGURATION), any(YangInstanceIdentifier.class))).thenReturn(future);
-        when(future.checkedGet()).thenThrow(ReadFailedException.class);
-        transactionWriteContext.readAfter(mock(InstanceIdentifier.class));
-    }
-
-    @Test
-    public void testGetContext() throws Exception {
-        assertNotNull(transactionWriteContext.getContext());
-    }
-
-    @Test
-    public void testClose() throws Exception {
-        final Context context = transactionWriteContext.getContext();
-        transactionWriteContext.close();
-        // TODO verify context was closed
-    }
-}
\ No newline at end of file
diff --git a/v3po/vpp-translate-utils/pom.xml b/v3po/vpp-translate-utils/pom.xml
new file mode 100644 (file)
index 0000000..b63b6d4
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2015 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         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>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../../common/api-parent</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>io.fd.honeycomb.v3po</groupId>
+    <artifactId>vpp-translate-utils</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>translate-utils</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.fd.vpp</groupId>
+            <artifactId>vppjapi</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+
+        <!-- Testing Dependencies -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+</project>