From: Tony Tkacik Date: Mon, 12 May 2014 16:35:07 +0000 (+0000) Subject: Merge "BUG-704 Remove pax from netconf identity-ref test." X-Git-Tag: autorelease-tag-v20140601202136_82eb3f9~99 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=1c79202684429691381362a27303514f8d2cb59f;hp=4218bb8a11a2b6d095ef5af2efff402ca34a8fff Merge "BUG-704 Remove pax from netconf identity-ref test." --- diff --git a/opendaylight/appauth/pom.xml b/opendaylight/appauth/pom.xml index f07c855877..e74e3cb915 100644 --- a/opendaylight/appauth/pom.xml +++ b/opendaylight/appauth/pom.xml @@ -35,7 +35,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true @@ -48,7 +47,6 @@ org.apache.felix.dm, org.opendaylight.controller.appauth, org.opendaylight.controller.appauth.authorization - diff --git a/opendaylight/arphandler/pom.xml b/opendaylight/arphandler/pom.xml index 8d62c1da4b..064d04c25c 100644 --- a/opendaylight/arphandler/pom.xml +++ b/opendaylight/arphandler/pom.xml @@ -50,7 +50,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/clustering/services/pom.xml b/opendaylight/clustering/services/pom.xml index 3806421df8..3ff6bac21f 100644 --- a/opendaylight/clustering/services/pom.xml +++ b/opendaylight/clustering/services/pom.xml @@ -24,7 +24,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java index 32c3d08c91..e030142016 100644 --- a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java +++ b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheConfigException.java @@ -24,6 +24,7 @@ package org.opendaylight.controller.clustering.services; * passed and so on. */ public class CacheConfigException extends Exception { + private static final long serialVersionUID = 1L; /** * Instantiates a new cache config exception. diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java index 583de7cb50..70165cce1f 100644 --- a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java +++ b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheExistException.java @@ -23,6 +23,7 @@ package org.opendaylight.controller.clustering.services; * allocated already exists */ public class CacheExistException extends Exception { + private static final long serialVersionUID = 1L; /** * Instantiates a new cache exist exception. diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java index 34ba41c5d4..996e0a0767 100644 --- a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java +++ b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/CacheListenerAddException.java @@ -21,6 +21,7 @@ package org.opendaylight.controller.clustering.services; * Listener being added fails for any reason */ public class CacheListenerAddException extends Exception { + private static final long serialVersionUID = 1L; /** * Instantiates a new cache listener add exception. diff --git a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java index 523a1340c5..dd2585b17e 100644 --- a/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java +++ b/opendaylight/clustering/services/src/main/java/org/opendaylight/controller/clustering/services/ListenRoleChangeAddException.java @@ -20,7 +20,9 @@ package org.opendaylight.controller.clustering.services; * @deprecated for internal use * The Class ListenRoleChangeAddException. */ +@Deprecated public class ListenRoleChangeAddException extends Exception { + private static final long serialVersionUID = 1L; /** * Instantiates a new listen role change add exception. diff --git a/opendaylight/clustering/services_implementation/pom.xml b/opendaylight/clustering/services_implementation/pom.xml index 4acfae0d29..8d3f53b6c4 100644 --- a/opendaylight/clustering/services_implementation/pom.xml +++ b/opendaylight/clustering/services_implementation/pom.xml @@ -63,7 +63,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true @@ -75,9 +74,8 @@ !org.hornetq.*, !org.jboss.*, javax.transaction, - *, org.opendaylight.controller.clustering.services, - org.opendaylight.controller.sal.core + org.opendaylight.controller.sal.core,* org.opendaylight.controller.clustering.services_implementation.internal.Activator diff --git a/opendaylight/clustering/stub/pom.xml b/opendaylight/clustering/stub/pom.xml index 7a0c1378b6..6a0b3082fb 100644 --- a/opendaylight/clustering/stub/pom.xml +++ b/opendaylight/clustering/stub/pom.xml @@ -31,7 +31,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/clustering/test/pom.xml b/opendaylight/clustering/test/pom.xml index 02a231b78c..9021c9419e 100644 --- a/opendaylight/clustering/test/pom.xml +++ b/opendaylight/clustering/test/pom.xml @@ -60,7 +60,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java index 076ec05e32..51f8128382 100644 --- a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java +++ b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass.java @@ -12,6 +12,7 @@ package org.opendaylight.controller.clustering.test.internal; import java.io.Serializable; public class ComplexClass implements IComplex, Serializable { + private static final long serialVersionUID = 1L; private String identity; public ComplexClass(String i) { diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java index fda2ff10aa..876fb656ac 100644 --- a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java +++ b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexClass1.java @@ -12,6 +12,7 @@ package org.opendaylight.controller.clustering.test.internal; import java.io.Serializable; public class ComplexClass1 implements IComplex, Serializable { + private static final long serialVersionUID = 1L; private String identity; public ComplexClass1(String i) { diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java index adc062d4c4..d07c192241 100644 --- a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java +++ b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/ComplexContainer.java @@ -12,9 +12,10 @@ package org.opendaylight.controller.clustering.test.internal; import java.io.Serializable; public class ComplexContainer implements Serializable { - private IComplex f; - private IComplex f1; - private Integer state; + private static final long serialVersionUID = 1L; + private final IComplex f; + private final IComplex f1; + private final Integer state; public ComplexContainer(String i, Integer s) { this.state = s; diff --git a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java index 39ef1b0e29..7cdb032988 100644 --- a/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java +++ b/opendaylight/clustering/test/src/main/java/org/opendaylight/controller/clustering/test/internal/StringContainer.java @@ -12,6 +12,7 @@ package org.opendaylight.controller.clustering.test.internal; import java.io.Serializable; public class StringContainer implements Serializable { + private static final long serialVersionUID = 1L; private String mystring; public StringContainer() { diff --git a/opendaylight/commons/concepts/pom.xml b/opendaylight/commons/concepts/pom.xml index de263cb41f..01dd61a1cb 100644 --- a/opendaylight/commons/concepts/pom.xml +++ b/opendaylight/commons/concepts/pom.xml @@ -23,7 +23,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/commons/httpclient/pom.xml b/opendaylight/commons/httpclient/pom.xml index f068fded4e..07d3cdda96 100644 --- a/opendaylight/commons/httpclient/pom.xml +++ b/opendaylight/commons/httpclient/pom.xml @@ -38,7 +38,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/commons/opendaylight/pom.xml b/opendaylight/commons/opendaylight/pom.xml index 4c545d94c8..aaab66d4b0 100644 --- a/opendaylight/commons/opendaylight/pom.xml +++ b/opendaylight/commons/opendaylight/pom.xml @@ -22,7 +22,7 @@ 4.1 1.50 - 2.3.7 + 2.4.0 0.4.2-SNAPSHOT 2.10 0.5.1-SNAPSHOT @@ -1773,16 +1773,16 @@ enunciate.xml - - org.opendaylight.controller - commons.logback_settings - 0.0.2-SNAPSHOT - org.codehaus.enunciate enunciate-swagger ${enunciate.version} + + org.opendaylight.controller + commons.logback_settings + 0.0.2-SNAPSHOT + diff --git a/opendaylight/config/pom.xml b/opendaylight/config/pom.xml index 9e0aef35f4..613940144b 100644 --- a/opendaylight/config/pom.xml +++ b/opendaylight/config/pom.xml @@ -163,7 +163,6 @@ org.jacoco jacoco-maven-plugin - ${jacoco.version} diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/ConcreteModuleGeneratedObjectFactory.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/ConcreteModuleGeneratedObjectFactory.java index fbc507d0b4..051b1a7f5b 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/ConcreteModuleGeneratedObjectFactory.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/gofactory/ConcreteModuleGeneratedObjectFactory.java @@ -1,7 +1,7 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.gofactory; -import com.google.common.base.Joiner; -import com.google.common.base.Optional; +import java.util.LinkedHashMap; + import org.opendaylight.controller.config.api.DependencyResolver; import org.opendaylight.controller.config.api.ModuleIdentifier; import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry; @@ -11,7 +11,8 @@ import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.Generated import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.JavaFileInputBuilder; import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.TypeName; -import java.util.LinkedHashMap; +import com.google.common.base.Joiner; +import com.google.common.base.Optional; public class ConcreteModuleGeneratedObjectFactory { @@ -46,12 +47,10 @@ public class ConcreteModuleGeneratedObjectFactory { } private static String getNewCtor(FullyQualifiedName fqn) { - LinkedHashMap parameters = new LinkedHashMap(){ - { - put(ModuleIdentifier.class.getCanonicalName(), "identifier"); - put(DependencyResolver.class.getCanonicalName(), "dependencyResolver"); - } - }; + LinkedHashMap parameters = new LinkedHashMap<>(); + parameters.put(ModuleIdentifier.class.getCanonicalName(), "identifier"); + parameters.put(DependencyResolver.class.getCanonicalName(), "dependencyResolver"); + StringBuilder stringBuilder = getCtor(fqn, parameters); return stringBuilder.toString(); } @@ -72,14 +71,11 @@ public class ConcreteModuleGeneratedObjectFactory { } private static String getCopyCtor(final FullyQualifiedName fqn) { - LinkedHashMap parameters = new LinkedHashMap(){ - { - put(ModuleIdentifier.class.getCanonicalName(), "identifier"); - put(DependencyResolver.class.getCanonicalName(), "dependencyResolver"); - put(fqn.toString(), "oldModule"); - put(AutoCloseable.class.getCanonicalName(), "oldInstance"); - } - }; + LinkedHashMap parameters = new LinkedHashMap<>(); + parameters.put(ModuleIdentifier.class.getCanonicalName(), "identifier"); + parameters.put(DependencyResolver.class.getCanonicalName(), "dependencyResolver"); + parameters.put(fqn.toString(), "oldModule"); + parameters.put(AutoCloseable.class.getCanonicalName(), "oldInstance"); StringBuilder stringBuilder = getCtor(fqn, parameters); return stringBuilder.toString(); } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtil.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtil.java index 265aea10c5..bcc55a203e 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtil.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtil.java @@ -4,14 +4,11 @@ import com.google.common.base.Joiner; import com.google.common.base.Optional; import com.google.common.base.Splitter; import com.google.common.base.Strings; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.FullyQualifiedName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.io.InputStream; import java.util.List; import java.util.regex.Pattern; @@ -61,13 +58,18 @@ public class StringUtil { public static Optional loadCopyright() { - try (InputStream in = StringUtil.class.getResourceAsStream("/copyright.txt")) { - if (in != null) { - return Optional.of(IOUtils.toString(in)); + /* + * FIXME: BUG-980: this is a nice feature, but the copyright needs to come + * from the project being processed, not this one. + try (InputStream in = StringUtil.class.getResourceAsStream("/copyright.txt")) { + if (in != null) { + return Optional.of(IOUtils.toString(in)); + } + } catch (IOException e) { + logger.warn("Cannot load copyright.txt", e); } - } catch (IOException e) { - logger.warn("Cannot load copyright.txt", e); - } + + */ return Optional.absent(); } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/resources/copyright.txt b/opendaylight/config/yang-jmx-generator-plugin/src/main/resources/copyright.txt deleted file mode 100644 index 4a0c355685..0000000000 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/resources/copyright.txt +++ /dev/null @@ -1,5 +0,0 @@ -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 diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtilTest.java b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtilTest.java index b0217a4ba9..1ad0207c2b 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtilTest.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/test/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtilTest.java @@ -1,5 +1,6 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.util; +import org.junit.Ignore; import org.junit.Test; import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.FullyQualifiedName; @@ -24,6 +25,7 @@ public class StringUtilTest { } @Test + @Ignore public void testCopyright() throws IOException { assertTrue(StringUtil.loadCopyright().isPresent()); } diff --git a/opendaylight/configuration/api/pom.xml b/opendaylight/configuration/api/pom.xml index 992e4b08d1..ef27bfd5e4 100644 --- a/opendaylight/configuration/api/pom.xml +++ b/opendaylight/configuration/api/pom.xml @@ -23,7 +23,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/configuration/implementation/pom.xml b/opendaylight/configuration/implementation/pom.xml index b6d2229121..a4a7ba6746 100644 --- a/opendaylight/configuration/implementation/pom.xml +++ b/opendaylight/configuration/implementation/pom.xml @@ -35,7 +35,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/connectionmanager/api/pom.xml b/opendaylight/connectionmanager/api/pom.xml index b3a427a8f7..c4ced042d0 100644 --- a/opendaylight/connectionmanager/api/pom.xml +++ b/opendaylight/connectionmanager/api/pom.xml @@ -27,7 +27,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/connectionmanager/implementation/pom.xml b/opendaylight/connectionmanager/implementation/pom.xml index 5adcc89ee8..8be119d507 100644 --- a/opendaylight/connectionmanager/implementation/pom.xml +++ b/opendaylight/connectionmanager/implementation/pom.xml @@ -39,7 +39,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/containermanager/api/pom.xml b/opendaylight/containermanager/api/pom.xml index 5bfededfe5..a19e27189a 100644 --- a/opendaylight/containermanager/api/pom.xml +++ b/opendaylight/containermanager/api/pom.xml @@ -27,7 +27,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/containermanager/implementation/pom.xml b/opendaylight/containermanager/implementation/pom.xml index b7b9e0abda..3ead8be65a 100644 --- a/opendaylight/containermanager/implementation/pom.xml +++ b/opendaylight/containermanager/implementation/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/containermanager/it.implementation/pom.xml b/opendaylight/containermanager/it.implementation/pom.xml index 2727f77d90..a3f140d7e1 100644 --- a/opendaylight/containermanager/it.implementation/pom.xml +++ b/opendaylight/containermanager/it.implementation/pom.xml @@ -35,7 +35,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/distribution/opendaylight/pom.xml b/opendaylight/distribution/opendaylight/pom.xml index 221866fdd9..72ce89d14e 100644 --- a/opendaylight/distribution/opendaylight/pom.xml +++ b/opendaylight/distribution/opendaylight/pom.xml @@ -1103,17 +1103,14 @@ org.opendaylight.yangtools binding-generator-impl - ${yangtools.version} org.opendaylight.yangtools binding-generator-spi - ${yangtools.version} org.opendaylight.yangtools binding-generator-util - ${yangtools.version} org.opendaylight.yangtools @@ -1123,7 +1120,6 @@ org.opendaylight.yangtools binding-type-provider - ${yangtools.version} org.opendaylight.yangtools @@ -1169,12 +1165,10 @@ org.opendaylight.yangtools yang-parser-api - ${yangtools.version} org.opendaylight.yangtools yang-parser-impl - ${yangtools.version} diff --git a/opendaylight/distribution/sanitytest/pom.xml b/opendaylight/distribution/sanitytest/pom.xml index 893776c567..793e835647 100644 --- a/opendaylight/distribution/sanitytest/pom.xml +++ b/opendaylight/distribution/sanitytest/pom.xml @@ -23,7 +23,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/dummy-console/pom.xml b/opendaylight/dummy-console/pom.xml index 68921ab79f..6d90eb39da 100644 --- a/opendaylight/dummy-console/pom.xml +++ b/opendaylight/dummy-console/pom.xml @@ -22,7 +22,6 @@ * org.eclipse.osgi.framework.console - diff --git a/opendaylight/forwarding/staticrouting/pom.xml b/opendaylight/forwarding/staticrouting/pom.xml index 6a73a21e73..37c0a3a09d 100644 --- a/opendaylight/forwarding/staticrouting/pom.xml +++ b/opendaylight/forwarding/staticrouting/pom.xml @@ -39,7 +39,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/forwardingrulesmanager/api/pom.xml b/opendaylight/forwardingrulesmanager/api/pom.xml index 82f5f9b9e9..b6e1dd68d1 100644 --- a/opendaylight/forwardingrulesmanager/api/pom.xml +++ b/opendaylight/forwardingrulesmanager/api/pom.xml @@ -35,7 +35,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/forwardingrulesmanager/implementation/pom.xml b/opendaylight/forwardingrulesmanager/implementation/pom.xml index a5a15f685c..f87bed8780 100644 --- a/opendaylight/forwardingrulesmanager/implementation/pom.xml +++ b/opendaylight/forwardingrulesmanager/implementation/pom.xml @@ -55,7 +55,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/hosttracker/api/pom.xml b/opendaylight/hosttracker/api/pom.xml index d8f31ca65a..b48d7abd72 100644 --- a/opendaylight/hosttracker/api/pom.xml +++ b/opendaylight/hosttracker/api/pom.xml @@ -26,7 +26,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/hosttracker/implementation/pom.xml b/opendaylight/hosttracker/implementation/pom.xml index 9da62bdfe7..cb09322b64 100644 --- a/opendaylight/hosttracker/implementation/pom.xml +++ b/opendaylight/hosttracker/implementation/pom.xml @@ -58,7 +58,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/hosttracker_new/api/pom.xml b/opendaylight/hosttracker_new/api/pom.xml index 1dec4e5574..240976b9c8 100644 --- a/opendaylight/hosttracker_new/api/pom.xml +++ b/opendaylight/hosttracker_new/api/pom.xml @@ -38,7 +38,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/hosttracker_new/implementation/pom.xml b/opendaylight/hosttracker_new/implementation/pom.xml index aaaf3abacf..036dd5dd31 100644 --- a/opendaylight/hosttracker_new/implementation/pom.xml +++ b/opendaylight/hosttracker_new/implementation/pom.xml @@ -62,7 +62,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/logging/bridge/pom.xml b/opendaylight/logging/bridge/pom.xml index 26fd11c5ef..82bc6cd9c1 100644 --- a/opendaylight/logging/bridge/pom.xml +++ b/opendaylight/logging/bridge/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java index d434444d0a..c4c1ee9351 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java @@ -178,7 +178,7 @@ public final class NodeMapping { nodeConnectorId = new NodeConnectorId(Arguments.checkInstanceOf(nodeConnector.getID(), String.class)); } final NodeConnectorKey connectorKey = new NodeConnectorKey(nodeConnectorId); - final InstanceIdentifier path = InstanceIdentifier.builder(nodePath).child(NODECONNECTOR_CLASS, connectorKey).toInstance(); + final InstanceIdentifier path = nodePath.child(NODECONNECTOR_CLASS, connectorKey); return new NodeConnectorRef(path); } diff --git a/opendaylight/md-sal/pom.xml b/opendaylight/md-sal/pom.xml index edc9bf0f22..a13d2bb06f 100644 --- a/opendaylight/md-sal/pom.xml +++ b/opendaylight/md-sal/pom.xml @@ -161,7 +161,6 @@ org.opendaylight.yangtools yang-maven-plugin - ${yangtools.version} org.opendaylight.controller diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java index fa48416484..2a866a94b3 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/AbstractForwardedDataBroker.java @@ -96,8 +96,12 @@ public abstract class AbstractForwardedDataBroker implements Delegator> entry : normalized .entrySet()) { try { - Entry, DataObject> binding = getCodec().toBinding(entry); - newMap.put(binding.getKey(), binding.getValue()); + Optional, DataObject>> potential = getCodec().toBinding( + entry); + if (potential.isPresent()) { + Entry, DataObject> binding = potential.get(); + newMap.put(binding.getKey(), binding.getValue()); + } } catch (DeserializationException e) { LOG.warn("Failed to transform {}, omitting it", entry, e); } @@ -110,8 +114,11 @@ public abstract class AbstractForwardedDataBroker implements Delegator> hashSet = new HashSet<>(); for (org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalizedPath : normalized) { try { - InstanceIdentifier binding = getCodec().toBinding(normalizedPath); - hashSet.add(binding); + Optional> potential = getCodec().toBinding(normalizedPath); + if (potential.isPresent()) { + InstanceIdentifier binding = potential.get(); + hashSet.add(binding); + } } catch (DeserializationException e) { LOG.warn("Failed to transform {}, omitting it", normalizedPath, e); } @@ -120,7 +127,7 @@ public abstract class AbstractForwardedDataBroker implements Delegator toBindingData(final InstanceIdentifier path, final NormalizedNode data) { - if(path.isWildcarded()) { + if (path.isWildcarded()) { return Optional.absent(); } @@ -207,7 +214,11 @@ public abstract class AbstractForwardedDataBroker implements Delegator binding) { - // Used instance-identifier codec do not support serialization of last path + // Used instance-identifier codec do not support serialization of last + // path // argument if it is Augmentation (behaviour expected by old datastore) // in this case, we explicitly check if last argument is augmentation // to process it separately @@ -103,13 +106,24 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { } - public InstanceIdentifier toBinding( + /** + * + * Returns a Binding-Aware instance identifier from normalized + * instance-identifier if it is possible to create representation. + * + * Returns Optional.absent for cases where target is mixin node except + * augmentation. + * + */ + public Optional> toBinding( final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized) throws DeserializationException { PathArgument lastArgument = Iterables.getLast(normalized.getPath()); - // Used instance-identifier codec do not support serialization of last path - // argument if it is AugmentationIdentifier (behaviour expected by old datastore) + // Used instance-identifier codec do not support serialization of last + // path + // argument if it is AugmentationIdentifier (behaviour expected by old + // datastore) // in this case, we explicitly check if last argument is augmentation // to process it separately if (lastArgument instanceof AugmentationIdentifier) { @@ -118,46 +132,71 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { return toBindingImpl(normalized); } - private InstanceIdentifier toBindingAugmented( - final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized) throws DeserializationException { - InstanceIdentifier potential = toBindingImpl(normalized); + private Optional> toBindingAugmented( + final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized) + throws DeserializationException { + Optional> potential = toBindingImpl(normalized); // Shorthand check, if codec already supports deserialization // of AugmentationIdentifier we will return - if(isAugmentationIdentifier(potential)) { + if (potential.isPresent() && isAugmentationIdentifier(potential.get())) { return potential; } AugmentationIdentifier lastArgument = (AugmentationIdentifier) Iterables.getLast(normalized.getPath()); - // Here we employ small trick - Binding-aware Codec injects an pointer to augmentation class - // if child is referenced - so we will reference child and then shorten path. + // Here we employ small trick - Binding-aware Codec injects an pointer + // to augmentation class + // if child is referenced - so we will reference child and then shorten + // path. for (QName child : lastArgument.getPossibleChildNames()) { org.opendaylight.yangtools.yang.data.api.InstanceIdentifier childPath = new org.opendaylight.yangtools.yang.data.api.InstanceIdentifier( - ImmutableList. builder() - .addAll(normalized.getPath()).add(new NodeIdentifier(child)).build()); + ImmutableList. builder().addAll(normalized.getPath()).add(new NodeIdentifier(child)) + .build()); try { - - InstanceIdentifier potentialPath = shortenToLastAugment(toBindingImpl(childPath)); - return potentialPath; + if (!isChoiceOrCasePath(childPath)) { + InstanceIdentifier potentialPath = shortenToLastAugment(toBindingImpl( + childPath).get()); + return Optional.> of(potentialPath); + } } catch (Exception e) { - LOG.trace("Unable to deserialize aug. child path for {}",childPath,e); + LOG.trace("Unable to deserialize aug. child path for {}", childPath, e); } } return toBindingImpl(normalized); } - private InstanceIdentifier toBindingImpl( + private Optional> toBindingImpl( final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized) throws DeserializationException { org.opendaylight.yangtools.yang.data.api.InstanceIdentifier legacyPath; + try { + if (isChoiceOrCasePath(normalized)) { + return Optional.absent(); + } legacyPath = legacyToNormalized.toLegacy(normalized); } catch (DataNormalizationException e) { throw new IllegalStateException("Could not denormalize path.", e); } LOG.trace("InstanceIdentifier Path Deserialization: Legacy representation {}, Normalized representation: {}", legacyPath, normalized); - return bindingToLegacy.fromDataDom(legacyPath); + return Optional.> of(bindingToLegacy.fromDataDom(legacyPath)); + } + + private boolean isChoiceOrCasePath(final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized) + throws DataNormalizationException { + DataNormalizationOperation op = findNormalizationOperation(normalized); + return op.isMixin() && op.getIdentifier() instanceof NodeIdentifier; + } + + private DataNormalizationOperation findNormalizationOperation( + final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized) + throws DataNormalizationException { + DataNormalizationOperation current = legacyToNormalized.getRootOperation(); + for (PathArgument arg : normalized.getPath()) { + current = current.getChild(arg); + } + return current; } private static final Entry, DataObject> toEntry( @@ -170,7 +209,7 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { public DataObject toBinding(final InstanceIdentifier path, final NormalizedNode normalizedNode) throws DeserializationException { CompositeNode legacy = null; - if(isAugmentationIdentifier(path) && normalizedNode instanceof AugmentationNode) { + if (isAugmentationIdentifier(path) && normalizedNode instanceof AugmentationNode) { QName augIdentifier = BindingReflections.findQName(path.getTargetType()); ContainerNode virtualNode = Builders.containerBuilder() // .withNodeIdentifier(new NodeIdentifier(augIdentifier)) // @@ -188,12 +227,20 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { return legacyToNormalized; } - public Entry, DataObject> toBinding( + public Optional, DataObject>> toBinding( final Entry> normalized) throws DeserializationException { - InstanceIdentifier bindingPath = toBinding(normalized.getKey()); - DataObject bindingData = toBinding(bindingPath, normalized.getValue()); - return toEntry(bindingPath, bindingData); + Optional> potentialPath = toBinding(normalized.getKey()); + if (potentialPath.isPresent()) { + InstanceIdentifier bindingPath = potentialPath.get(); + DataObject bindingData = toBinding(bindingPath, normalized.getValue()); + if (bindingData == null) { + LOG.warn("Failed to deserialize {} to Binding format. Binding path is: {}", normalized, bindingPath); + } + return Optional.of(toEntry(bindingPath, bindingData)); + } else { + return Optional.absent(); + } } @Override @@ -206,14 +253,17 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { org.opendaylight.yangtools.yang.data.api.InstanceIdentifier processed = toNormalizedImpl(augPath); // If used instance identifier codec added supports for deserialization // of last AugmentationIdentifier we will just reuse it - if(isAugmentationIdentifier(processed)) { + if (isAugmentationIdentifier(processed)) { return processed; } - // Here we employ small trick - DataNormalizer injecst augmentation identifier if child is - // also part of the path (since using a child we can safely identify augmentation) + // Here we employ small trick - DataNormalizer injecst augmentation + // identifier if child is + // also part of the path (since using a child we can safely identify + // augmentation) // so, we scan augmentation for children add it to path // and use original algorithm, then shorten it to last augmentation - for (@SuppressWarnings("rawtypes") Class augChild : getAugmentationChildren(augPath.getTargetType())) { + for (@SuppressWarnings("rawtypes") + Class augChild : getAugmentationChildren(augPath.getTargetType())) { @SuppressWarnings("unchecked") InstanceIdentifier childPath = augPath.child(augChild); org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized = toNormalizedImpl(childPath); @@ -225,8 +275,6 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { return processed; } - - private org.opendaylight.yangtools.yang.data.api.InstanceIdentifier shortenToLastAugmentation( final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier normalized) { int position = 0; @@ -248,7 +296,7 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { final InstanceIdentifier binding) { int position = 0; int foundPosition = -1; - for(org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument arg : binding.getPathArguments()) { + for (org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument arg : binding.getPathArguments()) { position++; if (isAugmentation(arg.getType())) { foundPosition = position; @@ -257,8 +305,6 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { return InstanceIdentifier.create(Iterables.limit(binding.getPathArguments(), foundPosition)); } - - private org.opendaylight.yangtools.yang.data.api.InstanceIdentifier toNormalizedImpl( final InstanceIdentifier binding) { final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier legacyPath = bindingToLegacy @@ -326,13 +372,12 @@ public class BindingToNormalizedNodeCodec implements SchemaContextListener { return InstanceIdentifier.create(wildArgs); } - private static boolean isAugmentation(final Class type) { return Augmentation.class.isAssignableFrom(type); } - private static boolean isAugmentationIdentifier(final InstanceIdentifier path) { - return Augmentation.class.isAssignableFrom(path.getTargetType()); + private static boolean isAugmentationIdentifier(final InstanceIdentifier potential) { + return Augmentation.class.isAssignableFrom(potential.getTargetType()); } private boolean isAugmentationIdentifier(final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier processed) { diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/SingletonHolder.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/SingletonHolder.java index cf754cc74e..8276446766 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/SingletonHolder.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/codegen/impl/SingletonHolder.java @@ -7,9 +7,6 @@ */ package org.opendaylight.controller.sal.binding.codegen.impl; -import com.google.common.util.concurrent.ListeningExecutorService; -import com.google.common.util.concurrent.MoreExecutors; -import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -18,13 +15,19 @@ import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; + import javassist.ClassPool; + import org.apache.commons.lang3.StringUtils; import org.opendaylight.controller.sal.binding.codegen.RuntimeCodeGenerator; import org.opendaylight.controller.sal.binding.spi.NotificationInvokerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.ThreadFactoryBuilder; + public class SingletonHolder { private static final Logger logger = LoggerFactory.getLogger(SingletonHolder.class); @@ -69,6 +72,8 @@ public class SingletonHolder { // occurs in RejectedExecutionHandler. // This impl saturates threadpool first, then queue. When both are full caller will get blocked. BlockingQueue queue = new LinkedBlockingQueue(queueSize) { + private static final long serialVersionUID = 1L; + @Override public boolean offer(Runnable r) { // ThreadPoolExecutor will spawn a new thread after core size is reached only if the queue.offer returns false. diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/MultipleAugmentationPuts.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/MultipleAugmentationPuts.java index b147e03d56..6b2568aba7 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/MultipleAugmentationPuts.java +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/MultipleAugmentationPuts.java @@ -61,9 +61,8 @@ public class MultipleAugmentationPuts extends AbstractDataServiceTest implements private static final InstanceIdentifier NODES_INSTANCE_ID_BA = InstanceIdentifier.builder(Nodes.class) // .toInstance(); - private static final InstanceIdentifier NODE_INSTANCE_ID_BA = InstanceIdentifier - .builder(NODES_INSTANCE_ID_BA) // - .child(Node.class, NODE_KEY).toInstance(); + private static final InstanceIdentifier NODE_INSTANCE_ID_BA = + NODES_INSTANCE_ID_BA.child(Node.class, NODE_KEY); private static final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier NODE_INSTANCE_ID_BI = // org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.builder() // @@ -74,7 +73,7 @@ public class MultipleAugmentationPuts extends AbstractDataServiceTest implements /** * Test for Bug 148 - * + * * @throws Exception */ @Test @@ -111,12 +110,12 @@ public class MultipleAugmentationPuts extends AbstractDataServiceTest implements // Node meterStatsNodeWithDuration = createTestNode(NodeMeterStatistics.class, nodeMeterStatistics(5, true)); // commitNodeAndVerifyTransaction(meterStatsNodeWithDuration); // -// +// // Node nodeWithUpdatedList = (Node) baDataService.readOperationalData(NODE_INSTANCE_ID_BA); // AugmentationVerifier.from(nodeWithUpdatedList) // // .assertHasAugmentation(FlowCapableNode.class) // // .assertHasAugmentation(NodeMeterStatistics.class); -// +// // List meterStats = nodeWithUpdatedList.getAugmentation(NodeMeterStatistics.class).getMeterStatistics().getMeterStats(); // assertNotNull(meterStats); // assertFalse(meterStats.isEmpty()); diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ConcurrentImplicitCreateTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ConcurrentImplicitCreateTest.java index 61a73d63f4..c5dbdcecae 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ConcurrentImplicitCreateTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ConcurrentImplicitCreateTest.java @@ -30,10 +30,8 @@ public class ConcurrentImplicitCreateTest extends AbstractDataServiceTest { private static final NodeKey NODE_FOO_KEY = new NodeKey(new NodeId("foo")); private static final NodeKey NODE_BAR_KEY = new NodeKey(new NodeId("foo")); private static InstanceIdentifier NODES_PATH = InstanceIdentifier.builder(Nodes.class).build(); - private static InstanceIdentifier NODE_FOO_PATH = InstanceIdentifier.builder(NODES_PATH) - .child(Node.class, NODE_FOO_KEY).build(); - private static InstanceIdentifier NODE_BAR_PATH = InstanceIdentifier.builder(NODES_PATH) - .child(Node.class, NODE_FOO_KEY).build(); + private static InstanceIdentifier NODE_FOO_PATH = NODES_PATH.child(Node.class, NODE_FOO_KEY); + private static InstanceIdentifier NODE_BAR_PATH = NODES_PATH.child(Node.class, NODE_FOO_KEY); @Test public void testConcurrentCreate() throws InterruptedException, ExecutionException { diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ListProcessingAndOrderingTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ListProcessingAndOrderingTest.java index 0925e9bff4..800c1b4cc4 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ListProcessingAndOrderingTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/ListProcessingAndOrderingTest.java @@ -75,13 +75,13 @@ public class ListProcessingAndOrderingTest extends AbstractDataServiceTest { private static final UnorderedListKey UNORDERED_FOO_KEY = new UnorderedListKey("foo"); private static final UnorderedListKey UNORDERED_BAR_KEY = new UnorderedListKey("bar"); - private static final InstanceIdentifier UNORDERED_FOO_PATH = InstanceIdentifier.builder(UNORDERED_CONTAINER_PATH).child(UnorderedList.class,UNORDERED_FOO_KEY).build(); - private static final InstanceIdentifier UNORDERED_BAR_PATH = InstanceIdentifier.builder(UNORDERED_CONTAINER_PATH).child(UnorderedList.class,UNORDERED_BAR_KEY).build(); + private static final InstanceIdentifier UNORDERED_FOO_PATH = UNORDERED_CONTAINER_PATH.child(UnorderedList.class,UNORDERED_FOO_KEY); + private static final InstanceIdentifier UNORDERED_BAR_PATH = UNORDERED_CONTAINER_PATH.child(UnorderedList.class,UNORDERED_BAR_KEY); private static final OrderedListKey ORDERED_FOO_KEY = new OrderedListKey("foo"); private static final OrderedListKey ORDERED_BAR_KEY = new OrderedListKey("bar"); - private static final InstanceIdentifier ORDERED_FOO_PATH = InstanceIdentifier.builder(ORDERED_CONTAINER_PATH).child(OrderedList.class,ORDERED_FOO_KEY).build(); - private static final InstanceIdentifier ORDERED_BAR_PATH = InstanceIdentifier.builder(ORDERED_CONTAINER_PATH).child(OrderedList.class,ORDERED_BAR_KEY).build(); + private static final InstanceIdentifier ORDERED_FOO_PATH = ORDERED_CONTAINER_PATH.child(OrderedList.class,ORDERED_FOO_KEY); + private static final InstanceIdentifier ORDERED_BAR_PATH = ORDERED_CONTAINER_PATH.child(OrderedList.class,ORDERED_BAR_KEY); @Test diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/WildcardedDataChangeListenerTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/WildcardedDataChangeListenerTest.java index 450ca1cb3b..6b4cc57798 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/WildcardedDataChangeListenerTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/md/sal/binding/data/WildcardedDataChangeListenerTest.java @@ -78,14 +78,12 @@ public class WildcardedDataChangeListenerTest extends AbstractDataServiceTest { private static final FlowKey FLOW_KEY = new FlowKey(new FlowId("test")); - private static final InstanceIdentifier NODE_0_FLOW_PATH = InstanceIdentifier.builder(NODE_0_TABLE_PATH) - .child(Flow.class, FLOW_KEY).build(); + private static final InstanceIdentifier NODE_0_FLOW_PATH = NODE_0_TABLE_PATH.child(Flow.class, FLOW_KEY); - private static final InstanceIdentifier NODE_1_FLOW_PATH = InstanceIdentifier.builder(NODE_1_TABLE_PATH) - .child(Flow.class, FLOW_KEY).build(); + private static final InstanceIdentifier NODE_1_FLOW_PATH = NODE_1_TABLE_PATH.child(Flow.class, FLOW_KEY); - private static final InstanceIdentifier NODE_0_TABLE_FEATURES_PATH = InstanceIdentifier - .builder(NODE_0_TABLE_PATH).child(TableFeatures.class, TABLE_FEATURES_KEY).build(); + private static final InstanceIdentifier NODE_0_TABLE_FEATURES_PATH = + NODE_0_TABLE_PATH.child(TableFeatures.class, TABLE_FEATURES_KEY); private static final TableFeatures TABLE_FEATURES = new TableFeaturesBuilder()// .setKey(TABLE_FEATURES_KEY) // diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/DOMCodecBug03Test.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/DOMCodecBug03Test.java index e89371337e..ccbd52fc77 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/DOMCodecBug03Test.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/DOMCodecBug03Test.java @@ -60,13 +60,11 @@ public class DOMCodecBug03Test extends AbstractDataServiceTest implements DataCh .toInstance(); - private static final InstanceIdentifier NODE_INSTANCE_ID_BA = InstanceIdentifier// - .builder(NODES_INSTANCE_ID_BA) // - .child(Node.class, NODE_KEY).toInstance(); + private static final InstanceIdentifier NODE_INSTANCE_ID_BA = NODES_INSTANCE_ID_BA.child(Node.class, NODE_KEY); - private static final InstanceIdentifier SUPPORTED_ACTIONS_INSTANCE_ID_BA = InstanceIdentifier// - .builder(NODES_INSTANCE_ID_BA) // + private static final InstanceIdentifier SUPPORTED_ACTIONS_INSTANCE_ID_BA = // + NODES_INSTANCE_ID_BA.builder() // .child(Node.class, NODE_KEY) // .augmentation(FlowCapableNode.class) // .child(SupportedActions.class) @@ -163,7 +161,7 @@ public class DOMCodecBug03Test extends AbstractDataServiceTest implements DataCh NodeConnectorId ncId = new NodeConnectorId("openflow:1:bar"); NodeConnectorKey nodeKey = new NodeConnectorKey(ncId ); - InstanceIdentifier ncInstanceId = InstanceIdentifier.builder(NODE_INSTANCE_ID_BA).child(NodeConnector.class, nodeKey).toInstance(); + InstanceIdentifier ncInstanceId = NODE_INSTANCE_ID_BA.child(NodeConnector.class, nodeKey); NodeConnectorBuilder ncBuilder = new NodeConnectorBuilder(); ncBuilder.setId(ncId); ncBuilder.setKey(nodeKey); diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/FlagsSerializationTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/FlagsSerializationTest.java index 023bd795af..30c7af705f 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/FlagsSerializationTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/FlagsSerializationTest.java @@ -7,7 +7,15 @@ */ package org.opendaylight.controller.sal.binding.test.bugfix; -import com.google.common.collect.ImmutableSet; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + import org.junit.Test; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; @@ -44,14 +52,7 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import com.google.common.collect.ImmutableSet; public class FlagsSerializationTest extends AbstractDataServiceTest { @@ -65,7 +66,7 @@ public class FlagsSerializationTest extends AbstractDataServiceTest { private static final NodeKey NODE_KEY = new NodeKey(new NodeId(NODE_ID)); private static final FlowKey FLOW_KEY = new FlowKey(new FlowId(FLOW_ID)); private static final TableKey TABLE_KEY = new TableKey(TABLE_ID); - + private static final Map NODE_KEY_BI = Collections. singletonMap(NODE_ID_QNAME, NODE_ID); @@ -83,12 +84,12 @@ public class FlagsSerializationTest extends AbstractDataServiceTest { // private static final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier FLOW_INSTANCE_ID_BI = // // org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.builder() // -// +// // .node(Flows.QNAME) // // .nodeWithKey(Flow.QNAME, FLOW_KEY_BI) // // .toInstance(); private static final InstanceIdentifier FLOW_INSTANCE_ID_BA = // - InstanceIdentifier.builder(NODE_INSTANCE_ID_BA) // + NODE_INSTANCE_ID_BA.builder() // .augmentation(FlowCapableNode.class) .child(Table.class,TABLE_KEY) .child(Flow.class, FLOW_KEY) // @@ -101,34 +102,34 @@ public class FlagsSerializationTest extends AbstractDataServiceTest { FlowModFlags checkOverlapFlags = new FlowModFlags(true,false,false,false,false); ImmutableSet domCheckOverlapFlags = ImmutableSet.of("CHECK_OVERLAP"); testFlags(checkOverlapFlags,domCheckOverlapFlags); - - - + + + FlowModFlags allFalseFlags = new FlowModFlags(false,false,false,false,false); ImmutableSet domAllFalseFlags = ImmutableSet.of(); testFlags(allFalseFlags,domAllFalseFlags); - + FlowModFlags allTrueFlags = new FlowModFlags(true,true,true,true,true); ImmutableSet domAllTrueFlags = ImmutableSet.of("CHECK_OVERLAP","NO_BYT_COUNTS", "NO_PKT_COUNTS", "RESET_COUNTS", "SEND_FLOW_REM"); testFlags(allTrueFlags,domAllTrueFlags); - + FlowModFlags nullFlags = null; ImmutableSet domNullFlags = null; testFlags(null,null); - - + + } private void testFlags(FlowModFlags flagsToTest, ImmutableSet domFlags) throws Exception { Flow flow = createFlow(flagsToTest); assertNotNull(flow); - + CompositeNode domFlow = biDataService.readConfigurationData(mappingService.toDataDom(FLOW_INSTANCE_ID_BA)); - + assertNotNull(domFlow); org.opendaylight.yangtools.yang.data.api.Node readedFlags = domFlow.getFirstSimpleByName(FLOW_FLAGS_QNAME); - + if(domFlags != null) { assertNotNull(readedFlags); assertEquals(domFlags,readedFlags.getValue()); @@ -136,12 +137,12 @@ public class FlagsSerializationTest extends AbstractDataServiceTest { assertNull(readedFlags); } assertEquals(flagsToTest, flow.getFlags()); - + DataModificationTransaction transaction = baDataService.beginTransaction(); transaction.removeConfigurationData(FLOW_INSTANCE_ID_BA); RpcResult result = transaction.commit().get(); assertEquals(TransactionStatus.COMMITED, result.getResult()); - + } private Flow createFlow(FlowModFlags flagsToTest) throws Exception { @@ -158,12 +159,12 @@ public class FlagsSerializationTest extends AbstractDataServiceTest { flow.setKey(FLOW_KEY); flow.setMatch(match.build()); - + flow.setFlags(flagsToTest); - + InstructionsBuilder instructions = new InstructionsBuilder(); InstructionBuilder instruction = new InstructionBuilder(); - + instruction.setOrder(10); ApplyActionsBuilder applyActions = new ApplyActionsBuilder(); List actionList = new ArrayList<>(); diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/PutAugmentationTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/PutAugmentationTest.java index 027a8eeb9f..7f16320814 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/PutAugmentationTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/PutAugmentationTest.java @@ -58,18 +58,18 @@ public class PutAugmentationTest extends AbstractDataServiceTest implements Data private static final InstanceIdentifier NODES_INSTANCE_ID_BA = InstanceIdentifier.builder(Nodes.class) // .toInstance(); - private static final InstanceIdentifier NODE_INSTANCE_ID_BA = InstanceIdentifier// - .builder(NODES_INSTANCE_ID_BA) // + private static final InstanceIdentifier NODE_INSTANCE_ID_BA = // + NODES_INSTANCE_ID_BA.builder() // .child(Node.class, NODE_KEY).toInstance(); - private static final InstanceIdentifier SUPPORTED_ACTIONS_INSTANCE_ID_BA = InstanceIdentifier// - .builder(NODES_INSTANCE_ID_BA) // + private static final InstanceIdentifier SUPPORTED_ACTIONS_INSTANCE_ID_BA = // + NODES_INSTANCE_ID_BA.builder() // .child(Node.class, NODE_KEY) // .augmentation(FlowCapableNode.class) // .child(SupportedActions.class).toInstance(); - private static final InstanceIdentifier ALL_FLOW_CAPABLE_NODES = InstanceIdentifier // - .builder(NODES_INSTANCE_ID_BA) // + private static final InstanceIdentifier ALL_FLOW_CAPABLE_NODES = // + NODES_INSTANCE_ID_BA.builder() // .child(Node.class) // .augmentation(FlowCapableNode.class) // .build(); @@ -88,8 +88,8 @@ public class PutAugmentationTest extends AbstractDataServiceTest implements Data .nodeWithKey(Node.QNAME, NODE_KEY_BI) // .node(SUPPORTED_ACTIONS_QNAME) // .toInstance(); - private static final InstanceIdentifier FLOW_AUGMENTATION_PATH = InstanceIdentifier // - .builder(NODE_INSTANCE_ID_BA) // + private static final InstanceIdentifier FLOW_AUGMENTATION_PATH = + NODE_INSTANCE_ID_BA.builder() // .augmentation(FlowCapableNode.class) // .build(); @@ -126,8 +126,8 @@ public class PutAugmentationTest extends AbstractDataServiceTest implements Data fnub.setDescription("Description Foo"); fnub.setSoftware("JUnit emulated"); FlowCapableNode fnu = fnub.build(); - InstanceIdentifier augmentIdentifier = InstanceIdentifier.builder(NODE_INSTANCE_ID_BA) - .augmentation(FlowCapableNode.class).toInstance(); + InstanceIdentifier augmentIdentifier = NODE_INSTANCE_ID_BA + .augmentation(FlowCapableNode.class); DataModificationTransaction augmentedTransaction = baDataService.beginTransaction(); augmentedTransaction.putOperationalData(augmentIdentifier, fnu); @@ -183,8 +183,8 @@ public class PutAugmentationTest extends AbstractDataServiceTest implements Data lastReceivedChangeEvent = SettableFuture.create(); assertEquals(TransactionStatus.COMMITED, result.getResult()); - FlowCapableNode readedAugmentation = (FlowCapableNode) baDataService.readOperationalData(InstanceIdentifier - .builder(NODE_INSTANCE_ID_BA).augmentation(FlowCapableNode.class).toInstance()); + FlowCapableNode readedAugmentation = (FlowCapableNode) baDataService.readOperationalData( + NODE_INSTANCE_ID_BA.augmentation(FlowCapableNode.class)); assertNotNull(readedAugmentation); assertEquals(fnu.getHardware(), readedAugmentation.getHardware()); @@ -198,10 +198,10 @@ public class PutAugmentationTest extends AbstractDataServiceTest implements Data private void testPutNodeConnectorWithAugmentation() throws Exception { NodeConnectorKey ncKey = new NodeConnectorKey(new NodeConnectorId("test:0:0")); - InstanceIdentifier ncPath = InstanceIdentifier.builder(NODE_INSTANCE_ID_BA) - .child(NodeConnector.class, ncKey).toInstance(); - InstanceIdentifier ncAugmentPath = InstanceIdentifier.builder(ncPath) - .augmentation(FlowCapableNodeConnector.class).toInstance(); + InstanceIdentifier ncPath = NODE_INSTANCE_ID_BA + .child(NodeConnector.class, ncKey); + InstanceIdentifier ncAugmentPath = ncPath + .augmentation(FlowCapableNodeConnector.class); NodeConnectorBuilder nc = new NodeConnectorBuilder(); nc.setKey(ncKey); diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/WriteParentReadChildTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/WriteParentReadChildTest.java index 35b4e92db4..f7b81a44e9 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/WriteParentReadChildTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/bugfix/WriteParentReadChildTest.java @@ -54,13 +54,11 @@ public class WriteParentReadChildTest extends AbstractDataServiceTest { .child(Node.class, NODE_KEY).toInstance(); private static final InstanceIdentifier TABLE_INSTANCE_ID_BA = // - InstanceIdentifier.builder(NODE_INSTANCE_ID_BA) // + NODE_INSTANCE_ID_BA.builder() // .augmentation(FlowCapableNode.class).child(Table.class, TABLE_KEY).build(); private static final InstanceIdentifier FLOW_INSTANCE_ID_BA = // - InstanceIdentifier.builder(TABLE_INSTANCE_ID_BA) // - .child(Flow.class, FLOW_KEY) // - .toInstance(); + TABLE_INSTANCE_ID_BA.child(Flow.class, FLOW_KEY); /** * * The scenario tests writing parent node, which also contains child items @@ -103,11 +101,11 @@ public class WriteParentReadChildTest extends AbstractDataServiceTest { DataObject readedTable = baDataService.readConfigurationData(TABLE_INSTANCE_ID_BA); assertNotNull("Readed table should not be nul.", readedTable); assertTrue(readedTable instanceof Table); - + DataObject readedFlow = baDataService.readConfigurationData(FLOW_INSTANCE_ID_BA); assertNotNull("Readed flow should not be null.",readedFlow); assertTrue(readedFlow instanceof Flow); assertEquals(flow, readedFlow); } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java index 1661ff230d..422b9ccee5 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java @@ -110,16 +110,14 @@ public class ChangeOriginatedInDomBrokerTest extends AbstractDataServiceTest { private static final TableKey TABLE_KEY_BA = new TableKey((short) 0); private static final InstanceIdentifier FLOWS_PATH_BA = // - InstanceIdentifier.builder(NODE_INSTANCE_ID_BA) // + NODE_INSTANCE_ID_BA.builder() // .augmentation(FlowCapableNode.class) // .child(Table.class, TABLE_KEY_BA) // .child(Flow.class) // .toInstance(); private static final InstanceIdentifier FLOW_INSTANCE_ID_BA = // - InstanceIdentifier.builder(FLOWS_PATH_BA.firstIdentifierOf(Table.class)) // - .child(Flow.class, FLOW_KEY) // - .toInstance(); + FLOWS_PATH_BA.firstIdentifierOf(Table.class).child(Flow.class, FLOW_KEY); @Test public void simpleModifyOperation() throws Exception { diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerMountPointTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerMountPointTest.java index 63094ef3cb..94570510ab 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerMountPointTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/CrossBrokerMountPointTest.java @@ -61,8 +61,8 @@ public class CrossBrokerMountPointTest { .child(Node.class, NODE_KEY).toInstance(); private static GroupKey GROUP_KEY = new GroupKey(new GroupId(0L)); - private static final InstanceIdentifier GROUP_STATISTICS_ID_BA = InstanceIdentifier - .builder(NODE_INSTANCE_ID_BA).augmentation(FlowCapableNode.class) // + private static final InstanceIdentifier GROUP_STATISTICS_ID_BA = NODE_INSTANCE_ID_BA + .builder().augmentation(FlowCapableNode.class) // .child(Group.class, GROUP_KEY) // .augmentation(NodeGroupStatistics.class) // .child(GroupStatistics.class) // diff --git a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/routing/RoutedRegistration.java b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/routing/RoutedRegistration.java index 5200c90561..6ce7b5a5c7 100644 --- a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/routing/RoutedRegistration.java +++ b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/routing/RoutedRegistration.java @@ -15,4 +15,6 @@ public interface RoutedRegistration, S> extends Registratio void registerPath(C context, P path); void unregisterPath(C context, P path); + @Override + void close(); } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java index a7952ac824..375376f383 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ChangeListenerNotifyTask.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.impl; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DOMImmutableDataChangeEvent.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DOMImmutableDataChangeEvent.java index 3dfca40b40..af479743aa 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DOMImmutableDataChangeEvent.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DOMImmutableDataChangeEvent.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.impl; import java.util.Collections; diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataAndMetadataSnapshot.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataAndMetadataSnapshot.java index 9961fcce8d..11028dc842 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataAndMetadataSnapshot.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataAndMetadataSnapshot.java @@ -16,7 +16,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import com.google.common.base.Optional; -import com.google.common.primitives.UnsignedLong; class DataAndMetadataSnapshot { @@ -39,22 +38,14 @@ class DataAndMetadataSnapshot { public static DataAndMetadataSnapshot createEmpty(final NodeIdentifier rootNode) { NormalizedNode data = Builders.containerBuilder().withNodeIdentifier(rootNode).build(); - StoreMetadataNode metadata = StoreMetadataNode.builder() - .setNodeVersion(UnsignedLong.ZERO) - .setSubtreeVersion(UnsignedLong.ZERO) - .setData(data) - .build(); + StoreMetadataNode metadata = StoreMetadataNode.createEmpty(data); return new DataAndMetadataSnapshot(metadata,Optional.absent()); } public static DataAndMetadataSnapshot createEmpty(final SchemaContext ctx) { NodeIdentifier rootNodeIdentifier = new NodeIdentifier(ctx.getQName()); NormalizedNode data = Builders.containerBuilder().withNodeIdentifier(rootNodeIdentifier).build(); - StoreMetadataNode metadata = StoreMetadataNode.builder() - .setData(data) - .setNodeVersion(UnsignedLong.ZERO) - .setSubtreeVersion(UnsignedLong.ZERO) - .build(); + StoreMetadataNode metadata = StoreMetadataNode.createEmpty(data); return new DataAndMetadataSnapshot(metadata, Optional.of(ctx)); } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataChangeListenerRegistration.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataChangeListenerRegistration.java index d3a892a2cd..d8f024017f 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataChangeListenerRegistration.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataChangeListenerRegistration.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.impl; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope; @@ -6,17 +13,11 @@ import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -public interface DataChangeListenerRegistration>> -extends ListenerRegistration { - - +public interface DataChangeListenerRegistration>> extends ListenerRegistration { @Override - public L getInstance(); + L getInstance(); InstanceIdentifier getPath(); DataChangeScope getScope(); - - - } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataPreconditionFailedException.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataPreconditionFailedException.java new file mode 100644 index 0000000000..6baf7647bd --- /dev/null +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/DataPreconditionFailedException.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.impl; + +import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; + +public class DataPreconditionFailedException extends Exception { + + /** + * + */ + private static final long serialVersionUID = 596430355175413427L; + private final InstanceIdentifier path; + + public DataPreconditionFailedException(final InstanceIdentifier path) { + this.path = path; + } + + public DataPreconditionFailedException(final InstanceIdentifier path,final String message) { + super(message); + this.path = path; + } + + + public DataPreconditionFailedException(final InstanceIdentifier path,final Throwable cause) { + super(cause); + this.path = path; + } + + public DataPreconditionFailedException(final InstanceIdentifier path,final String message, final Throwable cause) { + super(message, cause); + this.path = path; + } + + public DataPreconditionFailedException(final InstanceIdentifier path,final String message, final Throwable cause, final boolean enableSuppression, + final boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + this.path = path; + } + + public InstanceIdentifier getPath() { + return path; + } + +} diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStore.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStore.java index 0a2b66c2d0..005e3b772d 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStore.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDOMDataStore.java @@ -54,7 +54,6 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch private static final Logger LOG = LoggerFactory.getLogger(InMemoryDOMDataStore.class); private static final InstanceIdentifier PUBLIC_ROOT_PATH = InstanceIdentifier.builder().build(); - private final ListeningExecutorService executor; private final String name; private final AtomicLong txCounter = new AtomicLong(0); @@ -104,15 +103,15 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch final InstanceIdentifier path, final L listener, final DataChangeScope scope) { /* - * Make sure commit is not occurring right now. Listener has to be registered and its - * state capture enqueued at a consistent point. + * Make sure commit is not occurring right now. Listener has to be + * registered and its state capture enqueued at a consistent point. * - * FIXME: improve this to read-write lock, such that multiple listener registrations - * can occur simultaneously + * FIXME: improve this to read-write lock, such that multiple listener + * registrations can occur simultaneously */ final DataChangeListenerRegistration reg; synchronized (this) { - LOG.debug("{}: Registering data change listener {} for {}",name,listener,path); + LOG.debug("{}: Registering data change listener {} for {}", name, listener, path); reg = listenerTree.registerDataChangeListener(path, listener, scope); @@ -138,9 +137,8 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch }; } - private synchronized DOMStoreThreePhaseCommitCohort submit( - final SnapshotBackedWriteTransaction writeTx) { - LOG.debug("Tx: {} is submitted. Modifications: {}",writeTx.getIdentifier(),writeTx.getMutatedView()); + private synchronized DOMStoreThreePhaseCommitCohort submit(final SnapshotBackedWriteTransaction writeTx) { + LOG.debug("Tx: {} is submitted. Modifications: {}", writeTx.getIdentifier(), writeTx.getMutatedView()); return new ThreePhaseCommitImpl(writeTx); } @@ -148,12 +146,13 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch return name + "-" + txCounter.getAndIncrement(); } - private void commit(final DataAndMetadataSnapshot currentSnapshot, - final StoreMetadataNode newDataTree, final ResolveDataChangeEventsTask listenerResolver) { - LOG.debug("Updating Store snaphot version: {} with version:{}",currentSnapshot.getMetadataTree().getSubtreeVersion(),newDataTree.getSubtreeVersion()); + private void commit(final DataAndMetadataSnapshot currentSnapshot, final StoreMetadataNode newDataTree, + final ResolveDataChangeEventsTask listenerResolver) { + LOG.debug("Updating Store snaphot version: {} with version:{}", currentSnapshot.getMetadataTree() + .getSubtreeVersion(), newDataTree.getSubtreeVersion()); - if(LOG.isTraceEnabled()) { - LOG.trace("Data Tree is {}",StoreUtils.toStringTree(newDataTree)); + if (LOG.isTraceEnabled()) { + LOG.trace("Data Tree is {}", StoreUtils.toStringTree(newDataTree)); } final DataAndMetadataSnapshot newSnapshot = DataAndMetadataSnapshot.builder() // @@ -162,14 +161,15 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch .build(); /* - * The commit has to occur atomically with regard to listener registrations. + * The commit has to occur atomically with regard to listener + * registrations. */ synchronized (this) { final boolean success = snapshot.compareAndSet(currentSnapshot, newSnapshot); checkState(success, "Store snapshot and transaction snapshot differ. This should never happen."); for (ChangeListenerNotifyTask task : listenerResolver.call()) { - LOG.trace("Scheduling invocation of listeners: {}",task); + LOG.trace("Scheduling invocation of listeners: {}", task); executor.submit(task); } } @@ -195,7 +195,8 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch /** * Add class-specific toString attributes. * - * @param toStringHelper ToStringHelper instance + * @param toStringHelper + * ToStringHelper instance * @return ToStringHelper instance which was passed in */ protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) { @@ -203,13 +204,15 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch } } - private static class SnapshotBackedReadTransaction extends AbstractDOMStoreTransaction implements DOMStoreReadTransaction { + private static class SnapshotBackedReadTransaction extends AbstractDOMStoreTransaction implements + DOMStoreReadTransaction { private DataAndMetadataSnapshot stableSnapshot; public SnapshotBackedReadTransaction(final Object identifier, final DataAndMetadataSnapshot snapshot) { super(identifier); this.stableSnapshot = Preconditions.checkNotNull(snapshot); - LOG.debug("ReadOnly Tx: {} allocated with snapshot {}", identifier, snapshot.getMetadataTree().getSubtreeVersion()); + LOG.debug("ReadOnly Tx: {} allocated with snapshot {}", identifier, snapshot.getMetadataTree() + .getSubtreeVersion()); } @Override @@ -226,7 +229,8 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch } } - private static class SnapshotBackedWriteTransaction extends AbstractDOMStoreTransaction implements DOMStoreWriteTransaction { + private static class SnapshotBackedWriteTransaction extends AbstractDOMStoreTransaction implements + DOMStoreWriteTransaction { private MutableDataTree mutableTree; private InMemoryDOMDataStore store; private boolean ready = false; @@ -236,7 +240,8 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch super(identifier); mutableTree = MutableDataTree.from(snapshot, applyOper); this.store = store; - LOG.debug("Write Tx: {} allocated with snapshot {}",identifier,snapshot.getMetadataTree().getSubtreeVersion()); + LOG.debug("Write Tx: {} allocated with snapshot {}", identifier, snapshot.getMetadataTree() + .getSubtreeVersion()); } @Override @@ -250,11 +255,11 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch public void write(final InstanceIdentifier path, final NormalizedNode data) { checkNotReady(); try { - LOG.trace("Tx: {} Write: {}:{}",getIdentifier(),path,data); + LOG.trace("Tx: {} Write: {}:{}", getIdentifier(), path, data); mutableTree.write(path, data); - // FIXME: Add checked exception + // FIXME: Add checked exception } catch (Exception e) { - LOG.error("Tx: {}, failed to write {}:{} in {}",getIdentifier(),path,data,mutableTree,e); + LOG.error("Tx: {}, failed to write {}:{} in {}", getIdentifier(), path, data, mutableTree, e); } } @@ -262,11 +267,11 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch public void merge(final InstanceIdentifier path, final NormalizedNode data) { checkNotReady(); try { - LOG.trace("Tx: {} Merge: {}:{}",getIdentifier(),path,data); + LOG.trace("Tx: {} Merge: {}:{}", getIdentifier(), path, data); mutableTree.merge(path, data); - // FIXME: Add checked exception + // FIXME: Add checked exception } catch (Exception e) { - LOG.error("Tx: {}, failed to write {}:{} in {}",getIdentifier(),path,data,mutableTree,e); + LOG.error("Tx: {}, failed to write {}:{} in {}", getIdentifier(), path, data, mutableTree, e); } } @@ -274,11 +279,11 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch public void delete(final InstanceIdentifier path) { checkNotReady(); try { - LOG.trace("Tx: {} Delete: {}",getIdentifier(),path); + LOG.trace("Tx: {} Delete: {}", getIdentifier(), path); mutableTree.delete(path); - // FIXME: Add checked exception + // FIXME: Add checked exception } catch (Exception e) { - LOG.error("Tx: {}, failed to delete {} in {}",getIdentifier(),path,mutableTree,e); + LOG.error("Tx: {}, failed to delete {} in {}", getIdentifier(), path, mutableTree, e); } } @@ -320,11 +325,11 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch @Override public ListenableFuture>> read(final InstanceIdentifier path) { - LOG.trace("Tx: {} Read: {}",getIdentifier(),path); + LOG.trace("Tx: {} Read: {}", getIdentifier(), path); try { return Futures.immediateFuture(getMutatedView().read(path)); } catch (Exception e) { - LOG.error("Tx: {} Failed Read of {}",getIdentifier(),path,e); + LOG.error("Tx: {} Failed Read of {}", getIdentifier(), path, e); throw e; } } @@ -353,9 +358,16 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch @Override public Boolean call() throws Exception { - boolean applicable = snapshotOperation.isApplicable(modification, + Boolean applicable = false; + try { + snapshotOperation.checkApplicable(PUBLIC_ROOT_PATH, modification, Optional.of(snapshotCapture.getMetadataTree())); - LOG.debug("Store Transcation: {} : canCommit : {}", transaction.getIdentifier(), applicable); + applicable = true; + } catch (DataPreconditionFailedException e) { + LOG.warn("Store Tx: {} Data Precondition failed for {}.",transaction.getIdentifier(),e.getPath(),e); + applicable = false; + } + LOG.debug("Store Transaction: {} : canCommit : {}", transaction.getIdentifier(), applicable); return applicable; } }); @@ -364,13 +376,11 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch @Override public ListenableFuture preCommit() { storeSnapshot = snapshot.get(); - if(modification.getModificationType() == ModificationType.UNMODIFIED) { + if (modification.getModificationType() == ModificationType.UNMODIFIED) { return Futures.immediateFuture(null); } return executor.submit(new Callable() { - - @Override public Void call() throws Exception { StoreMetadataNode metadataTree = storeSnapshot.getMetadataTree(); @@ -399,14 +409,14 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch @Override public ListenableFuture commit() { - if(modification.getModificationType() == ModificationType.UNMODIFIED) { + if (modification.getModificationType() == ModificationType.UNMODIFIED) { return Futures.immediateFuture(null); } - checkState(proposedSubtree != null,"Proposed subtree must be computed"); - checkState(storeSnapshot != null,"Proposed subtree must be computed"); + checkState(proposedSubtree != null, "Proposed subtree must be computed"); + checkState(storeSnapshot != null, "Proposed subtree must be computed"); // return ImmediateFuture<>; - InMemoryDOMDataStore.this.commit(storeSnapshot, proposedSubtree.get(),listenerResolver); + InMemoryDOMDataStore.this.commit(storeSnapshot, proposedSubtree.get(), listenerResolver); return Futures. immediateFuture(null); } @@ -421,7 +431,7 @@ public class InMemoryDOMDataStore implements DOMStore, Identifiable, Sch } @Override - public boolean isApplicable(final NodeModification modification, final Optional storeMetadata) { + public void checkApplicable(final InstanceIdentifier path,final NodeModification modification, final Optional storeMetadata) { throw new IllegalStateException("Schema Context is not available."); } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ModificationApplyOperation.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ModificationApplyOperation.java index d02f1109d7..361be6800c 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ModificationApplyOperation.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ModificationApplyOperation.java @@ -10,6 +10,7 @@ package org.opendaylight.controller.md.sal.dom.store.impl; import org.opendaylight.controller.md.sal.dom.store.impl.tree.NodeModification; import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreMetadataNode; import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreTreeNode; +import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; import com.google.common.base.Optional; @@ -59,17 +60,6 @@ public interface ModificationApplyOperation extends StoreTreeNode apply(NodeModification modification, Optional storeMeta, UnsignedLong subtreeVersion); - /** - * - * Checks if provided node modification could be applied to current metadata node. - * - * @param modification Modification - * @param current Metadata Node to which modification should be applied - * @return true if modification is applicable - * false if modification is no applicable - */ - boolean isApplicable(NodeModification modification, Optional current); - /** * * Performs structural verification of NodeModification, such as writen values / types @@ -87,8 +77,17 @@ public interface ModificationApplyOperation extends StoreTreeNode getChild(PathArgument child); - - + Optional getChild(PathArgument child); + /** + * + * Checks if provided node modification could be applied to current metadata node. + * + * @param modification Modification + * @param current Metadata Node to which modification should be applied + * @return true if modification is applicable + * false if modification is no applicable + * @throws DataPreconditionFailedException + */ + void checkApplicable(InstanceIdentifier path, NodeModification modification, Optional current) throws DataPreconditionFailedException; } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/OperationWithModification.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/OperationWithModification.java index 35864b6bc2..780291e70f 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/OperationWithModification.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/OperationWithModification.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.impl; import org.opendaylight.controller.md.sal.dom.store.impl.tree.NodeModification; @@ -38,10 +45,6 @@ public class OperationWithModification { return applyOperation; } - public boolean isApplicable(final Optional data) { - return applyOperation.isApplicable(modification, data); - } - public Optional apply(final Optional data, final UnsignedLong subtreeVersion) { return applyOperation.apply(modification, data, subtreeVersion); } @@ -63,4 +66,4 @@ public class OperationWithModification { Optional childOp = applyOperation.getChild(childId); return from(childOp.get(),childMod); } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperation.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperation.java index 7ea4d4e09f..2af522ea86 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperation.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperation.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.impl; import static com.google.common.base.Preconditions.checkArgument; @@ -13,6 +20,7 @@ import org.opendaylight.controller.md.sal.dom.store.impl.tree.NodeModification; import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreMetadataNode; import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreNodeCompositeBuilder; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates; @@ -27,11 +35,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; +import org.opendaylight.yangtools.yang.data.api.schema.OrderedLeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder; @@ -59,8 +68,6 @@ import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.ImmutableSet.Builder; import com.google.common.primitives.UnsignedLong; public abstract class SchemaAwareApplyOperation implements ModificationApplyOperation { @@ -135,55 +142,52 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper protected abstract void verifyWritenStructure(NormalizedNode writenValue); @Override - public boolean isApplicable(final NodeModification modification, final Optional current) { + public void checkApplicable(final InstanceIdentifier path,final NodeModification modification, final Optional current) throws DataPreconditionFailedException { switch (modification.getModificationType()) { case DELETE: - return isDeleteApplicable(modification, current); + checkDeleteApplicable(modification, current); case SUBTREE_MODIFIED: - return isSubtreeModificationApplicable(modification, current); + checkSubtreeModificationApplicable(path,modification, current); + return; case WRITE: - return isWriteApplicable(modification, current); + checkWriteApplicable(path,modification, current); + return; case MERGE: - return isMergeApplicable(modification,current); + checkMergeApplicable(path,modification,current); + return; case UNMODIFIED: - return true; + return; default: - return false; + throw new UnsupportedOperationException("Suplied modification type "+modification.getModificationType()+ "is not supported."); } + } - private boolean isMergeApplicable(final NodeModification modification, final Optional current) { + protected void checkMergeApplicable(final InstanceIdentifier path,final NodeModification modification, final Optional current) throws DataPreconditionFailedException { Optional original = modification.getOriginal(); if (original.isPresent() && current.isPresent()) { - return isNotConflicting(original.get(), current.get()); - } else if (current.isPresent()) { - return true; + checkNotConflicting(path,original.get(), current.get()); } - return true; } - protected boolean isWriteApplicable(final NodeModification modification, final Optional current) { + protected void checkWriteApplicable(final InstanceIdentifier path,final NodeModification modification, final Optional current) throws DataPreconditionFailedException { Optional original = modification.getOriginal(); if (original.isPresent() && current.isPresent()) { - return isNotConflicting(original.get(), current.get()); - } else if (current.isPresent()) { - return false; + checkNotConflicting(path,original.get(), current.get()); + } else if(original.isPresent()) { + throw new DataPreconditionFailedException(path,"Node was deleted by other transaction."); } - return true; - } - protected final boolean isNotConflicting(final StoreMetadataNode original, final StoreMetadataNode current) { - return original.getNodeVersion().equals(current.getNodeVersion()) - && original.getSubtreeVersion().equals(current.getSubtreeVersion()); + protected static final void checkNotConflicting(final InstanceIdentifier path,final StoreMetadataNode original, final StoreMetadataNode current) throws DataPreconditionFailedException { + checkDataPrecondition(path, original.getNodeVersion().equals(current.getNodeVersion()),"Node was replaced by other transaction."); + checkDataPrecondition(path,original.getSubtreeVersion().equals(current.getSubtreeVersion()), "Node children was modified by other transaction"); } - protected abstract boolean isSubtreeModificationApplicable(final NodeModification modification, - final Optional current); + protected abstract void checkSubtreeModificationApplicable(InstanceIdentifier path,final NodeModification modification, + final Optional current) throws DataPreconditionFailedException; - private boolean isDeleteApplicable(final NodeModification modification, final Optional current) { - // FiXME: Add delete conflict detection. - return true; + private void checkDeleteApplicable(final NodeModification modification, final Optional current) { } @Override @@ -265,9 +269,9 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper } @Override - protected boolean isSubtreeModificationApplicable(final NodeModification modification, - final Optional current) { - return false; + protected void checkSubtreeModificationApplicable(final InstanceIdentifier path,final NodeModification modification, + final Optional current) throws DataPreconditionFailedException { + throw new DataPreconditionFailedException(path, "Subtree modification is not allowed."); } } @@ -306,6 +310,14 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper } } + @Override + protected void checkWriteApplicable(final InstanceIdentifier path, final NodeModification modification, + final Optional current) throws DataPreconditionFailedException { + // FIXME: Implement proper write check for replacement of node container + // prerequisite is to have transaction chain available for clients + // otherwise this will break chained writes to same node. + } + @SuppressWarnings("rawtypes") @Override protected void verifyWritenStructure(final NormalizedNode writenValue) { @@ -321,30 +333,28 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @Override protected StoreMetadataNode applyWrite(final NodeModification modification, final Optional currentMeta, final UnsignedLong subtreeVersion) { - // + NormalizedNode newValue = modification.getWritenValue(); - UnsignedLong nodeVersion = subtreeVersion; + final UnsignedLong nodeVersion; if (currentMeta.isPresent()) { nodeVersion = StoreUtils.increase(currentMeta.get().getNodeVersion()); + } else { + nodeVersion = subtreeVersion; } - StoreMetadataNode newValueMeta = StoreMetadataNode.createRecursively(newValue, nodeVersion, nodeVersion); + final StoreMetadataNode newValueMeta = StoreMetadataNode.createRecursively(newValue, nodeVersion, nodeVersion); if (!modification.hasAdditionalModifications()) { return newValueMeta; } + @SuppressWarnings("rawtypes") - NormalizedNodeContainerBuilder dataBuilder = createBuilder(modification.getIdentifier()); + NormalizedNodeContainerBuilder dataBuilder = createBuilder(newValue); StoreNodeCompositeBuilder builder = StoreNodeCompositeBuilder.from(dataBuilder) // .setNodeVersion(nodeVersion) // .setSubtreeVersion(subtreeVersion); - Set processedPreexisting = applyPreexistingChildren(modification, newValueMeta.getChildren(), - builder, nodeVersion); - applyNewChildren(modification, processedPreexisting, builder, nodeVersion); - - return builder.build(); - + return mutateChildren(modification.getModifications(), newValueMeta, builder, nodeVersion); } @Override @@ -357,75 +367,64 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @Override public StoreMetadataNode applySubtreeChange(final NodeModification modification, final StoreMetadataNode currentMeta, final UnsignedLong subtreeVersion) { + // Bump subtree version to its new target + final UnsignedLong updatedSubtreeVersion = StoreUtils.increase(currentMeta.getSubtreeVersion()); - UnsignedLong updatedSubtreeVersion = StoreUtils.increase(currentMeta.getSubtreeVersion()); @SuppressWarnings("rawtypes") - NormalizedNodeContainerBuilder dataBuilder = createBuilder(modification.getIdentifier()); - StoreNodeCompositeBuilder builder = StoreNodeCompositeBuilder.from(dataBuilder) + NormalizedNodeContainerBuilder dataBuilder = createBuilder(currentMeta.getData()); + StoreNodeCompositeBuilder builder = StoreNodeCompositeBuilder.from(dataBuilder, currentMeta) .setIdentifier(modification.getIdentifier()).setNodeVersion(currentMeta.getNodeVersion()) .setSubtreeVersion(updatedSubtreeVersion); - // We process preexisting nodes - Set processedPreexisting = applyPreexistingChildren(modification, currentMeta.getChildren(), - builder, updatedSubtreeVersion); - applyNewChildren(modification, processedPreexisting, builder, updatedSubtreeVersion); - return builder.build(); + + return mutateChildren(modification.getModifications(), currentMeta, builder, updatedSubtreeVersion); } - private void applyNewChildren(final NodeModification modification, final Set ignore, - final StoreNodeCompositeBuilder builder, final UnsignedLong subtreeVersion) { - for (NodeModification childModification : modification.getModifications()) { - PathArgument childIdentifier = childModification.getIdentifier(); - // We skip allready processed modifications - if (ignore.contains(childIdentifier)) { - continue; - } + private StoreMetadataNode mutateChildren(final Iterable modifications, final StoreMetadataNode meta, + final StoreNodeCompositeBuilder builder, final UnsignedLong nodeVersion) { - builder.addIfPresent(resolveChildOperation(childIdentifier) // - .apply(childModification, Optional. absent(), subtreeVersion)); - } - } + for (NodeModification mod : modifications) { + final PathArgument id = mod.getIdentifier(); + final Optional cm = meta.getChild(id); - private Set applyPreexistingChildren(final NodeModification modification, - final Iterable children, final StoreNodeCompositeBuilder nodeBuilder, - final UnsignedLong subtreeVersion) { - Builder processedModifications = ImmutableSet. builder(); - for (StoreMetadataNode childMeta : children) { - PathArgument childIdentifier = childMeta.getIdentifier(); - // We retrieve Child modification metadata - Optional childModification = modification.getChild(childIdentifier); - // Node is modified - if (childModification.isPresent()) { - processedModifications.add(childIdentifier); - Optional result = resolveChildOperation(childIdentifier) // - .apply(childModification.get(), Optional.of(childMeta), subtreeVersion); - nodeBuilder.addIfPresent(result); + Optional result = resolveChildOperation(id).apply(mod, cm, nodeVersion); + if (result.isPresent()) { + builder.add(result.get()); } else { - // Child is unmodified - reuse existing metadata and data - // snapshot - nodeBuilder.add(childMeta); + builder.remove(id); } } - return processedModifications.build(); + + return builder.build(); } @Override - protected boolean isSubtreeModificationApplicable(final NodeModification modification, - final Optional current) { - if (false == current.isPresent()) { - return false; - } - boolean result = true; + protected void checkSubtreeModificationApplicable(final InstanceIdentifier path,final NodeModification modification, + final Optional current) throws DataPreconditionFailedException { + checkDataPrecondition(path, current.isPresent(), "Node was deleted by other transaction."); + checkChildPreconditions(path,modification,current); + + } + + private void checkChildPreconditions(final InstanceIdentifier path, final NodeModification modification, final Optional current) throws DataPreconditionFailedException { StoreMetadataNode currentMeta = current.get(); for (NodeModification childMod : modification.getModifications()) { PathArgument childId = childMod.getIdentifier(); Optional childMeta = currentMeta.getChild(childId); - result &= resolveChildOperation(childId).isApplicable(childMod, childMeta); + InstanceIdentifier childPath = StoreUtils.append(path, childId); + resolveChildOperation(childId).checkApplicable(childPath,childMod, childMeta); + } + } + + @Override + protected void checkMergeApplicable(final InstanceIdentifier path, final NodeModification modification, + final Optional current) throws DataPreconditionFailedException { + if(current.isPresent()) { + checkChildPreconditions(path,modification,current); } - return result; } @SuppressWarnings("rawtypes") - protected abstract NormalizedNodeContainerBuilder createBuilder(PathArgument identifier); + protected abstract NormalizedNodeContainerBuilder createBuilder(NormalizedNode original); } public static abstract class DataNodeContainerModificationStrategy extends @@ -470,7 +469,7 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @Override @SuppressWarnings("rawtypes") - protected abstract DataContainerNodeBuilder createBuilder(PathArgument identifier); + protected abstract DataContainerNodeBuilder createBuilder(NormalizedNode original); @Override public String toString() { @@ -488,12 +487,10 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @Override @SuppressWarnings("rawtypes") - protected DataContainerNodeBuilder createBuilder(final PathArgument identifier) { - // TODO Auto-generated method stub - checkArgument(identifier instanceof NodeIdentifier); - return ImmutableContainerNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); + protected DataContainerNodeBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof ContainerNode); + return ImmutableContainerNodeBuilder.create((ContainerNode) original); } - } public static class UnkeyedListItemModificationStrategy extends @@ -505,11 +502,10 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @Override @SuppressWarnings("rawtypes") - protected DataContainerNodeBuilder createBuilder(final PathArgument identifier) { - checkArgument(identifier instanceof NodeIdentifier); - return ImmutableUnkeyedListEntryNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); + protected DataContainerNodeBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof UnkeyedListEntryNode); + return ImmutableUnkeyedListEntryNodeBuilder.create((UnkeyedListEntryNode) original); } - } public static class AugmentationModificationStrategy extends @@ -517,15 +513,14 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper protected AugmentationModificationStrategy(final AugmentationSchema schema, final DataNodeContainer resolved) { super(createAugmentProxy(schema,resolved), AugmentationNode.class); - // FIXME: Use resolved children instead of unresolved. - } @Override - protected DataContainerNodeBuilder createBuilder(final PathArgument identifier) { - return Builders.augmentationBuilder().withNodeIdentifier((AugmentationIdentifier) identifier); + @SuppressWarnings("rawtypes") + protected DataContainerNodeBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof AugmentationNode); + return ImmutableAugmentationNodeBuilder.create((AugmentationNode) original); } - } public static class ChoiceModificationStrategy extends NormalizedNodeContainerModificationStrategy { @@ -554,11 +549,10 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @Override @SuppressWarnings("rawtypes") - protected DataContainerNodeBuilder createBuilder(final PathArgument identifier) { - checkArgument(identifier instanceof NodeIdentifier); - return ImmutableChoiceNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); + protected DataContainerNodeBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode); + return ImmutableChoiceNodeBuilder.create((org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode) original); } - } public static class ListEntryModificationStrategy extends DataNodeContainerModificationStrategy { @@ -569,10 +563,10 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @Override @SuppressWarnings("rawtypes") - protected final DataContainerNodeBuilder createBuilder(final PathArgument identifier) { - return ImmutableMapEntryNodeBuilder.create().withNodeIdentifier((NodeIdentifierWithPredicates) identifier); + protected final DataContainerNodeBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof MapEntryNode); + return ImmutableMapEntryNodeBuilder.create((MapEntryNode) original); } - } public static class UnorderedLeafSetModificationStrategy extends NormalizedNodeContainerModificationStrategy { @@ -587,8 +581,9 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @SuppressWarnings("rawtypes") @Override - protected NormalizedNodeContainerBuilder createBuilder(final PathArgument identifier) { - return ImmutableLeafSetNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); + protected NormalizedNodeContainerBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof LeafSetNode); + return ImmutableLeafSetNodeBuilder.create((LeafSetNode) original); } @Override @@ -598,7 +593,6 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper } return Optional.absent(); } - } public static class OrderedLeafSetModificationStrategy extends NormalizedNodeContainerModificationStrategy { @@ -613,8 +607,9 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @SuppressWarnings("rawtypes") @Override - protected NormalizedNodeContainerBuilder createBuilder(final PathArgument identifier) { - return ImmutableOrderedLeafSetNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); + protected NormalizedNodeContainerBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof OrderedLeafSetNode); + return ImmutableOrderedLeafSetNodeBuilder.create((OrderedLeafSetNode) original); } @Override @@ -624,7 +619,6 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper } return Optional.absent(); } - } public static class UnkeyedListModificationStrategy extends SchemaAwareApplyOperation { @@ -667,9 +661,9 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper } @Override - protected boolean isSubtreeModificationApplicable(final NodeModification modification, - final Optional current) { - return false; + protected void checkSubtreeModificationApplicable(final InstanceIdentifier path,final NodeModification modification, + final Optional current) throws DataPreconditionFailedException { + throw new DataPreconditionFailedException(path, "Subtree modification is not allowed."); } } @@ -685,8 +679,9 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @SuppressWarnings("rawtypes") @Override - protected NormalizedNodeContainerBuilder createBuilder(final PathArgument identifier) { - return ImmutableMapNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); + protected NormalizedNodeContainerBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof MapNode); + return ImmutableMapNodeBuilder.create((MapNode) original); } @Override @@ -714,8 +709,9 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper @SuppressWarnings("rawtypes") @Override - protected NormalizedNodeContainerBuilder createBuilder(final PathArgument identifier) { - return ImmutableOrderedMapNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); + protected NormalizedNodeContainerBuilder createBuilder(final NormalizedNode original) { + checkArgument(original instanceof OrderedMapNode); + return ImmutableOrderedMapNodeBuilder.create((OrderedMapNode) original); } @Override @@ -744,4 +740,11 @@ public abstract class SchemaAwareApplyOperation implements ModificationApplyOper return new AugmentationSchemaProxy(schema, realChildSchemas); } + public static boolean checkDataPrecondition(final InstanceIdentifier path, final boolean condition, final String message) throws DataPreconditionFailedException { + if(!condition) { + throw new DataPreconditionFailedException(path, message); + } + return condition; + } + } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperationRoot.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperationRoot.java index e7265dedb5..8a539ff36e 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperationRoot.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/SchemaAwareApplyOperationRoot.java @@ -7,16 +7,14 @@ */ package org.opendaylight.controller.md.sal.dom.store.impl; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; public class SchemaAwareApplyOperationRoot extends SchemaAwareApplyOperation.DataNodeContainerModificationStrategy { - private final SchemaContext context; public SchemaAwareApplyOperationRoot(final SchemaContext context) { @@ -24,11 +22,6 @@ public class SchemaAwareApplyOperationRoot extends SchemaAwareApplyOperation.Dat this.context = context; } - @Override - protected DataContainerNodeBuilder createBuilder(final PathArgument identifier) { - return ImmutableContainerNodeBuilder.create().withNodeIdentifier((NodeIdentifier) identifier); - } - public SchemaContext getContext() { return context; } @@ -38,4 +31,9 @@ public class SchemaAwareApplyOperationRoot extends SchemaAwareApplyOperation.Dat return "SchemaAwareApplyOperationRoot [context=" + context + "]"; } + @Override + @SuppressWarnings("rawtypes") + protected DataContainerNodeBuilder createBuilder(NormalizedNode original) { + return ImmutableContainerNodeBuilder.create((ContainerNode) original); + } } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java index 830d7e3dc4..0f77ac504a 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/StoreUtils.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 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.md.sal.dom.store.impl; import java.util.Collections; diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java index d42f36fb90..455777b7fb 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java @@ -9,6 +9,7 @@ package org.opendaylight.controller.md.sal.dom.store.impl.tree; import static com.google.common.base.Preconditions.checkState; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; @@ -46,10 +47,24 @@ public class StoreMetadataNode implements Immutable, Identifiable, this.children = Preconditions.checkNotNull(children); } + public static StoreMetadataNode createEmpty(final NormalizedNode data) { + return new StoreMetadataNode(data, UnsignedLong.ZERO, UnsignedLong.ZERO, + Collections.emptyMap()); + } + + public StoreMetadataNode(final NormalizedNode data, final UnsignedLong nodeVersion, + final UnsignedLong subtreeVersion) { + this(data, nodeVersion, subtreeVersion, Collections.emptyMap()); + } + public static Builder builder() { return new Builder(); } + public static Builder builder(StoreMetadataNode node) { + return new Builder(node); + } + public UnsignedLong getNodeVersion() { return this.nodeVersion; } @@ -118,11 +133,16 @@ public class StoreMetadataNode implements Immutable, Identifiable, private UnsignedLong nodeVersion; private UnsignedLong subtreeVersion; private NormalizedNode data; - private Map children = new LinkedHashMap<>(); + private Map children; private boolean dirty = false; - private Builder() {} + private Builder() { + children = new LinkedHashMap<>(); + } + public Builder(StoreMetadataNode node) { + children = new LinkedHashMap<>(node.children); + } public UnsignedLong getVersion() { return nodeVersion; @@ -153,6 +173,15 @@ public class StoreMetadataNode implements Immutable, Identifiable, return this; } + public Builder remove(final PathArgument id) { + if (dirty) { + children = new LinkedHashMap<>(children); + dirty = false; + } + children.remove(id); + return this; + } + public StoreMetadataNode build() { checkState(data != null, "Data node should not be null."); checkState(subtreeVersion.compareTo(nodeVersion) >= 0, @@ -165,5 +194,4 @@ public class StoreMetadataNode implements Immutable, Identifiable, public static StoreMetadataNode createRecursively(final NormalizedNode node, final UnsignedLong version) { return createRecursively(node, version, version); } - } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreNodeCompositeBuilder.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreNodeCompositeBuilder.java index 41fc8239fb..a66a1d5b1c 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreNodeCompositeBuilder.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreNodeCompositeBuilder.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.md.sal.dom.store.impl.tree; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder; -import com.google.common.base.Optional; +import com.google.common.base.Preconditions; import com.google.common.primitives.UnsignedLong; /** @@ -28,7 +28,12 @@ public class StoreNodeCompositeBuilder { private StoreNodeCompositeBuilder(final NormalizedNodeContainerBuilder nodeBuilder) { this.metadata = StoreMetadataNode.builder(); - this.data = nodeBuilder; + this.data = Preconditions.checkNotNull(nodeBuilder); + } + + public StoreNodeCompositeBuilder(NormalizedNodeContainerBuilder nodeBuilder, StoreMetadataNode currentMeta) { + this.metadata = StoreMetadataNode.builder(currentMeta); + this.data = Preconditions.checkNotNull(nodeBuilder); } @SuppressWarnings("unchecked") @@ -39,12 +44,9 @@ public class StoreNodeCompositeBuilder { } @SuppressWarnings("unchecked") - public StoreNodeCompositeBuilder addIfPresent(final Optional potential) { - if (potential.isPresent()) { - StoreMetadataNode node = potential.get(); - metadata.add(node); - data.addChild(node.getData()); - } + public StoreNodeCompositeBuilder remove(PathArgument id) { + metadata.remove(id); + data.removeChild(id); return this; } @@ -56,6 +58,10 @@ public class StoreNodeCompositeBuilder { return new StoreNodeCompositeBuilder(nodeBuilder); } + public static StoreNodeCompositeBuilder from(final NormalizedNodeContainerBuilder nodeBuilder, StoreMetadataNode currentMeta) { + return new StoreNodeCompositeBuilder(nodeBuilder, currentMeta); + } + @SuppressWarnings("unchecked") public StoreNodeCompositeBuilder setIdentifier(final PathArgument identifier) { data.withNodeIdentifier(identifier); @@ -71,5 +77,4 @@ public class StoreNodeCompositeBuilder { metadata.setSubtreeVersion(updatedSubtreeVersion); return this; } - } diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/TreeNodeUtils.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/TreeNodeUtils.java index 339d9cb44e..732352dd34 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/TreeNodeUtils.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/TreeNodeUtils.java @@ -21,7 +21,10 @@ import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Predicates; -public class TreeNodeUtils { +public final class TreeNodeUtils { + private TreeNodeUtils() { + throw new UnsupportedOperationException("Utility class should not be instantiated"); + } /** * Finds a node in tree @@ -40,7 +43,6 @@ public class TreeNodeUtils { return current; } - public static > T findNodeChecked(final T tree, final InstanceIdentifier path) { T current = tree; List nested = new ArrayList<>(path.getPath().size()); diff --git a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DataNormalizerTest.java b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DataNormalizerTest.java index 9aa558b5ac..ac7b87a9f5 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DataNormalizerTest.java +++ b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/broker/impl/DataNormalizerTest.java @@ -49,12 +49,8 @@ public class DataNormalizerTest { InstanceIdentifier normalizedPath = normalizer.toNormalized(LEAF_TWO_PATH_LEGACY); - Node outerListLegacy = normalizer.toLegacy(OUTER_LIST_WITH_CHOICE); + Node outerListLegacy = DataNormalizer.toLegacy(OUTER_LIST_WITH_CHOICE); assertNotNull(outerListLegacy); - - - - } } diff --git a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java index 5a43c7b218..c0f0a35565 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java +++ b/opendaylight/md-sal/sal-dom-broker/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java @@ -7,6 +7,7 @@ import static org.junit.Assert.assertTrue; import java.util.concurrent.ExecutionException; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction; @@ -119,6 +120,7 @@ public class InMemoryDataStoreTest { } @Test + @Ignore public void testTransactionConflict() throws InterruptedException, ExecutionException { DOMStoreReadWriteTransaction txOne = domStore.newReadWriteTransaction(); DOMStoreReadWriteTransaction txTwo = domStore.newReadWriteTransaction(); diff --git a/opendaylight/md-sal/sal-netconf-connector/pom.xml b/opendaylight/md-sal/sal-netconf-connector/pom.xml index d8a76b971d..9ad95c18d9 100644 --- a/opendaylight/md-sal/sal-netconf-connector/pom.xml +++ b/opendaylight/md-sal/sal-netconf-connector/pom.xml @@ -38,7 +38,6 @@ org.opendaylight.controller netconf-client - ${netconf.version} org.opendaylight.controller diff --git a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/RemoteRpcProvider.java b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/RemoteRpcProvider.java index edcef83574..53fbb929bb 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/RemoteRpcProvider.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/RemoteRpcProvider.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.sal.connector.remoterpc; -import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Preconditions.checkState; import java.util.Collection; import java.util.Collections; @@ -174,7 +174,7 @@ public class RemoteRpcProvider implements Optional> routingTable = routingTableProvider.getRoutingTable(); - checkNotNull(routingTable.isPresent(), "Routing table is null"); + checkState(routingTable.isPresent(), "Routing table is null"); return routingTable.get(); } diff --git a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/Message.java b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/Message.java index 519791a195..21d02be7d7 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/Message.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/Message.java @@ -8,11 +8,17 @@ package org.opendaylight.controller.sal.connector.remoterpc.dto; -import org.opendaylight.controller.sal.connector.api.RpcRouter; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; -import java.io.*; +import org.opendaylight.controller.sal.connector.api.RpcRouter; public class Message implements Serializable { + private static final long serialVersionUID = 1L; public static enum MessageType { PING((byte) 0), @@ -118,12 +124,13 @@ public class Message implements Serializable { } public static class Response extends Message implements RpcRouter.RpcReply { + private static final long serialVersionUID = 1L; private ResponseCode code; // response code public static enum ResponseCode { SUCCESS(200), BADREQUEST(400), TIMEOUT(408), GONE(410), SERVERERROR(500), SERVICEUNAVAILABLE(503); - private int code; + private final int code; ResponseCode(int code) { this.code = code; @@ -144,7 +151,7 @@ public class Message implements Serializable { */ public static class MessageBuilder{ - private Message message; + private final Message message; public MessageBuilder(){ message = new Message(); diff --git a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/RouteIdentifierImpl.java b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/RouteIdentifierImpl.java index 4ffcf3e099..53c7cc0b8d 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/RouteIdentifierImpl.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/main/java/org/opendaylight/controller/sal/connector/remoterpc/dto/RouteIdentifierImpl.java @@ -7,13 +7,14 @@ */ package org.opendaylight.controller.sal.connector.remoterpc.dto; +import java.io.Serializable; + import org.opendaylight.controller.sal.connector.api.RpcRouter; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import java.io.Serializable; - public class RouteIdentifierImpl implements RpcRouter.RouteIdentifier,Serializable { + private static final long serialVersionUID = 1L; private QName context; private QName type; diff --git a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/test/java/org/opendaylight/controller/sal/connector/remoterpc/ClientRequestHandlerTest.java b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/test/java/org/opendaylight/controller/sal/connector/remoterpc/ClientRequestHandlerTest.java index a5c4d85fed..1edd004d37 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/test/java/org/opendaylight/controller/sal/connector/remoterpc/ClientRequestHandlerTest.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/implementation/src/test/java/org/opendaylight/controller/sal/connector/remoterpc/ClientRequestHandlerTest.java @@ -7,7 +7,14 @@ */ package org.opendaylight.controller.sal.connector.remoterpc; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.FutureTask; +import java.util.concurrent.TimeUnit; + import junit.framework.Assert; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -17,9 +24,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zeromq.ZMQ; -import java.io.IOException; -import java.util.concurrent.*; - /** * */ @@ -69,7 +73,7 @@ public class ClientRequestHandlerTest { serverThread.execute(MessagingUtil.startReplyServer(context, serverAddress, 1)); threadPool.execute(createEmptyMessageTaskAndHandle(handler, serverAddress)); } - Thread.currentThread().sleep(5000);//wait for all messages to get processed + Thread.sleep(5000);//wait for all messages to get processed //should be connected to 5 remote server Assert.assertEquals(5, handler.getWorkerCount()); } diff --git a/opendaylight/md-sal/samples/toaster-it/pom.xml b/opendaylight/md-sal/samples/toaster-it/pom.xml index dc96b79002..2fcb2f6d63 100644 --- a/opendaylight/md-sal/samples/toaster-it/pom.xml +++ b/opendaylight/md-sal/samples/toaster-it/pom.xml @@ -17,7 +17,6 @@ org.opendaylight.controller sal-binding-it - 1.1-SNAPSHOT org.opendaylight.controller.samples diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/AbstractStatsTracker.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/AbstractStatsTracker.java index e922656d91..e23ad0acdb 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/AbstractStatsTracker.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/AbstractStatsTracker.java @@ -32,9 +32,9 @@ import com.google.common.util.concurrent.JdkFutureAdapters; abstract class AbstractStatsTracker { private static final Logger logger = LoggerFactory.getLogger(AbstractStatsTracker.class); - + private static final int WAIT_FOR_REQUEST_CYCLE = 2; - + private final FutureCallback> callback = new FutureCallback>() { @Override @@ -73,7 +73,7 @@ abstract class AbstractStatsTracker { } protected final InstanceIdentifierBuilder getNodeIdentifierBuilder() { - return InstanceIdentifier.builder(getNodeIdentifier()); + return getNodeIdentifier().builder(); } protected final NodeRef getNodeRef() { diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupDescStatsTracker.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupDescStatsTracker.java index e180aaf5fc..a775b73169 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupDescStatsTracker.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupDescStatsTracker.java @@ -96,7 +96,7 @@ final class GroupDescStatsTracker extends AbstractListeningStatsTracker group = (InstanceIdentifier)key; - InstanceIdentifier del = InstanceIdentifier.builder(group).augmentation(NodeGroupDescStats.class).toInstance(); + InstanceIdentifier del = group.augmentation(NodeGroupDescStats.class); logger.debug("Key {} triggered remove of augmentation {}", key, del); trans.removeOperationalData(del); diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupStatsTracker.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupStatsTracker.java index 9735fea069..c3c23c9b58 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupStatsTracker.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/GroupStatsTracker.java @@ -87,7 +87,7 @@ final class GroupStatsTracker extends AbstractListeningStatsTracker group = (InstanceIdentifier)key; - InstanceIdentifier del = InstanceIdentifier.builder(group).augmentation(NodeGroupStatistics.class).toInstance(); + InstanceIdentifier del = group.augmentation(NodeGroupStatistics.class); logger.debug("Key {} triggered remove of augmentation {}", key, del); trans.removeOperationalData(del); diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterConfigStatsTracker.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterConfigStatsTracker.java index e8b7fb7164..ea412a09e1 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterConfigStatsTracker.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterConfigStatsTracker.java @@ -82,7 +82,7 @@ final class MeterConfigStatsTracker extends AbstractListeningStatsTracker meter = (InstanceIdentifier)key; InstanceIdentifier nodeMeterStatisticsAugmentation = - InstanceIdentifier.builder(meter).augmentation(NodeMeterConfigStats.class).toInstance(); + meter.augmentation(NodeMeterConfigStats.class); trans.removeOperationalData(nodeMeterStatisticsAugmentation); } } diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterStatsTracker.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterStatsTracker.java index b373020f1c..be53a38f18 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterStatsTracker.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/MeterStatsTracker.java @@ -86,7 +86,7 @@ final class MeterStatsTracker extends AbstractListeningStatsTracker meter = (InstanceIdentifier)key; InstanceIdentifier nodeMeterStatisticsAugmentation = - InstanceIdentifier.builder(meter).augmentation(NodeMeterStatistics.class).toInstance(); + meter.augmentation(NodeMeterStatistics.class); trans.removeOperationalData(nodeMeterStatisticsAugmentation); } } diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/QueueStatsTracker.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/QueueStatsTracker.java index 6f93eeb617..03f7808c8f 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/QueueStatsTracker.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/QueueStatsTracker.java @@ -122,8 +122,8 @@ final class QueueStatsTracker extends AbstractListeningStatsTracker queue = (InstanceIdentifier)key; - final InstanceIdentifier del = InstanceIdentifier.builder(queue) - .augmentation(FlowCapableNodeConnectorQueueStatisticsData.class).build(); + final InstanceIdentifier del = queue + .augmentation(FlowCapableNodeConnectorQueueStatisticsData.class); logger.debug("Key {} triggered remove of augmentation {}", key, del); trans.removeOperationalData(del); diff --git a/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java b/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java index f4685d2bd9..542e972deb 100644 --- a/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java +++ b/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java @@ -193,8 +193,7 @@ class FlowCapableTopologyExporter implements // } for (Link link : topologyData.getLink()) { if (id.equals(link.getSource().getSourceNode()) || id.equals(link.getDestination().getDestNode())) { - InstanceIdentifier path = InstanceIdentifier.builder(topologyPath) - .child(Link.class, link.getKey()).build(); + InstanceIdentifier path = topologyPath.child(Link.class, link.getKey()); transaction.removeOperationalData(path); } } @@ -208,8 +207,7 @@ class FlowCapableTopologyExporter implements // } for (Link link : topologyData.getLink()) { if (id.equals(link.getSource().getSourceTp()) || id.equals(link.getDestination().getDestTp())) { - InstanceIdentifier path = InstanceIdentifier.builder(topologyPath) - .child(Link.class, link.getKey()).build(); + InstanceIdentifier path = topologyPath.child(Link.class, link.getKey()); transaction.removeOperationalData(path); } } @@ -233,20 +231,20 @@ class FlowCapableTopologyExporter implements // .child(Topology.class, topology).child(Link.class, link.getKey()).build(); return linkInstanceId; } - + /** * @param txId transaction identificator * @param future transaction result */ private static void listenOnTransactionState(final Object txId, Future> future) { Futures.addCallback(JdkFutureAdapters.listenInPoolThread(future),new FutureCallback>() { - + @Override public void onFailure(Throwable t) { LOG.error("Topology export failed for Tx:{}", txId, t); - + } - + @Override public void onSuccess(RpcResult result) { if(!result.isSuccessful()) { diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NetconfConfigHandlingException.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NetconfConfigHandlingException.java index be44a71e06..f6d070b2a8 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NetconfConfigHandlingException.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NetconfConfigHandlingException.java @@ -7,12 +7,13 @@ */ package org.opendaylight.controller.netconf.confignetconfconnector.exception; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; - import java.util.Collections; import java.util.Map; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; + public class NetconfConfigHandlingException extends NetconfDocumentedException { + private static final long serialVersionUID = 1L; public NetconfConfigHandlingException(final String message, final ErrorType errorType, final ErrorTag errorTag, final ErrorSeverity errorSeverity) { diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NoTransactionFoundException.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NoTransactionFoundException.java index ebb8054c71..dea8443c29 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NoTransactionFoundException.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/NoTransactionFoundException.java @@ -7,12 +7,13 @@ */ package org.opendaylight.controller.netconf.confignetconfconnector.exception; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; - import java.util.Collections; import java.util.Map; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; + public class NoTransactionFoundException extends NetconfDocumentedException { + private static final long serialVersionUID = 1L; public NoTransactionFoundException(final String message, final ErrorType errorType, final ErrorTag errorTag, final ErrorSeverity errorSeverity) { diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/OperationNotPermittedException.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/OperationNotPermittedException.java index e0d63c1418..49276663b8 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/OperationNotPermittedException.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/exception/OperationNotPermittedException.java @@ -7,12 +7,13 @@ */ package org.opendaylight.controller.netconf.confignetconfconnector.exception; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; - import java.util.Collections; import java.util.Map; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; + public class OperationNotPermittedException extends NetconfDocumentedException { + private static final long serialVersionUID = 1L; public OperationNotPermittedException(final String message, final ErrorType errorType, final ErrorTag errorTag, final ErrorSeverity errorSeverity) { diff --git a/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPusher.java b/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPusher.java index 44e90270e7..957db50c61 100644 --- a/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPusher.java +++ b/opendaylight/netconf/config-persister-impl/src/main/java/org/opendaylight/controller/netconf/persist/impl/ConfigPusher.java @@ -8,10 +8,19 @@ package org.opendaylight.controller.netconf.persist.impl; -import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import com.google.common.base.Stopwatch; -import com.google.common.collect.Collections2; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeMap; +import java.util.concurrent.TimeUnit; + +import javax.annotation.concurrent.Immutable; + import org.opendaylight.controller.config.api.ConflictingVersionException; import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -32,17 +41,10 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; -import javax.annotation.concurrent.Immutable; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; -import java.util.TreeMap; -import java.util.concurrent.TimeUnit; +import com.google.common.base.Function; +import com.google.common.base.Preconditions; +import com.google.common.base.Stopwatch; +import com.google.common.collect.Collections2; @Immutable public class ConfigPusher { @@ -110,6 +112,8 @@ public class ConfigPusher { } private static class NotEnoughCapabilitiesException extends Exception { + private static final long serialVersionUID = 1L; + private NotEnoughCapabilitiesException(String message, Throwable cause) { super(message, cause); } diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/MissingNameSpaceException.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/MissingNameSpaceException.java index 0a3e0b3ec3..6cc5006aba 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/MissingNameSpaceException.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/MissingNameSpaceException.java @@ -7,20 +7,21 @@ */ package org.opendaylight.controller.netconf.util.exception; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; - import java.util.Collections; import java.util.Map; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; + public class MissingNameSpaceException extends NetconfDocumentedException { + private static final long serialVersionUID = 1L; public MissingNameSpaceException(final String message, final ErrorType errorType, final ErrorTag errorTag, - final ErrorSeverity errorSeverity) { + final ErrorSeverity errorSeverity) { this(message, errorType, errorTag, errorSeverity, Collections. emptyMap()); } public MissingNameSpaceException(final String message, final ErrorType errorType, final ErrorTag errorTag, - final ErrorSeverity errorSeverity, final Map errorInfo){ + final ErrorSeverity errorSeverity, final Map errorInfo){ super(message,errorType,errorTag,errorSeverity,errorInfo); } } diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedElementException.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedElementException.java index b470ce13a8..7b5f52e396 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedElementException.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedElementException.java @@ -7,20 +7,21 @@ */ package org.opendaylight.controller.netconf.util.exception; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; - import java.util.Collections; import java.util.Map; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; + public class UnexpectedElementException extends NetconfDocumentedException { + private static final long serialVersionUID = 1L; public UnexpectedElementException(final String message, final ErrorType errorType, final ErrorTag errorTag, - final ErrorSeverity errorSeverity) { + final ErrorSeverity errorSeverity) { this(message, errorType, errorTag, errorSeverity, Collections. emptyMap()); } public UnexpectedElementException(final String message, final ErrorType errorType, final ErrorTag errorTag, - final ErrorSeverity errorSeverity, final Map errorInfo){ + final ErrorSeverity errorSeverity, final Map errorInfo) { super(message,errorType,errorTag,errorSeverity,errorInfo); } } diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedNamespaceException.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedNamespaceException.java index 50d7670780..582fd23e16 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedNamespaceException.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/exception/UnexpectedNamespaceException.java @@ -7,12 +7,13 @@ */ package org.opendaylight.controller.netconf.util.exception; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; - import java.util.Collections; import java.util.Map; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; + public class UnexpectedNamespaceException extends NetconfDocumentedException { + private static final long serialVersionUID = 1L; public UnexpectedNamespaceException(final String message, final ErrorType errorType, final ErrorTag errorTag, final ErrorSeverity errorSeverity) { diff --git a/opendaylight/networkconfiguration/neutron/implementation/pom.xml b/opendaylight/networkconfiguration/neutron/implementation/pom.xml index 9514ec1ed5..c8f1dd270d 100644 --- a/opendaylight/networkconfiguration/neutron/implementation/pom.xml +++ b/opendaylight/networkconfiguration/neutron/implementation/pom.xml @@ -40,7 +40,6 @@ org.apache.felix maven-bundle-plugin - 2.3.6 true diff --git a/opendaylight/networkconfiguration/neutron/pom.xml b/opendaylight/networkconfiguration/neutron/pom.xml index 4d491a51d2..998dd4488c 100644 --- a/opendaylight/networkconfiguration/neutron/pom.xml +++ b/opendaylight/networkconfiguration/neutron/pom.xml @@ -36,7 +36,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/bundlescanner/api/pom.xml b/opendaylight/northbound/bundlescanner/api/pom.xml index d861e0a7c9..ee83c93580 100644 --- a/opendaylight/northbound/bundlescanner/api/pom.xml +++ b/opendaylight/northbound/bundlescanner/api/pom.xml @@ -24,7 +24,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/bundlescanner/implementation/pom.xml b/opendaylight/northbound/bundlescanner/implementation/pom.xml index dc481ce74a..c06f8b4215 100644 --- a/opendaylight/northbound/bundlescanner/implementation/pom.xml +++ b/opendaylight/northbound/bundlescanner/implementation/pom.xml @@ -41,7 +41,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/commons/pom.xml b/opendaylight/northbound/commons/pom.xml index 83699d2b4b..09c075735a 100644 --- a/opendaylight/northbound/commons/pom.xml +++ b/opendaylight/northbound/commons/pom.xml @@ -72,7 +72,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/connectionmanager/pom.xml b/opendaylight/northbound/connectionmanager/pom.xml index 7c17c74800..a0940e3428 100644 --- a/opendaylight/northbound/connectionmanager/pom.xml +++ b/opendaylight/northbound/connectionmanager/pom.xml @@ -42,7 +42,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/containermanager/pom.xml b/opendaylight/northbound/containermanager/pom.xml index 1d91ab590e..457b1bd6a4 100644 --- a/opendaylight/northbound/containermanager/pom.xml +++ b/opendaylight/northbound/containermanager/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/controllermanager/pom.xml b/opendaylight/northbound/controllermanager/pom.xml index 6c79f9d6e2..07d34cb6d4 100644 --- a/opendaylight/northbound/controllermanager/pom.xml +++ b/opendaylight/northbound/controllermanager/pom.xml @@ -51,7 +51,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/flowprogrammer/pom.xml b/opendaylight/northbound/flowprogrammer/pom.xml index 2281aa8e3c..205b68a91c 100644 --- a/opendaylight/northbound/flowprogrammer/pom.xml +++ b/opendaylight/northbound/flowprogrammer/pom.xml @@ -46,7 +46,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/hosttracker/pom.xml b/opendaylight/northbound/hosttracker/pom.xml index d8dee6211a..bf1b082cfe 100644 --- a/opendaylight/northbound/hosttracker/pom.xml +++ b/opendaylight/northbound/hosttracker/pom.xml @@ -46,7 +46,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/httpservice-bridge/pom.xml b/opendaylight/northbound/httpservice-bridge/pom.xml index 33f204885d..c7b9cfc9a0 100644 --- a/opendaylight/northbound/httpservice-bridge/pom.xml +++ b/opendaylight/northbound/httpservice-bridge/pom.xml @@ -19,7 +19,6 @@ org.apache.felix maven-bundle-plugin - 2.4.0 true diff --git a/opendaylight/northbound/jolokia/pom.xml b/opendaylight/northbound/jolokia/pom.xml index f984d4e8ed..62af41ab46 100644 --- a/opendaylight/northbound/jolokia/pom.xml +++ b/opendaylight/northbound/jolokia/pom.xml @@ -19,7 +19,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml b/opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml index e78035f00c..f112978080 100644 --- a/opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml +++ b/opendaylight/northbound/networkconfiguration/bridgedomain/pom.xml @@ -46,7 +46,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/networkconfiguration/neutron/pom.xml b/opendaylight/northbound/networkconfiguration/neutron/pom.xml index a528f7c159..728316afab 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/pom.xml +++ b/opendaylight/northbound/networkconfiguration/neutron/pom.xml @@ -54,7 +54,6 @@ org.apache.felix maven-bundle-plugin - 2.3.6 true diff --git a/opendaylight/northbound/staticrouting/pom.xml b/opendaylight/northbound/staticrouting/pom.xml index 0e496a420f..dd2a2e6223 100644 --- a/opendaylight/northbound/staticrouting/pom.xml +++ b/opendaylight/northbound/staticrouting/pom.xml @@ -42,7 +42,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/statistics/pom.xml b/opendaylight/northbound/statistics/pom.xml index 5935db4893..76ce062424 100644 --- a/opendaylight/northbound/statistics/pom.xml +++ b/opendaylight/northbound/statistics/pom.xml @@ -42,7 +42,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/subnets/pom.xml b/opendaylight/northbound/subnets/pom.xml index 7c68f41cad..5aa2f7f202 100644 --- a/opendaylight/northbound/subnets/pom.xml +++ b/opendaylight/northbound/subnets/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/switchmanager/pom.xml b/opendaylight/northbound/switchmanager/pom.xml index 8f54a28bda..590f0bb533 100644 --- a/opendaylight/northbound/switchmanager/pom.xml +++ b/opendaylight/northbound/switchmanager/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/topology/pom.xml b/opendaylight/northbound/topology/pom.xml index 838a15db98..4a1142bb18 100644 --- a/opendaylight/northbound/topology/pom.xml +++ b/opendaylight/northbound/topology/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/northbound/usermanager/pom.xml b/opendaylight/northbound/usermanager/pom.xml index 01e43085b6..c7ab2fa712 100644 --- a/opendaylight/northbound/usermanager/pom.xml +++ b/opendaylight/northbound/usermanager/pom.xml @@ -39,7 +39,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/protocol_plugins/openflow/pom.xml b/opendaylight/protocol_plugins/openflow/pom.xml index e47933548a..a8fceec2bf 100644 --- a/opendaylight/protocol_plugins/openflow/pom.xml +++ b/opendaylight/protocol_plugins/openflow/pom.xml @@ -39,7 +39,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/protocol_plugins/stub/pom.xml b/opendaylight/protocol_plugins/stub/pom.xml index fc760e4919..540c9afb2c 100644 --- a/opendaylight/protocol_plugins/stub/pom.xml +++ b/opendaylight/protocol_plugins/stub/pom.xml @@ -26,7 +26,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/routing/dijkstra_implementation/pom.xml b/opendaylight/routing/dijkstra_implementation/pom.xml index d923c452e6..b691308e97 100644 --- a/opendaylight/routing/dijkstra_implementation/pom.xml +++ b/opendaylight/routing/dijkstra_implementation/pom.xml @@ -47,7 +47,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/sal/api/pom.xml b/opendaylight/sal/api/pom.xml index 070029f891..3ee239a0f4 100644 --- a/opendaylight/sal/api/pom.xml +++ b/opendaylight/sal/api/pom.xml @@ -39,7 +39,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/sal/connection/api/pom.xml b/opendaylight/sal/connection/api/pom.xml index 2340a829fd..b194f76a45 100644 --- a/opendaylight/sal/connection/api/pom.xml +++ b/opendaylight/sal/connection/api/pom.xml @@ -27,7 +27,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/sal/connection/implementation/pom.xml b/opendaylight/sal/connection/implementation/pom.xml index e771f846ae..7150683597 100644 --- a/opendaylight/sal/connection/implementation/pom.xml +++ b/opendaylight/sal/connection/implementation/pom.xml @@ -27,7 +27,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/sal/implementation/pom.xml b/opendaylight/sal/implementation/pom.xml index d8a7d7beef..88986dcdd0 100644 --- a/opendaylight/sal/implementation/pom.xml +++ b/opendaylight/sal/implementation/pom.xml @@ -32,7 +32,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/sal/networkconfiguration/api/pom.xml b/opendaylight/sal/networkconfiguration/api/pom.xml index ed3b391947..5b2269ae6d 100644 --- a/opendaylight/sal/networkconfiguration/api/pom.xml +++ b/opendaylight/sal/networkconfiguration/api/pom.xml @@ -23,7 +23,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/sal/networkconfiguration/implementation/pom.xml b/opendaylight/sal/networkconfiguration/implementation/pom.xml index 38944e6314..508c9bd3f5 100644 --- a/opendaylight/sal/networkconfiguration/implementation/pom.xml +++ b/opendaylight/sal/networkconfiguration/implementation/pom.xml @@ -27,7 +27,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/samples/loadbalancer/pom.xml b/opendaylight/samples/loadbalancer/pom.xml index 4d8212209b..7939083891 100644 --- a/opendaylight/samples/loadbalancer/pom.xml +++ b/opendaylight/samples/loadbalancer/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/samples/northbound/loadbalancer/pom.xml b/opendaylight/samples/northbound/loadbalancer/pom.xml index 9dd0f99be6..5854d5577f 100644 --- a/opendaylight/samples/northbound/loadbalancer/pom.xml +++ b/opendaylight/samples/northbound/loadbalancer/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/samples/simpleforwarding/pom.xml b/opendaylight/samples/simpleforwarding/pom.xml index d65980e26c..1208506bd5 100644 --- a/opendaylight/samples/simpleforwarding/pom.xml +++ b/opendaylight/samples/simpleforwarding/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/security/pom.xml b/opendaylight/security/pom.xml index 7ac2dbbe31..896e7184b2 100644 --- a/opendaylight/security/pom.xml +++ b/opendaylight/security/pom.xml @@ -30,7 +30,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/statisticsmanager/api/pom.xml b/opendaylight/statisticsmanager/api/pom.xml index bcc4f407f0..aa9b88e1b2 100644 --- a/opendaylight/statisticsmanager/api/pom.xml +++ b/opendaylight/statisticsmanager/api/pom.xml @@ -26,7 +26,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/statisticsmanager/implementation/pom.xml b/opendaylight/statisticsmanager/implementation/pom.xml index 623c028a56..10abb3d251 100644 --- a/opendaylight/statisticsmanager/implementation/pom.xml +++ b/opendaylight/statisticsmanager/implementation/pom.xml @@ -65,7 +65,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/switchmanager/api/pom.xml b/opendaylight/switchmanager/api/pom.xml index 223bb889bc..94ba0216cc 100644 --- a/opendaylight/switchmanager/api/pom.xml +++ b/opendaylight/switchmanager/api/pom.xml @@ -47,7 +47,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/switchmanager/implementation/pom.xml b/opendaylight/switchmanager/implementation/pom.xml index 542470acf1..a0718db48a 100644 --- a/opendaylight/switchmanager/implementation/pom.xml +++ b/opendaylight/switchmanager/implementation/pom.xml @@ -66,7 +66,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/topologymanager/implementation/pom.xml b/opendaylight/topologymanager/implementation/pom.xml index 746135891e..196982b361 100644 --- a/opendaylight/topologymanager/implementation/pom.xml +++ b/opendaylight/topologymanager/implementation/pom.xml @@ -44,7 +44,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/usermanager/api/pom.xml b/opendaylight/usermanager/api/pom.xml index ab2bb4fa12..c932a7cb31 100644 --- a/opendaylight/usermanager/api/pom.xml +++ b/opendaylight/usermanager/api/pom.xml @@ -43,7 +43,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true @@ -67,7 +66,6 @@ org.springframework.security.core.userdetails, javax.xml.bind.annotation org.opendaylight.controller.usermanager, - ${project.basedir}/META-INF diff --git a/opendaylight/usermanager/implementation/pom.xml b/opendaylight/usermanager/implementation/pom.xml index 58539ae698..9567db0293 100644 --- a/opendaylight/usermanager/implementation/pom.xml +++ b/opendaylight/usermanager/implementation/pom.xml @@ -55,7 +55,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/web/devices/pom.xml b/opendaylight/web/devices/pom.xml index 8ec05a1102..8906946423 100644 --- a/opendaylight/web/devices/pom.xml +++ b/opendaylight/web/devices/pom.xml @@ -50,7 +50,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/web/flows/pom.xml b/opendaylight/web/flows/pom.xml index 718b6dfc50..f62c6ac4d4 100644 --- a/opendaylight/web/flows/pom.xml +++ b/opendaylight/web/flows/pom.xml @@ -42,7 +42,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/web/osgi-brandfragment/pom.xml b/opendaylight/web/osgi-brandfragment/pom.xml index fc680a5493..fc04088961 100644 --- a/opendaylight/web/osgi-brandfragment/pom.xml +++ b/opendaylight/web/osgi-brandfragment/pom.xml @@ -19,7 +19,6 @@ org.apache.felix maven-bundle-plugin - 2.4.0 true diff --git a/opendaylight/web/root/pom.xml b/opendaylight/web/root/pom.xml index 441aab835e..6f0a0989b8 100644 --- a/opendaylight/web/root/pom.xml +++ b/opendaylight/web/root/pom.xml @@ -63,7 +63,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/web/topology/pom.xml b/opendaylight/web/topology/pom.xml index fbd07fb4fd..e65c19ff84 100644 --- a/opendaylight/web/topology/pom.xml +++ b/opendaylight/web/topology/pom.xml @@ -51,7 +51,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true diff --git a/opendaylight/web/troubleshoot/pom.xml b/opendaylight/web/troubleshoot/pom.xml index 1c03f30aae..b66889284d 100644 --- a/opendaylight/web/troubleshoot/pom.xml +++ b/opendaylight/web/troubleshoot/pom.xml @@ -46,7 +46,6 @@ org.apache.felix maven-bundle-plugin - ${bundle.plugin.version} true