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/09/29 23:59:20 UTC
svn commit: r1705936 - in /sling/trunk/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/
eclipse-test/src/org/apache/sling/ide/te...
Author: rombert
Date: Tue Sep 29 21:59:19 2015
New Revision: 1705936
URL: http://svn.apache.org/viewvc?rev=1705936&view=rev
Log:
SLING-4458 - Resources not matching the filter can be deleted when
updating a node
Added the CommandContext parameter to the AddOrUpdateNodeCommand to make
it possible to access the Filter
Added:
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandContext.java
Modified:
sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ResourceChangeCommandFactory.java
sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/helpers/SpyRepository.java
sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java
sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java
sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java
Modified: sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java?rev=1705936&r1=1705935&r2=1705936&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java (original)
+++ sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java Tue Sep 29 21:59:19 2015
@@ -17,6 +17,7 @@
package org.apache.sling.ide.serialization;
import org.apache.sling.ide.transport.Command;
+import org.apache.sling.ide.transport.CommandContext;
import org.apache.sling.ide.transport.FallbackNodeTypeRegistry;
import org.apache.sling.ide.transport.FileInfo;
import org.apache.sling.ide.transport.NodeTypeRegistry;
@@ -47,7 +48,7 @@ public class StubRepository implements R
}
@Override
- public Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resourceInfo,
+ public Command<Void> newAddOrUpdateNodeCommand(CommandContext context, FileInfo fileInfo, ResourceProxy resourceInfo,
CommandExecutionFlag... flags) {
return null;
}
Added: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandContext.java?rev=1705936&view=auto
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandContext.java (added)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/CommandContext.java Tue Sep 29 21:59:19 2015
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.transport;
+
+import org.apache.sling.ide.filter.Filter;
+
+/**
+ * The <tt>CommandContext</tt> groups together various dependencies which are
+ * typicaly useful for <tt>Commands</tt>
+ *
+ */
+public class CommandContext {
+
+ private final Filter filter;
+
+ public CommandContext(Filter filter) {
+ this.filter = filter;
+ }
+
+ public Filter filter() {
+ return filter;
+ }
+}
Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java?rev=1705936&r1=1705935&r2=1705936&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java Tue Sep 29 21:59:19 2015
@@ -88,7 +88,7 @@ public interface Repository {
RepositoryInfo getRepositoryInfo();
- Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resourceProxy,
+ Command<Void> newAddOrUpdateNodeCommand(CommandContext context, FileInfo fileInfo, ResourceProxy resourceProxy,
CommandExecutionFlag... flags);
/**
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=1705936&r1=1705935&r2=1705936&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 Tue Sep 29 21:59:19 2015
@@ -39,6 +39,7 @@ import org.apache.sling.ide.serializatio
import org.apache.sling.ide.serialization.SerializationKindManager;
import org.apache.sling.ide.serialization.SerializationManager;
import org.apache.sling.ide.transport.Command;
+import org.apache.sling.ide.transport.CommandContext;
import org.apache.sling.ide.transport.FileInfo;
import org.apache.sling.ide.transport.Repository;
import org.apache.sling.ide.transport.RepositoryException;
@@ -91,13 +92,15 @@ public class ResourceChangeCommandFactor
if (rai == null) {
return null;
}
+
+ CommandContext context = new CommandContext(ProjectUtil.loadFilter(resource.getProject()));
if (rai.isOnlyWhenMissing()) {
- return repository.newAddOrUpdateNodeCommand(rai.getInfo(), rai.getResource(),
+ return repository.newAddOrUpdateNodeCommand(context, rai.getInfo(), rai.getResource(),
Repository.CommandExecutionFlag.CREATE_ONLY_WHEN_MISSING);
}
- return repository.newAddOrUpdateNodeCommand(rai.getInfo(), rai.getResource());
+ return repository.newAddOrUpdateNodeCommand(context, rai.getInfo(), rai.getResource());
}
/**
@@ -556,7 +559,7 @@ public class ResourceChangeCommandFactor
.trace("Found covering resource data ( repository path = {0} ) for resource at {1}, skipping deletion and performing an update instead",
coveringParentData.getPath(), resource.getFullPath());
FileInfo info = createFileInfo(resource);
- return repository.newAddOrUpdateNodeCommand(info, coveringParentData);
+ return repository.newAddOrUpdateNodeCommand(new CommandContext(filter), info, coveringParentData);
}
return repository.newDeleteNodeCommand(serializationManager.getRepositoryPath(resourceLocation));
Modified: sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/helpers/SpyRepository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/helpers/SpyRepository.java?rev=1705936&r1=1705935&r2=1705936&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/helpers/SpyRepository.java (original)
+++ sling/trunk/tooling/ide/eclipse-test/src/org/apache/sling/ide/test/impl/helpers/SpyRepository.java Tue Sep 29 21:59:19 2015
@@ -17,6 +17,7 @@
package org.apache.sling.ide.test.impl.helpers;
import org.apache.sling.ide.transport.Command;
+import org.apache.sling.ide.transport.CommandContext;
import org.apache.sling.ide.transport.FallbackNodeTypeRegistry;
import org.apache.sling.ide.transport.FileInfo;
import org.apache.sling.ide.transport.NodeTypeRegistry;
@@ -37,7 +38,7 @@ public class SpyRepository implements Re
}
@Override
- public Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resourceProxy,
+ public Command<Void> newAddOrUpdateNodeCommand(CommandContext context, FileInfo fileInfo, ResourceProxy resourceProxy,
CommandExecutionFlag... flags) {
return new SpyCommand<Void>(resourceProxy, fileInfo, null, SpyCommand.Kind.ADD_OR_UPDATE, flags);
Modified: sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java?rev=1705936&r1=1705935&r2=1705936&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java (original)
+++ sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java Tue Sep 29 21:59:19 2015
@@ -18,6 +18,7 @@ package org.apache.sling.ide.impl.resour
import org.apache.commons.httpclient.HttpClient;
import org.apache.sling.ide.transport.Command;
+import org.apache.sling.ide.transport.CommandContext;
import org.apache.sling.ide.transport.FileInfo;
import org.apache.sling.ide.transport.NodeTypeRegistry;
import org.apache.sling.ide.transport.Repository;
@@ -64,7 +65,7 @@ public class RepositoryImpl implements R
}
@Override
- public Command<Void> newAddOrUpdateNodeCommand(final FileInfo fileInfo, ResourceProxy resource,
+ public Command<Void> newAddOrUpdateNodeCommand(CommandContext context, final FileInfo fileInfo, ResourceProxy resource,
CommandExecutionFlag... flags) {
if (flags.length != 0) {
throw new UnsupportedOperationException("This implementation does not support any flags");
Modified: sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java?rev=1705936&r1=1705935&r2=1705936&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java (original)
+++ sling/trunk/tooling/ide/impl-vlt-test/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java Tue Sep 29 21:59:19 2015
@@ -43,12 +43,22 @@ import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.commons.cnd.CndImporter;
import org.apache.jackrabbit.commons.cnd.ParseException;
import org.apache.jackrabbit.core.TransientRepository;
+import org.apache.sling.ide.filter.Filter;
+import org.apache.sling.ide.filter.FilterResult;
import org.apache.sling.ide.log.Logger;
+import org.apache.sling.ide.transport.CommandContext;
import org.apache.sling.ide.transport.ResourceProxy;
import org.junit.Ignore;
import org.junit.Test;
public class AddOrUpdateNodeCommandTest {
+
+ private static final CommandContext DEFAULT_CONTEXT = new CommandContext(new Filter() {
+ @Override
+ public FilterResult filter(String repositoryPath) {
+ return FilterResult.ALLOW;
+ }
+ });
private static final String PROP_NAME = "jcr:title";
@@ -80,7 +90,7 @@ public class AddOrUpdateNodeCommandTest
resource.addProperty(PROP_NAME, newPropertyValues);
}
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger);
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
cmd.execute().get();
session().refresh(false);
@@ -146,7 +156,7 @@ public class AddOrUpdateNodeCommandTest
ResourceProxy resource = newResource("/content", "sling:Folder");
resource.getProperties().put("newProperty", "some/value");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger);
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
cmd.execute().get();
session().refresh(false);
@@ -171,7 +181,7 @@ public class AddOrUpdateNodeCommandTest
ResourceProxy resource = newResource("/content", "nt:folder");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger);
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
cmd.execute().get();
session().refresh(false);
@@ -198,7 +208,7 @@ public class AddOrUpdateNodeCommandTest
ResourceProxy resource = newResource("/content", "custom");
resource.getProperties().put("attribute", "some value");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger);
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
cmd.execute().get();
session().refresh(false);
@@ -230,7 +240,7 @@ public class AddOrUpdateNodeCommandTest
ResourceProxy resource = newResource("/content", "nt:unstructured");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger,
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger,
CREATE_ONLY_WHEN_MISSING);
cmd.execute().get();
@@ -252,7 +262,7 @@ public class AddOrUpdateNodeCommandTest
public Void call() throws Exception {
ResourceProxy resource = newResource("/content", "nt:unstructured");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger,
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger,
CREATE_ONLY_WHEN_MISSING);
cmd.execute().get();
@@ -274,7 +284,7 @@ public class AddOrUpdateNodeCommandTest
public Void call() throws Exception {
ResourceProxy resource = new ResourceProxy("/content");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger,
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger,
CREATE_ONLY_WHEN_MISSING);
cmd.execute().get();
@@ -301,7 +311,7 @@ public class AddOrUpdateNodeCommandTest
ResourceProxy resource = newResource("/content", "nt:folder");
resource.addProperty("jcr:mixinTypes", "mix:lastModified");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger);
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
cmd.execute().get();
cmd.execute().get(); // second time since mixins are processed after properties so we need two
// executions to
@@ -334,7 +344,7 @@ public class AddOrUpdateNodeCommandTest
resource.addProperty("jcr:mixinTypes", "mix:lastModified");
resource.addProperty("jcr:lastModifiedBy", "admin2");
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), null, resource, logger);
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
cmd.execute().get();
cmd.execute().get(); // second time since mixins are processed after properties so we need two
// executions to
Modified: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java?rev=1705936&r1=1705935&r2=1705936&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java (original)
+++ sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java Tue Sep 29 21:59:19 2015
@@ -55,7 +55,9 @@ import javax.jcr.nodetype.PropertyDefini
import org.apache.jackrabbit.vault.util.JcrConstants;
import org.apache.jackrabbit.vault.util.Text;
+import org.apache.sling.ide.filter.FilterResult;
import org.apache.sling.ide.log.Logger;
+import org.apache.sling.ide.transport.CommandContext;
import org.apache.sling.ide.transport.FileInfo;
import org.apache.sling.ide.transport.Repository.CommandExecutionFlag;
import org.apache.sling.ide.transport.ResourceProxy;
@@ -65,12 +67,14 @@ public class AddOrUpdateNodeCommand exte
private ResourceProxy resource;
private FileInfo fileInfo;
+ private CommandContext context;
- public AddOrUpdateNodeCommand(Repository jcrRepo, Credentials credentials, FileInfo fileInfo,
- ResourceProxy resource, Logger logger, CommandExecutionFlag... flags) {
+ public AddOrUpdateNodeCommand(Repository jcrRepo, Credentials credentials, CommandContext context,
+ FileInfo fileInfo, ResourceProxy resource, Logger logger, CommandExecutionFlag... flags) {
super(jcrRepo, credentials, resource.getPath(), logger, flags);
-
+
+ this.context = context;
this.fileInfo = fileInfo;
this.resource = resource;
}
@@ -139,7 +143,7 @@ public class AddOrUpdateNodeCommand exte
}
continue;
}
-
+
getLogger()
.trace("Deleting node {0} as it is no longer present in the local checkout", child.getPath());
child.remove();
Modified: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java?rev=1705936&r1=1705935&r2=1705936&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java (original)
+++ sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java Tue Sep 29 21:59:19 2015
@@ -22,6 +22,7 @@ import javax.jcr.RepositoryException;
import org.apache.sling.ide.jcr.RepositoryUtils;
import org.apache.sling.ide.log.Logger;
import org.apache.sling.ide.transport.Command;
+import org.apache.sling.ide.transport.CommandContext;
import org.apache.sling.ide.transport.FileInfo;
import org.apache.sling.ide.transport.NodeTypeRegistry;
import org.apache.sling.ide.transport.Repository;
@@ -85,9 +86,9 @@ public class VltRepository implements Re
}
@Override
- public Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resource,
+ public Command<Void> newAddOrUpdateNodeCommand(CommandContext context, FileInfo fileInfo, ResourceProxy resource,
CommandExecutionFlag... flags) {
- return TracingCommand.wrap(new AddOrUpdateNodeCommand(jcrRepo, credentials, fileInfo, resource, logger, flags),
+ return TracingCommand.wrap(new AddOrUpdateNodeCommand(jcrRepo, credentials, context, fileInfo, resource, logger, flags),
eventAdmin);
}