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 {
private def parseTargetPath(SchemaPath path) {
val List<DataSchemaNode> nodes = new ArrayList<DataSchemaNode>();
for (QName pathElement : path.pathFromRoot) {
- val prefix = pathElement.prefix
- val moduleName = imports.get(prefix)
- if(moduleName != null) {
- val revision = pathElement.revision
- val module = ctx.findModuleByName(moduleName, revision)
+ val module = ctx.findModuleByNamespaceAndRevision(pathElement.namespace, pathElement.revision);
+ if (module !== null) {
var foundNode = module.getDataChildByName(pathElement)
if(foundNode == null) {
val child = nodes.last
'''
}
- private def printAugmentedNode(DataSchemaNode child) {
+ private def CharSequence printAugmentedNode(DataSchemaNode child) {
if(child instanceof ChoiceCaseNode)
return ''
«ENDFOR»
</ul>
<ul>
- «FOR typeDef : dataNode.typeDefinitions»
+ «val Set<TypeDefinition<?>> typeDefinitions = dataNode.typeDefinitions»
+ «FOR typeDef : typeDefinitions»
«typeDef.restrictions»
«ENDFOR»
</ul>
def String typeAnchorLink(SchemaPath path, CharSequence text) {
if(path !== null) {
- val prefix = path.path.last.prefix
- if(prefix == this.currentModule.prefix) {
+ val lastElement = Iterables.getLast(path.pathFromRoot)
+ val ns = lastElement.namespace
+ if (ns == this.currentModule.namespace) {
return '''<a href="#«path.schemaPathToId»">«text»</a>'''
- } else if(!prefix.nullOrEmpty){
- val String module = imports.get(prefix)
- if(!module.nullOrEmpty) {
- return '''«prefix»:«text»'''
- //to enable external (import) links
- //return '''<a href="«module».html#«path.schemaPathToId»">«prefix»:«text»</a>'''
- }
+ } else {
+ return '''(«ns»)«text»'''
+ //to enable external (import) links
+ //return '''<a href="«module».html#«path.schemaPathToId»">«prefix»:«text»</a>'''
}
- return text.toString
}
}
</ul>
«ENDIF»
- «IF !path.path.empty»
+ «IF path.pathArguments.iterator.hasNext»
<h3>XML example</h3>
- «nodes.xmlExample(path.path.last.nodeType,path)»
+ «nodes.xmlExample(path.pathArguments.last.nodeType,path)»
</h3>
«ENDIF»
«FOR childNode : containers»
def header(int level,YangInstanceIdentifier name) '''
- <h«level» id="«FOR cmp : name.path SEPARATOR "/"»«cmp.nodeType.localName»«ENDFOR»">
- «FOR cmp : name.path SEPARATOR "/"»«cmp.nodeType.localName»«ENDFOR»
+ <h«level» id="«FOR cmp : name.pathArguments SEPARATOR "/"»«cmp.nodeType.localName»«ENDFOR»">
+ «FOR cmp : name.pathArguments SEPARATOR "/"»«cmp.nodeType.localName»«ENDFOR»
</h«level»>
'''
}
def CharSequence localLink(YangInstanceIdentifier identifier, CharSequence text) '''
- <a href="#«FOR cmp : identifier.path SEPARATOR "/"»«cmp.nodeType.localName»«ENDFOR»">«text»</a>
+ <a href="#«FOR cmp : identifier.pathArguments SEPARATOR "/"»«cmp.nodeType.localName»«ENDFOR»">«text»</a>
'''
append(currentModule.name)
append(":")
var previous = false;
- for(arg : identifier.path) {
+ for(arg : identifier.pathArguments) {
if(previous) append("/")
append(arg.nodeType.localName);
previous = true;
}
}
- var String prefix = name.prefix
- var String moduleName
- if (prefix == null || prefix.empty || prefix.equals(module.prefix)) {
- moduleName = module.name
- } else {
- moduleName = imports.get(prefix)
- }
+ val pathElementModule = ctx.findModuleByNamespaceAndRevision(name.namespace, name.revision)
+ val String moduleName = pathElementModule.name
pathString.append(moduleName)
pathString.append(':')
pathString.append(name.localName)