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


Reply via email to