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 2021/11/25 15:48:16 UTC

[jackrabbit-filevault-package-maven-plugin] branch master updated: JCRVLT-567 move validationcontext implementations to FileVault (#64)

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 829a08a  JCRVLT-567 move validationcontext implementations to FileVault (#64)
829a08a is described below

commit 829a08abebded00b9c15e4df709b96e28ca2ce08
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Thu Nov 25 16:48:09 2021 +0100

    JCRVLT-567 move validationcontext implementations to FileVault (#64)
    
    update to FileVault 3.5.6
---
 pom.xml                                            |   2 +-
 .../maven/packaging/AbstractValidateMojo.java      |   2 +-
 .../maven/packaging/GenerateMetadataMojo.java      |   2 +-
 .../packaging/MavenBasedPackageDependency.java     |  35 +------
 .../maven/packaging/ValidatePackageMojo.java       |  16 +--
 .../impl/context/ArchiveValidationContextImpl.java |  75 --------------
 .../validator/impl/context/DependencyResolver.java | 108 ++++-----------------
 .../impl/context/DirectoryValidationContext.java   |   4 +-
 .../impl/context/SubPackageValidationContext.java  |  40 --------
 .../packaging/MavenBasedPackageDependencyTest.java |  16 +--
 10 files changed, 41 insertions(+), 259 deletions(-)

diff --git a/pom.xml b/pom.xml
index 85753bd..09c074e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
         <groupId>org.apache.jackrabbit.vault</groupId>
         <artifactId>parent</artifactId>
         <relativePath />
-        <version>3.5.4</version>
+        <version>3.5.6</version>
     </parent>
 
     <!-- ====================================================================== -->
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
index f1e695a..e56d239 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
@@ -292,7 +292,7 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
             }
             // resolve mapping map
             resolver = new DependencyResolver(DefaultRepositoryRequest.getRepositoryRequest(session, project), repositorySystem,
-                    resolutionErrorHandler, resolveMap(mapPackageDependencyToMavenGa), resolvedDependencies);
+                    resolutionErrorHandler, resolveMap(mapPackageDependencyToMavenGa), resolvedDependencies, getLog());
             doExecute(validationHelper);
         } catch (IOException e) {
             throw new MojoExecutionException("Could not create/write to CSV File", e);
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
index 4a52ddc..7acde6d 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/GenerateMetadataMojo.java
@@ -326,7 +326,7 @@ public class GenerateMetadataMojo extends AbstractMetadataPackageMojo {
      * </pre>
      * All fields are optional. All filter criteria is concatenated with AND logic (i.e. every criterion must match for a specific dependency to be embedded).
      * <br>
-     * All filter patterns follow the format<code>&lt;filter&gt;{,&lt;filter&gt;}</code>.
+     * All filter patterns follow the format <code>&lt;filter&gt;{,&lt;filter&gt;}</code>.
      * Each {@code filter} is a string which is either an exclude (if it starts with a {@code ~}) or an include otherwise. If the first {@code filter} is an include the pattern acts as whitelist, 
      * otherwise as blacklist. The last matching filter determines the outcome. Only matching dependencies are being considered for being embedded.</td></tr>
      * <br>
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java
index 5ef7dc9..209f5fa 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependency.java
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.jackrabbit.vault.packaging.PackageInfo;
 import org.apache.jackrabbit.vault.packaging.VersionRange;
 import org.apache.jackrabbit.vault.packaging.impl.DefaultPackageInfo;
+import org.apache.jackrabbit.vault.validation.context.AbstractDependencyResolver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.plugin.logging.Log;
@@ -110,8 +111,6 @@ public class MavenBasedPackageDependency {
     
     private String mavenVersion;
     
-    private final static String MAVEN_REPOSITORY_SCHEME = "maven";
-    
     // default constructor for passing Maven Mojo parameters of that type
     public MavenBasedPackageDependency() {
         
@@ -267,40 +266,10 @@ public class MavenBasedPackageDependency {
             ssp.append(":").append(classifier);
         }
         try {
-            return new URI(MAVEN_REPOSITORY_SCHEME, ssp.toString(), null);
+            return new URI(AbstractDependencyResolver.MAVEN_REPOSITORY_SCHEME, ssp.toString(), null);
         } catch (URISyntaxException e) {
             throw new IllegalArgumentException("Could not create uri from string " + ssp.toString(), e);
         }
     }
 
-    public static Artifact uriToMavenCoordinates(URI uri) {
-        if (!MAVEN_REPOSITORY_SCHEME.equals(uri.getScheme())) {
-            return null;
-        }
-        if (!uri.isOpaque()) {
-            throw new IllegalArgumentException("Only opaque Maven URIs are supported");
-        }
-        // support groupId, artifactId, packaging and classifier (format like https://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html#artifact)
-        // extract group id and artifact id
-        String[] parts = uri.getSchemeSpecificPart().split(":");
-        if (parts.length < 2) {
-            throw new IllegalArgumentException("At least group id and artifact id need to be given separatedby ':'");
-        }
-        String groupId = parts[0];
-        String artifactId = parts[1];
-        String version = "default";
-        if (parts.length > 2) {
-            version = parts[2];
-        }
-        String type = "zip";
-        if (parts.length > 3) {
-            type = parts[3];
-        }
-        String classifier = "";
-        if (parts.length > 4) {
-            type = parts[4];
-        }
-        // TODO: version must not be null!
-        return new DefaultArtifact(groupId, artifactId, version, null, type, classifier, null);
-    }
 }
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
index 707227f..6e21646 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/ValidatePackageMojo.java
@@ -28,14 +28,14 @@ import java.util.LinkedList;
 import java.util.List;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context.ArchiveValidationContextImpl;
-import org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context.SubPackageValidationContext;
 import org.apache.jackrabbit.vault.fs.io.Archive;
 import org.apache.jackrabbit.vault.fs.io.ZipArchive;
 import org.apache.jackrabbit.vault.fs.io.ZipStreamArchive;
 import org.apache.jackrabbit.vault.util.Constants;
 import org.apache.jackrabbit.vault.validation.ValidationExecutor;
 import org.apache.jackrabbit.vault.validation.ValidationViolation;
+import org.apache.jackrabbit.vault.validation.context.ArchiveValidationContext;
+import org.apache.jackrabbit.vault.validation.context.SubPackageInArchiveValidationContext;
 import org.apache.jackrabbit.vault.validation.spi.ValidationMessageSeverity;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -125,11 +125,11 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
         getLog().info("Start validating package " + getProjectRelativeFilePath(file) + "...");
 
         // open file to extract the meta data for the validation context
-        ArchiveValidationContextImpl context;
+        ArchiveValidationContext context;
         ValidationExecutor executor;
         try (Archive archive = new ZipArchive(file.toFile())) {
             archive.open(true);
-            context = new ArchiveValidationContextImpl(archive, file, resolver, getLog());
+            context = new ArchiveValidationContext(archive, file, resolver);
             executor = validationExecutorFactory.createValidationExecutor(context, false, enforceRecursiveSubpackageValidation, getValidatorSettingsForPackage(context.getProperties().getId(), false));
             if (executor != null) {
                 validationHelper.printUsedValidators(getLog(), executor, context, true);
@@ -143,13 +143,13 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
         }
     }
 
-    private void validateArchive(ValidationHelper validationHelper, Archive archive, Path path, ArchiveValidationContextImpl context,
+    private void validateArchive(ValidationHelper validationHelper, Archive archive, Path path, ArchiveValidationContext context,
             ValidationExecutor executor) throws IOException, SAXException, ParserConfigurationException, MojoFailureException {
         validateEntry(validationHelper, archive, archive.getRoot(), Paths.get(""), path, context, executor);
         validationHelper.printMessages(executor.done(), getLog(), buildContext, path);
     }
 
-    private void validateEntry(ValidationHelper validationHelper, Archive archive, Archive.Entry entry, Path entryPath, Path packagePath, ArchiveValidationContextImpl context,
+    private void validateEntry(ValidationHelper validationHelper, Archive archive, Archive.Entry entry, Path entryPath, Path packagePath, ArchiveValidationContext context,
             ValidationExecutor executor) throws IOException, SAXException, ParserConfigurationException, MojoFailureException {
         // sort children to make sure that .content.xml comes first!
         List<Archive.Entry> sortedEntryList = new ArrayList<>(entry.getChildren());
@@ -167,7 +167,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
         }
     }
 
-    private void validateInputStream(ValidationHelper validationHelper, @Nullable InputStream inputStream, Path entryPath, Path packagePath, ArchiveValidationContextImpl context,
+    private void validateInputStream(ValidationHelper validationHelper, @Nullable InputStream inputStream, Path entryPath, Path packagePath, ArchiveValidationContext context,
             ValidationExecutor executor) throws IOException, SAXException, ParserConfigurationException, MojoFailureException {
         Collection<ValidationViolation> messages = new LinkedList<>();
         if (entryPath.startsWith(Constants.META_INF)) {
@@ -188,7 +188,7 @@ public class ValidatePackageMojo extends AbstractValidateMojo {
                         getLog().debug("ZIP entry " + subPackagePath + " is no subpackage as it is lacking the mandatory jcr_root entry");
                     } else {
                         getLog().info("Start validating sub package '" + subPackagePath + "'...");
-                        SubPackageValidationContext subPackageValidationContext = new SubPackageValidationContext(context, subArchive, subPackagePath, resolver, getLog());
+                        SubPackageInArchiveValidationContext subPackageValidationContext = new SubPackageInArchiveValidationContext(context, subArchive, subPackagePath, resolver);
                         ValidationExecutor subPackageValidationExecutor = validationExecutorFactory
                                 .createValidationExecutor(subPackageValidationContext, true, enforceRecursiveSubpackageValidation, getValidatorSettingsForPackage(subPackageValidationContext.getProperties().getId(), true));
                         if (subPackageValidationExecutor != null) {
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/ArchiveValidationContextImpl.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/ArchiveValidationContextImpl.java
deleted file mode 100644
index a1c4ecd..0000000
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/ArchiveValidationContextImpl.java
+++ /dev/null
@@ -1,75 +0,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.
- */
-package org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context;
-
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.Collection;
-
-import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.packaging.PackageInfo;
-import org.apache.jackrabbit.vault.packaging.PackageProperties;
-import org.apache.jackrabbit.vault.validation.spi.ValidationContext;
-import org.apache.maven.plugin.logging.Log;
-
-
-/**
- * Implements a validation context based on a given {@link Archive}.
- */
-public class ArchiveValidationContextImpl implements ValidationContext {
-
-    private final WorkspaceFilter filter;
-    private final PackageProperties properties;
-    private final Path archivePath;
-    private final Collection<PackageInfo> resolvedDependencies;
-
-    public ArchiveValidationContextImpl(Archive archive, Path archivePath, DependencyResolver resolver, Log log) throws IOException {
-        this.archivePath = archivePath;
-        properties = archive.getMetaInf().getPackageProperties();
-        this.filter = archive.getMetaInf().getFilter();
-        if (filter == null) {
-            throw new IllegalStateException("Archive '" + archivePath + "' does not contain a filter.xml.");
-        }
-        this.resolvedDependencies = resolver.resolve(getProperties().getDependencies(), getProperties().getDependenciesLocations(), log);
-    }
-
-    @Override
-    public PackageProperties getProperties() {
-        return properties;
-    }
-
-    @Override
-    public WorkspaceFilter getFilter() {
-        return filter;
-    }
-
-    @Override
-    public ValidationContext getContainerValidationContext() {
-        return null;
-    }
-
-    public Path getPackageRootPath() {
-        return archivePath;
-    }
-
-    @Override
-    public Collection<PackageInfo> getDependenciesPackageInfo() {
-        return this.resolvedDependencies;
-    }
-
-}
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java
index b8150ba..b7bb4d0 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java
@@ -31,6 +31,7 @@ import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.jackrabbit.vault.packaging.PackageInfo;
 import org.apache.jackrabbit.vault.packaging.VersionRange;
 import org.apache.jackrabbit.vault.packaging.impl.DefaultPackageInfo;
+import org.apache.jackrabbit.vault.validation.context.AbstractDependencyResolver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
@@ -42,103 +43,21 @@ import org.apache.maven.repository.RepositorySystem;
 import org.jetbrains.annotations.Nullable;
 
 /** Allows to resolve a {@link Dependency} from the underlying Maven repository (first local, then remote). */
-public class DependencyResolver {
+public class DependencyResolver extends AbstractDependencyResolver {
 
     private final RepositoryRequest repositoryRequest;
     private final RepositorySystem repositorySystem;
     private final ResolutionErrorHandler resolutionErrorHandler;
-    private final Map<Dependency, Artifact> mapPackageDependencyToMavenArtifact;
-    private final Collection<PackageInfo> knownPackageInfos;
+    private final Log log;
 
     public DependencyResolver(RepositoryRequest repositoryRequest, RepositorySystem repositorySystem,
             ResolutionErrorHandler resolutionErrorHandler, Map<Dependency, Artifact> mapPackageDependencyToMavenArtifact,
-            Collection<PackageInfo> knownPackageInfos) {
-        super();
+            Collection<PackageInfo> knownPackageInfos, Log log) {
+        super(knownPackageInfos);
         this.repositoryRequest = repositoryRequest;
         this.repositorySystem = repositorySystem;
         this.resolutionErrorHandler = resolutionErrorHandler;
-        this.mapPackageDependencyToMavenArtifact = mapPackageDependencyToMavenArtifact;
-        this.knownPackageInfos = knownPackageInfos;
-    }
-
-    public List<PackageInfo> resolve(Dependency[] packageDependencies, Map<PackageId, URI> packageLocations, Log log) throws IOException {
-        List<PackageInfo> packageInfos = new LinkedList<>();
-
-        // resolve dependencies
-        for (Dependency packageDependency : packageDependencies) {
-            PackageInfo packageInfo = null;
-            // is it already resolved?
-            for (PackageInfo knownPackageInfo : knownPackageInfos) {
-                if (packageDependency.matches(knownPackageInfo.getId())) {
-                    log.debug("Dependency is already resolved from project dependencies: " + packageDependency);
-                    packageInfo = knownPackageInfo;
-                }
-            }
-            if (packageInfo == null) {
-                for (Map.Entry<PackageId, URI> packageLocation : packageLocations.entrySet()) {
-                    if (packageDependency.matches(packageLocation.getKey())) {
-                        Artifact artifact = MavenBasedPackageDependency.uriToMavenCoordinates(packageLocation.getValue());
-                        packageInfo = resolve(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), log);
-                    }
-                }
-            }
-            if (packageInfo == null) {
-                packageInfo = resolve(packageDependency, log);
-            }
-            if (packageInfo != null) {
-                packageInfos.add(packageInfo);
-            }
-        }
-        return packageInfos;
-    }
-
-    public @Nullable PackageInfo resolve(Dependency dependency, Log log) throws IOException {
-        // resolving a version range is not supported with Maven API, but only with lower level Aether API (requires Maven 3.5 or newer)
-        // https://github.com/eclipse/aether-demo/blob/master/aether-demo-snippets/src/main/java/org/eclipse/aether/examples/FindAvailableVersions.java
-        // therefore do an best effort resolve instead
-
-        final String groupId;
-        final String artifactId;
-        // strip version for retrieving entry from mapping table
-        Artifact artifact = mapPackageDependencyToMavenArtifact.get(new Dependency(dependency.getGroup(), dependency.getName(), null));
-        // is it special artifact which is supposed to be ignored?
-        if (artifact == AbstractValidateMojo.IGNORE_ARTIFACT) {
-            return null;
-        }
-        log.info("Trying to resolve dependency '" + dependency + "' from Maven repository");
-        // is it part of the mapping table?
-        if (artifact != null) {
-            groupId = artifact.getGroupId();
-            artifactId = artifact.getArtifactId();
-        } else {
-            groupId = dependency.getGroup();
-            artifactId = dependency.getName();
-        }
-        PackageInfo info = null;
-        if (dependency.getRange().isLowInclusive()) {
-            info = resolve(groupId, artifactId, dependency.getRange().getLow().toString(), log);
-        }
-        if (info == null && dependency.getRange().isHighInclusive()) {
-            info = resolve(groupId, artifactId, dependency.getRange().getHigh().toString(), log);
-        }
-        if (info == null && VersionRange.INFINITE.equals(dependency.getRange())) {
-            info = resolve(groupId, artifactId, Artifact.LATEST_VERSION, log);
-        }
-        if (info == null) {
-            log.warn("Could not resolve dependency from any Maven Repository for dependency " + dependency);
-            return null;
-        }
-        return info;
-    }
-
-    private @Nullable PackageInfo resolve(String groupId, String artifactId, String version, Log log) throws IOException {
-        Artifact artifact = repositorySystem.createArtifact(groupId, artifactId, version, "zip");
-        File file = resolve(artifact, log);
-        if (file != null) {
-            return DefaultPackageInfo.read(file);
-        } else {
-            return null;
-        }
+        this.log = log;
     }
 
     private @Nullable File resolve(Artifact artifact, Log log) {
@@ -158,6 +77,21 @@ public class DependencyResolver {
             }
             return null;
         }
+    }
 
+    @Override
+    public @Nullable PackageInfo resolvePackageInfo(MavenCoordinates mavenCoordinates) throws IOException {
+        final Artifact artifact;
+        if (mavenCoordinates.getClassifier() != null) {
+            artifact = repositorySystem.createArtifactWithClassifier(mavenCoordinates.getGroupId(), mavenCoordinates.getArtifactId(), mavenCoordinates.getVersion(), mavenCoordinates.getPackaging(), mavenCoordinates.getClassifier());
+        } else {
+            artifact = repositorySystem.createArtifact(mavenCoordinates.getGroupId(), mavenCoordinates.getArtifactId(), mavenCoordinates.getVersion(), mavenCoordinates.getPackaging());
+        }
+        File file = resolve(artifact, log);
+        if (file != null) {
+            return DefaultPackageInfo.read(file);
+        } else {
+            return null;
+        }
     }
 }
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java
index a9bb159..a723f9a 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DirectoryValidationContext.java
@@ -47,7 +47,7 @@ public class DirectoryValidationContext implements ValidationContext {
 
     private final PackageProperties properties;
     private final DefaultWorkspaceFilter filter;
-    private List<PackageInfo> resolvedDependencies;
+    private Collection<PackageInfo> resolvedDependencies;
     private final boolean isIncremental;
     
     private static final Path RELATIVE_PROPERTIES_XML_PATH = Paths.get(Constants.VAULT_DIR, Constants.PROPERTIES_XML);
@@ -82,7 +82,7 @@ public class DirectoryValidationContext implements ValidationContext {
         }
         filter.load(filterFile);
         
-        this.resolvedDependencies = resolver.resolve(getProperties().getDependencies(), getProperties().getDependenciesLocations(), log);
+        this.resolvedDependencies = resolver.resolvePackageInfo(getProperties().getDependencies(), getProperties().getDependenciesLocations());
         this.isIncremental = isIncremental;
     }
 
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/SubPackageValidationContext.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/SubPackageValidationContext.java
deleted file mode 100644
index a16b2ba..0000000
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/SubPackageValidationContext.java
+++ /dev/null
@@ -1,40 +0,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.
- */
-package org.apache.jackrabbit.filevault.maven.packaging.validator.impl.context;
-
-import java.io.IOException;
-import java.nio.file.Path;
-
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.validation.spi.ValidationContext;
-import org.apache.maven.plugin.logging.Log;
-
-public class SubPackageValidationContext extends ArchiveValidationContextImpl {
-
-    private final ValidationContext containerPackageContext;
-
-    public SubPackageValidationContext(ArchiveValidationContextImpl containerPackageContext, Archive archive, Path archivePath, DependencyResolver resolver, Log log) throws IOException {
-        super(archive, archivePath, resolver, log);
-        this.containerPackageContext = containerPackageContext;
-    }
-
-    @Override
-    public ValidationContext getContainerValidationContext() {
-        return containerPackageContext;
-    }
-
-}
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependencyTest.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependencyTest.java
index feff012..9aa363b 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependencyTest.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/MavenBasedPackageDependencyTest.java
@@ -19,19 +19,13 @@ package org.apache.jackrabbit.filevault.maven.packaging;
 import java.net.URI;
 import java.net.URISyntaxException;
 
-import org.apache.jackrabbit.filevault.maven.packaging.SimpleEmbeddedTest.SimpleArtifact;
-import org.apache.maven.artifact.Artifact;
+import org.apache.jackrabbit.vault.validation.context.AbstractDependencyResolver.MavenCoordinates;
 import org.junit.Assert;
 import org.junit.Test;
 
 public class MavenBasedPackageDependencyTest {
 
     @Test
-    public void testUriToMavenCoordinates() throws URISyntaxException {
-        Assert.assertEquals(new SimpleArtifact("group1", "name1", null, "zip"), MavenBasedPackageDependency.uriToMavenCoordinates(new URI("maven", "group1:name1", null)));
-    }
-
-    @Test
     public void testMavenCoordinatesToUri() throws URISyntaxException {
         Assert.assertEquals(new URI("maven", "group1:name1:1.0:zip:classifier1", null), MavenBasedPackageDependency.mavenCoordinatesToUri("group1", "name1", "1.0", "classifier1"));
         Assert.assertEquals(new URI("maven", "group1:name1:1.0:zip", null), MavenBasedPackageDependency.mavenCoordinatesToUri("group1", "name1", "1.0", null));
@@ -39,14 +33,14 @@ public class MavenBasedPackageDependencyTest {
 
     @Test 
     public void testMavenCoordinatesToUriRoundtrip() throws URISyntaxException {
-        Artifact artifact = new SimpleArtifact("groupname", "artifactName", null, "zip");
-        Assert.assertEquals(artifact, MavenBasedPackageDependency.uriToMavenCoordinates(MavenBasedPackageDependency.mavenCoordinatesToUri(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getClassifier())));
+        MavenCoordinates coordinates = new MavenCoordinates("groupname", "artifactName", "1.0");
+        Assert.assertEquals(coordinates, MavenCoordinates.parse(MavenBasedPackageDependency.mavenCoordinatesToUri(coordinates.getGroupId(), coordinates.getArtifactId(), coordinates.getVersion(), coordinates.getClassifier())));
     }
     
     @Test 
     public void testUriToMavenCoordinatesRoundtrip() throws URISyntaxException {
         URI uri = new URI("maven", "test-group:some name:1.0:zip", null);
-        Artifact artifact = MavenBasedPackageDependency.uriToMavenCoordinates(uri);
-        Assert.assertEquals(uri, MavenBasedPackageDependency.mavenCoordinatesToUri(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getClassifier()));
+        MavenCoordinates coordinates = MavenCoordinates.parse(uri);
+        Assert.assertEquals(uri, MavenBasedPackageDependency.mavenCoordinatesToUri(coordinates.getGroupId(), coordinates.getArtifactId(), coordinates.getVersion(), coordinates.getClassifier()));
     }
 }