You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2013/09/25 11:36:33 UTC

svn commit: r1526145 - in /sling/branches/tooling-ide-vlt/tooling/ide: api-test/src/test/java/org/apache/sling/ide/serialization/ api/src/org/apache/sling/ide/transport/ eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ impl-resource/src/org...

Author: rombert
Date: Wed Sep 25 09:36:32 2013
New Revision: 1526145

URL: http://svn.apache.org/r1526145
Log:
SLING-3115 - Deleting files and folders does not work on Windows

Make the repository delete command work on resource proxy instances rather than fileinfo

Modified:
    sling/branches/tooling-ide-vlt/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
    sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java

Modified: sling/branches/tooling-ide-vlt/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java?rev=1526145&r1=1526144&r2=1526145&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java Wed Sep 25 09:36:32 2013
@@ -115,7 +115,7 @@ public class StubRepository implements R
     }
 
     @Override
-    public Command<Void> newDeleteNodeCommand(FileInfo fileInfo) {
+    public Command<Void> newDeleteNodeCommand(ResourceProxy resource) {
         return null;
     }
 

Modified: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java?rev=1526145&r1=1526144&r2=1526145&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java Wed Sep 25 09:36:32 2013
@@ -83,7 +83,7 @@ public interface Repository {
 
     Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resourceProxy);
 	
-	Command<Void> newDeleteNodeCommand(FileInfo fileInfo);
+	Command<Void> newDeleteNodeCommand(ResourceProxy resourceProxy);
  
     /**
      * Retrieves information about the resource located at <tt>path</tt> and its direct descendants

Modified: sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java?rev=1526145&r1=1526144&r2=1526145&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java Wed Sep 25 09:36:32 2013
@@ -545,37 +545,41 @@ public class SlingLaunchpadBehaviour ext
             }
         } else {
 
-            IFile file = (IFile) resource.getAdapter(IFile.class);
-            IFolder folder = (IFolder) resource.getAdapter(IFolder.class);
-            ResourceProxy resourceProxy = null;
-
-            IResource changedResource = file != null ? file : folder;
-            if (changedResource == null) {
-                System.err.println("Could not find a file or a folder for " + info);
-                return null;
-            }
-
-            SerializationKind serializationKind;
-            String fallbackNodeType;
-            if (changedResource.getType() == IResource.FILE) {
-                serializationKind = SerializationKind.FILE;
-                fallbackNodeType = Repository.NT_FILE;
-            } else { // i.e. IResource.FOLDER
-                serializationKind = SerializationKind.FOLDER;
-                fallbackNodeType = Repository.NT_FOLDER;
-            }
-
-            String resourceLocation = '/' + changedResource.getFullPath().makeRelativeTo(syncDirectory.getFullPath())
-                    .toPortableString();
-            String serializationFilePath = serializationManager.getSerializationFilePath(resourceLocation,
-                    serializationKind);
-            IResource serializationResource = syncDirectory.findMember(serializationFilePath);
-            resourceProxy = buildResourceProxy(resourceLocation, serializationResource, syncDirectory, fallbackNodeType);
+            ResourceProxy resourceProxy = buildResourceProxyForPlainFileOrFolder( resource, syncDirectory);
 
             return repository.newAddOrUpdateNodeCommand(info, resourceProxy);
         }
     }
 
+	private ResourceProxy buildResourceProxyForPlainFileOrFolder( IModuleResource resource, IFolder syncDirectory)
+			throws IOException, CoreException {
+		IFile file = (IFile) resource.getAdapter(IFile.class);
+		IFolder folder = (IFolder) resource.getAdapter(IFolder.class);
+
+		IResource changedResource = file != null ? file : folder;
+		if (changedResource == null) {
+		    System.err.println("Could not find a file or a folder for " + resource);
+		    return null;
+		}
+
+		SerializationKind serializationKind;
+		String fallbackNodeType;
+		if (changedResource.getType() == IResource.FILE) {
+		    serializationKind = SerializationKind.FILE;
+		    fallbackNodeType = Repository.NT_FILE;
+		} else { // i.e. IResource.FOLDER
+		    serializationKind = SerializationKind.FOLDER;
+		    fallbackNodeType = Repository.NT_FOLDER;
+		}
+
+		String resourceLocation = '/' + changedResource.getFullPath().makeRelativeTo(syncDirectory.getFullPath())
+		        .toPortableString();
+		String serializationFilePath = serializationManager.getSerializationFilePath(resourceLocation,
+		        serializationKind);
+		IResource serializationResource = syncDirectory.findMember(serializationFilePath);
+		return buildResourceProxy(resourceLocation, serializationResource, syncDirectory, fallbackNodeType);
+	}
+
     private ResourceProxy buildResourceProxy(String resourceLocation, IResource serializationResource,
             IFolder syncDirectory, String fallbackPrimaryType) throws IOException, CoreException {
         if (serializationResource instanceof IFile) {
@@ -667,24 +671,23 @@ public class SlingLaunchpadBehaviour ext
         return filter.filter(contentSyncRoot, repositoryPath, repository.getRepositoryInfo());
     }
 
-    private Command<?> removeFileCommand(Repository repository, IModuleResource resource) throws SerializationException {
-
-        FileInfo info = createFileInfo(resource, repository);
-
-        if (info == null) {
-            return null;
-        }
-
-        IResource res = getResource(resource);
-        if (res == null) {
-            return null;
+    private Command<?> removeFileCommand(Repository repository, IModuleResource resource) throws SerializationException, IOException, CoreException {
+    	
+        IResource deletedResource = getResource(resource);
+        
+        if ( deletedResource == null ) {
+        	return null;
         }
-
-        if (res.isTeamPrivateMember(IResource.CHECK_ANCESTORS)) {
+        
+        if (deletedResource.isTeamPrivateMember(IResource.CHECK_ANCESTORS)) {
             return null;
         }
+        
+        IFolder syncDirectory = ProjectUtil.getSyncDirectory(deletedResource.getProject());
+        
+        ResourceProxy resourceProxy = buildResourceProxyForPlainFileOrFolder(resource, syncDirectory);
 
-        return repository.newDeleteNodeCommand(info);
+        return repository.newDeleteNodeCommand(resourceProxy);
     }
 
     private Filter loadFilter(IProject project, final IFolder syncFolder) throws CoreException {

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java?rev=1526145&r1=1526144&r2=1526145&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java Wed Sep 25 09:36:32 2013
@@ -23,18 +23,16 @@ import org.apache.commons.httpclient.met
 import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
 import org.apache.commons.httpclient.methods.multipart.Part;
 import org.apache.commons.httpclient.methods.multipart.StringPart;
-import org.apache.sling.ide.transport.FileInfo;
 import org.apache.sling.ide.transport.RepositoryException;
 import org.apache.sling.ide.transport.RepositoryInfo;
+import org.apache.sling.ide.transport.ResourceProxy;
 import org.apache.sling.ide.transport.Result;
 
 class DeleteNodeCommand extends AbstractCommand<Void> {
 
-    private final FileInfo fileInfo;
 
-    DeleteNodeCommand(FileInfo fileInfo, RepositoryInfo repositoryInfo, HttpClient httpClient) {
-        super(repositoryInfo, httpClient, fileInfo.getRelativeLocation() + "/" + fileInfo.getName());
-        this.fileInfo = fileInfo;
+    DeleteNodeCommand(ResourceProxy resource, RepositoryInfo repositoryInfo, HttpClient httpClient) {
+        super(repositoryInfo, httpClient, resource.getPath());
     }
 
     @Override
@@ -57,6 +55,6 @@ class DeleteNodeCommand extends Abstract
 
     @Override
     public String toString() {
-    	return String.format("%8s %s", "DELETE", fileInfo.getRelativeLocation() + "/" + fileInfo.getName());
+    	return String.format("%8s %s", "DELETE", getPath());
     }
 }
\ No newline at end of file

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java?rev=1526145&r1=1526144&r2=1526145&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java Wed Sep 25 09:36:32 2013
@@ -33,8 +33,8 @@ public class RepositoryImpl extends Abst
     }
 
 	@Override
-	public Command<Void> newDeleteNodeCommand(final FileInfo fileInfo) {
-        return wrap(new DeleteNodeCommand(fileInfo, repositoryInfo, httpClient));
+	public Command<Void> newDeleteNodeCommand(final ResourceProxy resource) {
+        return wrap(new DeleteNodeCommand(resource, repositoryInfo, httpClient));
 	}
 	
 	@Override

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java?rev=1526145&r1=1526144&r2=1526145&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java Wed Sep 25 09:36:32 2013
@@ -23,12 +23,12 @@ import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
-import org.apache.sling.ide.transport.FileInfo;
+import org.apache.sling.ide.transport.ResourceProxy;
 
 public class DeleteNodeCommand extends JcrCommand<Void> {
 
-    public DeleteNodeCommand(Repository repository, Credentials credentials, FileInfo fileInfo) {
-        super(repository, credentials, makePath(fileInfo));
+    public DeleteNodeCommand(Repository repository, Credentials credentials, ResourceProxy resource) {
+        super(repository, credentials, resource.getPath());
     }
 
     @Override

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java?rev=1526145&r1=1526144&r2=1526145&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java Wed Sep 25 09:36:32 2013
@@ -52,8 +52,8 @@ public class VltRepository implements Re
     }
 
     @Override
-    public Command<Void> newDeleteNodeCommand(FileInfo fileInfo) {
-        return TracingCommand.wrap(new DeleteNodeCommand(jcrRepo, credentials, fileInfo), eventAdmin);
+    public Command<Void> newDeleteNodeCommand(ResourceProxy resource) {
+        return TracingCommand.wrap(new DeleteNodeCommand(jcrRepo, credentials, resource), eventAdmin);
     }
 
     @Override