From ad1f5405413abf77c25a67e36a081636fc014709 Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Tue, 9 Jul 2013 17:25:36 +0200 Subject: [PATCH] Updated PoC APIs of Model-driven SAL - Bumped version of YANG tools - Added Concepts Lang package with reusable tranformator functionality Signed-off-by: Tony Tkacik --- .../sal/yang-prototype/concepts-lang/pom.xml | 11 + .../controller/concepts/lang/Acceptor.java | 20 ++ .../concepts/lang/AggregateTransformer.java | 21 ++ .../lang/CompositeClassBasedTransformer.java | 120 +++++++++ .../lang/CompositeConditionalTransformer.java | 156 ++++++++++++ .../lang/InputClassBasedTransformer.java | 37 +++ .../concepts/lang/RuleBasedTransformer.java | 41 +++ .../lang/SimpleConditionalTransformer.java | 37 +++ .../controller/concepts/lang/Transformer.java | 26 ++ opendaylight/sal/yang-prototype/pom.xml | 1 + opendaylight/sal/yang-prototype/sal/pom.xml | 233 ++++++++++-------- .../sal/sal-binding-api/pom.xml | 53 ++-- .../sal/sal-binding-broker-impl/pom.xml | 78 +++--- .../sal/sal-binding-spi/pom.xml | 48 ++-- .../binding/spi/DataDomToJavaTransformer.java | 23 ++ .../binding/spi/JavaToDataDomTransformer.java | 16 ++ .../sal/sal-broker-impl/pom.xml | 68 ++--- .../sal/sal-common-util/pom.xml | 39 ++- .../sal/yang-prototype/sal/sal-common/pom.xml | 20 +- .../yang-prototype/sal/sal-core-api/pom.xml | 48 ++-- .../yang-prototype/sal/sal-core-demo/pom.xml | 1 - .../sal/sal-schema-repository-api/pom.xml | 1 - 22 files changed, 819 insertions(+), 279 deletions(-) create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/pom.xml create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Acceptor.java create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/AggregateTransformer.java create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeClassBasedTransformer.java create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeConditionalTransformer.java create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/InputClassBasedTransformer.java create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/RuleBasedTransformer.java create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/SimpleConditionalTransformer.java create mode 100644 opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Transformer.java create mode 100644 opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/DataDomToJavaTransformer.java create mode 100644 opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/JavaToDataDomTransformer.java diff --git a/opendaylight/sal/yang-prototype/concepts-lang/pom.xml b/opendaylight/sal/yang-prototype/concepts-lang/pom.xml new file mode 100644 index 0000000000..68fe50d238 --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/pom.xml @@ -0,0 +1,11 @@ + + 4.0.0 + + yang-prototype + org.opendaylight.controller + 0.5-SNAPSHOT + + concepts-lang + jar + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Acceptor.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Acceptor.java new file mode 100644 index 0000000000..43b14bb7b1 --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Acceptor.java @@ -0,0 +1,20 @@ + +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; + +public interface Acceptor { + + /** + * + * @param input + * @return true if input is accepted. + */ + boolean isAcceptable(I input); +} diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/AggregateTransformer.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/AggregateTransformer.java new file mode 100644 index 0000000000..3a60894715 --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/AggregateTransformer.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; +import java.util.Collection; +/** + * + * @author Tony Tkacik + * + * @param + * @param

+ */ +public interface AggregateTransformer extends Transformer { + + Collection

transformAll(Collection inputs); +} diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeClassBasedTransformer.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeClassBasedTransformer.java new file mode 100644 index 0000000000..253ac85c68 --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeClassBasedTransformer.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + + +/** + * Transformer which aggregates multiple implementations of + * {@link InputClassBasedTransformer}. + * + * The transformation process is driven by {@link Class} of input. The selection + * of used {@link InputClassBasedTransformer} is done by using the {@link Class} + * of input as a key to select the transformer. + * + * This approach provides quick resolution of transformer, but does not support + * registering a super type of input to provide transformation support for all + * subclasses, one must register a new instance of transformer for each valid + * input class. + * + * If you need more flexible selection of transformation consider using + * {@link CompositeConditionalTransformer} which is slower but most flexible or + * {@link RuleBasedTransformer} which provides declarative approach for + * transformation. + * + * See {@link #transform(Object)} for more information about tranformation + * process. + * + * @author Tony Tkacik + * + * @param + * Input super-type + * @param

+ * Product + */ +public abstract class CompositeClassBasedTransformer implements + InputClassBasedTransformer, + AggregateTransformer { + + private Map, InputClassBasedTransformer> transformers = new ConcurrentHashMap, InputClassBasedTransformer>(); + + /** + * Transforms an input into instance of Product class. + * + * The final registered transformer is the one which match following + * condition: + * + * input.getClass() == transformer.getInputClass() + * + * This means that transformers are not resolved by class hierarchy, only + * selected based on final class of the input. If you need more flexible + * selection of transformation consider using + * {@link CompositeConditionalTransformer} which is slower but more + * flexible. + * + */ + @Override + public P transform(I input) { + @SuppressWarnings("unchecked") + InputClassBasedTransformer transformer = (InputClassBasedTransformer) transformers + .get(input.getClass()); + if (transformer == null) + throw new IllegalArgumentException("Transformation of: " + input + + " is not supported"); + return transformer.transform(input); + } + + /** + * Registers a new transformer. + * + * The transformer is registered for class returned by + * {@link InputClassBasedTransformer#getInputClass()}. Only one transformer + * can be registered for particular input class. + * + */ + public void addTransformer( + InputClassBasedTransformer transformer) + throws IllegalStateException { + if (transformer == null) + throw new IllegalArgumentException("Transformer should not be null"); + if (transformer.getInputClass() == null) + throw new IllegalArgumentException( + "Transformer should specify input class."); + transformers.put(transformer.getInputClass(), transformer); + } + + /** + * Removes an registered transformer. + * + * Note: Removal is currently unsupported. + * + * @param transformer + * Tranformer to be removed. + * @throws IllegalArgumentException + * If the provided transformer is null or is not registered. + */ + public void removeTransformer( + InputClassBasedTransformer transformer) + throws IllegalArgumentException { + throw new UnsupportedOperationException("Not implemented yet"); + } + + @Override + public Collection

transformAll(Collection inputs) { + Collection

ret = new ArrayList

(); + for (I i : inputs) { + ret.add(transform(i)); + } + return ret; + } + +} diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeConditionalTransformer.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeConditionalTransformer.java new file mode 100644 index 0000000000..4bbd629920 --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/CompositeConditionalTransformer.java @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.Set; +import java.util.TreeSet; + +/** + * Composite transformer which aggregates multiple implementation and selects + * the one which accepts the input. + * + * + * @author Tony Tkacik + * + * @param + * Input class for transformation + * @param

+ * Product of transformation + */ +public class CompositeConditionalTransformer implements + SimpleConditionalTransformer, + AggregateTransformer { + + private final Comparator> comparator = new Comparator>() { + + @Override + public int compare(TransformerWithPriority o1, + TransformerWithPriority o2) { + return Integer.valueOf(o1.priority).compareTo(Integer.valueOf(o2.priority)); + } + + }; + private final Set> transformers; + + public CompositeConditionalTransformer() { + // FIXME: Add Ordering + transformers = new TreeSet>(comparator); + } + + @Override + public boolean isAcceptable(I input) { + for (SimpleConditionalTransformer trans : transformers) { + if (trans.isAcceptable(input)) { + return true; + } + } + return false; + } + + @Override + public P transform(I input) { + for (SimpleConditionalTransformer trans : transformers) { + if (trans.isAcceptable(input)) { + return trans.transform(input); + } + } + throw new IllegalStateException( + "Transformer for provided input is not available."); + } + + public void addTransformer(SimpleConditionalTransformer transformer, + int priority) throws IllegalStateException { + if (transformer == null) { + throw new IllegalArgumentException( + "transformer should not be null."); + } + TransformerWithPriority withPriority = new TransformerWithPriority( + transformer, priority); + if (false == transformers.add(withPriority)) { + throw new IllegalStateException("transformer " + transformer + + "already registered"); + } + } + + public void removeTransformer(SimpleConditionalTransformer transformer) + throws IllegalArgumentException { + if (transformer == null) { + throw new IllegalArgumentException( + "transformer should not be null."); + } + if (false == transformers.remove(transformer)) { + throw new IllegalStateException("transformer " + transformer + + "already registered"); + } + } + + @Override + public Collection

transformAll(Collection inputs) { + Collection

ret = new ArrayList

(); + for (I i : inputs) { + ret.add(transform(i)); + } + return ret; + } + + private static class TransformerWithPriority implements + SimpleConditionalTransformer { + final int priority; + final SimpleConditionalTransformer transformer; + + public TransformerWithPriority( + SimpleConditionalTransformer transformer, int priority) { + this.priority = priority; + this.transformer = transformer; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((transformer == null) ? 0 : transformer.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + TransformerWithPriority other = (TransformerWithPriority) obj; + if (transformer == null) { + if (other.transformer != null) + return false; + } else if (!transformer.equals(other.transformer)) + return false; + return true; + } + + @Override + public boolean isAcceptable(I input) { + return transformer.isAcceptable(input); + } + + @Override + public P transform(I input) { + return transformer.transform(input); + } + + + + + + } +} diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/InputClassBasedTransformer.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/InputClassBasedTransformer.java new file mode 100644 index 0000000000..e6a1024b7c --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/InputClassBasedTransformer.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; +/** + * Input class based transformer + * + * {@link Transformer} which accepts / transforms only specific classes of + * input, and is useful if the selection of transformer should be based on the + * class of the input and there is one-to-one mapping between input class and + * transformer. + * + * + * @author Tony Tkacik + * + * @param + * Common supertype of input + * @param + * Concrete type of input + * @param

+ * Product + */ +public interface InputClassBasedTransformer extends + Transformer { + + /** + * Returns an {@link Class} of input which is acceptable for transformation. + * + * @return {@link Class} of input which is acceptable for transformation. + */ + Class getInputClass(); +} diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/RuleBasedTransformer.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/RuleBasedTransformer.java new file mode 100644 index 0000000000..12c793c6c8 --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/RuleBasedTransformer.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; +import java.util.Set; + +/** + * Transformer with set of acceptance rules + * + * The transformer provides a set of {@link Acceptor}s, which could be used to + * verify if the input will produce result using the transformer. + * + * The transormer is able to produce result if ANY of associated + * {@link Acceptor}s accepted result. + * + * @author Tony Tkacik + * + * @param + * Input class for transformation + * @param

+ * Product of transformation + */ +public interface RuleBasedTransformer extends Transformer { + + /** + * Set of {@link Acceptor}, which could be used to verify if the input is + * usable by transformer. + * + * The transformer is able to produce result if ANY of associated + * {@link Acceptor}s accepted result. + * + * @return Set of input acceptance rules associated to this transformer. + */ + Set> getRules(); + +} diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/SimpleConditionalTransformer.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/SimpleConditionalTransformer.java new file mode 100644 index 0000000000..d5146677a9 --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/SimpleConditionalTransformer.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; +/** + * Simple condition-based transformer + * + * The transformer provides {@link #isAcceptable(Object)} method, + * which could be used to query transformer if the input will produce + * result. + * + * This interface is simplified version of {@link RuleBasedTransformer} - does not + * provide decoupling of Acceptance rule from transformer, and should be used only + * for simple use-cases. + * + * @author Tony Tkacik + * + * @param Input class for transformation + * @param

Product of transformation + */ +public interface SimpleConditionalTransformer extends Transformer, Acceptor { + + + /** + * Checks if the input is acceptable + * for processing by the transformer. + * + * @return true it the input is acceptable for processing by transformer. + */ + @Override + public boolean isAcceptable(I input); +} diff --git a/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Transformer.java b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Transformer.java new file mode 100644 index 0000000000..23f2d6ac9f --- /dev/null +++ b/opendaylight/sal/yang-prototype/concepts-lang/src/main/java/org/opendaylight/controller/concepts/lang/Transformer.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.concepts.lang; +/** + * Factory which produces product based on input object + * + * @author Tony Tkacik + * + * @param Input + * @param

Product + */ +public interface Transformer { + /** + * Transforms input into instance of product. + * + * @param input Input which drives transformation + * @return Instance of product which was created from supplied input. + */ + P transform(I input); +} diff --git a/opendaylight/sal/yang-prototype/pom.xml b/opendaylight/sal/yang-prototype/pom.xml index 7df5bfef6e..741e2177ff 100644 --- a/opendaylight/sal/yang-prototype/pom.xml +++ b/opendaylight/sal/yang-prototype/pom.xml @@ -6,6 +6,7 @@ 0.5-SNAPSHOT pom + concepts-lang yang code-generator model diff --git a/opendaylight/sal/yang-prototype/sal/pom.xml b/opendaylight/sal/yang-prototype/sal/pom.xml index 2604a45acf..b2131f791b 100644 --- a/opendaylight/sal/yang-prototype/sal/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/pom.xml @@ -1,107 +1,136 @@ - 4.0.0 - org.opendaylight.controller - sal - 1.0-SNAPSHOT - pom + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + org.opendaylight.controller + sal + 1.0-SNAPSHOT + pom - - sal-common - sal-common-util - sal-core-api - sal-data-api - sal-binding-api - sal-binding-spi - sal-binding-broker-impl - sal-schema-repository-api - sal-core-spi - sal-broker-impl - sal-core-demo - + + sal-common + sal-common-util + sal-core-api + sal-data-api + sal-binding-api + sal-binding-spi + sal-binding-broker-impl + sal-schema-repository-api + sal-core-spi + sal-broker-impl + - - - - com.google.guava - guava - 14.0.1 - jar - - - org.slf4j - slf4j-api - 1.7.2 - - - junit - junit - 4.10 - - - + + 0.5.3-SNAPSHOT + - - - junit - junit - test - true - - - org.mockito - mockito-all - 1.9.5 - test - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.0 - true - - 1.7 - 1.7 - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.8.1 - - maven - - - - - aggregate - - site - - - - - - - - - org.codehaus.mojo - findbugs-maven-plugin - 2.4.0 - - Max - Low - site - - - - org.codehaus.mojo - jdepend-maven-plugin - 2.0-beta-2 - - - + + + + com.google.guava + guava + 14.0.1 + jar + + + org.slf4j + slf4j-api + 1.7.2 + + + junit + junit + 4.10 + + + org.opendaylight.controller + yang-binding + ${yang.version} + + + org.opendaylight.controller + yang-common + ${yang.version} + + + org.opendaylight.controller + yang-data-api + ${yang.version} + + + org.opendaylight.controller + yang-model-api + ${yang.version} + + + org.opendaylight.controller + yang-data-util + ${yang.version} + + + + + + + + junit + junit + test + true + + + org.mockito + mockito-all + 1.9.5 + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.0 + true + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.8.1 + + maven + + + + + aggregate + + site + + + + + + + + + org.codehaus.mojo + findbugs-maven-plugin + 2.4.0 + + Max + Low + site + + + + org.codehaus.mojo + jdepend-maven-plugin + 2.0-beta-2 + + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-binding-api/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-binding-api/pom.xml index b339e30070..92cfc3ba7a 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-binding-api/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-binding-api/pom.xml @@ -1,27 +1,28 @@ - - 4.0.0 - - org.opendaylight.controller - sal - 1.0-SNAPSHOT - - sal-binding-api - - - - org.opendaylight.controller - yang-common - 1.0 - - - org.opendaylight.controller - yang-binding - 1.0 - - - org.opendaylight.controller - sal-common - 1.0-SNAPSHOT - - + + 4.0.0 + + org.opendaylight.controller + sal + 1.0-SNAPSHOT + + sal-binding-api + + + + org.opendaylight.controller + yang-common + + + + org.opendaylight.controller + yang-binding + + + + org.opendaylight.controller + sal-common + 1.0-SNAPSHOT + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-binding-broker-impl/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-binding-broker-impl/pom.xml index 2d427cb61f..3073bec988 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-binding-broker-impl/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-binding-broker-impl/pom.xml @@ -1,46 +1,46 @@ - 4.0.0 - - org.opendaylight.controller - sal - 1.0-SNAPSHOT - - sal-binding-broker-impl + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + org.opendaylight.controller + sal + 1.0-SNAPSHOT + + sal-binding-broker-impl - - - org.opendaylight.controller - sal-common-util - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-binding-api - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-binding-spi - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-core-api - 1.0-SNAPSHOT - + + + org.opendaylight.controller + sal-common-util + 1.0-SNAPSHOT + + + org.opendaylight.controller + sal-binding-api + 1.0-SNAPSHOT + + + org.opendaylight.controller + sal-binding-spi + 1.0-SNAPSHOT + + + org.opendaylight.controller + sal-core-api + 1.0-SNAPSHOT + - - org.slf4j - slf4j-api - + + org.slf4j + slf4j-api + - - com.google.guava - guava - jar - - + + com.google.guava + guava + jar + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-binding-spi/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-binding-spi/pom.xml index 720d1e91c3..fd7fad6f14 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-binding-spi/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-binding-spi/pom.xml @@ -1,22 +1,28 @@ - - 4.0.0 - - org.opendaylight.controller - sal - 1.0-SNAPSHOT - - sal-binding-spi - - - - org.opendaylight.controller - sal-binding-api - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-core-api - 1.0-SNAPSHOT - - + + 4.0.0 + + org.opendaylight.controller + sal + 1.0-SNAPSHOT + + sal-binding-spi + + + + org.opendaylight.controller + sal-binding-api + 1.0-SNAPSHOT + + + org.opendaylight.controller + sal-core-api + 1.0-SNAPSHOT + + + org.opendaylight.controller + concepts-lang + 0.5-SNAPSHOT + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/DataDomToJavaTransformer.java b/opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/DataDomToJavaTransformer.java new file mode 100644 index 0000000000..db35de1ab7 --- /dev/null +++ b/opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/DataDomToJavaTransformer.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.sal.binding.spi; + +import org.opendaylight.controller.concepts.lang.Transformer; +import org.opendaylight.controller.yang.binding.DataObject; +import org.opendaylight.controller.yang.common.QName; +import org.opendaylight.controller.yang.data.api.CompositeNode; + +public interface DataDomToJavaTransformer

extends Transformer { + + /** + * Returns a QName of valid input composite node. + * + * @return + */ + QName getQName(); +} diff --git a/opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/JavaToDataDomTransformer.java b/opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/JavaToDataDomTransformer.java new file mode 100644 index 0000000000..3c4d486012 --- /dev/null +++ b/opendaylight/sal/yang-prototype/sal/sal-binding-spi/src/main/java/org/opendaylight/controller/sal/binding/spi/JavaToDataDomTransformer.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.sal.binding.spi; + +import org.opendaylight.controller.concepts.lang.InputClassBasedTransformer; +import org.opendaylight.controller.yang.binding.DataObject; +import org.opendaylight.controller.yang.data.api.CompositeNode; + +public interface JavaToDataDomTransformer extends + InputClassBasedTransformer { +} diff --git a/opendaylight/sal/yang-prototype/sal/sal-broker-impl/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-broker-impl/pom.xml index c195fe4ae2..779a6dc6ab 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-broker-impl/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-broker-impl/pom.xml @@ -1,36 +1,36 @@ - 4.0.0 - - org.opendaylight.controller - sal - 1.0-SNAPSHOT - - sal-broker-impl - - - org.opendaylight.controller - sal-core-api - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-common-util - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-core-spi - 1.0-SNAPSHOT - - - org.slf4j - slf4j-api - - - com.google.guava - guava - jar - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + org.opendaylight.controller + sal + 1.0-SNAPSHOT + + sal-broker-impl + + + org.opendaylight.controller + sal-core-api + 1.0-SNAPSHOT + + + org.opendaylight.controller + sal-common-util + 1.0-SNAPSHOT + + + org.opendaylight.controller + sal-core-spi + 1.0-SNAPSHOT + + + org.slf4j + slf4j-api + + + com.google.guava + guava + jar + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-common-util/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-common-util/pom.xml index b8be514c02..fedd6d12f0 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-common-util/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-common-util/pom.xml @@ -1,24 +1,23 @@ - 4.0.0 - - org.opendaylight.controller - sal - 1.0-SNAPSHOT - - sal-common-util + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + org.opendaylight.controller + sal + 1.0-SNAPSHOT + + sal-common-util - - - org.opendaylight.controller - yang-common - 1.0 - - - org.opendaylight.controller - sal-common - 1.0-SNAPSHOT - - + + + org.opendaylight.controller + yang-common + + + org.opendaylight.controller + sal-common + 1.0-SNAPSHOT + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-common/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-common/pom.xml index a144b542da..89cf5207ed 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-common/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-common/pom.xml @@ -1,14 +1,14 @@ - 4.0.0 - - org.opendaylight.controller - sal - 1.0-SNAPSHOT - - sal-common + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + org.opendaylight.controller + sal + 1.0-SNAPSHOT + + sal-common - - + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-core-api/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-core-api/pom.xml index 7ced1746fc..e82392d24a 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-core-api/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-core-api/pom.xml @@ -1,29 +1,27 @@ - 4.0.0 - - org.opendaylight.controller - sal - 1.0-SNAPSHOT - - sal-core-api + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + org.opendaylight.controller + sal + 1.0-SNAPSHOT + + sal-core-api - - - org.opendaylight.controller - sal-common - 1.0-SNAPSHOT - + + + org.opendaylight.controller + sal-common + 1.0-SNAPSHOT + - - org.opendaylight.controller - yang-data-api - 1.0 - - - org.opendaylight.controller - yang-model-api - 1.0 - - + + org.opendaylight.controller + yang-data-api + + + org.opendaylight.controller + yang-model-api + + \ No newline at end of file diff --git a/opendaylight/sal/yang-prototype/sal/sal-core-demo/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-core-demo/pom.xml index a162f52d69..96af32bc7a 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-core-demo/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-core-demo/pom.xml @@ -18,7 +18,6 @@ org.opendaylight.controller yang-data-util - 1.0 org.slf4j diff --git a/opendaylight/sal/yang-prototype/sal/sal-schema-repository-api/pom.xml b/opendaylight/sal/yang-prototype/sal/sal-schema-repository-api/pom.xml index db0ee84c47..b67529ac35 100644 --- a/opendaylight/sal/yang-prototype/sal/sal-schema-repository-api/pom.xml +++ b/opendaylight/sal/yang-prototype/sal/sal-schema-repository-api/pom.xml @@ -10,7 +10,6 @@ org.opendaylight.controller yang-model-api - 1.0 \ No newline at end of file -- 2.36.6