use of org.apache.sling.ide.serialization.SerializationManager in project sling by apache.
the class JcrNode method createChild.
public void createChild(final String childNodeName, final String childNodeType) {
String thisNodeType = getPrimaryType();
final SerializationKind parentSk = getSerializationKind(thisNodeType);
final SerializationKind childSk = getSerializationKind(childNodeType);
final SerializationManager serializationManager = Activator.getDefault().getSerializationManager();
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;
newFolder = f.getFolder(serializationManager.getOsPath(childNodeName));
newFolder.create(true, true, new NullProgressMonitor());
createVaultFile(newFolder, ".content.xml", childNodeType);
}
};
try {
ResourcesPlugin.getWorkspace().run(r, 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 && childSk == SerializationKind.METADATA_PARTIAL) {
createDomChild(childNodeName, childNodeType);
} else {
if (childNodeType.equals("nt:file")) {
IFolder f = (IFolder) resource;
createNtFile(f, childNodeName, childNodeType);
return;
}
//TODO: FILE not yet supported
Activator.getDefault().getPluginLogger().error("Cannot create child node of type " + childNodeType + ", serializationKind " + childSk + " under child node of type " + thisNodeType + ", serializationKind " + parentSk);
MessageDialog.openWarning(Display.getDefault().getActiveShell(), "Error creating node", "Cannot create child of " + thisNodeType + " with type " + childNodeType + " (yet?)");
return;
}
}
use of org.apache.sling.ide.serialization.SerializationManager in project sling by apache.
the class GenericJcrRootFile method pickResources.
public void pickResources(List<IResource> membersList) {
final SerializationManager serializationManager = Activator.getDefault().getSerializationManager();
for (Iterator<IResource> it = membersList.iterator(); it.hasNext(); ) {
final IResource resource = it.next();
final String resName = resource.getName();
Iterator<JcrNode> it2;
if (isRootContentXml()) {
it2 = parent.children.iterator();
} else {
it2 = children.iterator();
}
while (it2.hasNext()) {
JcrNode aChild = it2.next();
if (resName.equals(serializationManager.getOsPath(aChild.getName()))) {
// then pick this one
it.remove();
aChild.setResource(resource);
break;
}
}
}
}
Aggregations