in eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java [1522:1555]
private IFolder prepareCreateFolderChild(final String childNodeName)
throws CoreException {
// 0) find base folder for creating new subfolders
List<String> parentNames = new LinkedList<>();
JcrNode node = JcrNode.this;
while(!(node.resource instanceof IFolder) && !(node instanceof SyncDir)) {
parentNames.add(0, node.getJcrPathName());
node = node.getParent();
}
if (!(node.resource instanceof IFolder)) {
throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Could not find base folder for creating child. (1) Expected a folder at "+node.resource));
}
IFolder folder = (IFolder) node.resource;
parentNames.add(childNodeName);
for (Iterator<String> it = parentNames.iterator(); it .hasNext();) {
String aParentName = it.next();
String encodedParentName = DirNode.encode(aParentName);
IResource member = folder.findMember(encodedParentName);
if (member!=null && !(member instanceof IFolder)) {
throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Could not find base folder for creating child. (2) Expected a folder at "+member));
}
if (member!=null && member.exists()) {
folder = (IFolder) member;
it.remove();
continue;
}
folder = folder.getFolder(encodedParentName);
if (!folder.exists()) {
folder.create(true, true, new NullProgressMonitor());
}
}
return folder;
}