mirror of https://github.com/apache/archiva.git
[MRM-1301] add back problem reporting for POM in the wrong location
git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/MRM-1025@891087 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0f4bec3049
commit
2a5c2bb81a
|
@ -140,15 +140,8 @@ public class Maven2RepositoryMetadataResolver
|
||||||
if ( !file.exists() )
|
if ( !file.exists() )
|
||||||
{
|
{
|
||||||
// TODO: an event mechanism would remove coupling to the problem reporting plugin
|
// TODO: an event mechanism would remove coupling to the problem reporting plugin
|
||||||
RepositoryProblemFacet problem = new RepositoryProblemFacet();
|
addProblemReport( repoId, namespace, projectId, projectVersion, "missing-pom",
|
||||||
problem.setProblem( "missing-pom" );
|
"The artifact's POM file '" + file + "' was missing" );
|
||||||
problem.setMessage( "The artifact's POM file '" + file + "' was missing" );
|
|
||||||
problem.setProject( projectId );
|
|
||||||
problem.setNamespace( namespace );
|
|
||||||
problem.setRepositoryId( repoId );
|
|
||||||
problem.setVersion( projectVersion );
|
|
||||||
|
|
||||||
metadataRepository.addMetadataFacet( repoId, problem );
|
|
||||||
|
|
||||||
// metadata could not be resolved
|
// metadata could not be resolved
|
||||||
return null;
|
return null;
|
||||||
|
@ -167,16 +160,34 @@ public class Maven2RepositoryMetadataResolver
|
||||||
}
|
}
|
||||||
catch ( ModelBuildingException e )
|
catch ( ModelBuildingException e )
|
||||||
{
|
{
|
||||||
// TODO: an event mechanism would remove coupling to the problem reporting plugin
|
addProblemReport( repoId, namespace, projectId, projectVersion, "invalid-pom",
|
||||||
RepositoryProblemFacet problem = new RepositoryProblemFacet();
|
"The artifact's POM file '" + file + "' was invalid: " + e.getMessage() );
|
||||||
problem.setProblem( "invalid-pom" );
|
|
||||||
problem.setMessage( "The artifact's POM file '" + file + "' was invalid: " + e.getMessage() );
|
|
||||||
problem.setProject( projectId );
|
|
||||||
problem.setNamespace( namespace );
|
|
||||||
problem.setRepositoryId( repoId );
|
|
||||||
problem.setVersion( projectVersion );
|
|
||||||
|
|
||||||
metadataRepository.addMetadataFacet( repoId, problem );
|
// metadata could not be resolved
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the POM is in the correct location
|
||||||
|
boolean correctGroupId = namespace.equals( model.getGroupId() );
|
||||||
|
boolean correctArtifactId = projectId.equals( model.getArtifactId() );
|
||||||
|
boolean correctVersion = projectVersion.equals( model.getVersion() );
|
||||||
|
if ( !correctGroupId || !correctArtifactId || !correctVersion )
|
||||||
|
{
|
||||||
|
StringBuilder message = new StringBuilder( "Incorrect POM coordinates in '" + file + "':" );
|
||||||
|
if ( !correctGroupId )
|
||||||
|
{
|
||||||
|
message.append( "\nIncorrect group ID: " ).append( model.getGroupId() );
|
||||||
|
}
|
||||||
|
if ( !correctArtifactId )
|
||||||
|
{
|
||||||
|
message.append( "\nIncorrect artifact ID: " ).append( model.getArtifactId() );
|
||||||
|
}
|
||||||
|
if ( !correctVersion )
|
||||||
|
{
|
||||||
|
message.append( "\nIncorrect version: " ).append( model.getVersion() );
|
||||||
|
}
|
||||||
|
|
||||||
|
addProblemReport( repoId, namespace, projectId, projectVersion, "mislocated-pom", message.toString() );
|
||||||
|
|
||||||
// metadata could not be resolved
|
// metadata could not be resolved
|
||||||
return null;
|
return null;
|
||||||
|
@ -212,6 +223,21 @@ public class Maven2RepositoryMetadataResolver
|
||||||
return metadata;
|
return metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addProblemReport( String repoId, String namespace, String projectId, String projectVersion,
|
||||||
|
String problemId, String message )
|
||||||
|
{
|
||||||
|
// TODO: an event mechanism would remove coupling to the problem reporting plugin
|
||||||
|
RepositoryProblemFacet problem = new RepositoryProblemFacet();
|
||||||
|
problem.setProblem( problemId );
|
||||||
|
problem.setMessage( message );
|
||||||
|
problem.setProject( projectId );
|
||||||
|
problem.setNamespace( namespace );
|
||||||
|
problem.setRepositoryId( repoId );
|
||||||
|
problem.setVersion( projectVersion );
|
||||||
|
|
||||||
|
metadataRepository.addMetadataFacet( repoId, problem );
|
||||||
|
}
|
||||||
|
|
||||||
private List<org.apache.archiva.metadata.model.Dependency> convertDependencies( List<Dependency> dependencies )
|
private List<org.apache.archiva.metadata.model.Dependency> convertDependencies( List<Dependency> dependencies )
|
||||||
{
|
{
|
||||||
List<org.apache.archiva.metadata.model.Dependency> l =
|
List<org.apache.archiva.metadata.model.Dependency> l =
|
||||||
|
|
|
@ -225,6 +225,22 @@ public class Maven2RepositoryMetadataResolverTest
|
||||||
assertEquals( "invalid-pom", facet.getProblem() );
|
assertEquals( "invalid-pom", facet.getProblem() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGetProjectVersionMetadataForMislocatedPom()
|
||||||
|
throws MetadataResolverException
|
||||||
|
{
|
||||||
|
assertTrue( metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryProblemFacet.FACET_ID ).isEmpty() );
|
||||||
|
|
||||||
|
ProjectVersionMetadata metadata =
|
||||||
|
resolver.getProjectVersion( TEST_REPO_ID, "com.example.test", "mislocated-pom", "1.0" );
|
||||||
|
assertNull( metadata );
|
||||||
|
|
||||||
|
assertFalse( metadataRepository.getMetadataFacets( TEST_REPO_ID, RepositoryProblemFacet.FACET_ID ).isEmpty() );
|
||||||
|
RepositoryProblemFacet facet =
|
||||||
|
(RepositoryProblemFacet) metadataRepository.getMetadataFacet( TEST_REPO_ID, RepositoryProblemFacet.FACET_ID,
|
||||||
|
"com.example.test/mislocated-pom/1.0" );
|
||||||
|
assertEquals( "mislocated-pom", facet.getProblem() );
|
||||||
|
}
|
||||||
|
|
||||||
public void testGetProjectVersionMetadataForMissingPom()
|
public void testGetProjectVersionMetadataForMissingPom()
|
||||||
throws MetadataResolverException
|
throws MetadataResolverException
|
||||||
{
|
{
|
||||||
|
@ -271,8 +287,8 @@ public class Maven2RepositoryMetadataResolverTest
|
||||||
{
|
{
|
||||||
assertEquals( Collections.<String>emptyList(), resolver.getProjects( TEST_REPO_ID, "com" ) );
|
assertEquals( Collections.<String>emptyList(), resolver.getProjects( TEST_REPO_ID, "com" ) );
|
||||||
assertEquals( Collections.<String>emptyList(), resolver.getProjects( TEST_REPO_ID, "com.example" ) );
|
assertEquals( Collections.<String>emptyList(), resolver.getProjects( TEST_REPO_ID, "com.example" ) );
|
||||||
assertEquals( Arrays.asList( "incomplete-metadata", "invalid-pom", "malformed-metadata", "missing-metadata" ),
|
assertEquals( Arrays.asList( "incomplete-metadata", "invalid-pom", "malformed-metadata", "mislocated-pom",
|
||||||
resolver.getProjects( TEST_REPO_ID, "com.example.test" ) );
|
"missing-metadata" ), resolver.getProjects( TEST_REPO_ID, "com.example.test" ) );
|
||||||
|
|
||||||
assertEquals( Collections.<String>emptyList(), resolver.getProjects( TEST_REPO_ID, "org" ) );
|
assertEquals( Collections.<String>emptyList(), resolver.getProjects( TEST_REPO_ID, "org" ) );
|
||||||
assertEquals( Arrays.asList( "apache" ), resolver.getProjects( TEST_REPO_ID, "org.apache" ) );
|
assertEquals( Arrays.asList( "apache" ), resolver.getProjects( TEST_REPO_ID, "org.apache" ) );
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!--
|
||||||
|
~ Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
~ or more contributor license agreements. See the NOTICE file
|
||||||
|
~ distributed with this work for additional information
|
||||||
|
~ regarding copyright ownership. The ASF licenses this file
|
||||||
|
~ to you under the Apache License, Version 2.0 (the
|
||||||
|
~ "License"); you may not use this file except in compliance
|
||||||
|
~ with the License. You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing,
|
||||||
|
~ software distributed under the License is distributed on an
|
||||||
|
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
~ KIND, either express or implied. See the License for the
|
||||||
|
~ specific language governing permissions and limitations
|
||||||
|
~ under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.example.test</groupId>
|
||||||
|
<artifactId>not-the-right-artifactId</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
</project>
|
Loading…
Reference in New Issue