summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2017-05-24 08:33:12 +0200
committerMarek Gradzki <mgradzki@cisco.com>2017-05-24 07:02:04 +0000
commit2ba11acff5d4b8a09d4920fee2084ffbb9c3e83f (patch)
tree6c25daca9a59c511d22319cf411628d274e2ba68
parentf8ef7857b897df2ddc7ba43603964b0d72ae3a0d (diff)
Update initialization example in honeycomb archetype
Removes unsupported AbstractDataTreeConverter Change-Id: I0b45f1d16139a55f2248294b57bfad6d8ee32c45 Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
-rw-r--r--tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/Module.java7
-rw-r--r--tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/init/ConfigDataInitializer.java58
-rw-r--r--tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/read/ElementStateCustomizer.java20
3 files changed, 18 insertions, 67 deletions
diff --git a/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/Module.java b/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/Module.java
index 41373cedc..581b07060 100644
--- a/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/Module.java
+++ b/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/Module.java
@@ -30,7 +30,6 @@ import com.google.inject.AbstractModule;
import com.google.inject.TypeLiteral;
import com.google.inject.multibindings.Multibinder;
import com.google.inject.name.Names;
-import ${package}.init.ConfigDataInitializer;
import ${package}.read.ModuleStateReaderFactory;
import ${package}.write.ModuleWriterFactory;
import io.fd.honeycomb.data.init.DataTreeInitializer;
@@ -71,11 +70,5 @@ public final class Module extends AbstractModule {
// can hold multiple binding for separate yang modules
final Multibinder<WriterFactory> writerFactoryBinder = Multibinder.newSetBinder(binder(), WriterFactory.class);
writerFactoryBinder.addBinding().to(ModuleWriterFactory.class);
-
- // create initializer binding
- // can hold multiple binding for separate yang modules
- final Multibinder<DataTreeInitializer> initializerBinder =
- Multibinder.newSetBinder(binder(), DataTreeInitializer.class);
- initializerBinder.addBinding().to(ConfigDataInitializer.class);
}
}
diff --git a/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/init/ConfigDataInitializer.java b/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/init/ConfigDataInitializer.java
deleted file mode 100644
index 2393a125a..000000000
--- a/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/init/ConfigDataInitializer.java
+++ /dev/null
@@ -1,58 +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.
- */
-
-#macro( ccase $str )
-#foreach( $word in $rootArtifactId.split('-') )$word.substring(0,1).toUpperCase()$word.substring(1)#end
-#end
-#set( $classNamePrefix = "#ccase( $rootArtifactId )" )
-#macro( dotted $str )
-#foreach( $word in $rootArtifactId.split('-') )$word.#end
-#end
-#set( $packageName = "#dotted( $rootArtifactId )" )
-package ${package}.init;
-
-import io.fd.honeycomb.data.init.AbstractDataTreeConverter;
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-import javax.annotation.Nonnull;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.${packageName}rev160918.${classNamePrefix};
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.${packageName}rev160918.${classNamePrefix}Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.${packageName}rev160918.${classNamePrefix}State;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- * Initialize configuration data based on operational data.
- * <p/>
- * Very useful when a plugin is initiated but the underlying layer already contains some operation state.
- * Deriving the configuration from existing operational state enables reconciliation in case when Honeycomb's persistence
- * is not available to do the work for us.
- */
-public final class ConfigDataInitializer extends AbstractDataTreeConverter<${classNamePrefix}State, ${classNamePrefix}> {
-
- @Inject
- public ConfigDataInitializer(@Named("honeycomb-initializer") @Nonnull final DataBroker bindingDataBroker) {
- super(bindingDataBroker, InstanceIdentifier.create(${classNamePrefix}State.class), InstanceIdentifier.create(${classNamePrefix}.class));
- }
-
- @Override
- public ${classNamePrefix} convert(final ${classNamePrefix}State operationalData) {
- // Transfer all the operational data into configuration
- return new ${classNamePrefix}Builder()
- .setElement(operationalData.getElement())
- .build();
- }
-}
diff --git a/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/read/ElementStateCustomizer.java b/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/read/ElementStateCustomizer.java
index 8f1c3a79d..22e8032a6 100644
--- a/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/read/ElementStateCustomizer.java
+++ b/tools/archetype/src/main/resources/archetype-resources/__rootArtifactId__-impl/src/main/java/read/ElementStateCustomizer.java
@@ -27,7 +27,8 @@ package ${package}.read;
import ${package}.CrudService;
import io.fd.honeycomb.translate.read.ReadContext;
import io.fd.honeycomb.translate.read.ReadFailedException;
-import io.fd.honeycomb.translate.spi.read.ListReaderCustomizer;
+import io.fd.honeycomb.translate.spi.read.Initialized;
+import io.fd.honeycomb.translate.spi.read.InitializingListReaderCustomizer;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
@@ -43,7 +44,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
* Reader for {@link Element} list node from our YANG model.
*/
public final class ElementStateCustomizer implements
- ListReaderCustomizer<Element, ElementKey, ElementBuilder> {
+ InitializingListReaderCustomizer<Element, ElementKey, ElementBuilder> {
private final CrudService<Element> crudService;
@@ -90,4 +91,19 @@ public final class ElementStateCustomizer implements
builder.setKey(data.getKey());
builder.setDescription(data.getDescription());
}
+ /**
+ *
+ * Initialize configuration data based on operational data.
+ * <p/>
+ * Very useful when a plugin is initiated but the underlying layer already contains some operation state.
+ * Deriving the configuration from existing operational state enables reconciliation in case when
+ * Honeycomb's persistence is not available to do the work for us.
+ */
+ @Nonnull
+ @Override
+ public Initialized<? extends DataObject> init(@Nonnull final InstanceIdentifier<Element> id,
+ @Nonnull final Element readValue,
+ @Nonnull final ReadContext ctx) {
+ return Initialized.create(id, readValue);
+ }
}