if (parentSk==SerializationKind.METADATA_FULL) {
createDomChild(childNodeName, childNodeType);
} else if (parentSk==SerializationKind.FILE) {
throw new IllegalStateException("cannot create child of nt:file");
} else if (childSk==SerializationKind.FOLDER) {
IWorkspaceRunnable r = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
IFolder newFolder = prepareCreateFolderChild(childNodeName);
if (parentSk==SerializationKind.METADATA_PARTIAL) {
// when the parent is partial and we're creating a folder here,
// then we're running into a SLING-3639 type of problem
// the way around this is to make a 'pointer' in the 'root'
// .content.xml, and have a directory structure leaving to
// the new node, together with a .content.xml describing
// the type (unless it's a nt:folder that is)
// 1) 'pointer' in the 'root .content.xml'
createDomChild(childNodeName, null);
// 2) directory structure is created above already
// 3) new .content.xml is done below
}
if (!childNodeType.equals("nt:folder")) {
createVaultFile(newFolder, ".content.xml", childNodeType);
}
}
};
try {
ResourcesPlugin.getWorkspace().run(r, null);
if (childNodeType.equals("nt:folder") && parentSk==SerializationKind.FOLDER) {
// trigger a publish, as folder creation is not propagated to
// the SlingLaunchpadBehavior otherwise
//TODO: make configurable? Fix in Eclipse/WST?
ServerUtil.triggerIncrementalBuild((IFolder)resource, null);
}
} catch (CoreException e) {
Activator.getDefault().getPluginLogger().error("Error creating child "+childNodeName+": "+e, e);
e.printStackTrace();
MessageDialog.openError(Display.getDefault().getActiveShell(), "Error creating node", "Error creating child of "+thisNodeType+" with type "+childNodeType+": "+e);
return;
}
} else if ((parentSk == SerializationKind.FOLDER || parentSk == SerializationKind.METADATA_PARTIAL)
&& childSk == SerializationKind.METADATA_FULL) {
createVaultFile((IFolder) resource, serializationManager.getOsPath(childNodeName) + ".xml", childNodeType);
} else if (parentSk==SerializationKind.FOLDER && childSk==SerializationKind.METADATA_PARTIAL) {
// createVaultFile((IFolder)resource, childNodeName+".xml", childNodeType);
IWorkspaceRunnable r = new IWorkspaceRunnable() {
@Override
public void run(IProgressMonitor monitor) throws CoreException {
IFolder f = (IFolder)resource;
IFolder newFolder = null;