private T getSubnamespace(T sourceNode, List<String> pathElements, IOperationContext context) { if (pathElements.size() == 0) return sourceNode; String first = pathElements.get(0); List<String> otherElements = pathElements.subList(1, pathElements.size()); for (int i = 0; i < sourceNode.getChildCount(); i++) { if (myBuilder.isNamespaceNode((MPSTreeNode) sourceNode.getChildAt(i))) { T child = (T) sourceNode.getChildAt(i); if (first.equals(myBuilder.getName(child))) { return getSubnamespace(child, otherElements, context); } } } IModule module = (context != null) ? context.getModule() : null; T newChild = myBuilder.createNamespaceNode(first, new ModuleChangingOperationContext(module, context)); sourceNode.add(newChild); return getSubnamespace(newChild, otherElements, context); }
protected NamespaceTreeBuilder(NamespaceNodeBuilder<T> builder) { myBuilder = builder; myRootNamespace = myBuilder.createNamespaceNode("", null); }