Merge "Bug 1848: Make sure that XmlStreamUtils preserve list key order."
authorTony Tkacik <ttkacik@cisco.com>
Thu, 25 Sep 2014 08:50:35 +0000 (08:50 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 25 Sep 2014 08:50:35 +0000 (08:50 +0000)
98 files changed:
.gitignore
benchmarks/pom.xml
code-generator/binding-data-codec/pom.xml
code-generator/binding-data-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java
code-generator/binding-data-codec/src/test/java/org/opendaylight/yangtools/binding/data/codec/test/LeafReferenceTest.java [new file with mode: 0644]
code-generator/binding-generator-api/pom.xml
code-generator/binding-generator-impl/pom.xml
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/ModuleContext.java
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/util/BindingRuntimeContext.java
code-generator/binding-generator-spi/pom.xml
code-generator/binding-generator-util/pom.xml
code-generator/binding-java-api-generator/pom.xml
code-generator/binding-model-api/pom.xml
code-generator/binding-test-model/pom.xml
code-generator/binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/binding/rev140701/Int32StringUnionBuilder.java [new file with mode: 0644]
code-generator/binding-test-model/src/main/yang/opendaylight-yangtools-augment-test.yang
code-generator/binding-test-model/src/main/yang/opendaylight-yangtools-binding-test.yang
code-generator/binding-type-provider/pom.xml
code-generator/maven-sal-api-gen-plugin/pom.xml
code-generator/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/yangtools/yang/unified/doc/generator/GeneratorImpl.xtend
code-generator/maven-sal-api-gen-plugin/src/test/resources/doc-gen/odl-protocol-framework-cfg.yang
code-generator/pom.xml
code-generator/samples/maven-code-gen-sample/pom.xml
code-generator/samples/modeling-sample/pom.xml
common/checkstyle-logging/pom.xml
common/concepts/pom.xml
common/features-test/pom.xml
common/features/pom.xml
common/mockito-configuration/pom.xml
common/object-cache-api/pom.xml
common/object-cache-guava/pom.xml
common/object-cache-noop/pom.xml
common/parent/pom.xml
common/pom.xml
common/util/pom.xml
integration-test/bug1196-test-model/pom.xml
integration-test/bug527-test-model/pom.xml
integration-test/bundle-test/pom.xml
integration-test/pom.xml
integration-test/regression-test-model/pom.xml
integration-test/test-models/pom.xml
integration-test/yang-runtime-tests/pom.xml
model/iana/iana-afn-safi/pom.xml
model/iana/iana-if-type/pom.xml
model/iana/pom.xml
model/ietf/ietf-inet-types/pom.xml
model/ietf/ietf-netconf/pom.xml
model/ietf/ietf-restconf/pom.xml
model/ietf/ietf-ted/pom.xml
model/ietf/ietf-topology-isis/pom.xml
model/ietf/ietf-topology-l3-unicast-igp/pom.xml
model/ietf/ietf-topology-ospf/pom.xml
model/ietf/ietf-topology/pom.xml
model/ietf/ietf-yang-types-20130715/pom.xml
model/ietf/ietf-yang-types/pom.xml
model/ietf/pom.xml
model/l2-types/pom.xml
model/pom.xml
model/yang-ext/pom.xml
pom.xml
restconf/pom.xml
restconf/restconf-client-api/pom.xml
restconf/restconf-client-impl/pom.xml
restconf/restconf-common/pom.xml
restconf/restconf-jaxrs-api/pom.xml
restconf/restconf-test-service/pom.xml
restconf/restconf-util/pom.xml
third-party/antlr4-runtime-osgi/pom.xml
third-party/pom.xml
third-party/xtend-lib-osgi/pom.xml
websocket/pom.xml
websocket/websocket-client/pom.xml
yang/pom.xml
yang/yang-binding/pom.xml
yang/yang-common/pom.xml
yang/yang-data-api/pom.xml
yang/yang-data-codec-gson/pom.xml
yang/yang-data-composite-node/pom.xml
yang/yang-data-impl/pom.xml
yang/yang-data-operations/pom.xml
yang/yang-data-util/pom.xml
yang/yang-maven-plugin-it/pom.xml
yang/yang-maven-plugin-spi/pom.xml
yang/yang-maven-plugin/pom.xml
yang/yang-model-api/pom.xml
yang/yang-model-util/pom.xml
yang/yang-parser-api/pom.xml
yang/yang-parser-impl/pom.xml
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/SameQNamesInChoiceTest.java [new file with mode: 0644]
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactoryTest.java [new file with mode: 0644]
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaRepositoryTest.java
yang/yang-parser-impl/src/test/resources/bugs/qnameDuplicity/augment/two-cases.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/bugs/qnameDuplicity/two-same-node-in-choice/two-same-nodes-in-choice-case.yang [new file with mode: 0644]
yang/yang-parser-impl/src/test/resources/no-revision/imported.yang
yang/yang-parser-impl/src/test/resources/no-revision/imported@2012-12-12.yang

index 3e8b88f5c0b6dae4377d6260df391bd2cc4a3ae1..ca58b83dc4217945e770f33f8f0de62cc014cb83 100644 (file)
@@ -14,3 +14,4 @@ target
 bin
 xtend-gen
 target
+.DS_Store
index 83805cf10dc91f42dc5427f1f07e92dbc4c6b340..0e444405b5ff1e69e702145db0c1f6d3e40c8ee5 100644 (file)
@@ -5,7 +5,7 @@
   <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../common/parent</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -14,8 +14,8 @@
   <artifactId>benchmarks</artifactId>
 
   <properties>
-    <yangtools.version>0.6.2-SNAPSHOT</yangtools.version>
-    <yang.maven.plugin.version>0.6.2-SNAPSHOT</yang.maven.plugin.version>
+    <yangtools.version>0.7.0-SNAPSHOT</yangtools.version>
+    <yang.maven.plugin.version>0.7.0-SNAPSHOT</yang.maven.plugin.version>
     <java.source.version>1.7</java.source.version>
     <java.target.version>1.7</java.target.version>
     <jmh.version>0.9.7</jmh.version>
index b8bf7e11ef1f9bcb5e6dc008239c077166c63c83..792179608b1f58f1cbef2b67ae8613eacf4450d4 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index 881a62bc2e0c0abe4da9baf94c9a5536a9bf0076..11f8d3f5bae2c0e9ead199655c2ee052bd0e5ee8 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.yangtools.binding.data.codec.impl.NodeCodecContext.Codec
 import org.opendaylight.yangtools.concepts.Codec;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.sal.binding.generator.util.BindingRuntimeContext;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
 import org.opendaylight.yangtools.util.ClassLoaderUtils;
 import org.opendaylight.yangtools.yang.binding.BaseIdentity;
 import org.opendaylight.yangtools.yang.binding.BindingMapping;
@@ -53,6 +54,7 @@ import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -287,6 +289,11 @@ class BindingCodecContext implements CodecContextFactory, Immutable {
             } catch (Exception e) {
                 throw new IllegalStateException("Unable to load codec for " + valueType, e);
             }
+        } else if(rootType instanceof LeafrefTypeDefinition) {
+            Entry<GeneratedType, Object> typeWithSchema = context.getTypeWithSchema(valueType);
+            Object schema = typeWithSchema.getValue();
+            Preconditions.checkState(schema instanceof TypeDefinition<?>);
+            return getCodec(valueType, (TypeDefinition<?>) schema);
         }
         return ValueTypeCodec.getCodecFor(valueType, instantiatedType);
     }
diff --git a/code-generator/binding-data-codec/src/test/java/org/opendaylight/yangtools/binding/data/codec/test/LeafReferenceTest.java b/code-generator/binding-data-codec/src/test/java/org/opendaylight/yangtools/binding/data/codec/test/LeafReferenceTest.java
new file mode 100644 (file)
index 0000000..ba8c84c
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * 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.yangtools.binding.data.codec.test;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Map.Entry;
+import javassist.ClassPool;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.augment.rev140709.ThirdParty;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.augment.rev140709.TreeComplexLeaves;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.augment.rev140709.TreeComplexLeavesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.binding.rev140701.Int32StringUnion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.binding.rev140701.Top;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.binding.rev140701.two.level.list.TopLevelList;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.binding.rev140701.two.level.list.TopLevelListKey;
+import org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator;
+import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry;
+import org.opendaylight.yangtools.sal.binding.generator.util.JavassistUtils;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+
+
+public class LeafReferenceTest extends AbstractBindingRuntimeTest {
+
+    private static final TopLevelListKey TOP_FOO_KEY = new TopLevelListKey("foo");
+    private static final InstanceIdentifier<TreeComplexLeaves> BA_TOP_LEVEL_LIST = InstanceIdentifier.builder(Top.class)
+            .child(TopLevelList.class, TOP_FOO_KEY).augmentation(TreeComplexLeaves.class).toInstance();
+
+    private BindingNormalizedNodeCodecRegistry registry;
+
+    @Override
+    public void setup() {
+        super.setup();
+        JavassistUtils utils = JavassistUtils.forClassPool(ClassPool.getDefault());
+        registry = new BindingNormalizedNodeCodecRegistry(StreamWriterGenerator.create(utils));
+        registry.onBindingRuntimeContextUpdated(getRuntimeContext());
+    }
+
+    @Test
+    public void testCaseWithLeafReferencesType() {
+        TreeComplexLeaves binding = new TreeComplexLeavesBuilder()
+            .setIdentity(ThirdParty.class)
+            .setIdentityRef(ThirdParty.class)
+            .setSimpleType(10)
+            .setSimpleTypeRef(10)
+            .setSchemaUnawareUnion(new Int32StringUnion("foo"))
+            .setSchemaUnawareUnionRef(new Int32StringUnion(10))
+        .build();
+        Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> dom = registry.toNormalizedNode(BA_TOP_LEVEL_LIST, binding);
+        Entry<InstanceIdentifier<?>, DataObject> readed = registry.fromNormalizedNode(dom.getKey(),dom.getValue());
+        TreeComplexLeaves readedAugment = ((TreeComplexLeaves) readed.getValue());
+
+        assertEquals(binding,readedAugment);
+
+    }
+
+
+
+}
index 71c94d6ed2ae2f542d1bbbaced4218af2a89c2da..691f8e5a84a9826b1f152db62d4bdc5f57f3a046 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index 39a98ad1ef4b301259ebb139471da9e6763ed663..774a8446da9e6e26ca8e847cf36aff559bf82062 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index c1fd71df23a3065cebb6206481f52b184f08a986..0b45713b56dbe1da209cfac1bd7b51280bcfb8f7 100644 (file)
@@ -26,7 +26,6 @@ import static org.opendaylight.yangtools.binding.generator.util.Types.typeForCla
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNode;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeInSchemaContext;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule;
-
 import com.google.common.base.Splitter;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
@@ -296,7 +295,9 @@ public class BindingGeneratorImpl implements BindingGenerator {
                 final Type type = ((TypeProviderImpl) typeProvider).generatedTypeForExtendedDefinitionType(typedef,
                         typedef);
                 if (type != null) {
-                    genCtx.get(module).addTypedefType(typedef.getPath(), type);
+                    final ModuleContext ctx = genCtx.get(module);
+                    ctx.addTypedefType(typedef.getPath(), type);
+                    ctx.addTypeToSchema(type,typedef);
                 }
             }
         }
index 0548503d357a9353537007794a002c6b9a8a97d7..8fd13c3cf999807ae8288205505f76a50a139de4 100644 (file)
@@ -29,6 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 
 public final class ModuleContext {
     private GeneratedTypeBuilder moduleNode;
@@ -210,4 +211,8 @@ public final class ModuleContext {
         return Collections.unmodifiableMap(typeToSchema);
     }
 
+    protected void addTypeToSchema(Type type, TypeDefinition<?> typedef) {
+        typeToSchema.put(type, typedef);
+    }
+
 }
index a69e30ea1f437067035f5ffc459a637ad3c1e958..4a3d760172a379497a3e0d5408178285317abbe4 100644 (file)
@@ -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.yangtools.sal.binding.generator.util;
 
 import com.google.common.base.Optional;
@@ -8,7 +15,6 @@ import com.google.common.collect.HashBiMap;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Multimap;
-
 import java.util.AbstractMap;
 import java.util.AbstractMap.SimpleEntry;
 import java.util.Collection;
@@ -17,7 +23,6 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-
 import org.opendaylight.yangtools.binding.generator.util.ReferencedTypeImpl;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.sal.binding.generator.api.ClassLoadingStrategy;
@@ -42,6 +47,7 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -84,6 +90,8 @@ public class BindingRuntimeContext implements Immutable {
         for (ModuleContext ctx : modules.values()) {
             augmentationToSchema.putAll(ctx.getTypeToAugmentation());
             typeToDefiningSchema.putAll(ctx.getTypeToSchema());
+
+            ctx.getTypedefs();
             augmentableToAugmentations.putAll(ctx.getAugmentableToAugmentations());
             choiceToCases.putAll(ctx.getChoiceToCases());
             identities.putAll(ctx.getIdentities());
@@ -223,13 +231,28 @@ public class BindingRuntimeContext implements Immutable {
         return new ReferencedTypeImpl(type.getPackage().getName(), type.getSimpleName());
     }
 
+    /**
+     * Returns schema ({@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition})
+     * from which supplied class was generated. Returned schema may be augmented with
+     * additional information, which was not available at compile type
+     * (e.g. third party augmentations).
+     *
+     * @param type Binding Class for which schema should be retrieved.
+     * @return Instance of generated type (definition of Java API), along with
+     *     {@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition}
+     *     which was used to generate supplied class.
+     */
     public Entry<GeneratedType, Object> getTypeWithSchema(final Class<?> type) {
         Object schema = typeToDefiningSchema.get(referencedType(type));
         Type definedType = typeToDefiningSchema.inverse().get(schema);
         Preconditions.checkNotNull(schema);
         Preconditions.checkNotNull(definedType);
+        if(definedType instanceof GeneratedTypeBuilder) {
+            return new SimpleEntry<>(((GeneratedTypeBuilder) definedType).toInstance(), schema);
+        }
+        Preconditions.checkArgument(definedType instanceof GeneratedType,"Type {} is not GeneratedType",type);
+        return new SimpleEntry<>((GeneratedType) definedType,schema);
 
-        return new SimpleEntry<>(((GeneratedTypeBuilder) definedType).toInstance(), schema);
     }
 
     public ImmutableMap<Type, Entry<Type, Type>> getChoiceCaseChildren(final DataNodeContainer schema) {
index 08b3cf478bc0f92352b294731e088f71386d16e4..185fd691430bce9927158397f159886d10870fd9 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index d6c7df04e61f8697836312e5f5becc5e0c7cefd5..367aaff67bee2e38b019940bad8e87ce535863e2 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index 871e57b7ac6b7ebdd02ba8f11cdaeace31efdb13..b31e1122cabe8c64f6d206f437be83a856ebaff2 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index 7473059676fc17ec0900aea55bda309792cdbb7a..2403d6e958d22803fae866a505821de1b9658468 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index 106c90439e454eba056020acb3ae881183bed0d8..c93a84c7c133e1133a4443aad2c86743e69f9958 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/code-generator/binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/binding/rev140701/Int32StringUnionBuilder.java b/code-generator/binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/binding/rev140701/Int32StringUnionBuilder.java
new file mode 100644 (file)
index 0000000..7c78c4b
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.binding.rev140701;
+
+
+/**
+ * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation.
+ * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32).
+ * The reason behind putting it under src/main/java is:
+ * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent
+ * loss of user code.
+ */
+public class Int32StringUnionBuilder {
+
+    public static Int32StringUnion getDefaultInstance(final String defaultValue) {
+        try {
+            return new Int32StringUnion(Integer.parseInt(defaultValue));
+        } catch (NumberFormatException e) {
+            return new Int32StringUnion(defaultValue);
+        }
+    }
+
+}
index 7363f38c46ff87e5223cc2f91011d686949c667f..c26559b0714b081b92ea6828a19933c4d0e19d8e 100644 (file)
@@ -19,6 +19,10 @@ module opendaylight-yangtools-augment-test {
         "Test model for testing data broker with nested lists.";
     }
 
+    identity third-party {
+        base test:test-root;
+    }
+
     grouping leaf-from-grouping {
         leaf leaf-from-grouping {
             type string;
@@ -35,7 +39,6 @@ module opendaylight-yangtools-augment-test {
                 type string;
             }
         }
-    
     }
 
     augment "/test:top/test:top-level-list" {
@@ -43,6 +46,36 @@ module opendaylight-yangtools-augment-test {
         uses leaf-from-grouping;
     }
 
+    augment "/test:top/test:top-level-list" {
+        ext:augment-identifier tree-complex-leaves;
+        leaf simple-type {
+            type int32;
+        }
+        leaf identity {
+            type test:test-identityref;
+        }
+        leaf schema-unaware-union {
+            type test:int32-string-union;
+        }
+
+        leaf simple-type-ref {
+            type leafref {
+                path "../simple-type";
+            }
+        }
+        leaf identity-ref {
+            type leafref {
+                path "../identity";
+            }
+        }
+        leaf schema-unaware-union-ref {
+            type leafref {
+                path "../schema-unaware-union";
+            }
+        }
+    }
+
+
     augment "/test:put-top/test:input/test:top-level-list" {
         ext:augment-identifier rpc-leaf-only-uses-augment;
         uses leaf-from-grouping;
index c5e5ce23b7ae37532a8d5c2e57849e5820376105..8042e3dd8c345c4a8b839f1832879138c7243dda 100644 (file)
@@ -13,6 +13,29 @@ module opendaylight-yangtools-binding-test {
         "Test model for testing data broker with nested lists.";
     }
 
+    typedef int32-string-union {
+        type union {
+            type int32;
+            type string;
+        }
+    }
+
+    identity test-root;
+
+    identity test-one {
+        base test-root;
+    }
+
+    identity test-two {
+        base test-root;
+    }
+
+    typedef test-identityref {
+        type identityref {
+            base test-root;
+        }
+    }
+
     grouping two-level-list {
         list top-level-list {
             description
index 57b32fa25938056a619318483163c483c67a6bcb..2f83ef29444f56df29ef276d14f8f4de602b00e5 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index 9f6f06ee639ff8810c22d986e5f00cbf1c296a3f..f8ccd295a21b245bc927a267b9821857177939cf 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>maven-sal-api-gen-plugin</artifactId>
index 185299d190f35dca2e35424b3e40e577e195e526..672f26eb1e04f3087e3063f12e9d5b9aa12ec56c 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.unified.doc.generator
 
+import com.google.common.collect.Iterables
 import java.io.BufferedWriter
 import java.io.File
 import java.io.IOException
@@ -21,6 +22,8 @@ import java.util.List
 import java.util.Map
 import java.util.Set
 import org.opendaylight.yangtools.yang.common.QName
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode
 import org.opendaylight.yangtools.yang.model.api.AugmentationTarget
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode
@@ -52,9 +55,6 @@ import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 import org.sonatype.plexus.build.incremental.BuildContext
 import org.sonatype.plexus.build.incremental.DefaultBuildContext
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier
-import com.google.common.collect.Iterables
 
 class GeneratorImpl {
 
index 1856369178c0c2230db2eca3e24288ce5ca2f0b3..d29a2a70e9b1a204879f3b04c10ac9e9532725ac 100644 (file)
@@ -77,12 +77,12 @@ module protocol-framework {
         case reconnect-immediately-strategy-factory {
             when "/config:modules/config:module/config:type = 'reconnect-immediately-strategy-factory'";
 
-            leaf timeout {
+            leaf timeout2 {
                 mandatory true;
                 type int32;
             }
 
-            container executor {
+            container executor2 {
                 uses config:service-ref {
                     refine type {
                         mandatory true;
@@ -138,7 +138,7 @@ module protocol-framework {
                 units "milliseconds";
             }
 
-            container executor {
+            container executor3 {
                 uses config:service-ref {
                     refine type {
                         mandatory true;
index fc239681b50fbf6de3dfabd9397fd4c634b01481..c7f3dfd306e41bb7c36f98c6aa852966a2ac7b57 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../common/parent</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
index bf2d1b7371c6d5c12137b864951cfc26c00ca521..52daaac3b81ab05af8626d7069b9909db9c0c804 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
     <artifactId>maven-code-gen-sample</artifactId>
 
index f9ef1a7b0b67d757eaee2c5ac4b10464f8fe4693..4e1adde8af111b752b3b7f108a8d96dc8a8a5a31 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>binding-generator</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
     <artifactId>modeling-sample</artifactId>
 
index 0a53537af2a3eb44e77b19eefe3c5182554da60d..a29a3fe38372ab5aae8bc21628b9487e8cb5fac0 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
   <artifactId>checkstyle-logging</artifactId>
index cdbcba44489083df4f524937133360be1508dbbf..d0968de0960700a7ee8a3b3737468c9c48664020 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 79452b72c3de156136a5ee31d5676a74a1fc3acd..d96aca0a24161a022d314c3a22978041b500d62a 100644 (file)
@@ -13,7 +13,7 @@
    <parent>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>yangtools-parent</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
       <relativePath>../parent/pom.xml</relativePath>
    </parent>
    <artifactId>features-test</artifactId>
index 9ecaeb485288d219b096792e020863d4edb544b5..f3bb913a6a150f64e59bbd17eff276c3649d5431 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
     <artifactId>features-yangtools</artifactId>
index c2e0d3e4472a61df1d5e0c44d53374d08df1e99f..aa81fdde17cdc70434b2e1bfca1b24f604d4e7bb 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 1ef06e20b4e25143dfc737d3c9bff4ddf203d18c..568834cdd80d2c26c2c1b064097022eb20ab8e81 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
     <packaging>bundle</packaging>
index 0291ff95288eb811d3f1d20c05c1ef64a9e5c302..ed837d1ace1d9c2cf838bc7493b0112c23bccec3 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 088243dc003d59c2464b5443070dd11b31ced087..2105738dd66ec9b2aea519792c10135f68075055 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
     <packaging>bundle</packaging>
index 263fd7924315d22a42068133cdd8aea263f0dd68..0b97d3ee7216f69bbb8056fcf55d239e2ac23be2 100644 (file)
@@ -20,7 +20,7 @@
     <modelVersion>4.0.0</modelVersion>
     <artifactId>yangtools-parent</artifactId>
     <groupId>org.opendaylight.yangtools</groupId>
-    <version>0.6.2-SNAPSHOT</version>
+    <version>0.7.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <prerequisites>
         <maven>3.0.4</maven>
         <ctrie.version>0.2.0</ctrie.version>
         <exam.version>3.0.0</exam.version>
         <groovy.version>2.1.6</groovy.version>
-        <yangtools.version>0.6.2-SNAPSHOT</yangtools.version>
-        <ietf.topology.version>2013.10.21.2-SNAPSHOT</ietf.topology.version>
-        <ietf.inet.types.version>2010.09.24.4-SNAPSHOT</ietf.inet.types.version>
-        <ietf.yang.types.version>2010.09.24.4-SNAPSHOT</ietf.yang.types.version>
-        <ietf.yang.types.20130715.version>2013.07.15.1-SNAPSHOT</ietf.yang.types.20130715.version>
-        <ietf.restconf.version>2013.10.19.1-SNAPSHOT</ietf.restconf.version>
+        <yangtools.version>0.7.0-SNAPSHOT</yangtools.version>
         <karaf.version>3.0.1</karaf.version>
         <nexusproxy>http://nexus.opendaylight.org/content</nexusproxy>
-        <opendaylight.l2.types.version>2013.08.27.4-SNAPSHOT</opendaylight.l2.types.version>
-        <yang.ext.version>2013.09.07.4-SNAPSHOT</yang.ext.version>
         <maven.javadoc.version>2.9.1</maven.javadoc.version>
         <jsr305.version>2.0.1</jsr305.version>
 
+        <!-- Model versions -->
+        <ietf.topology.version>2013.10.21.7-SNAPSHOT</ietf.topology.version>
+        <ietf.inet.types.version>2010.09.24.7-SNAPSHOT</ietf.inet.types.version>
+        <ietf.yang.types.version>2010.09.24.7-SNAPSHOT</ietf.yang.types.version>
+        <ietf.yang.types.20130715.version>2013.07.15.7-SNAPSHOT</ietf.yang.types.20130715.version>
+        <ietf.restconf.version>2013.10.19.7-SNAPSHOT</ietf.restconf.version>
+        <opendaylight.l2.types.version>2013.08.27.7-SNAPSHOT</opendaylight.l2.types.version>
+        <yang.ext.version>2013.09.07.7-SNAPSHOT</yang.ext.version>
+
         <!-- Sonar config -->
         <sonar-jacoco-listeners.version>2.4</sonar-jacoco-listeners.version>
         <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
                 <plugin>
                     <groupId>org.opendaylight.yangtools</groupId>
                     <artifactId>yang-maven-plugin</artifactId>
-                    <version>0.6.2-SNAPSHOT</version>
+                    <version>0.7.0-SNAPSHOT</version>
                     <executions>
                         <execution>
                             <goals>
                         <dependency>
                             <groupId>org.opendaylight.yangtools</groupId>
                             <artifactId>maven-sal-api-gen-plugin</artifactId>
-                            <version>0.6.2-SNAPSHOT</version>
+                            <version>0.7.0-SNAPSHOT</version>
                             <type>jar</type>
                         </dependency>
                     </dependencies>
index f566097b35067db933ae3bc19be19974535f1b96..f9a2d2423fd0a0107cdbcb6cb10785683a63ceca 100644 (file)
     <parent>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>yangtools-parent</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
       <relativePath>parent</relativePath>
     </parent>
 
     <groupId>org.opendaylight.yangtools</groupId>
-    <version>0.6.2-SNAPSHOT</version>
+    <version>0.7.0-SNAPSHOT</version>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>common-aggregator</artifactId>
     <packaging>pom</packaging>
index f3502891baa6b585d5460ef3f2300ed2d65d88f8..f0859cb69ad1de1fcf67cdbd56311d0fe09e73ec 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
     <packaging>bundle</packaging>
@@ -50,7 +50,7 @@
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>mockito-configuration</artifactId>
             <scope>test</scope>
-            <version>0.6.2-SNAPSHOT</version>
+            <version>0.7.0-SNAPSHOT</version>
         </dependency>
     </dependencies>
     <build>
index 621dc2d04dc945f74b3efa79e2b7f0eebd7aa9ed..21edf5c4033274699836cd285746f494f150d79f 100644 (file)
@@ -10,7 +10,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
                     <dependency>
                         <groupId>org.opendaylight.yangtools</groupId>
                         <artifactId>yang-binding</artifactId>
-                        <version>0.6.2-SNAPSHOT</version>
+                        <version>0.7.0-SNAPSHOT</version>
                     </dependency>
                     <dependency>
                         <groupId>org.opendaylight.yangtools</groupId>
                         <artifactId>yang-common</artifactId>
-                        <version>0.6.2-SNAPSHOT</version>
+                        <version>0.7.0-SNAPSHOT</version>
                     </dependency>
                     <dependency>
                         <groupId>org.opendaylight.yangtools.model</groupId>
                         <artifactId>yang-ext</artifactId>
-                        <version>2013.09.07.4-SNAPSHOT</version>
+                        <version>${yang.ext.version}</version>
                     </dependency>
                     <dependency>
                         <groupId>org.opendaylight.yangtools.model</groupId>
                         <artifactId>ietf-inet-types</artifactId>
-                        <version>2010.09.24.4-SNAPSHOT</version>
+                        <version>${ietf.inet.types.version}</version>
                     </dependency>
                 </dependencies>
             </plugin>
index 580afea5d3d652f7486ba0792893562869fea9a2..9a7177229b87fd0b55d8d976c0098abe655ecae8 100644 (file)
@@ -10,7 +10,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 4ae787b3d39ba3caa40705c6d6af283d11d95056..fb84a0d7bce27b074b8be13cd579b2e0245a2117 100644 (file)
@@ -10,7 +10,7 @@
     <parent>
         <artifactId>yangtools-parent</artifactId>
         <groupId>org.opendaylight.yangtools</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 997549c6ec69c14415ec4f1c41e002bc6e6ab270..274a052d02bc252c5c50bf82e70653845c27019e 100644 (file)
     <parent>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>yangtools-parent</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
       <relativePath>../common/parent</relativePath>
     </parent>
 
     <groupId>org.opendaylight.yangtools</groupId>
-    <version>0.6.2-SNAPSHOT</version>
+    <version>0.7.0-SNAPSHOT</version>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>integration-tests-aggregator</artifactId>
     <packaging>pom</packaging>
index 01af98f61faf5030dfd2f5c6c4f36ddc4aed8489..4b0a4f1d7f6a99858c3d8024934ca1f73ce7d0a6 100644 (file)
@@ -9,7 +9,7 @@
 
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <artifactId>yangtools-parent</artifactId>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
index 765dcbf5c048f35e590d9db0758b9d3979fe8949..656ed68187738ca04c3e010d71eb518a97f53720 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
@@ -60,7 +60,7 @@
                     <dependency>
                         <groupId>org.opendaylight.yangtools</groupId>
                         <artifactId>maven-sal-api-gen-plugin</artifactId>
-                        <version>0.6.2-SNAPSHOT</version>
+                        <version>0.7.0-SNAPSHOT</version>
                         <type>jar</type>
                     </dependency>
                 </dependencies>
index 4913393b5a252f280b8fd6da5c4f45acdb3d928b..c145dc54ffa19de9a9f83f97f5e2c58a0a4aa5fe 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 34b54a6a73452ec82ad7bf093b7c17d747a1c988..57bd56c9be34eae1848c01c97ecd40916b20ed27 100644 (file)
     <parent>
         <artifactId>model-iana</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>iana-afn-safi</artifactId>
-    <version>2013.07.04.4-SNAPSHOT</version>
+    <version>2013.07.04.7-SNAPSHOT</version>
 
     <build>
         <plugins>
index dbb472788a5b4238321631dad8b03386ceb6c078..b354c1c7cab3d46479b8f31afe5ccf05acaed39a 100644 (file)
     <parent>
         <artifactId>model-iana</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>iana-if-type</artifactId>
-    <version>2013.07.04.4-SNAPSHOT</version>
+    <version>2013.07.04.7-SNAPSHOT</version>
 
     <build>
         <plugins>
index 9ad48a2a83da49d27cc052e4baf17156fbea62cc..4894d42e722fb03e3d0bafeec52fbc8476011b7f 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <artifactId>model-parent</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
index 768948e5c3fb9e77497df0b3b546f4f07ad0f1ee..9759f5ce93a98b7351f8b2762aa1f04ac77578d7 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-inet-types</artifactId>
-    <version>2010.09.24.4-SNAPSHOT</version>
+    <version>2010.09.24.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index 23166005206afa8ae7776596552051d52dd14511..b1e051cae58ede259bfed0d974c78bdaad151c44 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index 8b62c3e1c71e4ebb26456afe77ce274f3f122947..e9ce3701373f407357650f202c1ad09ee3543653 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-restconf</artifactId>
-    <version>2013.10.19.1-SNAPSHOT</version>
+    <version>2013.10.19.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
@@ -32,7 +32,6 @@
         <dependency>
             <groupId>org.opendaylight.yangtools.model</groupId>
             <artifactId>ietf-yang-types-20130715</artifactId>
-            <version>2013.07.15.1-SNAPSHOT</version>
         </dependency>
         
         <dependency>
index 8265a7c135b6fed5da815ec434a347e096f033b6..d8f758d8783473e94a151943f9ea813678dd585a 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-ted</artifactId>
-    <version>2013.10.21.2-SNAPSHOT</version>
+    <version>2013.10.21.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index b5048c9cc0b0fbf932531690f123d26bd6f6ce5f..77c026bf4cc652531e53f3aa267e7580e3430878 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-topology-isis</artifactId>
-    <version>2013.10.21.2-SNAPSHOT</version>
+    <version>2013.10.21.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index 2db65be1cd624ee251c8b3d105191243778e652d..6d00b7814b7bced60b344438696f38be43e4b17a 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-topology-l3-unicast-igp</artifactId>
-    <version>2013.10.21.2-SNAPSHOT</version>
+    <version>2013.10.21.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index 04d847ef7c0cdcaae614d728b149187daebbe887..64f2eb5dfa067109074c8d6447278be96ce00728 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-topology-ospf</artifactId>
-    <version>2013.10.21.2-SNAPSHOT</version>
+    <version>2013.10.21.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index 86b814155451376601c11fbed94a77007dfac6ee..ea135bbb88bbb9977c42b1a6da4c6c027b457266 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-topology</artifactId>
-    <version>2013.10.21.2-SNAPSHOT</version>
+    <version>2013.10.21.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index 88000607479ffca2e49c3776934436d5be3b6f07..25df3cebcaf72566136ac31e49f952116246de04 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-yang-types-20130715</artifactId>
-    <version>2013.07.15.1-SNAPSHOT</version>
+    <version>2013.07.15.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index fced463f9f204149435e2091a6fbf14e977084ee..685d70daff2ed1adc8d0a02402b682a2c11e68c2 100644 (file)
     <parent>
         <artifactId>model-ietf</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>ietf-yang-types</artifactId>
-    <version>2010.09.24.4-SNAPSHOT</version>
+    <version>2010.09.24.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
index 886a16dfefa5e2c3d5b6943284f44854bdaa5730..d50f275fa949729551497dfb19c70277c04639ec 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <artifactId>model-parent</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
index bbea425cd1740733788737c9d816078567c6e4be..c47cc0a90e3494baab6438743a3ae3e9bd3c1346 100644 (file)
     <parent>
         <artifactId>model-parent</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>opendaylight-l2-types</artifactId>
-    <version>2013.08.27.4-SNAPSHOT</version>
+    <version>2013.08.27.7-SNAPSHOT</version>
 
     <build>
         <plugins>
index 1167a64fa65e40636868f465ca50f99d11131646..206d1b288601b9a6c7f974a14bec51facaf75d07 100644 (file)
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../common/parent</relativePath>
     </parent>
     <groupId>org.opendaylight.yangtools.model</groupId>
-    <!--<version>0.6.2-SNAPSHOT</version>-->
+    <!--<version>0.7.0-SNAPSHOT</version>-->
     <modelVersion>4.0.0</modelVersion>
     <artifactId>model-parent</artifactId>
     <packaging>pom</packaging>
@@ -68,7 +68,7 @@
                     <dependency>
                         <groupId>org.opendaylight.yangtools</groupId>
                         <artifactId>maven-sal-api-gen-plugin</artifactId>
-                        <version>0.6.2-SNAPSHOT</version>
+                        <version>0.7.0-SNAPSHOT</version>
                         <type>jar</type>
                     </dependency>
                 </dependencies>
index 6a1d7d84e5e486ef9d7dd17033091a5d760df525..2bb3db677f40f85af0c3b6ab6006e3638fcfd344 100644 (file)
     <parent>
         <artifactId>model-parent</artifactId>
         <groupId>org.opendaylight.yangtools.model</groupId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>yang-ext</artifactId>
-    <version>2013.09.07.4-SNAPSHOT</version>
+    <version>2013.09.07.7-SNAPSHOT</version>
     <name>${project.artifactId}</name>
     <description>${project.artifactId}</description>
 
diff --git a/pom.xml b/pom.xml
index a0e081e02b2165653c26a3288670ee2e6f552229..cac5289667540f8fdcf6319933a458fd69ba1093 100644 (file)
--- a/pom.xml
+++ b/pom.xml
     <parent>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>yangtools-parent</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
       <relativePath>common/parent</relativePath>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <artifactId>yangtools-aggregator</artifactId>
     <groupId>org.opendaylight.yangtools</groupId>
-    <version>0.6.2-SNAPSHOT</version>
+    <version>0.7.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
     <scm>
index b059887def2f19ade1e2c57bb1b4e5d4323d7f58..fba0fb7d03ba2e67d937a9126f5b4c516277e216 100644 (file)
@@ -10,7 +10,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../common/parent</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
index 195ed6524a386ea4944a0dd0477c25dec4fcd6dd..130e7dffbbbb1532dded88ad00f9ccb1dead98cc 100644 (file)
@@ -15,7 +15,7 @@
    <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>restconf-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
     <dependencies>
         <dependency>
index 6431684f3d7ac9baf77afa2064e28b2807a9bf72..ef5b56a5486cdc9d0dfac2da5ff9c0d007f5ccf8 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>restconf-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
   <artifactId>restconf-client-impl</artifactId>
index 102ddf760b0fa5658a583efa9498fd9cf674ca19..dbb4819085c9cf225890047d2d415d95bdefcc26 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>restconf-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>restconf-common</artifactId>
index 292b7d0f5b5693fabdfd3b205a20b462b090443f..aa91bc614bed2c1fdb70357fa9b2073a515ab6fc 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>restconf-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
     <artifactId>restconf-jaxrs-api</artifactId>
     <name>restconf-jaxrs-api</name>
index e5e2a1b98042a887fb5291b62c2a97d9c9269b4d..7c079b9c0f31bd9af6245a7f0ba994bcfce41317 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>restconf-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>restconf-test-service</artifactId>
index b65308761db3964e8d10b5ff09f98dbe7dda1918..bd4f4ad9c55791025a6cd9bc0e06a7db87d2dd4d 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>restconf-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>restconf-util</artifactId>
@@ -94,7 +94,7 @@
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>binding-data-codec</artifactId>
-            <version>0.6.2-SNAPSHOT</version>
+            <version>0.7.0-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
index 061363e288860fe849b0e749c275e4dc10be34cd..7442f99b3a8205f92a85394e2cb97142e5badb5a 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>third-party-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
index ba1b0fe6ce424861a9296606325dd340df832c0d..0d2c3fc18efe09c82e6771699c4703a023947cb8 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
index 2a4017530c477e9d1e3faae8261c27ebcc86084d..ca98a467377440ea74c07f2938f5b0819f32bbc0 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>third-party-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
index 2edd23b4b130f0e0267c1e0fc392556def4d2fcb..06b5c662623d6f99400ffbf75415add1262ed5da 100644 (file)
     <parent>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>yangtools-parent</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
       <relativePath>../common/parent</relativePath>
     </parent>
     <groupId>org.opendaylight.yangtools</groupId>
-    <version>0.6.2-SNAPSHOT</version>
+    <version>0.7.0-SNAPSHOT</version>
     <artifactId>websocket-aggregator</artifactId>
     <packaging>pom</packaging>
 
index 5276049630adccd14b1371b31cf1d23fae8f3a23..341099985966b42f5bf6985d8c7bae426651bbfd 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 269ad48ec10e2658a0574413368be51b78881f9d..2672810cf9c399379b0fb2266d74b6a137b322fe 100644 (file)
     <parent>
       <groupId>org.opendaylight.yangtools</groupId>
       <artifactId>yangtools-parent</artifactId>
-      <version>0.6.2-SNAPSHOT</version>
+      <version>0.7.0-SNAPSHOT</version>
       <relativePath>../common/parent</relativePath>
     </parent>
     <groupId>org.opendaylight.yangtools</groupId>
-    <version>0.6.2-SNAPSHOT</version>
+    <version>0.7.0-SNAPSHOT</version>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>yang-aggregator</artifactId>
     <packaging>pom</packaging>
index ad339e8668b02542d6363eaf2bb11eb0597f2065..ada7f5a89ddd2a74a95f6d30a1f79c16af367a58 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 3b814bf84c9c417ea22d48ca0e1d3e648098c364..dc732e3dab4aaf34e357bf2b469472b27a03ed21 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index a44c527e2073793c018fcc5984cde15b664c8924..688dbb1fdbe2757fdfe7c8cd5b9c0bfb368558cf 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 6947a8121147cd5d05de5f73d7b11fdc620d738b..fd7481133768f0e605af26ad45b15cd741c1cbc0 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index d4b1533cd2f055ac98759266f30e834061e6a401..3d62deeb2fd6a0df965ba60279af49461b209680 100644 (file)
@@ -10,7 +10,7 @@
        <parent>
                <groupId>org.opendaylight.yangtools</groupId>
                <artifactId>yangtools-parent</artifactId>
-               <version>0.6.2-SNAPSHOT</version>
+               <version>0.7.0-SNAPSHOT</version>
                <relativePath>/../../common/parent/pom.xml</relativePath>
        </parent>
 
index 1200c3735169227c740f4b6e522f25d4656fbac3..3b501d50ebec4bfce1fee68e86259767ba314d4a 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 8d5397bb069faac2611a34ebc22c738f690495e1..dec5406e42c133f1a19af14fc386e67a5ab2abaa 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index d6615f7afba3229e8883a017e88718aaee932196..b86f4400197981a3537efec94f8b1f8ed43f9ca6 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 891e8898a00740b5bf66f78c2a27ecdad0642f1a..e16ae98b18c7db7c6a7bdf14614631b23ddda0f6 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 2cdd00bc40c066f5324f381ca3cd031b83c3d532..d5f22d93d44f6a40054f60fc0f2d2e2cdae73718 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index d780f767e25774281ec6e557a0c31eaa0a6a85c6..5312ddb5953980240a2c81213fd6cbfbdc3d91f5 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index a993efa6cf4437bf3fa5ee71a305ede41d95ccf3..10361ba20ccb79768a550382f7e058819dcd576f 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index a2bb89c602aca4ea64802a2bce70d9020ee698bd..aae8fa165a2d563f0d749f1827bc032ab141a39a 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 5188319263d51f97a445c832b59098ea4f762a1e..ee32cd90d54d5d17887485c376a8c4f2e0f1f830 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 8c752995d0002cde52e912b184cb63769bebf119..6dc50de20b21b26ba2728d098a8d3c4359f35b75 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
         <artifactId>yangtools-parent</artifactId>
-        <version>0.6.2-SNAPSHOT</version>
+        <version>0.7.0-SNAPSHOT</version>
         <relativePath>/../../common/parent/pom.xml</relativePath>
     </parent>
 
index 7948158f4dee6b277493d8d2451395d3ee6b3d19..d8aaef9001a9f67dede591d84511da293939c9aa 100644 (file)
@@ -18,7 +18,6 @@ import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.reso
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Splitter;
 import com.google.common.collect.HashBiMap;
 import com.google.common.io.ByteSource;
 import java.io.File;
@@ -47,12 +46,19 @@ import org.opendaylight.yangtools.antlrv4.code.gen.YangParser;
 import org.opendaylight.yangtools.antlrv4.code.gen.YangParser.YangContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
 import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder;
@@ -87,7 +93,6 @@ import org.slf4j.LoggerFactory;
 @Immutable
 public final class YangParserImpl implements YangContextParser {
     private static final Logger LOG = LoggerFactory.getLogger(YangParserImpl.class);
-    private static final Splitter COLON_SPLITTER = Splitter.on(':');
     private static final YangParserImpl INSTANCE = new YangParserImpl();
 
     public static YangParserImpl getInstance() {
@@ -709,6 +714,7 @@ public final class YangParserImpl implements YangContextParser {
         resolveUsesForNodes(modules);
         resolveAugments(modules);
         resolveIdentities(modules);
+        checkChoiceCasesForDuplicityQNames(modules);
 
         // build
         final Map<ModuleBuilder, Module> result = new LinkedHashMap<>();
@@ -1223,4 +1229,87 @@ public final class YangParserImpl implements YangContextParser {
         return null;
     }
 
+
+    /**
+     * Traverse through modules and check if choice has choice cases with the
+     * same qname.
+     *
+     * @param modules
+     *            all loaded modules
+     */
+    private void checkChoiceCasesForDuplicityQNames(final Map<URI, TreeMap<Date, ModuleBuilder>> modules) {
+        for (Map.Entry<URI, TreeMap<Date, ModuleBuilder>> entry : modules.entrySet()) {
+            for (Map.Entry<Date, ModuleBuilder> childEntry : entry.getValue().entrySet()) {
+                final ModuleBuilder moduleBuilder = childEntry.getValue();
+                final Module module = moduleBuilder.build();
+                final List<ChoiceNode> allChoicesFromModule = getChoicesFrom(module);
+
+                for (ChoiceNode choiceNode : allChoicesFromModule) {
+                    findDuplicityNodesIn(choiceNode, module, moduleBuilder, modules);
+                }
+            }
+        }
+    }
+
+    private void findDuplicityNodesIn(final ChoiceNode choiceNode, final Module module, final ModuleBuilder moduleBuilder,
+            final Map<URI, TreeMap<Date, ModuleBuilder>> modules) {
+        final Set<QName> duplicityTestSet = new HashSet<QName>();
+
+        for (ChoiceCaseNode choiceCaseNode : choiceNode.getCases()) {
+
+            for (DataSchemaNode childSchemaNode : choiceCaseNode.getChildNodes()) {
+                if (!duplicityTestSet.add(childSchemaNode.getQName())) {
+                    final Optional<SchemaNodeBuilder> schemaNodeBuilder = BuilderUtils.findSchemaNodeInModule(childSchemaNode.getPath(), moduleBuilder);
+                    final String nameOfSchemaNode = childSchemaNode.getQName().getLocalName();
+                    int lineOfSchemaNode = 0;
+
+                    if (schemaNodeBuilder.isPresent()) {
+                        lineOfSchemaNode = schemaNodeBuilder.get().getLine();
+                    }
+                    throw new YangParseException(module.getName(), lineOfSchemaNode,
+                            String.format("Choice has two nodes case with same qnames - %s", nameOfSchemaNode));
+                }
+            }
+
+            for (UnknownSchemaNode unknownNode : choiceCaseNode.getUnknownSchemaNodes()) {
+                if (!duplicityTestSet.add(unknownNode.getQName())) {
+                    final Optional<SchemaNodeBuilder> schemaNodeBuilder = BuilderUtils.findSchemaNodeInModule(unknownNode.getPath(), moduleBuilder);
+                    final String nameOfUnknownNode = unknownNode.getQName().getLocalName();
+                    int lineOfUnknownNode = 0;
+
+                    if (schemaNodeBuilder.isPresent()) {
+                        lineOfUnknownNode = schemaNodeBuilder.get().getLine();
+                    }
+                    throw new YangParseException(module.getName(), lineOfUnknownNode,
+                            String.format("Choice has two nodes case with same qnames - %s", nameOfUnknownNode));
+                }
+            }
+        }
+    }
+
+    private List<ChoiceNode> getChoicesFrom(final Module module) {
+        final List<ChoiceNode> allChoices = new ArrayList<ChoiceNode>();
+
+        for (DataSchemaNode dataSchemaNode : module.getChildNodes()) {
+            findChoicesIn(dataSchemaNode, allChoices);
+        }
+        return allChoices;
+    }
+
+    private void findChoicesIn(final SchemaNode schemaNode, final Collection<ChoiceNode> choiceNodes) {
+        if (schemaNode instanceof ContainerSchemaNode) {
+            final ContainerSchemaNode contSchemaNode = (ContainerSchemaNode) schemaNode;
+            for (DataSchemaNode dataSchemaNode : contSchemaNode.getChildNodes()) {
+                findChoicesIn(dataSchemaNode, choiceNodes);
+            }
+        } else if (schemaNode instanceof ListSchemaNode) {
+            final ListSchemaNode listSchemaNode = (ListSchemaNode) schemaNode;
+            for (DataSchemaNode dataSchemaNode : listSchemaNode.getChildNodes()) {
+                findChoicesIn(dataSchemaNode, choiceNodes);
+            }
+        } else if (schemaNode instanceof ChoiceNode) {
+            choiceNodes.add((ChoiceNode) schemaNode);
+        }
+    }
+
 }
index 3c8a45e26dca59f7f100b8f7fbc4f4289af54e73..ebb97ee8bbf632c5601f8b69ebdbe41bc0da9047 100644 (file)
@@ -10,10 +10,14 @@ package org.opendaylight.yangtools.yang.parser.repo;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.collect.Collections2;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
 import com.google.common.util.concurrent.AsyncFunction;
 import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FutureCallback;
@@ -21,12 +25,15 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.net.URI;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.TreeMap;
+import javax.annotation.Nullable;
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 import org.opendaylight.yangtools.util.concurrent.ExceptionMapper;
@@ -81,13 +88,13 @@ final class SharedSchemaContextFactory implements SchemaContextFactory {
             final Map<SourceIdentifier, ParserRuleContext> asts =
                     Maps.transformValues(srcs, ASTSchemaSource.GET_AST);
             final Map<String, TreeMap<Date, URI>> namespaceContext = BuilderUtils.createYangNamespaceContext(
-                    asts.values(), Optional.<SchemaContext> absent());
+                    asts.values(), Optional.<SchemaContext>absent());
 
             final ParseTreeWalker walker = new ParseTreeWalker();
             final Map<SourceIdentifier, ModuleBuilder> sourceToBuilder = new LinkedHashMap<>();
 
-            for (Entry<SourceIdentifier, ParserRuleContext> entry : asts.entrySet()) {
-                ModuleBuilder moduleBuilder = YangParserListenerImpl.create(namespaceContext, entry.getKey().getName(),
+            for (final Entry<SourceIdentifier, ParserRuleContext> entry : asts.entrySet()) {
+                final ModuleBuilder moduleBuilder = YangParserListenerImpl.create(namespaceContext, entry.getKey().getName(),
                         walker, entry.getValue()).getModuleBuilder();
 
                 moduleBuilder.setSource(srcs.get(entry.getKey()).getYangText());
@@ -106,6 +113,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory {
     // FIXME: ignored right now
     private final SchemaSourceFilter filter;
 
+    // FIXME SchemaRepository should be the type for repository parameter instead of SharedSchemaRepository (final implementation)
     public SharedSchemaContextFactory(final SharedSchemaRepository repository, final SchemaSourceFilter filter) {
         this.repository = Preconditions.checkNotNull(repository);
         this.filter = Preconditions.checkNotNull(filter);
@@ -113,14 +121,22 @@ final class SharedSchemaContextFactory implements SchemaContextFactory {
 
     @Override
     public CheckedFuture<SchemaContext, SchemaResolutionException> createSchemaContext(final Collection<SourceIdentifier> requiredSources) {
-        final SchemaContext existing = cache.getIfPresent(requiredSources);
+        // Make sources unique
+        final List<SourceIdentifier> uniqueSourceIdentifiers = deDuplicateSources(requiredSources);
+
+        final SchemaContext existing = cache.getIfPresent(uniqueSourceIdentifiers);
         if (existing != null) {
             LOG.debug("Returning cached context {}", existing);
             return Futures.immediateCheckedFuture(existing);
         }
 
         // Request all sources be loaded
-        final ListenableFuture<List<ASTSchemaSource>> sf = Futures.allAsList(Collections2.transform(requiredSources, requestSources));
+        ListenableFuture<List<ASTSchemaSource>> sf = Futures.allAsList(Collections2.transform(uniqueSourceIdentifiers, requestSources));
+
+        // Detect mismatch between requested Source IDs and IDs that are extracted from parsed source
+        // Also remove duplicates if present
+        // We are relying on preserved order of uniqueSourceIdentifiers as well as sf
+        sf = Futures.transform(sf, new SourceIdMismatchDetector(uniqueSourceIdentifiers));
 
         // Assemble sources into a schema context
         final ListenableFuture<SchemaContext> cf = Futures.transform(sf, assembleSources);
@@ -129,7 +145,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory {
         Futures.addCallback(cf, new FutureCallback<SchemaContext>() {
             @Override
             public void onSuccess(final SchemaContext result) {
-                cache.put(requiredSources, result);
+                cache.put(uniqueSourceIdentifiers, result);
             }
 
             @Override
@@ -140,4 +156,52 @@ final class SharedSchemaContextFactory implements SchemaContextFactory {
 
         return Futures.makeChecked(cf, MAPPER);
     }
+
+    /**
+     * @return set (preserving ordering) from the input collection
+     */
+    private List<SourceIdentifier> deDuplicateSources(final Collection<SourceIdentifier> requiredSources) {
+        final Set<SourceIdentifier> uniqueSourceIdentifiers = Collections.unmodifiableSet(Sets.newLinkedHashSet(requiredSources));
+        if(uniqueSourceIdentifiers.size() != requiredSources.size()) {
+            LOG.warn("Duplicate sources requested for schema context, removed duplicate sources: {}", Collections2.filter(uniqueSourceIdentifiers, new Predicate<SourceIdentifier>() {
+                @Override
+                public boolean apply(@Nullable final SourceIdentifier input) {
+                    return Iterables.frequency(requiredSources, input) > 1;
+                }
+            }));
+        }
+        return Lists.newArrayList(uniqueSourceIdentifiers);
+    }
+
+    private static final class SourceIdMismatchDetector implements Function<List<ASTSchemaSource>, List<ASTSchemaSource>> {
+        private final List<SourceIdentifier> sourceIdentifiers;
+
+        public SourceIdMismatchDetector(final List<SourceIdentifier> sourceIdentifiers) {
+            this.sourceIdentifiers = sourceIdentifiers;
+        }
+
+        @Override
+        public List<ASTSchemaSource> apply(final List<ASTSchemaSource> input) {
+            final Map<SourceIdentifier, ASTSchemaSource> filtered = Maps.newLinkedHashMap();
+
+            for (int i = 0; i < input.size(); i++) {
+
+                final SourceIdentifier expectedSId = sourceIdentifiers.get(i);
+                final ASTSchemaSource astSchemaSource = input.get(i);
+                final SourceIdentifier realSId = astSchemaSource.getIdentifier();
+
+                if (expectedSId.equals(realSId) == false) {
+                    LOG.warn("Source identifier mismatch for module \"{}\", requested as {} but actually is {}. Using actual id", expectedSId.getName(), expectedSId, realSId);
+                }
+
+                if (filtered.containsKey(realSId)) {
+                    LOG.warn("Duplicate source for module {} detected in reactor", realSId);
+                }
+
+                filtered.put(realSId, astSchemaSource);
+
+            }
+            return Lists.newArrayList(filtered.values());
+        }
+    }
 }
diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/SameQNamesInChoiceTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/SameQNamesInChoiceTest.java
new file mode 100644 (file)
index 0000000..9aef068
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * 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.yangtools.yang.parser.impl;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.File;
+import java.net.URI;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
+import org.opendaylight.yangtools.yang.parser.util.YangParseException;
+
+public class SameQNamesInChoiceTest {
+
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+
+    @Test
+    public void testSameQNameInChoice() throws Exception {
+        thrown.expect(YangParseException.class);
+        thrown.expectMessage("Choice has two nodes case with same qnames");
+
+        SchemaContext context;
+        File yangFile = new File(getClass().getResource("/bugs/qnameDuplicity/two-same-node-in-choice/two-same-nodes-in-choice-case.yang").toURI());
+        File dependenciesDir = new File(getClass().getResource("/bugs/qnameDuplicity/two-same-node-in-choice").toURI());
+        YangContextParser parser = new YangParserImpl();
+        context = parser.parseFile(yangFile, dependenciesDir);
+
+        Module testModule = context.findModuleByNamespace(URI.create("urn:test:two:same-nodes-in-choice-case")).iterator().next();
+        assertNotNull(testModule);
+    }
+
+
+    @Test
+    public void testAugmentedNodeIntoChoiceCase() throws Exception {
+        thrown.expect(YangParseException.class);
+        thrown.expectMessage("Choice has two nodes case with same qnames");
+
+        SchemaContext context;
+        File yangFile = new File(getClass().getResource("/bugs/qnameDuplicity/augment/two-cases.yang").toURI());
+        File dependenciesDir = new File(getClass().getResource("/bugs/qnameDuplicity/augment").toURI());
+        YangContextParser parser = new YangParserImpl();
+        context = parser.parseFile(yangFile, dependenciesDir);
+
+        Module testModule = context.findModuleByNamespace(URI.create("urn:test:two:cases")).iterator().next();
+        assertNotNull(testModule);
+    }
+}
diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactoryTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactoryTest.java
new file mode 100644 (file)
index 0000000..21447aa
--- /dev/null
@@ -0,0 +1,86 @@
+package org.opendaylight.yangtools.yang.parser.repo;
+
+import static org.junit.Assert.assertNotNull;
+
+import com.google.common.collect.Lists;
+import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.Futures;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaResolutionException;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
+import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource;
+import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
+import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+
+public class SharedSchemaContextFactoryTest {
+
+    private final SharedSchemaRepository repository = new SharedSchemaRepository("test");
+
+    @Mock
+    private SchemaSourceFilter filter;
+    private SourceIdentifier s1;
+    private SourceIdentifier s2;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+
+        final ResourceYangSource source1 = new ResourceYangSource("/ietf/ietf-inet-types@2010-09-24.yang");
+        final ResourceYangSource source2 = new ResourceYangSource("/ietf/iana-timezones@2012-07-09.yang");
+        s1 = new SourceIdentifier("ietf-inet-types", "2010-09-24");
+        s2 = new SourceIdentifier("iana-timezones", "2012-07-09");
+
+        final TextToASTTransformer transformer = TextToASTTransformer.create(repository, repository);
+        repository.registerSchemaSourceListener(transformer);
+
+        repository.registerSchemaSource(new SchemaSourceProvider<YangTextSchemaSource>() {
+            @Override
+            public CheckedFuture<YangTextSchemaSource, SchemaSourceException> getSource(final SourceIdentifier sourceIdentifier) {
+                return Futures.<YangTextSchemaSource, SchemaSourceException>immediateCheckedFuture(source1);
+            }
+        }, PotentialSchemaSource.create(s1, YangTextSchemaSource.class, 1));
+
+        repository.registerSchemaSource(new SchemaSourceProvider<YangTextSchemaSource>() {
+            @Override
+            public CheckedFuture<YangTextSchemaSource, SchemaSourceException> getSource(final SourceIdentifier sourceIdentifier) {
+                return Futures.<YangTextSchemaSource, SchemaSourceException>immediateCheckedFuture(source2);
+            }
+        }, PotentialSchemaSource.create(s2, YangTextSchemaSource.class, 1));
+    }
+
+    @Test
+    public void testCreateSchemaContextWithDuplicateRequiredSources() throws Exception {
+        final SharedSchemaContextFactory sharedSchemaContextFactory = new SharedSchemaContextFactory(repository, filter);
+        final CheckedFuture<SchemaContext, SchemaResolutionException> schemaContext = sharedSchemaContextFactory.createSchemaContext(Lists.newArrayList(s1, s1, s2));
+        assertNotNull(schemaContext.checkedGet());
+    }
+
+    @Test
+    public void testSourceRegisteredWithDifferentSI() throws Exception {
+        final ResourceYangSource source1 = new ResourceYangSource("/ietf/ietf-inet-types@2010-09-24.yang");
+        final ResourceYangSource source2 = new ResourceYangSource("/ietf/iana-timezones@2012-07-09.yang");
+        s1 = source1.getIdentifier();
+        s2 = source2.getIdentifier();
+
+        final SettableSchemaProvider<ASTSchemaSource> provider = SharedSchemaRepositoryTest.getImmediateYangSourceProviderFromResource("/no-revision/imported@2012-12-12.yang");
+        provider.setResult();
+        provider.register(repository);
+
+        // Register the same provider under source id without revision
+        final SourceIdentifier sIdWithoutRevision = new SourceIdentifier(provider.getId().getName());
+        repository.registerSchemaSource(provider, PotentialSchemaSource.create(
+                sIdWithoutRevision, ASTSchemaSource.class, PotentialSchemaSource.Costs.IMMEDIATE.getValue()));
+
+        final SharedSchemaContextFactory sharedSchemaContextFactory = new SharedSchemaContextFactory(repository, filter);
+        final CheckedFuture<SchemaContext, SchemaResolutionException> schemaContext = sharedSchemaContextFactory.createSchemaContext(Lists.newArrayList(sIdWithoutRevision, provider.getId()));
+        assertNotNull(schemaContext.checkedGet());
+    }
+}
index 9a8790a428cf4f9eb1764d8c7941d86f1c9d2970..3f351efb768e1b67520196d7700062206169df31 100644 (file)
@@ -57,6 +57,27 @@ import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
 
 public class SharedSchemaRepositoryTest {
 
+    @Test
+    public void testSourceWithAndWithoutRevision() throws Exception {
+        final SharedSchemaRepository sharedSchemaRepository = new SharedSchemaRepository("netconf-mounts");
+
+        final SourceIdentifier idNoRevision = loadAndRegisterSource(sharedSchemaRepository, "/no-revision/imported.yang");
+        final SourceIdentifier id2 = loadAndRegisterSource(sharedSchemaRepository, "/no-revision/imported@2012-12-12.yang");
+
+        CheckedFuture<ASTSchemaSource, SchemaSourceException> source = sharedSchemaRepository.getSchemaSource(idNoRevision, ASTSchemaSource.class);
+        assertEquals(idNoRevision, source.checkedGet().getIdentifier());
+        source = sharedSchemaRepository.getSchemaSource(id2, ASTSchemaSource.class);
+        assertEquals(id2, source.checkedGet().getIdentifier());
+    }
+
+    private SourceIdentifier loadAndRegisterSource(final SharedSchemaRepository sharedSchemaRepository, final String resourceName) throws Exception {
+        final SettableSchemaProvider<ASTSchemaSource> sourceProvider = getImmediateYangSourceProviderFromResource(resourceName);
+        sourceProvider.setResult();
+        final SourceIdentifier idNoRevision = sourceProvider.getId();
+        sourceProvider.register(sharedSchemaRepository);
+        return idNoRevision;
+    }
+
     @Test
     public void testSimpleSchemaContext() throws Exception {
         final SharedSchemaRepository sharedSchemaRepository = new SharedSchemaRepository("netconf-mounts");
@@ -298,13 +319,13 @@ public class SharedSchemaRepositoryTest {
         assertEquals(moduleSize, schemaContext.getModules().size());
     }
 
-    private SettableSchemaProvider<ASTSchemaSource> getRemoteYangSourceProviderFromResource(final String resourceName) throws Exception {
+    static SettableSchemaProvider<ASTSchemaSource> getRemoteYangSourceProviderFromResource(final String resourceName) throws Exception {
         final ResourceYangSource yangSource = new ResourceYangSource(resourceName);
         final CheckedFuture<ASTSchemaSource, SchemaSourceException> aSTSchemaSource = TextToASTTransformer.TRANSFORMATION.apply(yangSource);
         return SettableSchemaProvider.createRemote(aSTSchemaSource.get(), ASTSchemaSource.class);
     }
 
-    private SettableSchemaProvider<ASTSchemaSource> getImmediateYangSourceProviderFromResource(final String resourceName) throws Exception {
+    static SettableSchemaProvider<ASTSchemaSource> getImmediateYangSourceProviderFromResource(final String resourceName) throws Exception {
         final ResourceYangSource yangSource = new ResourceYangSource(resourceName);
         final CheckedFuture<ASTSchemaSource, SchemaSourceException> aSTSchemaSource = TextToASTTransformer.TRANSFORMATION.apply(yangSource);
         return SettableSchemaProvider.createImmediate(aSTSchemaSource.get(), ASTSchemaSource.class);
diff --git a/yang/yang-parser-impl/src/test/resources/bugs/qnameDuplicity/augment/two-cases.yang b/yang/yang-parser-impl/src/test/resources/bugs/qnameDuplicity/augment/two-cases.yang
new file mode 100644 (file)
index 0000000..e18cefa
--- /dev/null
@@ -0,0 +1,31 @@
+module two-cases {
+
+    namespace "urn:test:two:cases";
+    prefix "two";
+
+    organization "OPEN DAYLIGHT";
+    contact "http://www.opendaylight.org/";
+
+    revision 2013-07-09 {
+
+    }
+
+    container cont {
+        choice choice {
+            default second;
+            case first {
+                leaf leaf-case1 {
+                    type int32;
+                }
+            }
+        }
+    }
+
+    augment "/cont/choice/" {
+        case forth {
+            leaf leaf-case1 {
+                type string;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/yang/yang-parser-impl/src/test/resources/bugs/qnameDuplicity/two-same-node-in-choice/two-same-nodes-in-choice-case.yang b/yang/yang-parser-impl/src/test/resources/bugs/qnameDuplicity/two-same-node-in-choice/two-same-nodes-in-choice-case.yang
new file mode 100644 (file)
index 0000000..1f1db32
--- /dev/null
@@ -0,0 +1,28 @@
+module two-same-nodes-in-choice-case {
+
+    namespace "urn:test:two:same-nodes-in-choice-case";
+    prefix "two";
+
+    organization "OPEN DAYLIGHT";
+    contact "http://www.opendaylight.org/";
+
+    revision 2013-07-09 {
+
+    }
+
+    container cont3 {
+        choice choice3 {
+            default second;
+            case first {
+                leaf leaf-case1 {
+                    type int32;
+                }
+            }
+            case second {
+                leaf leaf-case1 {
+                    type int32;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
index 54e6d3a62a251ecd6f1997df9af6f8d958c5e76d..d36c996e552586bb646e003f7c6722272400ee4f 100644 (file)
@@ -4,7 +4,7 @@ module imported {
     namespace "urn:simple.demo.test1";
     prefix "imp";
 
-    organization "opendaylight";
-    contact "WILL-BE-DEFINED-LATER";
+    //organization "opendaylight";
+    //contact "WILL-BE-DEFINED-LATER";
 
 }
index 2e775fa45f71fbf7277b473bb32cf03e993eb8be..68004c815acbeec788b6989af3dd3a21907c34f2 100644 (file)
@@ -6,7 +6,7 @@ module imported {
 
     revision 2012-12-12 {}
 
-    organization "opendaylight";
-    contact "WILL-BE-DEFINED-LATER";
+    //organization "opendaylight";
+    //contact "WILL-BE-DEFINED-LATER";
 
 }