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>