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 2017/11/22 08:48:33 UTC

svn commit: r1816013 - /jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java

Author: tripod
Date: Wed Nov 22 08:48:33 2017
New Revision: 1816013

URL: http://svn.apache.org/viewvc?rev=1816013&view=rev
Log:
JCRVLT-235 Refuse to create snapshot for empty or root filters.

Modified:
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java?rev=1816013&r1=1816012&r2=1816013&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageImpl.java Wed Nov 22 08:48:33 2017
@@ -49,6 +49,7 @@ import org.apache.jackrabbit.vault.fs.ap
 import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
 import org.apache.jackrabbit.vault.fs.api.ProgressTrackerListener;
 import org.apache.jackrabbit.vault.fs.api.VaultInputSource;
+import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
 import org.apache.jackrabbit.vault.fs.config.DefaultMetaInf;
 import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
 import org.apache.jackrabbit.vault.fs.io.Archive;
@@ -858,6 +859,13 @@ public class JcrPackageImpl implements J
                 node.getSession().save();
             }
         }
+        JcrPackageDefinitionImpl myDef = (JcrPackageDefinitionImpl) getDefinition();
+        WorkspaceFilter filter = myDef.getMetaInf().getFilter();
+        if (filter == null || filter.getFilterSets().isEmpty()) {
+            log.info("Refusing to create snapshot {} due to empty filters", id);
+            return null;
+        }
+        
         log.debug("Creating snapshot for {}.", id);
         JcrPackageManagerImpl packMgr = new JcrPackageManagerImpl(node.getSession());
         String path = JcrPackageRegistry.getInstallationPath(id);
@@ -865,9 +873,8 @@ public class JcrPackageImpl implements J
         Node folder = packMgr.mkdir(parentPath, true);
         JcrPackage snap = mgr.createNew(folder, id, null, true);
         JcrPackageDefinitionImpl snapDef = (JcrPackageDefinitionImpl) snap.getDefinition();
-        JcrPackageDefinitionImpl myDef = (JcrPackageDefinitionImpl) getDefinition();
         snapDef.setId(id, false);
-        snapDef.setFilter(myDef.getMetaInf().getFilter(), false);
+        snapDef.setFilter(filter, false);
         snapDef.set(JcrPackageDefinition.PN_DESCRIPTION, "Snapshot of package " + myDef.getId().toString(), false);
         if (acHandling == null) {
             snapDef.set(JcrPackageDefinition.PN_AC_HANDLING, myDef.get(JcrPackageDefinition.PN_AC_HANDLING), false);