[MSHARED-680] - Add null check for DependencyResolver/DependencyCollector/ProjectDeployer Interfaces
diff --git a/.gitignore b/.gitignore
index d0d7222..3578f45 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,5 +12,6 @@
.DS_Store
/bootstrap
/dependencies.xml
+/dependency-reduced-pom.xml
.java-version
dependency-reduced-pom.xml
diff --git a/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java b/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java
index c7d6783..ce996ed 100644
--- a/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/dependencies/collect/DependencyCollector.java
@@ -40,6 +40,8 @@
* @param root {@link Dependency}
* @return {@link CollectorResult}
* @throws DependencyCollectorException in case of an error.
+ * @throws IllegalArgumentException in case of parameter <code>buildingRequest</code> is <code>null</code> or
+ * parameter <code>root</code> is <code>null</code>.
*/
CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Dependency root )
throws DependencyCollectorException;
@@ -50,6 +52,8 @@
* @return {@link CollectorResult}
* @throws DependencyCollectorException in case of an error which can be a component lookup error or
* an error while trying to look up the dependencies.
+ * @throws IllegalArgumentException in case of parameter <code>buildingRequest</code> is <code>null</code> or
+ * parameter <code>root</code> is <code>null</code>.
*/
CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
throws DependencyCollectorException;
@@ -60,6 +64,8 @@
* @return {@link CollectorResult}
* @throws DependencyCollectorException in case of an error which can be a component lookup error or
* an error while trying to look up the dependencies.
+ * @throws IllegalArgumentException in case of parameter <code>buildingRequest</code> is <code>null</code> or
+ * parameter <code>root</code> is <code>null</code>.
*/
CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
throws DependencyCollectorException;
diff --git a/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java b/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java
index c1cb5b1..26c7010 100644
--- a/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java
+++ b/src/main/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollector.java
@@ -36,18 +36,20 @@
/**
* This DependencyCollector passes the request to the proper Maven 3.x implementation
- *
+ *
* @author Robert Scholte
*/
@Component( role = DependencyCollector.class, hint = "default" )
class DefaultDependencyCollector implements DependencyCollector, Contextualizable
{
private PlexusContainer container;
-
+
@Override
public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Dependency root )
throws DependencyCollectorException
{
+ validateParameters( buildingRequest, root );
+
try
{
String hint = isMaven31() ? "maven31" : "maven3";
@@ -61,11 +63,13 @@
throw new DependencyCollectorException( e.getMessage(), e );
}
}
-
+
@Override
public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
throws DependencyCollectorException
{
+ validateParameters( buildingRequest, root );
+
try
{
String hint = isMaven31() ? "maven31" : "maven3";
@@ -79,11 +83,13 @@
throw new DependencyCollectorException( e.getMessage(), e );
}
}
-
+
@Override
public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
throws DependencyCollectorException
{
+ validateParameters( buildingRequest, root );
+
try
{
String hint = isMaven31() ? "maven31" : "maven3";
@@ -98,6 +104,41 @@
}
}
+ private void validateParameters( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
+ {
+ validateBuildingRequest( buildingRequest );
+ if ( root == null )
+ {
+ throw new IllegalArgumentException( "The parameter root is not allowed to be null." );
+ }
+ }
+
+ private void validateParameters( ProjectBuildingRequest buildingRequest, Dependency root )
+ {
+ validateBuildingRequest( buildingRequest );
+ if ( root == null )
+ {
+ throw new IllegalArgumentException( "The parameter root is not allowed to be null." );
+ }
+ }
+
+ private void validateParameters( ProjectBuildingRequest buildingRequest, Model root )
+ {
+ validateBuildingRequest( buildingRequest );
+ if ( root == null )
+ {
+ throw new IllegalArgumentException( "The parameter root is not allowed to be null." );
+ }
+ }
+
+ private void validateBuildingRequest( ProjectBuildingRequest buildingRequest )
+ {
+ if ( buildingRequest == null )
+ {
+ throw new IllegalArgumentException( "The parameter buildingRequest is not allowed to be null." );
+ }
+ }
+
/**
* @return true if the current Maven version is Maven 3.1.
*/
diff --git a/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java b/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java
index 74d94ad..1730637 100644
--- a/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java
+++ b/src/main/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolver.java
@@ -51,7 +51,7 @@
Collection<Dependency> coordinates,
Collection<Dependency> managedDependencies,
TransformableFilter filter )
- throws DependencyResolverException
+ throws DependencyResolverException
{
try
{
@@ -70,8 +70,9 @@
@Override
public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
DependableCoordinate coordinate, TransformableFilter filter )
- throws DependencyResolverException
+ throws DependencyResolverException
{
+ validateParameters( buildingRequest, coordinate, filter );
try
{
String hint = isMaven31() ? "maven31" : "maven3";
@@ -85,12 +86,13 @@
throw new DependencyResolverException( e.getMessage(), e );
}
}
-
+
@Override
- public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest,
- Model model, TransformableFilter filter )
+ public Iterable<ArtifactResult> resolveDependencies( ProjectBuildingRequest buildingRequest, Model model,
+ TransformableFilter filter )
throws DependencyResolverException
{
+ validateParameters( buildingRequest, model, filter );
try
{
String hint = isMaven31() ? "maven31" : "maven3";
@@ -138,4 +140,43 @@
{
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
}
+
+ private void validateParameters( ProjectBuildingRequest buildingRequest, DependableCoordinate coordinate,
+ TransformableFilter filter )
+ {
+ validateBuildingRequest( buildingRequest );
+ if ( coordinate == null )
+ {
+ throw new IllegalArgumentException( "The parameter coordinate is not allowed to be null." );
+ }
+ if ( filter == null )
+ {
+ throw new IllegalArgumentException( "The parameter filter is not allowed to be null." );
+ }
+
+ }
+
+ private void validateParameters( ProjectBuildingRequest buildingRequest, Model model,
+ TransformableFilter filter )
+ {
+ validateBuildingRequest( buildingRequest );
+ if ( model == null )
+ {
+ throw new IllegalArgumentException( "The parameter model is not allowed to be null." );
+ }
+ if ( filter == null )
+ {
+ throw new IllegalArgumentException( "The parameter filter is not allowed to be null." );
+ }
+
+ }
+
+ private void validateBuildingRequest( ProjectBuildingRequest buildingRequest )
+ {
+ if ( buildingRequest == null )
+ {
+ throw new IllegalArgumentException( "The parameter buildingRequest is not allowed to be null." );
+ }
+ }
+
}
diff --git a/src/main/java/org/apache/maven/shared/project/deploy/ProjectDeployer.java b/src/main/java/org/apache/maven/shared/project/deploy/ProjectDeployer.java
index 2c4519b..b09adeb 100644
--- a/src/main/java/org/apache/maven/shared/project/deploy/ProjectDeployer.java
+++ b/src/main/java/org/apache/maven/shared/project/deploy/ProjectDeployer.java
@@ -21,6 +21,7 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.deploy.ArtifactDeployerException;
import org.apache.maven.shared.project.NoFileAssignedException;
/**
@@ -55,11 +56,12 @@
* @param request {@link ProjectDeployerRequest}
* @param artifactRepository {@link ArtifactRepository}
* @throws NoFileAssignedException In case of missing file which has not been assigned to project.
- * @throws IllegalArgumentException in case of artifact is not correctly assigned.
+ * @throws ArtifactDeployerException in case of artifact could not correctly deployed.
+ * @throws IllegalArgumentException in case <code>buildingRequest</code> is <code>null</code>, <code>request</code>
+ * is <code>null</code> or <code>artifactRepository</code> is <code>null</code>.
*/
void deploy( ProjectBuildingRequest buildingRequest, ProjectDeployerRequest request,
- ArtifactRepository artifactRepository )
- throws NoFileAssignedException, IllegalArgumentException;
-
+ ArtifactRepository artifactRepository )
+ throws NoFileAssignedException, ArtifactDeployerException;
}
diff --git a/src/main/java/org/apache/maven/shared/project/deploy/internal/DefaultProjectDeployer.java b/src/main/java/org/apache/maven/shared/project/deploy/internal/DefaultProjectDeployer.java
index f000ddc..74049be 100644
--- a/src/main/java/org/apache/maven/shared/project/deploy/internal/DefaultProjectDeployer.java
+++ b/src/main/java/org/apache/maven/shared/project/deploy/internal/DefaultProjectDeployer.java
@@ -54,24 +54,19 @@
private ArtifactDeployer deployer;
/**
- * This will deploy a single project which may contain several artifacts into the appropriate remote repository.
- *
- * @param buildingRequest {@link ProjectBuildingRequest}
- * @param request {@link ProjectDeployerRequest}
- * @param artifactRepository {@link ArtifactRepository}
- * @throws IllegalArgumentException in case of artifact is not correctly assigned.
- * @throws NoFileAssignedException In case no file has been assigned to main file.
+ * {@inheritDoc}
*/
- public void deploy( ProjectBuildingRequest buildingRequest, ProjectDeployerRequest request,
+ public void deploy( ProjectBuildingRequest buildingRequest, ProjectDeployerRequest projectDeployerRequest,
ArtifactRepository artifactRepository )
- throws NoFileAssignedException, IllegalArgumentException
+ throws NoFileAssignedException, IllegalArgumentException, ArtifactDeployerException
{
+ validateParameters( buildingRequest, projectDeployerRequest, artifactRepository );
- Artifact artifact = request.getProject().getArtifact();
- String packaging = request.getProject().getPackaging();
- File pomFile = request.getProject().getFile();
+ Artifact artifact = projectDeployerRequest.getProject().getArtifact();
+ String packaging = projectDeployerRequest.getProject().getPackaging();
+ File pomFile = projectDeployerRequest.getProject().getFile();
- List<Artifact> attachedArtifacts = request.getProject().getAttachedArtifacts();
+ List<Artifact> attachedArtifacts = projectDeployerRequest.getProject().getAttachedArtifacts();
// Deploy the POM
boolean isPomArtifact = "pom".equals( packaging );
@@ -85,54 +80,68 @@
artifact.addMetadata( metadata );
}
- if ( request.isUpdateReleaseInfo() )
+ // FIXME: It does not make sense to set an artifact explicitly to a "Release"
+ // cause this should be choosen only by the not existing of "-SNAPSHOT" in the
+ // version.
+ if ( projectDeployerRequest.isUpdateReleaseInfo() )
{
artifact.setRelease( true );
}
artifact.setRepository( artifactRepository );
- int retryFailedDeploymentCount = request.getRetryFailedDeploymentCount();
+ int retryFailedDeploymentCount = projectDeployerRequest.getRetryFailedDeploymentCount();
- try
+ List<Artifact> deployableArtifacts = new ArrayList<Artifact>();
+ if ( isPomArtifact )
{
- List<Artifact> deployableArtifacts = new ArrayList<Artifact>();
- if ( isPomArtifact )
+ deployableArtifacts.add( artifact );
+ }
+ else
+ {
+ File file = artifact.getFile();
+
+ if ( file != null && file.isFile() )
{
deployableArtifacts.add( artifact );
}
+ else if ( !attachedArtifacts.isEmpty() )
+ {
+ // TODO: Reconsider this exception? Better Exception type?
+ throw new NoFileAssignedException( "The packaging plugin for this project did not assign "
+ + "a main file to the project but it has attachments. Change packaging to 'pom'." );
+ }
else
{
- File file = artifact.getFile();
-
- if ( file != null && file.isFile() )
- {
- deployableArtifacts.add( artifact );
- }
- else if ( !attachedArtifacts.isEmpty() )
- {
- // TODO: Reconsider this exception? Better Exception type?
- throw new NoFileAssignedException( "The packaging plugin for this project did not assign "
- + "a main file to the project but it has attachments. Change packaging to 'pom'." );
- }
- else
- {
- // TODO: Reconsider this exception? Better Exception type?
- throw new NoFileAssignedException( "The packaging for this project did not assign "
- + "a file to the build artifact" );
- }
+ // TODO: Reconsider this exception? Better Exception type?
+ throw new NoFileAssignedException( "The packaging for this project did not assign "
+ + "a file to the build artifact" );
}
-
- for ( Artifact attached : attachedArtifacts )
- {
- deployableArtifacts.add( attached );
- }
-
- deploy( buildingRequest, deployableArtifacts, artifactRepository, retryFailedDeploymentCount );
}
- catch ( ArtifactDeployerException e )
+
+ for ( Artifact attached : attachedArtifacts )
{
- throw new IllegalArgumentException( e.getMessage(), e );
+ deployableArtifacts.add( attached );
+ }
+
+ deploy( buildingRequest, deployableArtifacts, artifactRepository, retryFailedDeploymentCount );
+ }
+
+ private void validateParameters( ProjectBuildingRequest buildingRequest,
+ ProjectDeployerRequest projectDeployerRequest,
+ ArtifactRepository artifactRepository )
+ {
+ if ( buildingRequest == null )
+ {
+ throw new IllegalArgumentException( "The parameter buildingRequest is not allowed to be null." );
+ }
+ if ( projectDeployerRequest == null )
+ {
+ throw new IllegalArgumentException( "The parameter projectDeployerRequest is not allowed to be null." );
+ }
+ if ( artifactRepository == null )
+ {
+ throw new IllegalArgumentException( "The parameter artifactRepository is not allowed to be null." );
}
}
diff --git a/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java b/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java
index 0ddc46c..0fab22e 100644
--- a/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java
+++ b/src/main/java/org/apache/maven/shared/project/install/ProjectInstaller.java
@@ -54,15 +54,15 @@
* installer.install( session.getProjectBuildingRequest(), pir );
* </pre>
*
- * To set a different local repository than the current one in the Maven session, you can inject an instance of
- * the <code>RepositoryManager</code> and set the path to the local repository, called
- * <code>localRepositoryPath</code>, as such:
+ * To set a different local repository than the current one in the Maven session, you can inject an instance of the
+ * <code>RepositoryManager</code> and set the path to the local repository, called <code>localRepositoryPath</code>,
+ * as such:
*
* <pre class="java">
- * @Component
- * private RepositoryManager repositoryManager;
+ * @Component
+ * private RepositoryManager repositoryManager;
*
- * buildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepositoryPath );
+ * buildingRequest = repositoryManager.setLocalRepositoryBasedir( buildingRequest, localRepositoryPath );
* </pre>
*
* @param projectBuildingRequest {@link ProjectBuildingRequest}
@@ -74,6 +74,6 @@
* parameter <code>projectInstallerRequest</code> is <code>null</code>.
*/
void install( ProjectBuildingRequest projectBuildingRequest, ProjectInstallerRequest projectInstallerRequest )
- throws IOException, ArtifactInstallerException, NoFileAssignedException, IllegalArgumentException;
+ throws IOException, ArtifactInstallerException, NoFileAssignedException;
}
diff --git a/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java b/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java
index 59664e3..8d643c3 100644
--- a/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java
+++ b/src/main/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstaller.java
@@ -71,7 +71,6 @@
public void install( ProjectBuildingRequest buildingRequest, ProjectInstallerRequest installerRequest )
throws IOException, ArtifactInstallerException, NoFileAssignedException, IllegalArgumentException
{
-
validateParameters( buildingRequest, installerRequest );
MavenProject project = installerRequest.getProject();
boolean createChecksum = installerRequest.isCreateChecksum();
@@ -157,7 +156,7 @@
throw new IllegalArgumentException( "The parameter installerRequest is not allowed to be null." );
}
}
-
+
/**
* Installs the checksums for the specified artifact if this has been enabled in the plugin configuration. This
* method creates checksums for files that have already been installed to the local repo to account for on-the-fly
diff --git a/src/test/java/org/apache/maven/shared/artifact/deploy/internal/DefaultArtifactDeployerTest.java b/src/test/java/org/apache/maven/shared/artifact/deploy/internal/DefaultArtifactDeployerTest.java
index cfd9587..5e17f60 100644
--- a/src/test/java/org/apache/maven/shared/artifact/deploy/internal/DefaultArtifactDeployerTest.java
+++ b/src/test/java/org/apache/maven/shared/artifact/deploy/internal/DefaultArtifactDeployerTest.java
@@ -64,9 +64,10 @@
public void deployShouldReturnIllegalArgumentExceptionForSecondParameterWithNull()
throws ArtifactDeployerException
{
+ ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
+
thrown.expect( IllegalArgumentException.class );
thrown.expectMessage( "The parameter mavenArtifacts is not allowed to be null." );
- ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
dap.deploy( pbr, null );
}
@@ -74,9 +75,10 @@
public void deployShouldReturnIllegalArgumentExceptionForSecondParameterWithEmpty()
throws ArtifactDeployerException
{
+ ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
+
thrown.expect( IllegalArgumentException.class );
thrown.expectMessage( "The collection mavenArtifacts is not allowed to be empty." );
- ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
dap.deploy( pbr, Collections.<Artifact>emptyList() );
}
@@ -94,9 +96,10 @@
public void deploy3ParametersShouldReturnIllegalArgumentExceptionForSecondParameterWithNull()
throws ArtifactDeployerException
{
+ ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
+
thrown.expect( IllegalArgumentException.class );
thrown.expectMessage( "The parameter mavenArtifacts is not allowed to be null." );
- ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
dap.deploy( pbr, null, null );
}
@@ -104,9 +107,10 @@
public void deploy3ParametersShouldReturnIllegalArgumentExceptionForSecondParameterWithEmpty()
throws ArtifactDeployerException
{
+ ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
+
thrown.expect( IllegalArgumentException.class );
thrown.expectMessage( "The collection mavenArtifacts is not allowed to be empty." );
- ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
dap.deploy( pbr, null, Collections.<Artifact>emptyList() );
}
diff --git a/src/test/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstallerTest.java b/src/test/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstallerTest.java
index 144f33f..d26ed01 100644
--- a/src/test/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstallerTest.java
+++ b/src/test/java/org/apache/maven/shared/artifact/install/internal/DefaultArtifactInstallerTest.java
@@ -45,8 +45,7 @@
public ExpectedException thrown = ExpectedException.none();
@Test
- public void installShouldReturnIllegalArgumentExceptionForFirstParameterWithNull()
- throws ArtifactInstallerException
+ public void installShouldReturnIllegalArgumentExceptionForFirstParameterWithNull() throws IllegalArgumentException, ArtifactInstallerException
{
DefaultArtifactInstaller dai = new DefaultArtifactInstaller();
diff --git a/src/test/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollectorTest.java b/src/test/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollectorTest.java
new file mode 100644
index 0000000..5e48299
--- /dev/null
+++ b/src/test/java/org/apache/maven/shared/dependencies/collect/internal/DefaultDependencyCollectorTest.java
@@ -0,0 +1,115 @@
+package org.apache.maven.shared.dependencies.collect.internal;
+
+/*
+ * 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.
+ */
+
+import static org.mockito.Mockito.mock;
+
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.deploy.ArtifactDeployerException;
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
+import org.apache.maven.shared.dependencies.DependableCoordinate;
+import org.apache.maven.shared.dependencies.collect.DependencyCollector;
+import org.apache.maven.shared.dependencies.collect.DependencyCollectorException;
+import org.apache.maven.shared.dependencies.collect.internal.DefaultDependencyCollector;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class DefaultDependencyCollectorTest
+{
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ private DependencyCollector dc;
+
+ @Before
+ public void setUp()
+ {
+ dc = new DefaultDependencyCollector();
+ }
+
+ @Test
+ public void collectDependenciesWithDependableCoordinatShouldFailWithIAEWhenParameterBuildingRequestIsNull()
+ throws ArtifactDeployerException, ArtifactResolverException, DependencyCollectorException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter buildingRequest is not allowed to be null." );
+
+ dc.collectDependencies( null, (DependableCoordinate) null );
+ }
+
+ @Test
+ public void collectDependenciesWithDependableCoordinatShouldFailWithIAEWhenParameterRootIsNull()
+ throws ArtifactDeployerException, ArtifactResolverException, DependencyCollectorException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter root is not allowed to be null." );
+
+ ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+ dc.collectDependencies( request, (DependableCoordinate) null );
+ }
+
+ @Test
+ public void collectDependenciesWithDependencyShouldFailWithIAEWhenParameterBuildingRequestIsNull()
+ throws ArtifactDeployerException, ArtifactResolverException, DependencyCollectorException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter buildingRequest is not allowed to be null." );
+
+ dc.collectDependencies( null, (Dependency) null );
+ }
+
+ @Test
+ public void collectDependenciesWithDependencyShouldFailWithIAEWhenParameterRootIsNull()
+ throws ArtifactDeployerException, ArtifactResolverException, DependencyCollectorException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter root is not allowed to be null." );
+
+ ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+ dc.collectDependencies( request, (Dependency) null );
+ }
+
+ @Test
+ public void collectDependenciesWithModelShouldFailWithIAEWhenParameterBuildingRequestIsNull()
+ throws ArtifactDeployerException, ArtifactResolverException, DependencyCollectorException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter buildingRequest is not allowed to be null." );
+
+ dc.collectDependencies( null, (Model) null );
+ }
+
+ @Test
+ public void collectDependenciesWithModelShouldFailWithIAEWhenParameterRootIsNull()
+ throws ArtifactDeployerException, ArtifactResolverException, DependencyCollectorException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter root is not allowed to be null." );
+
+ ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+ dc.collectDependencies( request, (Model) null );
+ }
+
+}
diff --git a/src/test/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolverTest.java b/src/test/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolverTest.java
new file mode 100644
index 0000000..2a512ac
--- /dev/null
+++ b/src/test/java/org/apache/maven/shared/dependencies/resolve/internal/DefaultDependencyResolverTest.java
@@ -0,0 +1,118 @@
+package org.apache.maven.shared.dependencies.resolve.internal;
+
+/*
+ * 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.
+ */
+
+import static org.mockito.Mockito.mock;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.dependencies.DependableCoordinate;
+import org.apache.maven.shared.dependencies.resolve.DependencyResolver;
+import org.apache.maven.shared.dependencies.resolve.DependencyResolverException;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+/**
+ * Check the parameter contracts which have been made based on the interface {@link DependencyResolver}.
+ *
+ * @author Karl Heinz Marbaise <a href="mailto:khmarbaise@apache.org">khmabaise@apache.org</a>
+ */
+public class DefaultDependencyResolverTest
+{
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ private DependencyResolver dr;
+
+ @Before
+ public void setUp()
+ {
+ dr = new DefaultDependencyResolver();
+ }
+
+ @Test
+ public void resolveDependenciesWithDependableCoordinatShouldFailWithIAEWhenParameterBuildingRequestIsNull()
+ throws DependencyResolverException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter buildingRequest is not allowed to be null." );
+
+ dr.resolveDependencies( null, (DependableCoordinate) null, null );
+ }
+
+ @Test
+ public void resolveDependenciesWithDependableCoordinatShouldFailWithIAEWhenParameterCoordinateIsNull()
+ throws DependencyResolverException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter coordinate is not allowed to be null." );
+
+ ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+ dr.resolveDependencies( request, (DependableCoordinate) null, null );
+ }
+
+ @Test
+ public void resolveDependenciesWithDependableCoordinatShouldFailWithIAEWhenParameterFilterIsNull()
+ throws DependencyResolverException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter filter is not allowed to be null." );
+
+ ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+ DependableCoordinate dc = mock( DependableCoordinate.class );
+ dr.resolveDependencies( request, dc, null );
+ }
+
+ @Test
+ public void resolveDependenciesWithModelShouldFailWithIAEWhenParameterBuildingRequestIsNull()
+ throws DependencyResolverException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter buildingRequest is not allowed to be null." );
+
+ dr.resolveDependencies( null, (Model) null, null );
+ }
+
+ @Test
+ public void resolveDependenciesWithModelShouldFailWithIAEWhenParameterModelIsNull()
+ throws DependencyResolverException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter model is not allowed to be null." );
+
+ ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+ dr.resolveDependencies( request, (Model) null, null );
+ }
+
+ @Test
+ public void resolveDependenciesWithModelShouldFailWithIAEWhenParameterFilterIsNull()
+ throws DependencyResolverException
+ {
+ thrown.expect( IllegalArgumentException.class );
+ thrown.expectMessage( "The parameter filter is not allowed to be null." );
+
+ ProjectBuildingRequest request = mock( ProjectBuildingRequest.class );
+ Model model = mock( Model.class );
+ dr.resolveDependencies( request, model, null );
+ }
+
+}
diff --git a/src/test/java/org/apache/maven/shared/dependency/DefaultDependencyCoordinateTest.java b/src/test/java/org/apache/maven/shared/dependency/DefaultDependencyCoordinateTest.java
index a52d055..f3d00ea 100644
--- a/src/test/java/org/apache/maven/shared/dependency/DefaultDependencyCoordinateTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/DefaultDependencyCoordinateTest.java
@@ -18,6 +18,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
import static org.junit.Assert.assertEquals;
import org.apache.maven.shared.dependencies.DefaultDependableCoordinate;
diff --git a/src/test/java/org/apache/maven/shared/project/deploy/internal/DefaultProjectDeployerTest.java b/src/test/java/org/apache/maven/shared/project/deploy/internal/DefaultProjectDeployerTest.java
new file mode 100644
index 0000000..2d54a24
--- /dev/null
+++ b/src/test/java/org/apache/maven/shared/project/deploy/internal/DefaultProjectDeployerTest.java
@@ -0,0 +1,82 @@
+package org.apache.maven.shared.project.deploy.internal;
+
+/*
+ * 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.
+ */
+
+import static org.mockito.Mockito.mock;
+
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.artifact.deploy.ArtifactDeployerException;
+import org.apache.maven.shared.project.NoFileAssignedException;
+import org.apache.maven.shared.project.deploy.ProjectDeployer;
+import org.apache.maven.shared.project.deploy.ProjectDeployerRequest;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+/**
+ * Check the parameter contracts which have been made based on the interface {@link ProjectDeployer}.
+ *
+ * @author Karl Heinz Marbaise <a href="mailto:khmarbaise@apache.org">khmabaise@apache.org</a>
+ */
+public class DefaultProjectDeployerTest
+{
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void deployShouldFailWithIAEWhileBuildingRequestIsNull()
+ throws IllegalArgumentException, NoFileAssignedException, ArtifactDeployerException
+ {
+ ProjectDeployer dpi = new DefaultProjectDeployer();
+
+ expectedException.expect( IllegalArgumentException.class );
+ expectedException.expectMessage( "The parameter buildingRequest is not allowed to be null." );
+
+ dpi.deploy( null, null, null );
+ }
+
+ @Test
+ public void deployShouldFailWithIAEWhileProjectDeployerRequestIsNull()
+ throws IllegalArgumentException, NoFileAssignedException, ArtifactDeployerException
+ {
+ ProjectDeployer dpi = new DefaultProjectDeployer();
+
+ expectedException.expect( IllegalArgumentException.class );
+ expectedException.expectMessage( "The parameter projectDeployerRequest is not allowed to be null." );
+
+ ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
+ dpi.deploy( pbr, null, null );
+ }
+
+ @Test
+ public void deployShouldFailWithIAEWhileArtifactRepositoryIsNull()
+ throws IllegalArgumentException, NoFileAssignedException, ArtifactDeployerException
+ {
+ ProjectDeployer dpi = new DefaultProjectDeployer();
+
+ expectedException.expect( IllegalArgumentException.class );
+ expectedException.expectMessage( "The parameter artifactRepository is not allowed to be null." );
+
+ ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
+ ProjectDeployerRequest pdr = mock( ProjectDeployerRequest.class );
+ dpi.deploy( pbr, pdr, null );
+ }
+
+}
diff --git a/src/test/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstallerTest.java b/src/test/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstallerTest.java
index 7d1cc8e..f5d65a3 100644
--- a/src/test/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstallerTest.java
+++ b/src/test/java/org/apache/maven/shared/project/install/internal/DefaultProjectInstallerTest.java
@@ -38,32 +38,33 @@
*/
public class DefaultProjectInstallerTest
{
+
@Rule
- public ExpectedException thrown = ExpectedException.none();
+ public ExpectedException expectedException = ExpectedException.none();
@Test
- public void installShouldReturnIllegalArgumentExceptionWhereBuildingRequestIsNull()
+ public void installShouldFailWithIAEWhileBuildingRequestIsNull()
throws IOException, ArtifactInstallerException, NoFileAssignedException
{
- DefaultProjectInstaller dai = new DefaultProjectInstaller();
+ ProjectInstaller dpi = new DefaultProjectInstaller();
- thrown.expect( IllegalArgumentException.class );
- thrown.expectMessage( "The parameter buildingRequest is not allowed to be null." );
- dai.install( null, null );
+ expectedException.expect( IllegalArgumentException.class );
+ expectedException.expectMessage( "The parameter buildingRequest is not allowed to be null." );
+
+ dpi.install( null, null );
}
@Test
- public void installShouldReturnIllegalArgumentExceptionWhereInstallerRequestIsNull()
+ public void installShouldFailWithIAEWhileProjectInstallerRequestIsNull()
throws IOException, ArtifactInstallerException, NoFileAssignedException
{
- DefaultProjectInstaller dai = new DefaultProjectInstaller();
+ ProjectInstaller dpi = new DefaultProjectInstaller();
- thrown.expect( IllegalArgumentException.class );
- thrown.expectMessage( "The parameter installerRequest is not allowed to be null." );
+ expectedException.expect( IllegalArgumentException.class );
+ expectedException.expectMessage( "The parameter installerRequest is not allowed to be null." );
ProjectBuildingRequest pbr = mock( ProjectBuildingRequest.class );
- dai.install( pbr, null );
+
+ dpi.install( pbr, null );
}
-
-
}