return actualType.restrictions;
}
+ def protected generateInnerClass(GeneratedType innerClass) '''
+ «IF innerClass instanceof GeneratedTransferObject»
+ «val innerJavaType = javaType.getEnclosedType(innerClass.identifier)»
+ «IF innerClass.unionType»
+ «new UnionTemplate(innerJavaType, innerClass).generateAsInnerClass»
+ «ELSE»
+ «new ClassTemplate(innerJavaType, innerClass).generateAsInnerClass»
+ «ENDIF»
+ «ENDIF»
+ '''
+
def static Restrictions getRestrictions(Type type) {
if (type instanceof ConcreteType) {
return type.restrictions
def protected innerClassesDeclarations() '''
«IF !type.enclosedTypes.empty»
«FOR innerClass : type.enclosedTypes SEPARATOR "\n"»
- «IF (innerClass instanceof GeneratedTransferObject)»
- «new ClassTemplate(javaType.getEnclosedType(innerClass.identifier), innerClass).generateAsInnerClass»
- «ENDIF»
+ «generateInnerClass(innerClass)»
«ENDFOR»
«ENDIF»
'''
import org.opendaylight.mdsal.binding.model.api.AnnotationType
import org.opendaylight.mdsal.binding.model.api.Constant
import org.opendaylight.mdsal.binding.model.api.Enumeration
-import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject
import org.opendaylight.mdsal.binding.model.api.GeneratedType
import org.opendaylight.mdsal.binding.model.api.MethodSignature
import org.opendaylight.mdsal.binding.model.util.TypeConstants
def private generateInnerClasses() '''
«IF !enclosedGeneratedTypes.empty»
«FOR innerClass : enclosedGeneratedTypes SEPARATOR "\n"»
- «IF (innerClass instanceof GeneratedTransferObject)»
- «val innerJavaType = javaType.getEnclosedType(innerClass.identifier)»
- «IF innerClass.unionType»
- «val unionTemplate = new UnionTemplate(innerJavaType, innerClass)»
- «unionTemplate.generateAsInnerClass»
- «ELSE»
- «val classTemplate = new ClassTemplate(innerJavaType, innerClass)»
- «classTemplate.generateAsInnerClass»
- «ENDIF»
-
- «ENDIF»
+ «generateInnerClass(innerClass)»
«ENDFOR»
«ENDIF»
'''
CompilationTestUtils.cleanUp(sourcesOutputDir, compiledOutputDir);
}
+ @Test
+ public void twoNestedUnionsTest() throws Exception {
+ final File sourcesOutputDir = CompilationTestUtils.generatorOutput("mdsal320");
+ final File compiledOutputDir = CompilationTestUtils.compilerOutput("mdsal320");
+ generateTestSources("/compilation/mdsal320", sourcesOutputDir);
+ CompilationTestUtils.testCompilation(sourcesOutputDir, compiledOutputDir);
+ CompilationTestUtils.cleanUp(sourcesOutputDir, compiledOutputDir);
+ }
+
private static void testReturnTypeIdentityref(final Class<?> clazz, final String methodName,
final String returnTypeStr) throws NoSuchMethodException {
Method method = clazz.getMethod(methodName);
--- /dev/null
+module yt320 {
+ namespace "urn:odl:yt320";
+ prefix yt320;
+
+ container foo {
+ leaf bar {
+ type union {
+ type enumeration {
+ enum "foo";
+ }
+ type string {
+ length 2;
+ }
+ type union {
+ type enumeration {
+ enum bar;
+ }
+ type string {
+ length 1;
+ }
+ }
+ }
+ }
+ }
+}
+