From: Brett Porter Date: Sat, 22 Jul 2006 15:04:41 +0000 (+0000) Subject: test and fix for inherited versions in the model causing indexing failures X-Git-Tag: archiva-0.9-alpha-1~765 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1c018926a66b4569511dcf9df8edfde7b4295def;p=archiva.git test and fix for inherited versions in the model causing indexing failures git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@424590 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java index da6bd6bb1..44c5196a0 100644 --- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java +++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java @@ -275,7 +275,17 @@ public class DefaultRepositoryIndexSearchLayer */ private SearchResult createSearchResult( Model model, String field, List searchResults ) { - int index = getListIndex( model.getGroupId(), model.getArtifactId(), model.getVersion(), searchResults ); + String groupId = model.getGroupId(); + if ( groupId == null ) + { + groupId = model.getParent().getGroupId(); + } + String version = model.getVersion(); + if ( version == null ) + { + version = model.getParent().getVersion(); + } + int index = getListIndex( groupId, model.getArtifactId(), version, searchResults ); SearchResult result; Map map; @@ -288,8 +298,8 @@ public class DefaultRepositoryIndexSearchLayer else { result = new SearchResult(); - result.setArtifact( factory.createBuildArtifact( model.getGroupId(), model.getArtifactId(), - model.getVersion(), model.getPackaging() ) ); + result.setArtifact( + factory.createBuildArtifact( groupId, model.getArtifactId(), version, model.getPackaging() ) ); map = new HashMap(); } diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java index 7396ecc02..81ff60492 100644 --- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java +++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/PomRepositoryIndex.java @@ -92,7 +92,7 @@ public class PomRepositoryIndex { deleteDocuments( getTermList( pomList ) ); } - catch( IOException e ) + catch ( IOException e ) { throw new RepositoryIndexException( "Failed to delete an index document", e ); } @@ -152,15 +152,29 @@ public class PomRepositoryIndex private Document createDocument( Model pom ) throws RepositoryIndexException { + String version = pom.getVersion(); + if ( version == null ) + { + // It was inherited + version = pom.getParent().getVersion(); + // TODO: do we need to use the general inheritence mechanism or do we only want to search within those defined in this pom itself? + // I think searching just this one is adequate, and it is only necessary to inherit the version and group ID [BP] + } + + String groupId = pom.getGroupId(); + if ( groupId == null ) + { + groupId = pom.getParent().getGroupId(); + } + Document doc = new Document(); doc.add( Field.Keyword( FLD_ID, POM + ":" + pom.getId() ) ); - doc.add( Field.Text( FLD_GROUPID, pom.getGroupId() ) ); + doc.add( Field.Text( FLD_GROUPID, groupId ) ); doc.add( Field.Text( FLD_ARTIFACTID, pom.getArtifactId() ) ); - doc.add( Field.Text( FLD_VERSION, pom.getVersion() ) ); + doc.add( Field.Text( FLD_VERSION, version ) ); doc.add( Field.Keyword( FLD_PACKAGING, pom.getPackaging() ) ); - Artifact artifact = - artifactFactory.createBuildArtifact( pom.getGroupId(), pom.getArtifactId(), pom.getVersion(), "pom" ); + Artifact artifact = artifactFactory.createBuildArtifact( groupId, pom.getArtifactId(), version, "pom" ); File pomFile = new File( repository.getBasedir(), repository.pathOf( artifact ) ); doc.add( Field.Text( FLD_SHA1, getChecksum( Digester.SHA1, pomFile.getAbsolutePath() ) ) ); doc.add( Field.Text( FLD_MD5, getChecksum( Digester.MD5, pomFile.getAbsolutePath() ) ) ); diff --git a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java index 6c6007012..e89d1c3bf 100644 --- a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java +++ b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java @@ -100,6 +100,43 @@ public class PomRepositoryIndexingTest } } + public void testInheritedFields() + throws Exception + { + RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE ); + Model pom = getPom( "test.inherited", "test-inherited", "1.0.15" ); + + PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository ); + indexer.indexPom( pom ); + + RepositoryIndexSearchLayer repoSearchLayer = + (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE ); + + // search version + Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "1.0.15" ); + List artifactList = repoSearchLayer.searchAdvanced( qry, indexer ); + assertEquals( 1, artifactList.size() ); + for ( Iterator iter = artifactList.iterator(); iter.hasNext(); ) + { + SearchResult result = (SearchResult) iter.next(); + Artifact artifact = result.getArtifact(); + assertEquals( "1.0.15", artifact.getVersion() ); + } + + // search group id + qry = new SinglePhraseQuery( RepositoryIndex.FLD_GROUPID, "test.inherited" ); + artifactList = repoSearchLayer.searchAdvanced( qry, indexer ); + assertEquals( 1, artifactList.size() ); + Iterator artifacts = artifactList.iterator(); + if ( artifacts.hasNext() ) + { + SearchResult result = (SearchResult) artifacts.next(); + Artifact artifact = result.getArtifact(); + assertEquals( "test.inherited", artifact.getGroupId() ); + } + + } + /** * Test the PomRepositoryIndex with DefaultRepositoryIndexSearcher using a single-phrase search. * diff --git a/maven-repository-indexer/src/test/repository/test/inherited/test-inherited/1.0.15/test-inherited-1.0.15.pom b/maven-repository-indexer/src/test/repository/test/inherited/test-inherited/1.0.15/test-inherited-1.0.15.pom new file mode 100644 index 000000000..19faa7910 --- /dev/null +++ b/maven-repository-indexer/src/test/repository/test/inherited/test-inherited/1.0.15/test-inherited-1.0.15.pom @@ -0,0 +1,11 @@ + + 4.0.0 + + test.inherited + 1.0.15 + test-inherited-parent + + + test-inherited + pom + \ No newline at end of file