You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2019/10/02 11:28:26 UTC

svn commit: r1867884 [1/6] - in /jackrabbit/commons/filevault/trunk: ./ .mvn/ parent/ vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/ vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/ vault-core/src/main/java/org/apache/jackr...

Author: kwin
Date: Wed Oct  2 11:28:25 2019
New Revision: 1867884

URL: http://svn.apache.org/viewvc?rev=1867884&view=rev
Log:
JCRVLT-345 add separate module for validation

Added:
    jackrabbit/commons/filevault/trunk/.mvn/
    jackrabbit/commons/filevault/trunk/.mvn/maven.config
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageInfo.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfo.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageProperties.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfoTest.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/non-valid-package.zip
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-filter-and-manifest.zip
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip.cpgz
    jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/validation.md
    jackrabbit/commons/filevault/trunk/vault-validation/
    jackrabbit/commons/filevault/trunk/vault-validation/.ratignore
    jackrabbit/commons/filevault/trunk/vault-validation/pom.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/ValidationExecutor.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/ValidationExecutorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/ValidationViolation.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/impl/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/impl/util/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/impl/util/DocumentViewXmlContentHandler.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/impl/util/EnhancedBufferedInputStream.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/impl/util/ResettableInputStream.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/impl/util/ValidationMessageErrorHandler.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/impl/util/ValidatorSettingsImpl.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/package-info.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/DocumentViewXmlValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/FilterValidator.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/GenericJcrDataValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/GenericMetaInfDataValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/JcrPathValidator.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/MetaInfPathValidator.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/NodePathValidator.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/PropertiesValidator.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/ValidationContext.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/ValidationMessage.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/ValidationMessageSeverity.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/Validator.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/ValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/ValidatorSettings.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/AdvancedFilterValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/AdvancedFilterValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/AdvancedPropertiesValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/AdvancedPropertiesValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/DependencyValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/DependencyValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/DocumentViewParserValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/DocumentViewParserValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/EmptyElementsValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/EmptyElementsValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/MergeLimitationsValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/MergeLimitationsValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/OakIndexDefinitionValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/OakIndexDefinitionValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/PackageTypeValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/PackageTypeValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/PrimaryNodeTypeValidator.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/impl/PrimaryNodeTypeValidatorFactory.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/java/org/apache/jackrabbit/filevault/validation/spi/package-info.java
      - copied, changed from r1867026, jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/resources/
    jackrabbit/commons/filevault/trunk/vault-validation/src/main/resources/filter.xsd
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/AnyValidationMessageMatcher.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/AnyValidationViolationMatcher.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/CapturingInputStreamFromArgumentAnswer.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/DocumentViewParserValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/ValidationExecutorFactoryTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/ValidationExecutorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/ValidationViolationTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/impl/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/impl/util/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/impl/util/ResettableInputStreamTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/AdvancedFilterValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/AdvancedPropertiesValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/DependencyValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/EmptyElementsValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/MergeLimitationsValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/OakIndexDefinitionValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/PackageTypeValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/java/org/apache/jackrabbit/filevault/validation/spi/impl/PrimaryNodeTypeValidatorTest.java
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/dependency1-filter.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/dummy.txt
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/filter-with-merge.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/filter-with-uncovered-roots.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/filter.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/invalid-package/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/invalid-package/META-INF/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/invalid-package/META-INF/vault/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/invalid-package/META-INF/vault/filter-non-matching-regex.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/invalid-package/META-INF/vault/filter.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/invalid-package/META-INF/vault/properties.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/oak-index/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/oak-index/filter-with-acl.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/oak-index/filter.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-filter.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/META-INF/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/META-INF/vault/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/META-INF/vault/filter.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/META-INF/vault/genericfile.txt
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/META-INF/vault/properties.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/.content.xml   (with props)
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/child1.xml   (with props)
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/child2/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/child2/.content.xml   (with props)
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/child2/child1.xml   (with props)
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/genericfile.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/invalid/
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/simple-package/jcr_root/apps/invalid/wrongtype.xml
    jackrabbit/commons/filevault/trunk/vault-validation/src/test/resources/test-filter.xml
Modified:
    jackrabbit/commons/filevault/trunk/parent/pom.xml
    jackrabbit/commons/filevault/trunk/pom.xml
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/PathFilterSet.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/filter/DefaultPathFilter.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/Dependency.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
    jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/docview.md
    jackrabbit/commons/filevault/trunk/vault-doc/src/site/site.xml

Added: jackrabbit/commons/filevault/trunk/.mvn/maven.config
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/.mvn/maven.config?rev=1867884&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/.mvn/maven.config (added)
+++ jackrabbit/commons/filevault/trunk/.mvn/maven.config Wed Oct  2 11:28:25 2019
@@ -0,0 +1,2 @@
+-s /Users/konradwindszus/.m2/settings-ergo-carbon.xml
+--strict-checksums

Modified: jackrabbit/commons/filevault/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/parent/pom.xml?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/parent/pom.xml (original)
+++ jackrabbit/commons/filevault/trunk/parent/pom.xml Wed Oct  2 11:28:25 2019
@@ -1,33 +1,34 @@
 <?xml version="1.0"?><!--
-  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.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
     <modelVersion>4.0.0</modelVersion>
     <!-- ====================================================================== -->
-    <!-- P A R E N T  P R O J E C T  D E S C R I P T I O N                      -->
+    <!-- P A R E N T P R O J E C T D E S C R I P T I O N -->
     <!-- ====================================================================== -->
     <parent>
         <groupId>org.apache</groupId>
         <artifactId>apache</artifactId>
         <version>21</version>
-        <relativePath />
+        <relativePath/>
     </parent>
 
     <!-- ====================================================================== -->
-    <!-- P R O J E C T  D E S C R I P T I O N                                   -->
+    <!-- P R O J E C T D E S C R I P T I O N -->
     <!-- ====================================================================== -->
     <groupId>org.apache.jackrabbit.vault</groupId>
     <artifactId>parent</artifactId>
@@ -50,7 +51,7 @@
     </properties>
 
     <!-- ====================================================================== -->
-    <!-- S C M  D E F I N I T I O N                                             -->
+    <!-- S C M D E F I N I T I O N -->
     <!-- ====================================================================== -->
     <scm>
         <connection>scm:svn:http://svn.apache.org/repos/asf/jackrabbit/commons/filevault/trunk/parent</connection>
@@ -83,7 +84,7 @@
     </issueManagement>
 
     <!-- ====================================================================== -->
-    <!-- B U I L D   D E F I N I T I O N                                        -->
+    <!-- B U I L D D E F I N I T I O N -->
     <!-- ====================================================================== -->
     <build>
         <plugins>
@@ -125,7 +126,7 @@
         <pluginManagement>
             <plugins>
                 <!-- ====================================================================== -->
-                <!-- S L I N G   P L U G I N                                                -->
+                <!-- S L I N G P L U G I N -->
                 <!-- ====================================================================== -->
                 <plugin>
                     <groupId>org.apache.sling</groupId>
@@ -138,7 +139,7 @@
                     </configuration>
                 </plugin>
                 <!-- ====================================================================== -->
-                <!-- B U N D L E   P L U G I N                                              -->
+                <!-- B U N D L E P L U G I N -->
                 <!-- ====================================================================== -->
                 <plugin>
                     <groupId>org.apache.felix</groupId>
@@ -166,6 +167,7 @@
                                 Private-Package
                             </_removeheaders>
                         </instructions>
+                        <exportScr>true</exportScr>
                     </configuration>
                     <executions>
                         <execution>
@@ -178,10 +180,21 @@
                                 <comparisonVersion>LATEST</comparisonVersion>
                             </configuration>
                         </execution>
+                        <!-- Configure extra execution of 'manifest' in process-classes phase to make sure SCR metadata is generated before
+                            unit test runs -->
+                        <execution>
+                            <id>scr-metadata</id>
+                            <goals>
+                                <goal>manifest</goal>
+                            </goals>
+                            <configuration>
+                                <supportIncrementalBuild>true</supportIncrementalBuild>
+                            </configuration>
+                        </execution>
                     </executions>
                 </plugin>
                 <!-- ====================================================================== -->
-                <!-- S U R E F I R E   P L U G I N                                          -->
+                <!-- S U R E F I R E P L U G I N -->
                 <!-- ====================================================================== -->
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -197,7 +210,7 @@
                     </configuration>
                 </plugin>
                 <!-- ====================================================================== -->
-                <!-- R E L E A S E    P L U G I N                                           -->
+                <!-- R E L E A S E P L U G I N -->
                 <!-- ====================================================================== -->
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -207,7 +220,7 @@
                     </configuration>
                 </plugin>
                 <!-- ====================================================================== -->
-                <!-- R A T   P L U G I N                                                    -->
+                <!-- R A T P L U G I N -->
                 <!-- ====================================================================== -->
                 <plugin>
                     <groupId>org.apache.rat</groupId>
@@ -221,11 +234,12 @@
                             <exclude>.gitignore</exclude>
                             <exclude>derby.log</exclude>
                             <exclude>**/*.zip/**</exclude>
+                            <exclude>.mvn/**</exclude>
                         </excludes>
                     </configuration>
                 </plugin>
                 <!-- ====================================================================== -->
-                <!-- S I T E    P L U G I N                                                 -->
+                <!-- S I T E P L U G I N -->
                 <!-- ====================================================================== -->
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -259,7 +273,7 @@
     </build>
 
     <!-- ====================================================================== -->
-    <!-- R E P O R T I N G                                                      -->
+    <!-- R E P O R T I N G -->
     <!-- ====================================================================== -->
     <reporting>
         <plugins>
@@ -273,7 +287,7 @@
     </reporting>
 
     <!-- ====================================================================== -->
-    <!-- D E P E N D E N C Y   M A N A G E M E N T                              -->
+    <!-- D E P E N D E N C Y M A N A G E M E N T -->
     <!-- ====================================================================== -->
     <dependencyManagement>
         <dependencies>
@@ -396,6 +410,11 @@
                 <version>2.5</version>
             </dependency>
             <dependency>
+                <groupId>org.apache.commons</groupId>
+                <artifactId>commons-lang3</artifactId>
+                <version>3.9</version>
+            </dependency>
+            <dependency>
                 <groupId>commons-collections</groupId>
                 <artifactId>commons-collections</artifactId>
                 <version>3.2.2</version>
@@ -430,12 +449,12 @@
     </dependencyManagement>
 
     <!-- ====================================================================== -->
-    <!-- P R O F I L E S                                                        -->
+    <!-- P R O F I L E S -->
     <!-- ====================================================================== -->
     <profiles>
         <profile>
             <!-- ====================================================================== -->
-            <!-- R A T   P L U G I N                                                    -->
+            <!-- R A T P L U G I N -->
             <!-- ====================================================================== -->
             <id>rat-check</id>
             <activation>
@@ -459,13 +478,13 @@
             </build>
         </profile>
         <profile>
-             <id>java9</id>
-             <activation>
+            <id>java9</id>
+            <activation>
                 <jdk>9</jdk>
-             </activation>
-             <properties>
+            </activation>
+            <properties>
                 <test.vm.options>--add-modules=java.se.ee -Doak=${test.oak}</test.vm.options>
-             </properties>
+            </properties>
         </profile>
     </profiles>
 

Modified: jackrabbit/commons/filevault/trunk/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/pom.xml?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/pom.xml (original)
+++ jackrabbit/commons/filevault/trunk/pom.xml Wed Oct  2 11:28:25 2019
@@ -58,6 +58,7 @@
         <module>vault-hook-example</module>
         <module>vault-hook-externalclass-test</module>
         <module>vault-sync</module>
+        <module>vault-validation</module>
     </modules>
 
     <!-- ====================================================================== -->

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/PathFilterSet.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/PathFilterSet.java?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/PathFilterSet.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/PathFilterSet.java Wed Oct  2 11:28:25 2019
@@ -35,6 +35,12 @@ import javax.annotation.Nullable;
 public class PathFilterSet extends FilterSet<PathFilter> {
 
     /**
+     * PathFilterSets of this type are only used to remove nodes during import
+     * and ignored for calculation of the package type.
+     */
+    public static final String TYPE_CLEANUP = "cleanup";
+
+    /**
      * The include all item filter set
      */
     public static final PathFilterSet INCLUDE_ALL =

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/package-info.java Wed Oct  2 11:28:25 2019
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-@Version("2.6.1")
+@Version("2.7.0")
 package org.apache.jackrabbit.vault.fs.api;
 
 import org.osgi.annotation.versioning.Version;
\ No newline at end of file

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java Wed Oct  2 11:28:25 2019
@@ -31,6 +31,7 @@ import org.apache.jackrabbit.vault.packa
 
 /**
  * Abstracts the way of accessing the vault specific meta-info of a checkout.
+ * TODO: merge with packageInfo
  */
 public interface MetaInf {
 

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/filter/DefaultPathFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/filter/DefaultPathFilter.java?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/filter/DefaultPathFilter.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/filter/DefaultPathFilter.java Wed Oct  2 11:28:25 2019
@@ -126,6 +126,10 @@ public class DefaultPathFilter implement
         return regex.hashCode();
     }
 
+    public String toString() {
+        return "regex: " + regex.toString();
+    }
+
     /**
      * {@inheritDoc}
      */

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/Dependency.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/Dependency.java?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/Dependency.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/Dependency.java Wed Oct  2 11:28:25 2019
@@ -200,8 +200,8 @@ public class Dependency {
     }
 
     /**
-     * Parses a string serialization of dependency references generated by
-     * {@link #toString(Dependency...)})}
+     * Parses a string serialization of dependencies generated by
+     * {@link #toString(Dependency...)}.
      *
      * @param str serialized string
      * @return array of dependency references
@@ -255,7 +255,7 @@ public class Dependency {
     }
 
     /**
-     * Returns a string representation from given dependencies.
+     * Returns a string representation from given dependencies. Dependencies are separated by ','.
      * @param deps the dependencies
      * @return the strings
      */

Copied: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageInfo.java (from r1867026, 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/PackageInfo.java?p2=jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageInfo.java&p1=jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java&r1=1867026&r2=1867884&rev=1867884&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/PackageInfo.java Wed Oct  2 11:28:25 2019
@@ -14,8 +14,34 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-@Version("2.9.0")
 package org.apache.jackrabbit.vault.packaging;
 
-import org.osgi.annotation.versioning.Version;
\ No newline at end of file
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
+import org.apache.jackrabbit.vault.packaging.PackageId;
+import org.apache.jackrabbit.vault.packaging.PackageType;
+
+/**
+ * Exposes the main meta information about a package
+ */
+public interface PackageInfo {
+
+    /**
+     * Returns the package id.
+     * @return the package id.
+     */
+    @Nonnull PackageId getId();
+
+    /**
+     * Returns the workspace filter
+     * @return the filter
+     */
+    @Nonnull WorkspaceFilter getFilter();
+
+    /**
+     * Returns the package type.
+     * @return the package type
+     */
+    @Nonnull PackageType getPackageType();
+}
\ No newline at end of file

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java Wed Oct  2 11:28:25 2019
@@ -18,16 +18,18 @@
 package org.apache.jackrabbit.vault.packaging;
 
 import java.util.Calendar;
+import java.util.Map;
 
 import javax.annotation.Nullable;
 
 import org.apache.jackrabbit.vault.fs.api.VaultFsConfig;
+import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
 import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
  * The package properties provide extra/meta information about the package to install. The properties are usually
- * store in the {@code META-INF/vault/properties.xml} or in the jar's manifest.
+ * stored in the {@code META-INF/vault/properties.xml} or in the jar's manifest.
  *
  * @since 3.1
  */
@@ -155,6 +157,43 @@ public interface PackageProperties {
      */
     String PREFIX_INSTALL_HOOK = "installhook.";
 
+    /** 
+     * The manifest header key which indicates the package type
+     * @see #NAME_PACKAGE_TYPE
+     */
+    String MF_KEY_PACKAGE_TYPE = "Content-Package-Type";
+
+    /**
+     * The manifest header key for the package id in the form {@code <group>:<name>:<version>}
+     * @see #NAME_GROUP
+     * @see #NAME_NAME
+     * @see #NAME_VERSION
+     */
+    String MF_KEY_PACKAGE_ID = "Content-Package-Id";
+
+    /**
+     * The manifest header key for the package dependencies.
+     * @see #NAME_DEPENDENCIES
+     */
+    String MF_KEY_PACKAGE_DEPENDENCIES = "Content-Package-Dependencies";
+
+    /**
+     * The manifest header key for all filter roots separated by ','.
+     * @see WorkspaceFilter
+     */
+    String MF_KEY_PACKAGE_ROOTS = "Content-Package-Roots";
+
+    /**
+     * The manifest header key for the package description.
+     * @see #NAME_DESCRIPTION
+     */
+    String MF_KEY_PACKAGE_DESC = "Content-Package-Description";
+
+    /**
+     * The manifest header key containing all necessary imports for this package
+     */
+    String MF_KEY_IMPORT_PACKAGE = "Import-Package";
+
     /**
      * Returns the id of this package or {@code null} if the id can't
      * be determined.
@@ -220,6 +259,12 @@ public interface PackageProperties {
     Dependency[] getDependencies();
 
     /**
+     * 
+     * @return all external hooks registered in a package (key = name, value = fully qualified class name)
+     */
+    Map<String, String> getExternalHooks();
+
+    /**
      * Returns the access control handling defined in this package.
      * @return the access control handling.
      */

Added: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfo.java?rev=1867884&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfo.java (added)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfo.java Wed Oct  2 11:28:25 2019
@@ -0,0 +1,162 @@
+/*
+ * 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.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
+import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
+import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
+import org.apache.jackrabbit.vault.fs.config.DefaultMetaInf;
+import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
+import org.apache.jackrabbit.vault.packaging.PackageId;
+import org.apache.jackrabbit.vault.packaging.PackageInfo;
+import org.apache.jackrabbit.vault.packaging.PackageProperties;
+import org.apache.jackrabbit.vault.packaging.PackageType;
+import org.apache.jackrabbit.vault.util.Constants;
+
+/**
+ * Very simple class that reads basic package info from a file.
+ * 
+ * TODO: take over some logic from {@link DefaultMetaInf#load}
+ */
+public class DefaultPackageInfo implements PackageInfo {
+    private static final String PROPERTIES_FILE = Constants.META_DIR + "/" + Constants.PROPERTIES_XML;
+    private static final String FILTER_FILE = Constants.META_DIR + "/" + Constants.FILTER_XML;
+
+    private final PackageId id;
+
+    private final DefaultWorkspaceFilter filter;
+
+    private final PackageType packageType;
+
+    public DefaultPackageInfo(PackageId id, DefaultWorkspaceFilter filter, PackageType packageType) {
+        this.id = id;
+        this.filter = filter;
+        this.packageType = packageType;
+    }
+
+    /**
+     * Reads the package file.
+     * @param file the file.
+     * @return the package info if the package is valid, otherwise {@code null}.
+     * @throws IOException if an error occurs.
+     */
+    public static @CheckForNull PackageInfo read(@Nonnull File file) throws IOException {
+        PackageId id = null;
+        DefaultWorkspaceFilter filter = null;
+        PackageType packageType = PackageType.MIXED;
+        
+        try (ZipFile zip = new ZipFile(file)) {
+            Enumeration<? extends ZipEntry> entries = zip.entries();
+            while (entries.hasMoreElements() && (id == null || filter == null)) {
+                ZipEntry e = entries.nextElement();
+                if (JarFile.MANIFEST_NAME.equalsIgnoreCase(e.getName())) {
+                    Manifest mf = new Manifest(zip.getInputStream(e));
+                    String idStr = mf.getMainAttributes().getValue(PackageProperties.MF_KEY_PACKAGE_ID);
+                    if (idStr != null) {
+                        id = PackageId.fromString(idStr);
+                    }
+                    String roots = mf.getMainAttributes().getValue(PackageProperties.MF_KEY_PACKAGE_ROOTS);
+                    filter = new DefaultWorkspaceFilter();
+                    if (roots != null) {
+                        for (String root: roots.split(",")) {
+                            filter.add(new PathFilterSet(root));
+                        }
+                    }
+                    String type = mf.getMainAttributes().getValue(PackageProperties.MF_KEY_PACKAGE_TYPE);
+                    if (type != null) {
+                        packageType = PackageType.valueOf(type.toUpperCase());
+                    }
+                } else if (PROPERTIES_FILE.equalsIgnoreCase(e.getName())) {
+                    
+                    Properties props = new Properties();
+                    try (InputStream input = zip.getInputStream(e)) {
+                        props.loadFromXML(input);
+                    }
+                    String version = props.getProperty("version");
+                    if (version == null) {
+                        version = "";
+                    }
+                    String group = props.getProperty("group");
+                    String name = props.getProperty("name");
+                    if (group != null && name != null) {
+                        id = new PackageId(group, name, version);
+                    } else {
+                        // check for legacy packages that only contains a 'path' property
+                        String path = props.getProperty("path");
+                        if (path == null || path.length() == 0) {
+                            path = "/etc/packages/unknown";
+                        }
+                        id = new PackageId(path, version);
+                    }
+                } else if (FILTER_FILE.equalsIgnoreCase(e.getName())) {
+                    filter = new DefaultWorkspaceFilter();
+                    try {
+                        filter.load(zip.getInputStream(e));
+                    } catch (ConfigurationException e1) {
+                        throw new IOException(e1);
+                    }
+                }
+                // bail out as soon as all info was found
+                if (id != null && filter != null) {
+                    break;
+                }
+            }
+        }
+        if (id == null || filter == null) {
+            return null;
+        } else {
+            return new DefaultPackageInfo(id, filter, packageType);
+        }
+    }
+
+    /**
+     * Returns the package id.
+     * @return the package id.
+     */
+    public PackageId getId() {
+        return id;
+    }
+
+    /**
+     * Returns the workspace filter
+     * @return the filter
+     */
+    public WorkspaceFilter getFilter() {
+        return filter;
+    }
+
+    /**
+     * Returns the package type.
+     * @return the package type
+     */
+    public PackageType getPackageType() {
+        return packageType;
+    }
+}
\ No newline at end of file

Added: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageProperties.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageProperties.java?rev=1867884&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageProperties.java (added)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageProperties.java Wed Oct  2 11:28:25 2019
@@ -0,0 +1,104 @@
+/*
+ * 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.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.InvalidPropertiesFormatException;
+import java.util.Properties;
+
+import org.apache.commons.io.input.CloseShieldInputStream;
+import org.apache.jackrabbit.vault.packaging.PackageProperties;
+import org.apache.jackrabbit.vault.packaging.impl.PackagePropertiesImpl;
+
+/**
+ * Implementing {@link PackageProperties} on top of an existing {@link File} or {@link InputStream}.
+ */
+public class DefaultPackageProperties extends PackagePropertiesImpl {
+
+    private final Properties properties;
+
+    public static DefaultPackageProperties fromFile(Path path) throws InvalidPropertiesFormatException, IOException {
+        return new DefaultPackageProperties(path);
+    }
+
+    /**
+     * <p> The specified stream remains open after this method returns.
+     * @param input
+     * @return the package properties being exposed through this input
+     * @throws IOException 
+     */
+    public static DefaultPackageProperties fromInputStream(InputStream input) throws InvalidPropertiesFormatException, IOException {
+        return new DefaultPackageProperties(input);
+    }
+
+    protected DefaultPackageProperties(InputStream input) throws IOException {
+        properties = getPropertiesMap(input);
+    }
+    
+    protected DefaultPackageProperties(Path path) throws IOException {
+        try (InputStream fileInput = Files.newInputStream(path)) {
+            properties = getPropertiesMap(fileInput);
+        }
+    }
+
+    @Override
+    protected Properties getPropertiesMap() {
+        return properties;
+    }
+
+    protected static Properties getPropertiesMap(InputStream input) throws InvalidPropertiesFormatException, IOException {
+        Properties propertyMap = new Properties();
+        propertyMap.loadFromXML(new CloseShieldInputStream(input));
+        return propertyMap;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((properties == null) ? 0 : properties.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        DefaultPackageProperties other = (DefaultPackageProperties) obj;
+        if (properties == null) {
+            if (other.properties != null)
+                return false;
+        } else if (!properties.equals(other.properties))
+            return false;
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return "DefaultPackageProperties [properties=" + properties + "]";
+    }
+
+    
+}

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java Wed Oct  2 11:28:25 2019
@@ -18,6 +18,9 @@
 package org.apache.jackrabbit.vault.packaging.impl;
 
 import java.util.Calendar;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
 
 import javax.annotation.Nullable;
@@ -29,6 +32,8 @@ import org.apache.jackrabbit.vault.packa
 import org.apache.jackrabbit.vault.packaging.PackageProperties;
 import org.apache.jackrabbit.vault.packaging.PackageType;
 import org.apache.jackrabbit.vault.packaging.SubPackageHandling;
+import org.apache.jackrabbit.vault.packaging.VaultPackage;
+import org.apache.jackrabbit.vault.util.Text;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -203,12 +208,33 @@ public abstract class PackagePropertiesI
             try {
                 return PackageType.valueOf(pt.toUpperCase());
             } catch (IllegalArgumentException e) {
-                log.warn("invalid package type configured: {}", pt);
+                log.warn("Invalid package type configured: {}", pt);
             }
         }
         return null;
     }
 
+    @Override
+    public Map<String, String> getExternalHooks() {
+        // currently only the format: "installhook.{name}.class" is supported
+        Properties props = getPropertiesMap();
+        Map<String, String> hookClasses = new HashMap<>();
+        if (props != null) {
+            Enumeration<?> names = props.propertyNames();
+            while (names.hasMoreElements()) {
+                String name = names.nextElement().toString();
+                if (name.startsWith(VaultPackage.PREFIX_INSTALL_HOOK)) {
+                    String[] segs = Text.explode(name.substring(VaultPackage.PREFIX_INSTALL_HOOK.length()), '.');
+                    if (segs.length == 0 || segs.length > 2 || !"class".equals(segs[1])) {
+                        log.warn("Invalid installhook property: {}", name);
+                    }
+                    hookClasses.put(segs[0], props.getProperty(name));
+                }
+            }
+        }
+        return hookClasses;
+    }
+
     protected abstract Properties getPropertiesMap();
 
 

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=1867884&r1=1867883&r2=1867884&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 Wed Oct  2 11:28:25 2019
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-@Version("2.9.0")
+@Version("2.10.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/impl/DefaultPackageInfoTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfoTest.java?rev=1867884&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfoTest.java (added)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/impl/DefaultPackageInfoTest.java Wed Oct  2 11:28:25 2019
@@ -0,0 +1,63 @@
+/*
+ * 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.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import org.apache.jackrabbit.vault.packaging.PackageInfo;
+import org.apache.jackrabbit.vault.packaging.PackageType;
+import org.junit.Test;
+
+public class DefaultPackageInfoTest {
+
+    private static final String RESOURCE_DIR = "/test-packages/";
+
+    private File load(String path) {
+        return new File(getClass().getResource(RESOURCE_DIR + path).getFile());
+    }
+
+    @Test
+    public void test_pkg_with_filter_and_manifest() throws Exception {
+        PackageInfo info = DefaultPackageInfo.read(load("pkg-with-filter-and-manifest.zip"));
+        assertNotNull("PackageInfo", info);
+        assertEquals("PackageId", "com.day.jcr.vault.unit:vault-plugin-test-pkg:1.0.0-SNAPSHOT", info.getId().toString());
+        assertEquals("filter size", 1, info.getFilter().getFilterSets().size());
+        assertTrue("contains filter", info.getFilter().contains("/libs/granite/replication"));
+        assertEquals("package type", PackageType.APPLICATION, info.getPackageType());
+    }
+
+    @Test
+    public void test_pkg_with_no_manifest() throws Exception {
+        PackageInfo info = DefaultPackageInfo.read(load("pkg-with-no-manifest.zip"));
+        assertNotNull("PackageInfo", info);
+        assertEquals("PackageId", "com.day.jcr.vault.unit:vault-plugin-test-pkg:1.0.0-SNAPSHOT", info.getId().toString());
+        assertEquals("filter size", 1, info.getFilter().getFilterSets().size());
+        assertTrue("contains filter", info.getFilter().contains("/libs/granite/replication"));
+        assertEquals("package type", PackageType.MIXED, info.getPackageType());
+    }
+
+    @Test
+    public void test_non_valid_package() throws Exception {
+        PackageInfo info = DefaultPackageInfo.read(load("non-valid-package.zip"));
+        assertNull("PackageInfo", info);
+    }
+}

Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/non-valid-package.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/non-valid-package.zip?rev=1867884&view=auto
==============================================================================
Binary files jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/non-valid-package.zip (added) and jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/non-valid-package.zip Wed Oct  2 11:28:25 2019 differ

Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-filter-and-manifest.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-filter-and-manifest.zip?rev=1867884&view=auto
==============================================================================
Binary files jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-filter-and-manifest.zip (added) and jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-filter-and-manifest.zip Wed Oct  2 11:28:25 2019 differ

Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip?rev=1867884&view=auto
==============================================================================
Binary files jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip (added) and jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip Wed Oct  2 11:28:25 2019 differ

Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip.cpgz
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip.cpgz?rev=1867884&view=auto
==============================================================================
Binary files jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip.cpgz (added) and jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/pkg-with-no-manifest.zip.cpgz Wed Oct  2 11:28:25 2019 differ

Modified: jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/docview.md
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/docview.md?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/docview.md (original)
+++ jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/docview.md Wed Oct  2 11:28:25 2019
@@ -29,7 +29,7 @@ a `example.xml` file, using the (filevau
 For example, a _sling:Folder_ node, named `libs` will be serialized into a directory `libs` and a
 `libs/.content.xml` file, using the (filevault) DocView format.
 
-Also see the [vault-fs][vaultfs.html]
+Also see the [vault-fs](vaultfs.html)
 article about this.
 
 Deviations to the JCR DocView
@@ -55,7 +55,8 @@ Example:
 The deserialization treats empty elements different as the default [JCR 2.0 Import][import-docview], as
 empty elements never create a new node in the repository but are merely used to define the childnode 
 sort order.
-        
+Nodes/properties below empty elements will never be removed during import ([JCRVLT-251](https://issues.apache.org/jira/browse/JCRVLT-251))
+
 ### Property Values
 
 The probably biggest different to the [JCR 2.0][jcr-docview] is the handling of the property values.

Added: jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/validation.md
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/validation.md?rev=1867884&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/validation.md (added)
+++ jackrabbit/commons/filevault/trunk/vault-doc/src/site/markdown/validation.md Wed Oct  2 11:28:25 2019
@@ -0,0 +1,96 @@
+<!--
+   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.
+-->
+# Validation
+
+## Overview
+
+The artifact `org.apache.jackrabbit.vault:vault-validation` provides both an API for validating FileVault packages as well as an SPI for implementing validators. In addition this JAR contains useful validators.
+
+This validation framework is supposed to be used as 
+
+1. dependency for custom validators (SPI)
+2. library for build tools which want to call validation on FileVault packages (API and Implementation)
+
+
+## Validators
+
+### Settings
+
+It is possible to adjust every validator registered in the system (both default and external validators) via settings. Settings have a common section (which apply to every validator) but also support validator specific options.
+
+Element | Description | Default Value
+--- | --- | ---
+`defaultSeverity` | The severity has an influence whether a validation message will fail the build or not). By default only severity `error` will fail the build. | `error`
+`isDisabled` | A boolean flag defining whether validator is disabled or not. | `false`
+`options` | A map (i.e. keys and values) of validator specific options. The supported options for the validators are outlined below. | empty
+
+Each validator settings are set for a specific validator id.
+
+### Standard Validators
+
+ID  |  Description | Options
+--- | --- | ---
+`jackrabbit-filter` |  Checks for validity of the [filter.xml](./filter.html]) (according to a predefined  XML schema). In addition checks that every [docview xml node](./docview.html) is contained in the filter. For packages of type `application` (or when option `severityForUncoveredAncestorNodes` is set to an according severity) it also makes sure that all filter root's ancestors are either known/valid roots or are contained in the package dependencies. Also it makes sure that `pattern` values for includes/excludes as well as `root` values for each filter entry are valid. Orphaned filter rules (i.e. ones not being necessary) lead to validation issues as well. | *severityForUncoveredAncestorNodes*: severity of validation messages for uncovered ancestor nodes. Only relevant for package type != application (default = info)<br/>*severityForOrphanedFilterRules*: severity of validation messages for orphaned filter rules (default = info)<br/>*validRoots*: comma-separated list of valid ro
 ots (default = `"/,/libs,/apps,/etc,/var,/tmp,/content"`)
+`jackrabbit-properties ` | Checks for validity of the  [properties.xml](./properties.html)
+`jackrabbit-dependencies` | Checks for overlapping filter roots of the referenced package dependencies as well as for valid package dependency references (i.e. references which can be resolved). | *severityForUnresolvedDependencies*: severity of validation messages for unresolved dependencies (default = warn)
+`jackrabbit-docviewparser` | Checks if all docview files in the package are compliant with the [(extended) Document View Format](../docview.html). This involves checking for XML validity as well as checking for correct property types.
+`jackrabbit-emptyelements` | Check for empty elements within DocView files (used for ordering purposes, compare with  [(extended) Document View Format](../docview.html)) which are included in the filter with import=replace as those are actually not replaced!
+`jackrabbit-mergelimitations` | Checks for the limitation of import mode=merge outlined at [JCRVLT-255][jcrvlt-255].
+`jackrabbit-oakindex` |  Checks if the package (potentially) modifies/creates an OakIndexDefinition. This is done by evaluating both the filter.xml for potential matches as well as the actual content for nodes with jcr:primaryType  `oak:indexDefinition`.
+`jackrabbit-packagetype` | Checks if the package type is correctly set for this package, i.e. is compliant with all rules outlined at [JCRVLT-170][jcrvlt-170].
+`jackrabbit-primarynodetype` | Checks if all non empty elements within [DocView files](../docview.html) have the mandatory property `jcr:primaryType` set.
+
+
+### Custom Validators
+
+The SPI for implementing custom validators is provided in [this package][javadoc.spi].
+The validators are registered via a `ValidatorFactory` which is supposed to be registered via the [ServiceLoader][javadoc.serviceloader].
+
+The SPI is exported from the artifact `org.apache.jackrabbit.vault:vault-validation` as well.
+
+The validator which is returned via the `ValidatorFactory` is one of the following types below package `org.apache.jackrabbit.filevault.maven.packaging.validator`
+
+Validator Class | Description | `META-INF` or `jcr_root` | Called from another validator
+--- | --- | --- | ---
+`DocumentViewXmlValidator` | Called for each node serialized into a DocView element | `jcr_root` | no
+`NodePathValidator` | Called for each node path contained in the package (even for ones not listed in the filter.xml) | `jcr_root` | no
+`JcrPathValidator` | Called for each file path contained in the package | `jcr_root` | no
+`GenericJcrDataValidator` | Called for all serialized nodes which are *not* DocViewXml | `jcr_root` | no
+`FilterValidator`| Called for the `vault/filter.xml` file | `META-INF` | yes (`jackrabbit-filter`)
+`PropertiesValidator` | Called for the `vault/properties.xml` file | `META-INF` | yes (`jackrabbit-properties`)
+`GenericMetaInfDataValidator` | Called for all META-INF files (even `vault/filter.xml` nor `vault/properties.xml`). In general prefer the higher level validators (i.e. `FilterValidator` or `PropertiesValidator` if possible) | `META-INF` | no
+`MetaInfFilePathValidator` | Called for each file path contained in the package below META-INF | `META-INF` | no
+
+## Validation API
+
+The API for calling validation on specific files is provided in [this package][javadoc.api].
+
+First you need one instance of `ValidationExecutorFactory`.
+For each new `ValidationContext` (i.e. new package context) you create a new `ValidationExecutor` via `ValidationExecutorFactory.createValidationExecutor(...)`.
+For each file you then call either
+
+- `ValidationExecutor.validateJcrRoot(...)` for input streams referring to files which are supposed to end up in the repository or 
+- `ValidationExecutor.validateMetaInf(...)` for input stream representing metaInf data of the FileVault package
+
+The Validation API is currently used by the [FileVault Package Maven Plugin][filevault.maven].
+
+[javadoc.spi]: apidocs/org/apache/jackrabbit/vault/validation/spi.html
+[javadoc.api]: apidocs/org/apache/jackrabbit/vault/validation.html
+[javadoc.serviceloader]: https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html
+[filevault.maven]: http://jackrabbit.apache.org/filevault-package-maven-plugin/
+[jcrvlt-255]: https://issues.apache.org/jira/browse/JCRVLT-255
+[jcrvlt-170]: https://issues.apache.org/jira/browse/JCRVLT-170
\ No newline at end of file

Modified: jackrabbit/commons/filevault/trunk/vault-doc/src/site/site.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-doc/src/site/site.xml?rev=1867884&r1=1867883&r2=1867884&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-doc/src/site/site.xml (original)
+++ jackrabbit/commons/filevault/trunk/vault-doc/src/site/site.xml Wed Oct  2 11:28:25 2019
@@ -30,6 +30,7 @@
       <item href="overview.html" name="Overview" />
       <item href="vaultfs.html" name="Vault FS" />
       <item href="docview.html" name="Document View" />
+      <item href="validation.html" name="Validation" />
     </menu>
     <menu name="Using Filevault">
       <item href="usage.html" name="Getting Started" />

Added: jackrabbit/commons/filevault/trunk/vault-validation/.ratignore
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-validation/.ratignore?rev=1867884&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-validation/.ratignore (added)
+++ jackrabbit/commons/filevault/trunk/vault-validation/.ratignore Wed Oct  2 11:28:25 2019
@@ -0,0 +1,8 @@
+.ratignore
+src/test/resources/**/*.txt
+src/test/resources/**/*.xml
+src/test/resources/**/.vlt
+src/test/resources/**/.vltignore
+src/test/resources/**/.dummy
+src/test/resources/**/*.lst
+src/test/resources/**/*.MF
\ No newline at end of file

Added: jackrabbit/commons/filevault/trunk/vault-validation/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-validation/pom.xml?rev=1867884&view=auto
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-validation/pom.xml (added)
+++ jackrabbit/commons/filevault/trunk/vault-validation/pom.xml Wed Oct  2 11:28:25 2019
@@ -0,0 +1,170 @@
+<?xml version="1.0"?><!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
+    <modelVersion>4.0.0</modelVersion>
+    <!-- ====================================================================== -->
+    <!-- P A R E N T P R O J E C T D E S C R I P T I O N -->
+    <!-- ====================================================================== -->
+    <parent>
+        <groupId>org.apache.jackrabbit.vault</groupId>
+        <artifactId>parent</artifactId>
+        <relativePath>../parent/pom.xml</relativePath>
+        <version>3.4.1-SNAPSHOT</version>
+    </parent>
+
+    <!-- ====================================================================== -->
+    <!-- P R O J E C T D E S C R I P T I O N -->
+    <!-- ====================================================================== -->
+    <artifactId>vault-validation</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>Apache Jackrabbit FileVault Validation</name>
+    <description>Provides a validation framework with SPI and API for performing validations on FileVault packages</description>
+
+    <!-- ====================================================================== -->
+    <!-- S C M D E F I N I T I O N -->
+    <!-- ====================================================================== -->
+    <scm>
+        <connection>scm:svn:http://svn.apache.org/repos/asf/jackrabbit/commons/filevault/trunk/vault-validation</connection>
+        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/jackrabbit/commons/filevault/trunk/vault-validation</developerConnection>
+        <url>http://svn.apache.org/viewvc/asf/jackrabbit/commons/filevault/trunk/vault-validation</url>
+    </scm>
+
+    <build>
+        <plugins>
+            <!-- ====================================================================== -->
+            <!-- R A T   P L U G I N                                                    -->
+            <!-- ====================================================================== -->
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <basedir>${project.basedir}</basedir>
+                            <excludesFile>${project.basedir}/.ratignore</excludesFile>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <extensions>true</extensions>
+                    <configuration>
+                        <instructions>
+                            <Include-Resource>{maven-resources},META-INF/services=target/classes/META-INF/services</Include-Resource>
+                        </instructions>
+                    </configuration>
+                    <executions>
+                        <execution>
+                            <id>baseline</id>
+                            <configuration>
+                                <skip>true</skip> <!-- skip until the first release is done -->
+                            </configuration>
+                        </execution>
+                    </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!-- ====================================================================== -->
+    <!-- D E P E N D E N C I E S -->
+    <!-- ====================================================================== -->
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.jackrabbit.vault</groupId>
+            <artifactId>org.apache.jackrabbit.vault</artifactId>
+            <version>3.4.1-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-spi-commons</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>jsr305</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- only used for the constants, not necessary at run time -->
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-core</artifactId>
+            <version>${oak.version}</version>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.annotation</artifactId>
+            <scope>provided</scope>
+        </dependency>
+            
+        <!-- http://metainf-services.kohsuke.org/index.html -->
+        <dependency>
+            <groupId>org.kohsuke.metainf-services</groupId>
+            <artifactId>metainf-services</artifactId>
+            <version>1.8</version>
+            <optional>true</optional>
+        </dependency>
+
+        <!-- testing -->
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest</artifactId>
+            <version>2.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>2.28.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>${slf4j.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>