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