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));