<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>binding-generator</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>binding-generator</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
augment "/nm:netconf-state/nm:datastores/nm:datastore" {
choice storage-format {
- case xml {
- container xml-def {
+ case _xml {
+ container _xml-def {
leaf file-name {
type string;
}
}
}
}
-}
\ No newline at end of file
+}
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>binding-generator</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>binding-generator</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>binding-generator</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
*/
package org.opendaylight.yangtools.sal.java.api.generator
-import org.opendaylight.yangtools.yang.model.api.Module
-import org.opendaylight.yangtools.binding.generator.util.BindingGeneratorUtil
-import org.opendaylight.yangtools.yang.binding.YangModuleInfo
import java.io.InputStream
-import com.google.common.collect.ImmutableSet
-import java.util.Map
+import java.io.IOException
+import java.text.DateFormat
+import java.text.SimpleDateFormat
+
+import java.util.Collections
+import java.util.Date
+import java.util.HashSet
import java.util.LinkedHashMap
+import java.util.Map
+import java.util.Set
+import java.util.TreeMap
+
+import org.opendaylight.yangtools.binding.generator.util.BindingGeneratorUtil
import org.opendaylight.yangtools.binding.generator.util.Types
-import org.opendaylight.yangtools.sal.binding.model.api.Type
import org.opendaylight.yangtools.sal.binding.model.api.ParameterizedType
+import org.opendaylight.yangtools.sal.binding.model.api.Type
import org.opendaylight.yangtools.sal.binding.model.api.WildcardType
-import java.io.IOException
-import java.util.Set
-import java.util.HashSet
+import org.opendaylight.yangtools.yang.binding.YangModuleInfo
+import org.opendaylight.yangtools.yang.model.api.Module
import org.opendaylight.yangtools.yang.model.api.SchemaContext
-import java.util.Date
-import java.util.TreeMap
-import java.text.DateFormat
-import java.text.SimpleDateFormat
+
+import com.google.common.collect.ImmutableSet
class YangModuleInfoTemplate {
val CLASS = "$YangModuleInfoImpl"
}
def body() '''
- public class «CLASS» implements «YangModuleInfo.importedName» {
+ public final class «CLASS» implements «YangModuleInfo.importedName» {
private static final «YangModuleInfo.importedName» INSTANCE = new «CLASS»();
- private «CLASS»() {}
+ private final Set<YangModuleInfo> importedModules;
public static «YangModuleInfo.importedName» getInstance() {
return INSTANCE;
}
«module.classBody»
-
}
'''
private def CharSequence classBody(Module m) '''
+ private «CLASS»() {
+ «IF m.imports.size != 0»
+ «Set.importedName»<«YangModuleInfo.importedName»> set = new «HashSet.importedName»<>();
+ «FOR imp : m.imports»
+ «val name = imp.moduleName»
+ «val rev = imp.revision»
+ «IF rev == null»
+ «val Set<Module> modules = ctx.modules»
+ «val TreeMap<Date, Module> sorted = new TreeMap()»
+ «FOR module : modules»
+ «IF module.name.equals(name)»
+ «sorted.put(module.revision, module)»
+ «ENDIF»
+ «ENDFOR»
+ set.add(«BindingGeneratorUtil.moduleNamespaceToPackageName(sorted.lastEntry().value)».«CLASS».getInstance());
+ «ELSE»
+ set.add(«BindingGeneratorUtil.moduleNamespaceToPackageName(ctx.findModuleByName(name, rev))».«CLASS».getInstance());
+ «ENDIF»
+ «ENDFOR»
+ importedModules = «ImmutableSet.importedName».copyOf(set);
+ «ELSE»
+ importedModules = «Collections.importedName».emptySet();
+ «ENDIF»
+
+ «val path = m.moduleSourcePath.replace(java.io.File.separatorChar, '/')»
+ «InputStream.importedName» stream = «CLASS».class.getResourceAsStream("«path»");
+ if (stream == null) {
+ throw new IllegalStateException("Resource «path» is missing");
+ }
+ try {
+ stream.close();
+ } catch («IOException.importedName» e) {
+ // Resource leak, but there is nothing we can do
+ }
+ }
+
@Override
- public «String.importedName» getName() {
+ public «String.importedName» getName() {
return "«m.name»";
}
}
@Override
- public «InputStream.importedName» getModuleSourceStream() throws «IOException.importedName» {
- «val path = m.moduleSourcePath»
- «IF path == null»
- return null;
- «ELSE»
- return «CLASS».class.getResourceAsStream("«path»");
- «ENDIF»
+ public «InputStream.importedName» getModuleSourceStream() throws IOException {
+ «InputStream.importedName» stream = «CLASS».class.getResourceAsStream("«path»");
+ if (stream == null) {
+ throw new «IOException.importedName»("Resource «path» is missing");
+ }
+ return stream;
}
@Override
- public «ImmutableSet.importedName»<«YangModuleInfo.importedName»> getImportedModules() {
- «Set.importedName»<«YangModuleInfo.importedName»> set = new «HashSet.importedName»<>();
- «FOR imp : m.imports»
- «val name = imp.moduleName»
- «val rev = imp.revision»
- «IF rev == null»
- «val Set<Module> modules = ctx.modules»
- «val TreeMap<Date, Module> sorted = new TreeMap()»
- «FOR module : modules»
- «IF module.name.equals(name)»
- «sorted.put(module.revision, module)»
- «ENDIF»
- «ENDFOR»
- set.add(«BindingGeneratorUtil.moduleNamespaceToPackageName(sorted.lastEntry().value)».«CLASS».getInstance());
- «ELSE»
- set.add(«BindingGeneratorUtil.moduleNamespaceToPackageName(ctx.findModuleByName(name, rev))».«CLASS».getInstance());
- «ENDIF»
- «ENDFOR»
- return «ImmutableSet.importedName».copyOf(set);
+ public «Set.importedName»<«YangModuleInfo.importedName»> getImportedModules() {
+ return importedModules;
}
'''
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>binding-generator</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>binding-generator</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>binding-generator</artifactId>
<groupId>org.opendaylight.yangtools</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
augment "/nm:netconf-state/nm:datastores/nm:datastore" {
choice storage-format {
- case xml {
- container xml-def {
+ case _xml {
+ container _xml-def {
leaf file-name {
type string;
}
}
}
}
-}
\ No newline at end of file
+}
<parent>
<artifactId>model-iana</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>iana-afn-safi</artifactId>
- <version>2013.07.04.2-SNAPSHOT</version>
+ <version>2013.07.04.4-SNAPSHOT</version>
<build>
<plugins>
<parent>
<artifactId>model-iana</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>iana-if-type</artifactId>
- <version>2013.07.04.2-SNAPSHOT</version>
+ <version>2013.07.04.4-SNAPSHOT</version>
<build>
<plugins>
<parent>
<artifactId>model-parent</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>model-ietf</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ietf-inet-types</artifactId>
- <version>2010.09.24.2-SNAPSHOT</version>
+ <version>2010.09.24.4-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
<parent>
<artifactId>model-ietf</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ietf-ted</artifactId>
- <version>2013.10.21.0-SNAPSHOT</version>
+ <version>2013.10.21.2-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>model-ietf</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ietf-topology-isis</artifactId>
- <version>2013.10.21.0-SNAPSHOT</version>
+ <version>2013.10.21.2-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>model-ietf</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ietf-topology-l3-unicast-igp</artifactId>
- <version>2013.10.21.0-SNAPSHOT</version>
+ <version>2013.10.21.2-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>model-ietf</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ietf-topology-ospf</artifactId>
- <version>2013.10.21.0-SNAPSHOT</version>
+ <version>2013.10.21.2-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>model-ietf</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ietf-topology</artifactId>
- <version>2013.10.21.0-SNAPSHOT</version>
+ <version>2013.10.21.2-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
<parent>
<artifactId>model-ietf</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ietf-yang-types</artifactId>
- <version>2010.09.24.2-SNAPSHOT</version>
+ <version>2010.09.24.4-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
<parent>
<artifactId>model-parent</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<description>${project.artifactId}</description>
<properties>
- <ietf.topology.version>2013.10.21.0-SNAPSHOT</ietf.topology.version>
+ <ietf.topology.version>2013.10.21.2-SNAPSHOT</ietf.topology.version>
</properties>
<modules>
<module>ietf-inet-types</module>
<dependency>
<groupId>org.opendaylight.yangtools.model</groupId>
<artifactId>ietf-inet-types</artifactId>
- <version>2010.09.24.2-SNAPSHOT</version>
+ <version>2010.09.24.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.yangtools.model</groupId>
<artifactId>ietf-yang-types</artifactId>
- <version>2010.09.24.2-SNAPSHOT</version>
+ <version>2010.09.24.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<parent>
<artifactId>model-parent</artifactId>
<groupId>org.opendaylight.yangtools.model</groupId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>opendaylight-l2-types</artifactId>
- <version>2013.08.27.2-SNAPSHOT</version>
+ <version>2013.08.27.4-SNAPSHOT</version>
<build>
<plugins>
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<plugin>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
<executions>
<execution>
<goals>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
<type>jar</type>
</dependency>
</dependencies>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</dependency>
</dependencies>
<parent>
<groupId>org.opendaylight.yangtools.model</groupId>
<artifactId>model-parent</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yang-ext</artifactId>
- <version>2013.09.07.2-SNAPSHOT</version>
+ <version>2013.09.07.4-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang</artifactId>
- <version>0.6.0-SNAPSHOT</version>
+ <version>0.6.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
*/
package org.opendaylight.yangtools.yang.binding;
-import java.io.IOException;
import java.io.InputStream;
-
-import com.google.common.collect.ImmutableSet;
+import java.io.IOException;
+import java.util.Set;
public interface YangModuleInfo {
InputStream getModuleSourceStream() throws IOException;
- ImmutableSet<YangModuleInfo> getImportedModules();
+ Set<YangModuleInfo> getImportedModules();
}