import java.util.List;
import java.util.Set;
-import org.junit.Ignore;
+import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
public class TypeProviderIntegrationTest {
private final String PKG = "org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.";
+ private static SchemaContext context;
+ private TypeProviderImpl provider;
+ private Module m;
+
+ @BeforeClass
+ public static void setup() throws ParseException {
+ final String path1 = TypeProviderIntegrationTest.class.getResource("/type-provider/test.yang").getPath();
+ final String path2 = TypeProviderIntegrationTest.class.getResource(
+ "/type-provider/ietf-inet-types@2010-09-24.yang").getPath();
+ context = resolveSchemaContextFromFiles(path1, path2);
+ assertNotNull(context);
+ }
- private SchemaContext resolveSchemaContextFromFiles(final String... yangFiles) {
- final YangModelParser parser = new YangParserImpl();
-
- final List<File> inputFiles = new ArrayList<File>();
- for (int i = 0; i < yangFiles.length; ++i) {
- inputFiles.add(new File(yangFiles[i]));
- }
-
- final Set<Module> modules = parser.parseYangModels(inputFiles);
- return parser.resolveSchemaContext(modules);
+ @Before
+ public void init() throws ParseException {
+ provider = new TypeProviderImpl(context);
+ m = context.findModuleByName("test", new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-08"));
}
@Test
- public void testGetTypeDefaultConstruction1() throws ParseException {
- final String path1 = getClass().getResource("/type-provider/test.yang").getPath();
- final String path2 = getClass().getResource("/type-provider/ietf-inet-types@2010-09-24.yang").getPath();
- final SchemaContext context = resolveSchemaContextFromFiles(path1, path2);
- assertNotNull(context);
- TypeProviderImpl provider = new TypeProviderImpl(context);
- Module m = context.findModuleByName("test", new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-08"));
-
- LeafSchemaNode leaf = (LeafSchemaNode)m.getDataChildByName("id-binary");
+ public void testGetTypeDefaultConstructionBinary() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-binary");
String actual = provider.getTypeDefaultConstruction(leaf);
assertEquals("new byte[] {77, 97, 110}", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-bits");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-binary");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "TestData.IdBits(false, false, true)", actual);
+ assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
+ }
+
+ @Test
+ public void testGetTypeDefaultConstructionBits() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-bits");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new " + PKG + "TestData.LeafBits(false, false, true)", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-boolean");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-bits");
actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new " + PKG + "MyBits(false, false, true)", actual);
+ }
+
+ @Test
+ public void testGetTypeDefaultConstructionBoolean() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-boolean");
+ String actual = provider.getTypeDefaultConstruction(leaf);
assertEquals("new java.lang.Boolean(\"true\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-decimal64");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-boolean");
actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new " + PKG + "MyBoolean(new java.lang.Boolean(\"true\"))", actual);
+ }
+
+ @Test
+ public void testGetTypeDefaultConstructionDecimal() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-decimal64");
+ String actual = provider.getTypeDefaultConstruction(leaf);
assertEquals("new java.math.BigDecimal(\"3.14\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-empty");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-decimal64");
actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new " + PKG + "MyDecimal64(new java.math.BigDecimal(\"3.14\"))", actual);
+ }
+
+ @Test
+ public void testGetTypeDefaultConstructionEmpty() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-empty");
+ String actual = provider.getTypeDefaultConstruction(leaf);
assertEquals("new java.lang.Boolean(\"false\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-enumeration");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-empty");
actual = provider.getTypeDefaultConstruction(leaf);
- //assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.IdEnumeration.Seven", actual);
+ assertEquals("new " + PKG + "MyEmpty(new java.lang.Boolean(\"false\"))", actual);
+ }
+
+ @Test
+ public void testGetTypeDefaultConstructionEnumeration() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-enumeration");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.LeafEnumeration.Seven", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-8");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-enumeration");
actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new " + PKG + "MyEnumeration(" + PKG + "MyEnumeration.Seven)", actual);
+ }
+
+ @Test
+ public void testGetTypeDefaultConstructionInt8() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-int8");
+ String actual = provider.getTypeDefaultConstruction(leaf);
assertEquals("new java.lang.Byte(\"11\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-16");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-int8");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.lang.Short(\"111\")", actual);
+ assertEquals("new " + PKG + "MyInt8(new java.lang.Byte(\"11\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("id-32");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.lang.Integer(\"1111\")", actual);
+ @Test
+ public void testGetTypeDefaultConstructionInt16() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-int16");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.lang.Short(\"111\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-64");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-int16");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.lang.Long(\"11111\")", actual);
+ assertEquals("new " + PKG + "MyInt16(new java.lang.Short(\"111\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("id-leafref");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
+ @Test
+ public void testGetTypeDefaultConstructionInt32() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-int32");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.lang.Integer(\"1111\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-string");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-int32");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("\"name\"", actual);
+ assertEquals("new " + PKG + "MyInt32(new java.lang.Integer(\"1111\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("id-u8");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.lang.Short(\"11\")", actual);
+ @Test
+ public void testGetTypeDefaultConstructionInt64() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-int64");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.lang.Long(\"11111\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-u16");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-int64");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.lang.Integer(\"111\")", actual);
+ assertEquals("new " + PKG + "MyInt64(new java.lang.Long(\"11111\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("id-u32");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.lang.Long(\"1111\")", actual);
+ @Test
+ public void testGetTypeDefaultConstructionLeafref1() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-leafref");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("id-u64");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-leafref");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.math.BigInteger(\"11111\")", actual);
+ assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
}
- @Ignore
@Test
- public void testGetTypeDefaultConstruction2() throws ParseException {
- final String path1 = getClass().getResource("/type-provider/test.yang").getPath();
- final String path2 = getClass().getResource("/type-provider/ietf-inet-types@2010-09-24.yang").getPath();
- final SchemaContext context = resolveSchemaContextFromFiles(path1, path2);
- assertNotNull(context);
- TypeProviderImpl provider = new TypeProviderImpl(context);
- Module m = context.findModuleByName("test", new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-08"));
-
- LeafSchemaNode leaf = (LeafSchemaNode)m.getDataChildByName("ext-binary");
+ public void testGetTypeDefaultConstructionLeafref2() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-leafref1");
String actual = provider.getTypeDefaultConstruction(leaf);
assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-bits");
- actual = provider.getTypeDefaultConstruction(leaf);
- //assertEquals("new " + PKG + "MyBits(false, false, true)", actual);
-
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-boolean");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-leafref1");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyBoolean(new java.lang.Boolean(\"true\"))", actual);
+ assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-decimal64");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyDecimal64(new java.math.BigDecimal(\"3.14\"))", actual);
+ @Test
+ public void testGetTypeDefaultConstructionString() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-string");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("\"name\"", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-empty");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-string");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyEmpty(new java.lang.Boolean(\"false\"))", actual);
+ assertEquals("new " + PKG + "MyString(\"name\")", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-enumeration");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyEnumeration(" + PKG + "MyEnumeration.Seven)", actual);
+ @Test
+ public void testGetTypeDefaultConstructionUint8() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-uint8");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.lang.Short(\"11\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-8");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-uint8");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "My8(new java.lang.Byte(\"11\"))", actual);
+ assertEquals("new " + PKG + "MyUint8(new java.lang.Short(\"11\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-16");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "My16(new java.lang.Short(\"111\"))", actual);
+ @Test
+ public void testGetTypeDefaultConstructionUint16() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-uint16");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.lang.Integer(\"111\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-32");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-uint16");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "My32(new java.lang.Integer(\"1111\"))", actual);
+ assertEquals("new " + PKG + "MyUint16(new java.lang.Integer(\"111\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-64");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "My64(new java.lang.Long(\"11111\"))", actual);
+ @Test
+ public void testGetTypeDefaultConstructionUint32() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-uint32");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.lang.Long(\"1111\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-leafref");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-uint32");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
+ assertEquals("new " + PKG + "MyUint32(new java.lang.Long(\"1111\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-string");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyString(\"name\")", actual);
+ @Test
+ public void testGetTypeDefaultConstructionUint64() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("leaf-uint64");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ assertEquals("new java.math.BigInteger(\"11111\")", actual);
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-u8");
+ leaf = (LeafSchemaNode) m.getDataChildByName("ext-uint64");
actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyU8(new java.lang.Short(\"11\"))", actual);
+ assertEquals("new " + PKG + "MyUint64(new java.math.BigInteger(\"11111\"))", actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-u16");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyU16(new java.lang.Integer(\"111\"))", actual);
+ @Test
+ public void testGetTypeDefaultConstruction() throws ParseException {
+ LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName("ip-leaf");
+ String actual = provider.getTypeDefaultConstruction(leaf);
+ String exp = "new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address(\"0.0.0.1\")";
+ assertEquals(exp, actual);
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-u32");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyU32(new java.lang.Long(\"1111\"))", actual);
+ private static SchemaContext resolveSchemaContextFromFiles(final String... yangFiles) {
+ final YangModelParser parser = new YangParserImpl();
- leaf = (LeafSchemaNode)m.getDataChildByName("ext-u64");
- actual = provider.getTypeDefaultConstruction(leaf);
- assertEquals("new " + PKG + "MyU64(new java.math.BigInteger(\"11111\"))", actual);
+ final List<File> inputFiles = new ArrayList<File>();
+ for (int i = 0; i < yangFiles.length; ++i) {
+ inputFiles.add(new File(yangFiles[i]));
+ }
- leaf = (LeafSchemaNode)m.getDataChildByName("ip-leaf");
- actual = provider.getTypeDefaultConstruction(leaf);
- String exp = "new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.Ipv4Address(\"0.0.0.1\")";
- assertEquals(exp, actual);
+ final Set<Module> modules = parser.parseYangModels(inputFiles);
+ return parser.resolveSchemaContext(modules);
}
}
import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
-import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.UsesNode;
import org.opendaylight.yangtools.yang.model.api.YangNode;
import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
* </ul>
*/
@Override
- public Type javaTypeForSchemaDefinitionType(final TypeDefinition<?> typeDefinition, final SchemaNode parentNode, Restrictions r) {
+ public Type javaTypeForSchemaDefinitionType(final TypeDefinition<?> typeDefinition, final SchemaNode parentNode,
+ Restrictions r) {
Type returnType = null;
Preconditions.checkArgument(typeDefinition != null, "Type Definition cannot be NULL!");
if (typeDefinition.getQName() == null) {
private TypeDefinition<?> baseTypeDefForExtendedType(final TypeDefinition<?> extendTypeDef) {
Preconditions.checkArgument(extendTypeDef != null, "Type Definiition reference cannot be NULL!");
final TypeDefinition<?> baseTypeDef = extendTypeDef.getBaseType();
- if (baseTypeDef instanceof ExtendedType) {
+ if (baseTypeDef == null) {
+ return extendTypeDef;
+ } else if (baseTypeDef instanceof ExtendedType) {
return baseTypeDefForExtendedType(baseTypeDef);
} else {
return baseTypeDef;
* <code>modulName</code> or <code>typedef</code> or Q name of
* <code>typedef</code> equals <code>null</code>
*/
- private Type typedefToGeneratedType(final String basePackageName, final String moduleName, final Date moduleRevision,
- final TypeDefinition<?> typedef) {
+ private Type typedefToGeneratedType(final String basePackageName, final String moduleName,
+ final Date moduleRevision, final TypeDefinition<?> typedef) {
if ((basePackageName != null) && (moduleName != null) && (typedef != null) && (typedef.getQName() != null)) {
final String typedefName = typedef.getQName().getLocalName();
final Map<Date, Map<String, Type>> modulesByDate = genTypeDefsContextMap.get(moduleName);
final Map<String, Type> typeMap = modulesByDate.get(moduleRevision);
-
if (typeMap != null) {
typeMap.put(typedefName, returnType);
}
* <li>if <code>typedefName</code> equals null</li>
* </ul>
*/
- private GeneratedTransferObject provideGeneratedTOFromExtendedType(final TypeDefinition<?> typedef, final ExtendedType innerExtendedType,
- final String basePackageName) {
+ private GeneratedTransferObject provideGeneratedTOFromExtendedType(final TypeDefinition<?> typedef,
+ final ExtendedType innerExtendedType, final String basePackageName) {
Preconditions.checkArgument(innerExtendedType != null, "Extended type cannot be NULL!");
Preconditions.checkArgument(basePackageName != null, "String with base package name cannot be NULL!");
public String getTypeDefaultConstruction(LeafSchemaNode node, String defaultValue) {
TypeDefinition<?> type = node.getType();
+ QName typeQName = type.getQName();
+ TypeDefinition<?> base = baseTypeDefForExtendedType(type);
Preconditions.checkNotNull(type, "Cannot provide default construction for null type of " + node);
Preconditions.checkNotNull(defaultValue, "Cannot provide default construction for null default statement of "
+ node);
- Module module = getParentModule(node);
- String basePackageName = BindingGeneratorUtil.moduleNamespaceToPackageName(module);
- String packageName = packageNameForGeneratedType(basePackageName, node.getType().getPath());
- String className = packageName + "." + parseToClassName(node.getType().getQName().getLocalName());
-
StringBuilder sb = new StringBuilder();
- TypeDefinition<?> base = baseTypeDefForExtendedType(type);
- final boolean isBaseNull = base == null;
-
- if (isBaseNull) {
- base = type;
- }
-
String result = null;
if (base instanceof BinaryTypeDefinition) {
result = binaryToDef(defaultValue);
} else if (base instanceof BitsTypeDefinition) {
String parentName;
+ String className;
YangNode parent = node.getParent();
if (parent instanceof Module) {
- parentName = parseToClassName(((Module)parent).getName()) + "Data";
+ parentName = parseToClassName(((Module) parent).getName()) + "Data";
+ String basePackageName = BindingGeneratorUtil.moduleNamespaceToPackageName((Module) parent);
className = basePackageName + "." + parentName + "." + parseToClassName(node.getQName().getLocalName());
} else {
- parentName = parseToClassName(((SchemaNode)parent).getQName().getLocalName());
+ Module parentModule = getParentModule(node);
+ String basePackageName = BindingGeneratorUtil.moduleNamespaceToPackageName(parentModule);
+ String packageName = packageNameForGeneratedType(basePackageName, type.getPath());
+ parentName = parseToClassName(((SchemaNode) parent).getQName().getLocalName());
className = packageName + "." + parentName + "." + parseToClassName(node.getQName().getLocalName());
}
- result = bitsToDef((BitsTypeDefinition) base, className, defaultValue, isBaseNull);
+ result = bitsToDef((BitsTypeDefinition) base, className, defaultValue, type instanceof ExtendedType);
} else if (base instanceof BooleanTypeDefinition) {
result = typeToDef(Boolean.class, defaultValue);
} else if (base instanceof DecimalTypeDefinition) {
char first = Character.toUpperCase(defaultValue.charAt(0));
defValArray[0] = first;
String newDefVal = new String(defValArray);
+ String className;
if (type instanceof ExtendedType) {
- className = packageName + "." + parseToClassName(node.getType().getQName().getLocalName());
+ QName qname = type.getPath().getPath().get(0);
+ Module m = schemaContext.findModuleByNamespaceAndRevision(qname.getNamespace(), qname.getRevision());
+ String basePackageName = BindingGeneratorUtil.moduleNamespaceToPackageName(m);
+ String packageName = packageNameForGeneratedType(basePackageName, type.getPath());
+ className = packageName + "." + parseToClassName(typeQName.getLocalName());
+ } else {
+ Module parentModule = getParentModule(node);
+ String basePackageName = BindingGeneratorUtil.moduleNamespaceToPackageName(parentModule);
+ String packageName = packageNameForGeneratedType(basePackageName, node.getPath());
+ className = packageName + "." + parseToClassName(node.getQName().getLocalName());
}
result = className + "." + newDefVal;
} else if (base instanceof IdentityrefTypeDefinition) {
} else if (base instanceof Int64) {
result = typeToDef(Long.class, defaultValue);
} else if (base instanceof LeafrefTypeDefinition) {
- result = leafrefToDef(node, (LeafrefTypeDefinition)base);
+ result = leafrefToDef(node, (LeafrefTypeDefinition) base);
} else if (base instanceof StringTypeDefinition) {
result = "\"" + defaultValue + "\"";
} else if (base instanceof Uint8) {
}
sb.append(result);
- if (result != null && !result.isEmpty() && type instanceof ExtendedType && !(base instanceof LeafrefTypeDefinition)) {
- className = packageName + "." + parseToClassName(node.getType().getQName().getLocalName());
+ if (type instanceof ExtendedType && !(base instanceof LeafrefTypeDefinition)) {
+ QName qname = type.getPath().getPath().get(0);
+ Module m = schemaContext.findModuleByNamespaceAndRevision(qname.getNamespace(), qname.getRevision());
+ String basePackageName = BindingGeneratorUtil.moduleNamespaceToPackageName(m);
+ String packageName = packageNameForGeneratedType(basePackageName, type.getPath());
+ String className = packageName + "." + parseToClassName(typeQName.getLocalName());
sb.insert(0, "new " + className + "(");
sb.insert(sb.length(), ")");
}
return sb.toString();
}
-
private String typeToDef(Class<?> clazz, String defaultValue) {
return "new " + clazz.getName() + "(\"" + defaultValue + "\")";
}
return sb.toString();
}
- private String bitsToDef(BitsTypeDefinition type, String className, String defaultValue, boolean isBase) {
+ private String bitsToDef(BitsTypeDefinition type, String className, String defaultValue, boolean isExt) {
List<Bit> bits = new ArrayList<>(type.getBits());
Collections.sort(bits, new Comparator<Bit>() {
@Override
}
});
StringBuilder sb = new StringBuilder();
- sb.append(isBase ? "new " + className + "(" : "");
+ sb.append(isExt ? "" : "new " + className + "(");
for (int i = 0; i < bits.size(); i++) {
if (bits.get(i).getName().equals(defaultValue)) {
sb.append(true);
sb.append(", ");
}
}
- sb.append(isBase ? ")" : "");
+ sb.append(isExt ? "" : ")");
return sb.toString();
}
private String leafrefToDef(LeafSchemaNode parentNode, LeafrefTypeDefinition leafrefType) {
Preconditions.checkArgument(leafrefType != null, "Leafref Type Definition reference cannot be NULL!");
- Preconditions.checkArgument(leafrefType.getPathStatement() != null, "The Path Statement for Leafref Type Definition cannot be NULL!");
+ Preconditions.checkArgument(leafrefType.getPathStatement() != null,
+ "The Path Statement for Leafref Type Definition cannot be NULL!");
final RevisionAwareXPath xpath = leafrefType.getPathStatement();
final String strXPath = xpath.toString();
} else {
dataNode = findDataSchemaNodeForRelativeXPath(schemaContext, module, parentNode, xpath);
}
- return getTypeDefaultConstruction((LeafSchemaNode)dataNode, parentNode.getDefault());
- }
- }
- }
-
- return null;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /**
- * Utility method which search for original node defined in grouping.
- */
- private DataSchemaNode findOriginal(DataSchemaNode node) {
- DataSchemaNode result = findCorrectTargetFromGrouping(node);
- if (result == null) {
- result = findCorrectTargetFromAugment(node);
- if (result != null) {
- if (result.isAddedByUses()) {
- result = findOriginal(result);
- }
- }
- }
- return result;
- }
-
- private DataSchemaNode findCorrectTargetFromAugment(DataSchemaNode node) {
- if (!node.isAugmenting()) {
- return null;
- }
-
- String currentName = node.getQName().getLocalName();
- List<String> tmpPath = new ArrayList<>();
- YangNode parent = node;
- AugmentationSchema augment = null;
- do {
- parent = ((DataSchemaNode)parent).getParent();
- if (parent instanceof AugmentationTarget) {
- tmpPath.add(currentName);
- augment = findNodeInAugment(((AugmentationTarget)parent).getAvailableAugmentations(), currentName);
- if (augment == null) {
- currentName = ((DataSchemaNode)parent).getQName().getLocalName();
- }
- }
- } while (((DataSchemaNode)parent).isAugmenting() && augment == null);
-
- if (augment == null) {
- return null;
- } else {
- Collections.reverse(tmpPath);
- Object actualParent = augment;
- DataSchemaNode result = null;
- for (String name : tmpPath) {
- if (actualParent instanceof DataNodeContainer) {
- result = ((DataNodeContainer)actualParent).getDataChildByName(name);
- actualParent = ((DataNodeContainer)actualParent).getDataChildByName(name);
- } else {
- if (actualParent instanceof ChoiceNode) {
- result = ((ChoiceNode)actualParent).getCaseNodeByName(name);
- actualParent = ((ChoiceNode)actualParent).getCaseNodeByName(name);
- }
+ String result = getTypeDefaultConstruction((LeafSchemaNode) dataNode, parentNode.getDefault());
+ return result;
}
}
-
- if (result.isAddedByUses()) {
- result = findCorrectTargetFromGrouping(result);
- }
-
- return result;
}
- }
- private AugmentationSchema findNodeInAugment(Collection<AugmentationSchema> augments, String name) {
- for (AugmentationSchema augment : augments) {
- if (augment.getDataChildByName(name) != null) {
- return augment;
- }
- }
return null;
}
- private DataSchemaNode findCorrectTargetFromGrouping(DataSchemaNode node) {
- if (node.getPath().getPath().size() == 1) {
-
- // uses is under module statement
- Module m = findParentModule(schemaContext, node);
- DataSchemaNode result = null;
- for (UsesNode u : m.getUses()) {
- SchemaNode targetGrouping = findNodeInSchemaContext(schemaContext, u.getGroupingPath().getPath());
- if (!(targetGrouping instanceof GroupingDefinition)) {
- throw new IllegalArgumentException("Failed to generate code for augment in " + u);
- }
- GroupingDefinition gr = (GroupingDefinition)targetGrouping;
- result = gr.getDataChildByName(node.getQName().getLocalName());
- }
- if (result == null) {
- throw new IllegalArgumentException("Failed to generate code for augment");
- }
- return result;
- } else {
- DataSchemaNode result = null;
- String currentName = node.getQName().getLocalName();
- List<String> tmpPath = new ArrayList<>();
- YangNode parent = node.getParent();
- do {
- tmpPath.add(currentName);
- DataNodeContainer dataNodeParent = (DataNodeContainer)parent;
- for (UsesNode u : dataNodeParent.getUses()) {
- if (result == null) {
- SchemaNode targetGrouping = findNodeInSchemaContext(schemaContext, u.getGroupingPath().getPath());
- if (!(targetGrouping instanceof GroupingDefinition)) {
- throw new IllegalArgumentException("Failed to generate code for augment in " + u);
- }
- GroupingDefinition gr = (GroupingDefinition)targetGrouping;
- result = gr.getDataChildByName(currentName);
- }
- }
- if (result == null) {
- currentName = ((SchemaNode)parent).getQName().getLocalName();
- if (parent instanceof DataSchemaNode) {
- parent = ((DataSchemaNode)parent).getParent();
- } else {
- parent = ((DataNodeContainer)parent).getParent();
- }
- }
- } while (result == null && !(parent instanceof Module));
-
- if (result != null) {
- if (tmpPath.size() == 1) {
- if (result != null && result.isAddedByUses()) {
- result = findOriginal(result);
- }
- return result;
- } else {
- DataSchemaNode newParent = result;
- Collections.reverse(tmpPath);
- tmpPath.remove(0);
- for (String name : tmpPath) {
- newParent = ((DataNodeContainer)newParent).getDataChildByName(name);
- }
- if (newParent != null && newParent.isAddedByUses()) {
- newParent = findOriginal(newParent);
- }
- return newParent;
- }
- }
-
- return result;
- }
- }
-
@Override
public String getConstructorPropertyName(SchemaNode node) {
if (node instanceof TypeDefinition<?>) {
}
}
-
}