You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2014/06/04 11:44:42 UTC
svn commit: r1600067 -
/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
Author: stefanegli
Date: Wed Jun 4 09:44:42 2014
New Revision: 1600067
URL: http://svn.apache.org/r1600067
Log:
SLING-3640 : handling creation of IFolder and IFile in one 'workspace transaction' to avoid glitches in refresh
Modified:
sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1600067&r1=1600066&r2=1600067&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Wed Jun 4 09:44:42 2014
@@ -779,7 +779,7 @@ public class JcrNode implements IAdaptab
}
}
- public void createChild(String childNodeName, String childNodeType) {
+ public void createChild(final String childNodeName, final String childNodeType) {
String thisNodeType = getPrimaryType();
final SerializationKind parentSk = getSerializationKind(thisNodeType);
final SerializationKind childSk = getSerializationKind(childNodeType);
@@ -789,42 +789,60 @@ public class JcrNode implements IAdaptab
} else if (parentSk==SerializationKind.FILE) {
throw new IllegalStateException("cannot create child of nt:file");
} else if (childSk==SerializationKind.FOLDER) {
- IFolder f = (IFolder)resource;
- IFolder newFolder = null;
+ IWorkspaceRunnable r = new IWorkspaceRunnable() {
+
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ IFolder f = (IFolder)resource;
+ IFolder newFolder = null;
+ newFolder = f.getFolder(childNodeName);
+ newFolder.create(true, true, new NullProgressMonitor());
+ if (!childNodeType.equals("nt:folder")) {
+ createVaultFile(newFolder, ".content.xml", childNodeType);
+ }
+ }
+ };
+
try {
- newFolder = f.getFolder(childNodeName);
- newFolder.create(true, true, new NullProgressMonitor());
+ ResourcesPlugin.getWorkspace().run(r, null);
+ if (childNodeType.equals("nt: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;
}
-
- if (!childNodeType.equals("nt:folder")) {
- createVaultFile(newFolder, ".content.xml", childNodeType);
- } else {
- // otherwise trigger a publish, as folder creation is not propagated to
- // the SlingLaunchpadBehavior otherwise
- //TODO: make configurable? Fix in Eclipse/WST?
- ServerUtil.triggerIncrementalBuild(f, null);
- }
} else if (parentSk==SerializationKind.FOLDER && childSk==SerializationKind.METADATA_FULL) {
createVaultFile((IFolder)resource, childNodeName+".xml", childNodeType);
} else if (parentSk==SerializationKind.FOLDER && childSk==SerializationKind.METADATA_PARTIAL) {
// createVaultFile((IFolder)resource, childNodeName+".xml", childNodeType);
- IFolder f = (IFolder)resource;
- IFolder newFolder = null;
+ IWorkspaceRunnable r = new IWorkspaceRunnable() {
+
+ @Override
+ public void run(IProgressMonitor monitor) throws CoreException {
+ IFolder f = (IFolder)resource;
+ IFolder newFolder = null;
+ newFolder = f.getFolder(childNodeName);
+ newFolder.create(true, true, new NullProgressMonitor());
+ createVaultFile(newFolder, ".content.xml", childNodeType);
+ }
+ };
+
try {
- newFolder = f.getFolder(childNodeName);
- newFolder.create(true, true, new NullProgressMonitor());
+ 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;
}
- createVaultFile(newFolder, ".content.xml", childNodeType);
} else if (parentSk!=SerializationKind.FOLDER && childSk==SerializationKind.METADATA_PARTIAL) {
createDomChild(childNodeName, childNodeType);
} else {