Author: rombert
Date: Fri Sep 27 14:24:07 2013
New Revision: 1526912

URL: http://svn.apache.org/r1526912
Log:
SLING-3123 - Resource deletion no longer obeys filters

Apply filter for deleted resources.

Modified:
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/META-INF/MANIFEST.MF
    
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java

Modified: 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/META-INF/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/META-INF/MANIFEST.MF?rev=1526912&r1=1526911&r2=1526912&view=diff
==============================================================================
--- 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/META-INF/MANIFEST.MF 
(original)
+++ 
sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/META-INF/MANIFEST.MF 
Fri Sep 27 14:24:07 2013
@@ -15,6 +15,7 @@ Import-Package: org.apache.commons.httpc
  org.apache.commons.httpclient.auth;version="3.1.0",
  org.apache.commons.httpclient.methods;version="3.1.0",
  org.apache.commons.httpclient.params;version="3.1.0",
+ org.apache.commons.io;version="2.0.1",
  org.apache.sling.ide.artifacts,
  org.apache.sling.ide.filter,
  org.apache.sling.ide.osgi,

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=1526912&r1=1526911&r2=1526912&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
 Fri Sep 27 14:24:07 2013
@@ -36,6 +36,7 @@ import org.apache.commons.httpclient.URI
 import org.apache.commons.httpclient.UsernamePasswordCredentials;
 import org.apache.commons.httpclient.auth.AuthScope;
 import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.io.IOUtils;
 import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
 import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
 import org.apache.sling.ide.eclipse.core.MavenLaunchHelper;
@@ -637,7 +638,8 @@ public class SlingLaunchpadBehaviour ext
                     (Object) fallbackPrimaryType));
     }
 
-    private FileInfo createFileInfo(IModuleResource resource, Repository 
repository) throws SerializationException {
+    private FileInfo createFileInfo(IModuleResource resource, Repository 
repository) throws SerializationException,
+            CoreException {
 
         IResource file = getResource(resource);
         if (file == null) {
@@ -649,13 +651,7 @@ public class SlingLaunchpadBehaviour ext
         String syncDirectory = ProjectUtil.getSyncDirectoryValue(project);
         File syncDirectoryAsFile = ProjectUtil.getSyncDirectoryFile(project);
 
-        Filter filter = null;
-        try {
-            filter = loadFilter(project, project.getFolder(syncDirectory));
-        } catch (CoreException e) {
-            // TODO error handling
-            e.printStackTrace();
-        }
+        Filter filter = loadFilter(project.getFolder(syncDirectory));
 
         if (filter != null) {
             FilterResult filterResult = getFilterResult(resource, filter, 
syncDirectoryAsFile,
@@ -725,13 +721,23 @@ public class SlingLaunchpadBehaviour ext
         }
         
         IFolder syncDirectory = 
ProjectUtil.getSyncDirectory(deletedResource.getProject());
+        File syncDirectoryAsFile = 
ProjectUtil.getSyncDirectoryFile(deletedResource.getProject());
         
+        Filter filter = loadFilter(syncDirectory);
+
+        if (filter != null) {
+            FilterResult filterResult = getFilterResult(resource, filter, 
syncDirectoryAsFile, repository);
+            if (filterResult == FilterResult.DENY || filterResult == 
FilterResult.PREREQUISITE) {
+                return null;
+            }
+        }
+
         ResourceProxy resourceProxy = 
buildResourceProxyForPlainFileOrFolder(resource, syncDirectory);
 
         return repository.newDeleteNodeCommand(resourceProxy);
     }
 
-    private Filter loadFilter(IProject project, final IFolder syncFolder) 
throws CoreException {
+    private Filter loadFilter(final IFolder syncFolder) throws CoreException {
         FilterLocator filterLocator = 
Activator.getDefault().getFilterLocator();
         File filterLocation = 
filterLocator.findFilterLocation(syncFolder.getLocation().toFile());
         if (filterLocation == null) {
@@ -746,14 +752,10 @@ public class SlingLaunchpadBehaviour ext
                 filter = filterLocator.loadFilter(contents);
             } catch (IOException e) {
                 throw new CoreException(new Status(IStatus.ERROR, 
Activator.PLUGIN_ID,
-                        "Failed loading filter file for project " + 
project.getName() + " from location " + filterFile,
-                        e));
+                        "Failed loading filter file for project " + 
syncFolder.getProject().getName()
+                                + " from location " + filterFile, e));
             } finally {
-                try {
-                    contents.close();
-                } catch (IOException e) {
-                    // TODO exception handling
-                }
+                IOUtils.closeQuietly(contents);
             }
         }
         return filter;


Reply via email to