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 2015/02/18 16:35:28 UTC

svn commit: r1660657 - in /sling/trunk/tooling/ide: eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ResourceChangeCommandFactory.java eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java

Author: rombert
Date: Wed Feb 18 15:35:27 2015
New Revision: 1660657

URL: http://svn.apache.org/r1660657
Log:
SLING-4069 - Intermediate resources that do not match the filter are not
created when publishing

Cleanup filtering in ResourceChangeCommandFactory

Modified:
    sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ResourceChangeCommandFactory.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java

Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ResourceChangeCommandFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ResourceChangeCommandFactory.java?rev=1660657&r1=1660656&r2=1660657&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ResourceChangeCommandFactory.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ResourceChangeCommandFactory.java Wed Feb 18 15:35:27 2015
@@ -35,7 +35,6 @@ import org.apache.sling.ide.filter.Filte
 import org.apache.sling.ide.filter.FilterResult;
 import org.apache.sling.ide.log.Logger;
 import org.apache.sling.ide.serialization.SerializationDataBuilder;
-import org.apache.sling.ide.serialization.SerializationException;
 import org.apache.sling.ide.serialization.SerializationKind;
 import org.apache.sling.ide.serialization.SerializationKindManager;
 import org.apache.sling.ide.serialization.SerializationManager;
@@ -79,17 +78,13 @@ public class ResourceChangeCommandFactor
     public Command<?> newCommandForAddedOrUpdated(Repository repository, IResource addedOrUpdated) throws CoreException {
         try {
             return addFileCommand(repository, addedOrUpdated);
-        } catch (SerializationException e) {
-            throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, "Failed updating " + addedOrUpdated,
-                    e));
         } catch (IOException e) {
             throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, "Failed updating " + addedOrUpdated,
                     e));
         }
     }
 
-    private Command<?> addFileCommand(Repository repository, IResource resource) throws SerializationException,
-            CoreException, IOException {
+    private Command<?> addFileCommand(Repository repository, IResource resource) throws CoreException, IOException {
 
         ResourceAndInfo rai = buildResourceAndInfo(resource, repository);
         
@@ -111,7 +106,7 @@ public class ResourceChangeCommandFactor
      * @throws IOException
      */
     public ResourceAndInfo buildResourceAndInfo(IResource resource, Repository repository) throws CoreException,
-            SerializationException, IOException {
+            IOException {
         if (ignoredFileNames.contains(resource.getName())) {
             return null;
         }
@@ -196,15 +191,16 @@ public class ResourceChangeCommandFactor
             resourceProxy = buildResourceProxyForPlainFileOrFolder(resource, syncDirectory, repository);
         }
 
-        if (isFiltered(filter, resourceProxy, resource)) {
+        FilterResult filterResult = getFilterResult(resource, resourceProxy, filter);
+
+        if (filterResult != FilterResult.ALLOW) {
             return null;
         }
 
         return new ResourceAndInfo(resourceProxy, info);
     }
 
-    private FileInfo createFileInfo(IResource resource) throws SerializationException,
-            CoreException {
+    private FileInfo createFileInfo(IResource resource) throws CoreException {
 
         if (resource.getType() != IResource.FILE) {
             return null;
@@ -223,15 +219,37 @@ public class ResourceChangeCommandFactor
         return info;
     }
 
-    private FilterResult getFilterResult(IResource resource, Filter filter) throws SerializationException {
+    /**
+     * Gets the filter result for a resource/resource proxy combination
+     * 
+     * <p>
+     * The resourceProxy may be null, typically when a resource is already deleted.
+     * 
+     * <p>
+     * The filter may be null, in which case all combinations are included in the filed, i.e. allowed.
+     * 
+     * @param resource the resource to filter for, must not be <code>null</code>
+     * @param resourceProxy the resource proxy to filter for, possibly <code>null</code>
+     * @param filter the filter to use, possibly <tt>null</tt>
+     * @return the filtering result, never <code>null</code>
+     */
+    private FilterResult getFilterResult(IResource resource, ResourceProxy resourceProxy, Filter filter) {
+
+        if (filter == null) {
+            return FilterResult.ALLOW;
+        }
 
         File contentSyncRoot = ProjectUtil.getSyncDirectoryFile(resource.getProject());
 
-        String repositoryPath = getRepositoryPathForDeletedResource(resource, contentSyncRoot);
+        String repositoryPath = resourceProxy != null ? resourceProxy.getPath() : getRepositoryPathForDeletedResource(
+                resource, contentSyncRoot);
+
+        FilterResult filterResult = filter.filter(ProjectUtil.getSyncDirectoryFile(resource.getProject()),
+                repositoryPath);
 
-        Activator.getDefault().getPluginLogger().trace("Filtering by {0} for {1}", repositoryPath, resource);
+        Activator.getDefault().getPluginLogger().trace("Filter result for {0} for {1}", repositoryPath, filterResult);
 
-        return filter.filter(contentSyncRoot, repositoryPath);
+        return filterResult;
     }
 
     private String getRepositoryPathForDeletedResource(IResource resource, File contentSyncRoot) {
@@ -251,19 +269,6 @@ public class ResourceChangeCommandFactor
         return repositoryPath;
     }
 
-    private boolean isFiltered(Filter filter, ResourceProxy resourceProxy, IResource resource) {
-
-        if (filter == null) {
-            return false;
-        }
-
-        FilterResult filterResult = filter.filter(ProjectUtil.getSyncDirectoryFile(resource.getProject()),
-                resourceProxy.getPath());
-        Activator.getDefault().getPluginLogger().trace("FilterResult for {0} is {1}", resource, filterResult);
-
-        return filterResult == FilterResult.DENY || filterResult == FilterResult.PREREQUISITE;
-    }
-
     private ResourceProxy buildResourceProxyForPlainFileOrFolder(IResource changedResource, IFolder syncDirectory,
             Repository repository)
             throws CoreException, IOException {
@@ -495,15 +500,12 @@ public class ResourceChangeCommandFactor
         
         try {
             return removeFileCommand(repository, removed);
-        } catch (SerializationException e) {
-            throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, "Failed removing" + removed, e));
         } catch (IOException e) {
             throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, "Failed removing" + removed, e));
         }
     }
 
-    private Command<?> removeFileCommand(Repository repository, IResource resource) throws CoreException,
-            SerializationException, IOException {
+    private Command<?> removeFileCommand(Repository repository, IResource resource) throws CoreException, IOException {
 
         if (resource.isTeamPrivateMember(IResource.CHECK_ANCESTORS)) {
             Activator.getDefault().getPluginLogger().trace("Skipping team-private resource {0}", resource);
@@ -518,11 +520,9 @@ public class ResourceChangeCommandFactor
 
         Filter filter = ProjectUtil.loadFilter(syncDirectory.getProject());
 
-        if (filter != null) {
-            FilterResult filterResult = getFilterResult(resource, filter);
-            if (filterResult == FilterResult.DENY || filterResult == FilterResult.PREREQUISITE) {
-                return null;
-            }
+        FilterResult filterResult = getFilterResult(resource, null, filter);
+        if (filterResult == FilterResult.DENY || filterResult == FilterResult.PREREQUISITE) {
+            return null;
         }
         
         String resourceLocation = getRepositoryPathForDeletedResource(resource,
@@ -560,9 +560,6 @@ public class ResourceChangeCommandFactor
             }
 
             return repository.newReorderChildNodesCommand(rai.getResource());
-        } catch (SerializationException e) {
-            throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, "Failed reordering child nodes for "
-                    + res, e));
         } catch (IOException e) {
             throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, "Failed reordering child nodes for "
                     + res, e));

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java?rev=1660657&r1=1660656&r2=1660657&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java Wed Feb 18 15:35:27 2015
@@ -218,9 +218,6 @@ public class ImportRepositoryContentActi
                     }
 
                     return false;
-                } catch (SerializationException e) {
-                    throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
-                            "Failed reading current project's resources", e));
                 } catch (IOException e) {
                     throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID,
                             "Failed reading current project's resources", e));