@Override
public GeneratedPropertyBuilder addProperty(final String name) {
+ Preconditions.checkArgument(name != null, "Parameter name can't be null");
final GeneratedPropertyBuilder builder = new GeneratedPropertyBuilderImpl(name);
builder.setAccessModifier(AccessModifier.PUBLIC);
properties = LazyCollections.lazyAdd(properties, builder);
if (getClass() != obj.getClass()) {
return false;
}
- MethodSignatureBuilderImpl other = (MethodSignatureBuilderImpl) obj;
+ AbstractTypeMemberBuilder<?> other = (AbstractTypeMemberBuilder<?>) obj;
if (getName() == null) {
if (other.getName() != null) {
return false;
*/
package org.opendaylight.yangtools.binding.generator.util;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
+import java.io.Serializable;
+import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+
+import com.google.common.base.Optional;
+
import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTypeBuilderImpl;
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;
+import org.opendaylight.yangtools.sal.binding.model.api.Restrictions;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder;
import org.opendaylight.yangtools.yang.binding.BindingMapping;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
+import org.opendaylight.yangtools.yang.model.util.BaseConstraints;
import org.opendaylight.yangtools.yang.model.util.DataNodeIterator;
+import org.opendaylight.yangtools.yang.model.util.Decimal64;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType.Builder;
+import org.opendaylight.yangtools.yang.model.util.Int16;
+import org.opendaylight.yangtools.yang.model.util.StringType;
+import org.opendaylight.yangtools.yang.model.util.Uint16;
import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder;
import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
BindingGeneratorUtil.parseToValidParamName(" 0some-testing_parameter name "));
}
+ @Test
+ public void computeDefaultSUIDTest() {
+ GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
+
+ MethodSignatureBuilder method = generatedTypeBuilder.addMethod("myMethodName");
+ method.setAccessModifier(AccessModifier.PUBLIC);
+ generatedTypeBuilder.addProperty("myProperty");
+ generatedTypeBuilder.addImplementsType(Types.typeForClass(Serializable.class));
+
+ assertEquals(6788238694991761868L, BindingGeneratorUtil.computeDefaultSUID(generatedTypeBuilder));
+
+ }
+
+ @Test
+ public void getRestrictionsTest() {
+
+ Optional<String> absent = Optional.absent();
+
+ Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+ Int16.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+ ArrayList<LengthConstraint> lenght = new ArrayList<LengthConstraint>();
+ ArrayList<RangeConstraint> range = new ArrayList<RangeConstraint>();
+ ArrayList<PatternConstraint> pattern = new ArrayList<PatternConstraint>();
+
+ lenght.add(BaseConstraints.newLengthConstraint(1, 2, absent, absent));
+ range.add(BaseConstraints.newRangeConstraint(1, 2, absent, absent));
+ pattern.add(BaseConstraints.newPatternConstraint(".*", absent, absent));
+
+ extTypeBuilder.lengths(lenght);
+ extTypeBuilder.ranges(range);
+ extTypeBuilder.patterns(pattern);
+
+ Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extTypeBuilder.build());
+
+ assertNotNull(restrictions);
+
+ assertEquals(1, restrictions.getLengthConstraints().size());
+ assertEquals(1, restrictions.getRangeConstraints().size());
+ assertEquals(1, restrictions.getPatternConstraints().size());
+
+ assertFalse(restrictions.isEmpty());
+ assertTrue(restrictions.getLengthConstraints().contains(
+ BaseConstraints.newLengthConstraint(1, 2, absent, absent)));
+ assertTrue(restrictions.getRangeConstraints()
+ .contains(BaseConstraints.newRangeConstraint(1, 2, absent, absent)));
+ assertTrue(restrictions.getPatternConstraints().contains(
+ BaseConstraints.newPatternConstraint(".*", absent, absent)));
+ }
+
+ @Test
+ public void getEmptyRestrictionsTest() {
+
+ Optional<String> absent = Optional.absent();
+
+ Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+ StringType.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+ Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extTypeBuilder.build());
+
+ assertNotNull(restrictions);
+ assertTrue(restrictions.isEmpty());
+
+ }
+
+ @Test
+ public void getDefaultIntegerRestrictionsTest() {
+
+ Optional<String> absent = Optional.absent();
+
+ Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+ Int16.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+ ExtendedType extType = extTypeBuilder.build();
+ Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extType);
+
+ assertNotNull(restrictions);
+ assertFalse(restrictions.isEmpty());
+ assertEquals(((IntegerTypeDefinition) extType.getBaseType()).getRangeConstraints(),
+ restrictions.getRangeConstraints());
+ assertTrue(restrictions.getLengthConstraints().isEmpty());
+ assertTrue(restrictions.getPatternConstraints().isEmpty());
+
+ }
+
+ @Test
+ public void getDefaultUnsignedIntegerRestrictionsTest() {
+
+ Optional<String> absent = Optional.absent();
+
+ Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+ Uint16.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+ ExtendedType extType = extTypeBuilder.build();
+ Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extType);
+
+ assertNotNull(restrictions);
+ assertFalse(restrictions.isEmpty());
+ assertEquals(((UnsignedIntegerTypeDefinition) extType.getBaseType()).getRangeConstraints(),
+ restrictions.getRangeConstraints());
+ assertTrue(restrictions.getLengthConstraints().isEmpty());
+ assertTrue(restrictions.getPatternConstraints().isEmpty());
+ }
+
+ @Test
+ public void getDefaultDecimalRestrictionsTest() {
+
+ Optional<String> absent = Optional.absent();
+ SchemaPath path = SchemaPath.create(true, QName.create("/root"));
+
+ Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+ Decimal64.create(path, 10), absent, absent, path);
+
+ ExtendedType extType = extTypeBuilder.build();
+ Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extType);
+
+ assertNotNull(restrictions);
+ assertFalse(restrictions.isEmpty());
+ assertEquals(((DecimalTypeDefinition) extType.getBaseType()).getRangeConstraints(),
+ restrictions.getRangeConstraints());
+ assertTrue(restrictions.getLengthConstraints().isEmpty());
+ assertTrue(restrictions.getPatternConstraints().isEmpty());
+
+ }
+
}
--- /dev/null
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ */
+package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
+
+import org.junit.Test;
+
+public class AbstractGeneratedTypeBuilderTest {
+
+ @Test(expected = IllegalArgumentException.class)
+ public void addPropertyIllegalArgumentTest() {
+ GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
+
+ generatedTypeBuilder.addProperty(null);
+ }
+
+}
--- /dev/null
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ */
+package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.Types;
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+import org.opendaylight.yangtools.sal.binding.model.api.Type;
+
+public class GeneratedPropertyBuilderImplTest {
+
+ @Test
+ public void generatedPropertyBuilderImplTest() {
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+ generatedPropertyBuilderImpl.setValue("myValue");
+ generatedPropertyBuilderImpl.setReadOnly(false);
+ generatedPropertyBuilderImpl.setStatic(true);
+ generatedPropertyBuilderImpl.setComment(null);
+ generatedPropertyBuilderImpl.setFinal(true);
+ generatedPropertyBuilderImpl.setAccessModifier(AccessModifier.PUBLIC);
+ generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+
+ assertEquals(
+ "GeneratedPropertyImpl [name=myPropertyName, annotations=[], comment=null, returnType=Type (java.lang.Boolean), isFinal=true, isReadOnly=false, modifier=PUBLIC]",
+ generatedPropertyBuilderImpl.toString());
+
+ GeneratedProperty instance = generatedPropertyBuilderImpl.toInstance(null);
+
+ assertNotNull(instance);
+
+ assertTrue(instance.isFinal());
+ assertTrue(instance.isStatic());
+ assertFalse(instance.isReadOnly());
+ assertEquals("myValue", instance.getValue());
+ assertEquals(null, instance.getComment());
+ assertEquals(AccessModifier.PUBLIC, instance.getAccessModifier());
+ assertEquals(Types.BOOLEAN, instance.getReturnType());
+
+ }
+
+ @Test
+ public void generatedPropertyBuilderImplEqualsAndHashCodeTest() {
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl2 = new GeneratedPropertyBuilderImpl("myPropertyName");
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl3 = new GeneratedPropertyBuilderImpl("myPropertyName3");
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl4 = new GeneratedPropertyBuilderImpl("myPropertyName");
+
+ assertNotNull(generatedPropertyBuilderImpl);
+ assertNotNull(generatedPropertyBuilderImpl2);
+ assertNotNull(generatedPropertyBuilderImpl3);
+ assertNotNull(generatedPropertyBuilderImpl4);
+
+ generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+ generatedPropertyBuilderImpl2.setReturnType(Types.BOOLEAN);
+ generatedPropertyBuilderImpl3.setReturnType(Types.BOOLEAN);
+ generatedPropertyBuilderImpl4.setReturnType(Types.STRING);
+
+ assertFalse(generatedPropertyBuilderImpl.equals(null));
+ assertFalse(generatedPropertyBuilderImpl.equals(new Object()));
+ assertTrue(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl));
+ assertTrue(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl2));
+ assertFalse(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl3));
+ assertFalse(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl4));
+
+ assertTrue(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl.hashCode());
+ assertTrue(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl2.hashCode());
+ assertFalse(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl3.hashCode());
+ assertFalse(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl4.hashCode());
+ }
+
+}
--- /dev/null
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ */
+package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.Types;
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+
+public class GeneratedPropertyImplTest {
+
+ @Test
+ public void generatedPropertyImplTest() {
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+ generatedPropertyBuilderImpl.setValue("myValue");
+ generatedPropertyBuilderImpl.setReadOnly(false);
+ generatedPropertyBuilderImpl.setStatic(true);
+ generatedPropertyBuilderImpl.setComment("myComment");
+ generatedPropertyBuilderImpl.setFinal(true);
+ generatedPropertyBuilderImpl.setAccessModifier(AccessModifier.PUBLIC);
+ generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+
+ GeneratedProperty instance = generatedPropertyBuilderImpl.toInstance(new GeneratedTypeBuilderImpl("my.package",
+ "myTypeName").toInstance());
+
+ assertNotNull(instance);
+
+ assertTrue(instance.isFinal());
+ assertTrue(instance.isStatic());
+ assertFalse(instance.isReadOnly());
+ assertEquals("myValue", instance.getValue());
+ assertEquals("myComment", instance.getComment());
+ assertEquals(AccessModifier.PUBLIC, instance.getAccessModifier());
+ assertEquals(Types.BOOLEAN, instance.getReturnType());
+
+ assertEquals(
+ "GeneratedPropertyImpl [name=myPropertyName, annotations=[], comment=myComment, parent=my.package.myTypeName, returnType=Type (java.lang.Boolean), isFinal=true, isReadOnly=false, modifier=PUBLIC]",
+ instance.toString());
+
+ }
+
+ @Test
+ public void generatedPropertyImplEqualsAndHashCodeTest() {
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl2 = new GeneratedPropertyBuilderImpl("myPropertyName");
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl3 = new GeneratedPropertyBuilderImpl("myPropertyName3");
+ GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl4 = new GeneratedPropertyBuilderImpl("myPropertyName");
+
+ generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+ generatedPropertyBuilderImpl2.setReturnType(Types.BOOLEAN);
+ generatedPropertyBuilderImpl3.setReturnType(Types.BOOLEAN);
+ generatedPropertyBuilderImpl4.setReturnType(Types.STRING);
+
+ GeneratedProperty property = generatedPropertyBuilderImpl.toInstance(null);
+ GeneratedProperty property2 = generatedPropertyBuilderImpl2.toInstance(null);
+ GeneratedProperty property3 = generatedPropertyBuilderImpl3.toInstance(null);
+ GeneratedProperty property4 = generatedPropertyBuilderImpl4.toInstance(null);
+
+ assertNotNull(property);
+ assertNotNull(property2);
+ assertNotNull(property3);
+ assertNotNull(property4);
+
+ assertFalse(property.equals(null));
+ assertFalse(property.equals(new Object()));
+ assertTrue(property.equals(property));
+ assertTrue(property.equals(property2));
+ assertFalse(property.equals(property3));
+ assertFalse(property.equals(property4));
+
+ assertTrue(property.hashCode() == property.hashCode());
+ assertTrue(property.hashCode() == property2.hashCode());
+ assertFalse(property.hashCode() == property3.hashCode());
+ assertFalse(property.hashCode() == property4.hashCode());
+ }
+
+}
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>features-yangtools</artifactId>
+ <classifier>features</classifier>
+ <type>xml</type>
+ <version>${project.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>mockito-configuration</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
<artifactId>opendaylight-l2-types</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools.model</groupId>
+ <artifactId>ietf-ted</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.yangtools.model</groupId>
<artifactId>ietf-topology</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools.model</groupId>
+ <artifactId>ietf-topology-isis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools.model</groupId>
+ <artifactId>ietf-topology-ospf</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools.model</groupId>
+ <artifactId>ietf-topology-l3-unicast-igp</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.yangtools.thirdparty</groupId>
<artifactId>antlr4-runtime-osgi-nohead</artifactId>
<bundle>mvn:org.opendaylight.yangtools.model/ietf-restconf/{{VERSION}}</bundle>
<bundle>mvn:org.opendaylight.yangtools.model/yang-ext/{{VERSION}}</bundle>
<bundle>mvn:org.opendaylight.yangtools.model/opendaylight-l2-types/{{VERSION}}</bundle>
+ <bundle>mvn:org.opendaylight.yangtools.model/ietf-ted/{{VERSION}}</bundle>
<bundle>mvn:org.opendaylight.yangtools.model/ietf-topology/{{VERSION}}</bundle>
+ <bundle>mvn:org.opendaylight.yangtools.model/ietf-topology-isis/{{VERSION}}</bundle>
+ <bundle>mvn:org.opendaylight.yangtools.model/ietf-topology-ospf/{{VERSION}}</bundle>
+ <bundle>mvn:org.opendaylight.yangtools.model/ietf-topology-l3-unicast-igp/{{VERSION}}</bundle>
</feature>
<feature name='odl-yangtools-data-binding' version='${project.version}' description='OpenDaylight :: Yangtools :: Data Binding'>
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.gson.stream.JsonWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.net.URI;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import java.io.IOException;
+import java.io.Writer;
+import java.net.URI;
+
/**
* This implementation will create JSON output as output stream.
*
/**
* Matcher used to check if a string needs to be escaped.
*/
- private static final CharMatcher QUOTES_OR_BACKSLASH = CharMatcher.anyOf("\\\"");
+ private static final CharMatcher JSON_ILLEGAL_STRING_CHARACTERS = CharMatcher.anyOf("\\\"\n\r");
private final SchemaTracker tracker;
private final JSONCodecFactory codecs;
if (needQuotes) {
writer.append('"');
- final int needEscape = QUOTES_OR_BACKSLASH.countIn(str);
+ final int needEscape = JSON_ILLEGAL_STRING_CHARACTERS.countIn(str);
if (needEscape != 0) {
final char[] escaped = new char[str.length() + needEscape];
int offset = 0;
for (int i = 0; i < str.length(); i++) {
final char c = str.charAt(i);
- if (QUOTES_OR_BACKSLASH.matches(c)) {
+ if (JSON_ILLEGAL_STRING_CHARACTERS.matches(c)) {
escaped[offset++] = '\\';
}
escaped[offset++] = c;
*/
package org.opendaylight.yangtools.yang.data.codec.gson;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.childArray;
-import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.childPrimitive;
-import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadModules;
-import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.resolveCont1;
-
import com.google.common.collect.Sets;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.net.URISyntaxException;
-import java.util.HashSet;
-import java.util.Iterator;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.URISyntaxException;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.childArray;
+import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.childPrimitive;
+import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadModules;
+import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.resolveCont1;
+
/**
* Each test tests whether json output obtained after transformation contains is corect. The transformation takes
* normalized node data structure and transform it to json output. To make it easier validate json output it is loaded
}
+ @Test
+ public void leafListNodeInContainerMultiline() throws IOException, URISyntaxException {
+ Writer writer = new StringWriter();
+ NormalizedNode<?, ?> leafListNodeInContainer = TestingNormalizedNodeStructuresCreator.leafListNodeInContainerMultiline();
+ String jsonOutput = normalizedNodeToJsonStreamTransformation(writer, leafListNodeInContainer);
+ new JsonValidator() {
+
+ @Override
+ public void validate(String jsonOutput) {
+ JsonObject cont1 = resolveCont1(jsonOutput);
+ assertNotNull(cont1);
+ JsonArray lflst11 = childArray(cont1, "complexjson:lflst11", "lflst11");
+ assertNotNull(lflst11);
+
+ HashSet<Object> lflst11Values = Sets.newHashSet();
+ for (JsonElement jsonElement : lflst11) {
+ assertTrue(jsonElement instanceof JsonPrimitive);
+ lflst11Values.add(((JsonPrimitive) jsonElement).getAsString());
+ }
+
+ assertEquals(Sets.newHashSet("lflst11 value2\r\nanother line 2", "lflst11 value1\nanother line 1"), lflst11Values);
+ }
+ }.validate(jsonOutput);
+
+ }
+
@Test
public void leafNodeViaAugmentationInContainer() throws IOException, URISyntaxException {
Writer writer = new StringWriter();
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import java.util.HashMap;
-import java.util.Map;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.CompositeNode;
import org.opendaylight.yangtools.yang.data.api.SimpleNode;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
+import java.util.HashMap;
+import java.util.Map;
+
public class TestingNormalizedNodeStructuresCreator {
static NormalizedNode<?, ?> cont1Node(
return lflst11.build();
}
+ private static DataContainerChild<? extends PathArgument, ?> childLflst11Multiline() {
+ ListNodeBuilder<Object, LeafSetEntryNode<Object>> lflst11 = Builders.leafSetBuilder().withNodeIdentifier(
+ new NodeIdentifier(QName.create("ns:complex:json", "2014-08-11", "lflst11")));
+ lflst11.withChild(Builders
+ .leafSetEntryBuilder()
+ .withNodeIdentifier(
+ new NodeWithValue(QName.create("ns:complex:json", "2014-08-11", "lflst11"), "lflst11 value1\nanother line 1"))
+ .withValue("lflst11 value1\nanother line 1").build());
+ lflst11.withChild(Builders
+ .leafSetEntryBuilder()
+ .withNodeIdentifier(
+ new NodeWithValue(QName.create("ns:complex:json", "2014-08-11", "lflst11"), "lflst11 value2\r\nanother line 2"))
+ .withValue("lflst11 value2\r\nanother line 2").build());
+ return lflst11.build();
+ }
+
private static CompositeNode prepareLf12Value() {
SimpleNode<?> anyxmlInData = NodeFactory.createImmutableSimpleNode(
QName.create("ns:complex:json", "2014-08-11", "anyxml-in-data"), null, "foo");
public static NormalizedNode<?, ?> leafListNodeInContainer() {
return cont1Node(childLflst11());
}
+ public static NormalizedNode<?, ?> leafListNodeInContainerMultiline() {
+ return cont1Node(childLflst11Multiline());
+ }
public static NormalizedNode<?, ?> keyedListNodeInContainer() {
return cont1Node(childLst11());
* grouping where it was defined.
*
* @return original node definition from grouping if this node is added by
- * uses, null otherwise
+ * uses, Optional.absent otherwise
*/
Optional<? extends SchemaNode> getOriginal();
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
} while (progress);
/// Additional check only for belongs-to statement
- for (final SourceIdentifier sourceIdentifier : submodules.keySet()) {
- final BelongsToDependency belongs = submodules.get(sourceIdentifier);
+ for (final Entry<SourceIdentifier, BelongsToDependency> submodule : submodules.entrySet()) {
+ final BelongsToDependency belongs = submodule.getValue();
+ final SourceIdentifier sourceIdentifier = submodule.getKey();
if (!isKnown(resolved, belongs)) {
LOG.debug("Source {} is missing parent {}", sourceIdentifier, belongs);
pending.add(sourceIdentifier);