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

khmarbaise pushed a commit to branch MSHARED-680
in repository https://gitbox.apache.org/repos/asf/maven-artifact-transfer.git

commit 3507d8139bc0defb0da9aa932d9da23cff9aff2c
Author: Karl Heinz Marbaise <khmarba...@apache.org>
AuthorDate: Fri Feb 2 15:05:14 2018 +0100

    [MSHARED-680] - Add null check for DependencyResolver Interface
---
 .../internal/DefaultDependencyResolver.java        |  51 ++++++++-
 .../internal/DefaultDependencyResolverTest.java    | 118 +++++++++++++++++++++
 2 files changed, 164 insertions(+), 5 deletions(-)

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 a58a80a..4db1828 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 @@ public class DefaultDependencyResolver
                                                          
Collection<Dependency> coordinates,
                                                          
Collection<Dependency> managedDependencies,
                                                          TransformableFilter 
filter )
-                                                             throws 
DependencyResolverException
+        throws DependencyResolverException
     {
         try
         {
@@ -70,8 +70,9 @@ public class DefaultDependencyResolver
     @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 @@ public class DefaultDependencyResolver
             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 @@ public class DefaultDependencyResolver
     {
         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/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:khmarba...@apache.org";>khmaba...@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 );
+    }
+
+}

-- 
To stop receiving notification emails like this one, please contact
khmarba...@apache.org.

Reply via email to