You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2018/07/27 08:28:21 UTC
svn commit: r1836790 - in /jackrabbit/commons/filevault/trunk: ./
vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/
vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/
vault-core/src/test/java/org/apache/jackrabbit/vault/packaging...
Author: tripod
Date: Fri Jul 27 08:28:20 2018
New Revision: 1836790
URL: http://svn.apache.org/viewvc?rev=1836790&view=rev
Log:
JCRVLT-309 Create helper filter that allows to limit the installation paths
Added:
jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/ScopedWorkspaceFilter.java
jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/ScopedFilterTest.java
jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageScopedInstall.java
jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/fs/filter/workspacefilters/mixed.xml
jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mixed_package.zip
Modified:
jackrabbit/commons/filevault/trunk/RELEASE-NOTES.txt
jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java
Modified: jackrabbit/commons/filevault/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/RELEASE-NOTES.txt?rev=1836790&r1=1836789&r2=1836790&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/RELEASE-NOTES.txt (original)
+++ jackrabbit/commons/filevault/trunk/RELEASE-NOTES.txt Fri Jul 27 08:28:20 2018
@@ -44,6 +44,7 @@ Improvements:
* [JCRVLT-304] - Add tests that cover combinations of node and property filters
* [JCRVLT-306] - Document properties.xml format
* [JCRVLT-277] - vault-davex: cleanup dependencies - suppression of commons-httpclient
+ * [JCRVLT-309] - Create helper filter that allows to limit the installation paths
Improvements:
* [JCRVLT-282] - Filevault bundle should be Java 1.7 Compatible
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java?rev=1836790&r1=1836789&r2=1836790&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java Fri Jul 27 08:28:20 2018
@@ -53,6 +53,7 @@ import org.apache.jackrabbit.vault.fs.ap
import org.apache.jackrabbit.vault.fs.api.NodeNameList;
import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
import org.apache.jackrabbit.vault.fs.api.PathMapping;
+import org.apache.jackrabbit.vault.fs.api.ProgressTrackerListener;
import org.apache.jackrabbit.vault.fs.api.SerializationType;
import org.apache.jackrabbit.vault.fs.api.VaultInputSource;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
@@ -417,6 +418,9 @@ public class Importer {
registerPrivileges(session);
log.debug("Starting content import. autosave is {}", autoSave);
track("Importing content...", "");
+ if (tracker != null) {
+ tracker.setMode(ProgressTrackerListener.Mode.PATHS);
+ }
}
cpAutosave = autoSave.copy();
LinkedList<TxInfo> skipList = new LinkedList<TxInfo>();
@@ -451,6 +455,9 @@ public class Importer {
}
}
}
+ if (tracker != null) {
+ tracker.setMode(ProgressTrackerListener.Mode.TEXT);
+ }
checkinNodes(session);
applyMemberships(session);
applyPatches();
Added: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/ScopedWorkspaceFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/ScopedWorkspaceFilter.java?rev=1836790&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/ScopedWorkspaceFilter.java (added)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/ScopedWorkspaceFilter.java Fri Jul 27 08:28:20 2018
@@ -0,0 +1,232 @@
+/*
+ * 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.jackrabbit.vault.packaging;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+
+import org.apache.jackrabbit.vault.fs.api.DumpContext;
+import org.apache.jackrabbit.vault.fs.api.ImportMode;
+import org.apache.jackrabbit.vault.fs.api.PathFilter;
+import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
+import org.apache.jackrabbit.vault.fs.api.PathMapping;
+import org.apache.jackrabbit.vault.fs.api.ProgressTrackerListener;
+import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
+import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
+import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
+import org.apache.jackrabbit.vault.util.Text;
+import org.w3c.dom.Element;
+
+/**
+ * Workspace filter wrapper that limits the filter in- or outside certain paths.
+ * This is mostly used to limit the scope of mixed content packages to either application or content.
+ */
+public class ScopedWorkspaceFilter extends DefaultWorkspaceFilter {
+
+ private static final String[] APP_ROOTS = {"/apps", "/libs" };
+
+ private final DefaultWorkspaceFilter base;
+
+ private final boolean allow;
+
+ private final String[] roots;
+
+ private final List<PathFilterSet> nodesFilterSets;
+
+ private final List<PathFilterSet> propsFilterSets;
+
+ public ScopedWorkspaceFilter(DefaultWorkspaceFilter base, boolean allow, String[] roots) {
+ this.base = base;
+ this.allow = allow;
+ this.roots = roots;
+
+ List<PathFilterSet> nodesFilterSets = new ArrayList<>();
+ List<PathFilterSet> propsFilterSets = new ArrayList<>();
+ for (PathFilterSet set: base.getFilterSets()) {
+ String root = set.getRoot();
+ if ("/".equals(root) || match(root)) {
+ nodesFilterSets.add(set);
+ }
+ }
+ for (PathFilterSet set: base.getPropertyFilterSets()) {
+ String root = set.getRoot();
+ if ("/".equals(root) || match(root)) {
+ propsFilterSets.add(set);
+ }
+ }
+ this.nodesFilterSets = Collections.unmodifiableList(nodesFilterSets);
+ this.propsFilterSets = Collections.unmodifiableList(propsFilterSets);
+ }
+
+ private boolean match(String path) {
+ if (allow) {
+ for (String root: roots) {
+ if (Text.isDescendantOrEqual(root, path)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ for (String root: roots) {
+ if (Text.isDescendantOrEqual(root, path)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static ScopedWorkspaceFilter createApplicationScoped(DefaultWorkspaceFilter base) {
+ return new ScopedWorkspaceFilter(base, true, APP_ROOTS);
+ }
+
+ public static ScopedWorkspaceFilter createContentScoped(DefaultWorkspaceFilter base) {
+ return new ScopedWorkspaceFilter(base, false, APP_ROOTS);
+ }
+
+ @Override
+ public void add(PathFilterSet set) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void add(PathFilterSet nodeFilter, PathFilterSet propFilter) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void addPropertyFilterSet(PathFilterSet set) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public List<PathFilterSet> getFilterSets() {
+ return nodesFilterSets;
+ }
+
+ @Override
+ public List<PathFilterSet> getPropertyFilterSets() {
+ return propsFilterSets;
+ }
+
+ @Override
+ public PathFilterSet getCoveringFilterSet(String path) {
+ if (!match(path)) {
+ return null;
+ }
+ return base.getCoveringFilterSet(path);
+ }
+
+ @Override
+ public ImportMode getImportMode(String path) {
+ return base.getImportMode(path);
+ }
+
+ @Override
+ public void setImportMode(ImportMode importMode) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean contains(String path) {
+ return match(path) && base.contains(path);
+ }
+
+ @Override
+ public boolean covers(String path) {
+ return match(path) && base.covers(path);
+ }
+
+ @Override
+ public boolean isAncestor(String path) {
+ for (PathFilterSet set: nodesFilterSets) {
+ if (set.isAncestor(path)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isGloballyIgnored(String path) {
+ return base.isGloballyIgnored(path);
+ }
+
+ @Override
+ public WorkspaceFilter translate(PathMapping mapping) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void load(File file) throws IOException, ConfigurationException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public InputStream getSource() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public String getSourceAsString() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void load(InputStream in) throws IOException, ConfigurationException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected PathFilter readFilter(Element elem) throws ConfigurationException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void dump(DumpContext ctx, boolean isLast) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void resetSource() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void setGlobalIgnored(PathFilter ignored) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void dumpCoverage(Node rootNode, ProgressTrackerListener listener) throws RepositoryException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void dumpCoverage(Session session, ProgressTrackerListener listener, boolean skipJcrContent) throws RepositoryException {
+ throw new UnsupportedOperationException();
+ }
+}
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java?rev=1836790&r1=1836789&r2=1836790&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java Fri Jul 27 08:28:20 2018
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-@Version("2.7.0")
+@Version("2.8.0")
package org.apache.jackrabbit.vault.packaging;
import org.osgi.annotation.versioning.Version;
\ No newline at end of file
Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/ScopedFilterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/ScopedFilterTest.java?rev=1836790&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/ScopedFilterTest.java (added)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/ScopedFilterTest.java Fri Jul 27 08:28:20 2018
@@ -0,0 +1,64 @@
+/*
+ * 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.jackrabbit.vault.packaging;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
+import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
+import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class ScopedFilterTest {
+
+ @Test
+ public void testApplicationScoped() throws IOException, ConfigurationException {
+ DefaultWorkspaceFilter base = new DefaultWorkspaceFilter();
+ base.load(getClass().getResourceAsStream("../fs/filter/workspacefilters/mixed.xml"));
+
+ ScopedWorkspaceFilter filter = ScopedWorkspaceFilter.createApplicationScoped(base);
+
+ List<PathFilterSet> sets = filter.getFilterSets();
+ assertEquals("/apps/myproject/foo", sets.get(0).getRoot());
+ assertEquals("/libs/jackrabbit", sets.get(1).getRoot());
+ assertEquals("/", sets.get(2).getRoot());
+
+ assertTrue(filter.contains("/libs/jackrabbit/bar/test"));
+ assertFalse(filter.contains("/bar"));
+ }
+
+ @Test
+ public void testContentScoped() throws IOException, ConfigurationException {
+ DefaultWorkspaceFilter base = new DefaultWorkspaceFilter();
+ base.load(getClass().getResourceAsStream("../fs/filter/workspacefilters/mixed.xml"));
+
+ ScopedWorkspaceFilter filter = ScopedWorkspaceFilter.createContentScoped(base);
+
+ List<PathFilterSet> sets = filter.getFilterSets();
+ assertEquals("/bar", sets.get(0).getRoot());
+ assertEquals("/", sets.get(1).getRoot());
+
+ assertFalse(filter.contains("/libs/jackrabbit/bar/test"));
+ assertTrue(filter.contains("/bar"));
+ }
+}
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java?rev=1836790&r1=1836789&r2=1836790&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFSPackageRegistry.java Fri Jul 27 08:28:20 2018
@@ -511,8 +511,8 @@ public class TestFSPackageRegistry exten
Calendar after = Calendar.getInstance();
assertFalse(plan.hasErrors());
- assertTrue("Installation time for idC too late", registry.open(idC).getInstallationTime().compareTo(after) < 0);
- assertTrue("Installation time for idC too early", registry.open(idC).getInstallationTime().compareTo(before) > 0);
+ assertTrue("Installation time for idC too late", registry.open(idC).getInstallationTime().compareTo(after) <= 0);
+ assertTrue("Installation time for idC too early", registry.open(idC).getInstallationTime().compareTo(before) >= 0);
}
Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageScopedInstall.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageScopedInstall.java?rev=1836790&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageScopedInstall.java (added)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageScopedInstall.java Fri Jul 27 08:28:20 2018
@@ -0,0 +1,107 @@
+/*
+ * 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.jackrabbit.vault.packaging.integration;
+
+import java.io.IOException;
+
+import javax.jcr.RepositoryException;
+
+import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
+import org.apache.jackrabbit.vault.fs.io.ImportOptions;
+import org.apache.jackrabbit.vault.packaging.JcrPackage;
+import org.apache.jackrabbit.vault.packaging.PackageException;
+import org.apache.jackrabbit.vault.packaging.ScopedWorkspaceFilter;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * {@code TestPackageInstall}...
+ */
+public class TestPackageScopedInstall extends IntegrationTestBase {
+
+ @Before
+ public void beforeEach() {
+ clean("/libs");
+ clean("/tmp");
+ }
+
+ /**
+ * Installs a package that contains mixed content
+ */
+ @Test
+ public void testMixedContent() throws RepositoryException, IOException, PackageException {
+ assertNodeMissing("/libs/foo");
+ assertNodeMissing("/tmp/foo");
+
+ JcrPackage pack = packMgr.upload(getStream("testpackages/mixed_package.zip"), false);
+ assertNotNull(pack);
+
+ // just extract - no snapshots
+ ImportOptions opts = getDefaultOptions();
+ pack.extract(opts);
+ assertNodeExists("/tmp/foo");
+ assertNodeExists("/libs/foo");
+ }
+
+ /**
+ * Installs a package that contains mixed content but filtered for apps
+ */
+ @Test
+ public void testApplication() throws RepositoryException, IOException, PackageException {
+ assertNodeMissing("/libs/foo");
+ assertNodeMissing("/tmp/foo");
+
+ JcrPackage pack = packMgr.upload(getStream("testpackages/mixed_package.zip"), false);
+ assertNotNull(pack);
+
+ // just extract - no snapshots
+ ScopedWorkspaceFilter filter = ScopedWorkspaceFilter.createApplicationScoped(
+ (DefaultWorkspaceFilter) pack.getDefinition().getMetaInf().getFilter());
+
+ ImportOptions opts = getDefaultOptions();
+ opts.setFilter(filter);
+ pack.extract(opts);
+ assertNodeMissing("/tmp/foo");
+ assertNodeExists("/libs/foo");
+ }
+
+ /**
+ * Installs a package that contains mixed content but filtered for content
+ */
+ @Test
+ public void testContent() throws RepositoryException, IOException, PackageException {
+ assertNodeMissing("/libs/foo");
+ assertNodeMissing("/tmp/foo");
+
+ JcrPackage pack = packMgr.upload(getStream("testpackages/mixed_package.zip"), false);
+ assertNotNull(pack);
+
+ // just extract - no snapshots
+ ScopedWorkspaceFilter filter = ScopedWorkspaceFilter.createContentScoped((
+ DefaultWorkspaceFilter) pack.getDefinition().getMetaInf().getFilter());
+ ImportOptions opts = getDefaultOptions();
+ opts.setFilter(filter);
+ pack.extract(opts);
+ assertNodeExists("/tmp/foo");
+ assertNodeMissing("/libs/foo");
+ }
+
+
+}
\ No newline at end of file
Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/fs/filter/workspacefilters/mixed.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/fs/filter/workspacefilters/mixed.xml?rev=1836790&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/fs/filter/workspacefilters/mixed.xml (added)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/fs/filter/workspacefilters/mixed.xml Fri Jul 27 08:28:20 2018
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+<workspaceFilter version="1.0">
+ <filter root="/bar" mode="merge" type="cleanup"/>
+ <filter root="/apps/myproject/foo" />
+ <filter root="/libs/jackrabbit">
+ <include pattern="/libs/jackrabbit/foo(/.*)?" />
+ </filter>
+ <filter root="/">
+ <include pattern="/libs/jackrabbit/bar(/.*)?" />
+ </filter>
+</workspaceFilter>
Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mixed_package.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mixed_package.zip?rev=1836790&view=auto
==============================================================================
Binary files jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mixed_package.zip (added) and jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mixed_package.zip Fri Jul 27 08:28:20 2018 differ