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/04 11:52:22 UTC

[jackrabbit-filevault-package-maven-plugin] branch feature/JCRVLT-567-move-validationcontexts created (now c7d5060)

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

kwin pushed a change to branch feature/JCRVLT-567-move-validationcontexts
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git.


      at c7d5060  JCRVLT-567 move validationcontext implementations to FileVault validation

This branch includes the following new commits:

     new c7d5060  JCRVLT-567 move validationcontext implementations to FileVault validation

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[jackrabbit-filevault-package-maven-plugin] 01/01: JCRVLT-567 move validationcontext implementations to FileVault validation

Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c7d5060fbb81728fac62def6f835e4eab0add960
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Thu Nov 4 12:52:13 2021 +0100

    JCRVLT-567 move validationcontext implementations to FileVault
    validation
---
 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..a54ca29 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.5-SNAPSHOT</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()));
     }
 }