From 4d70f30499df4159aa47d51d971d7fe810f4c8b9 Mon Sep 17 00:00:00 2001 From: "Maria Odea B. Ching" Date: Thu, 29 Jan 2009 06:14:42 +0000 Subject: [PATCH] [MRM-749] o added quick search implementation in NexusRepositorySearch o added tests git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/archiva-nexus-indexer@738766 13f79535-47bb-0310-9956-ffa450edef68 --- .../lucene/NexusIndexerConsumer.java | 3 +- .../indexer/search/NexusRepositorySearch.java | 64 +++++--- .../indexer/search/SearchResultHit.java | 1 + .../resources/META-INF/spring-context.xml | 10 ++ .../search/NexusRepositorySearchTest.java | 142 +++++++++++++++++- .../archiva-search/1.0/archiva-search-1.0.jar | Bin 0 -> 2518 bytes .../archiva-search/1.0/archiva-search-1.0.pom | 28 ++++ .../archiva-test/1.0/archiva-test-1.0.jar | Bin 0 -> 2471 bytes .../archiva-test/1.0/archiva-test-1.0.pom | 23 +++ .../archiva-test/2.0/archiva-test-2.0.jar | Bin 0 -> 2494 bytes .../archiva-test/2.0/archiva-test-2.0.pom | 28 ++++ 11 files changed, 279 insertions(+), 20 deletions(-) create mode 100644 archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml create mode 100644 archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar create mode 100644 archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom create mode 100644 archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar create mode 100644 archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.pom create mode 100644 archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar create mode 100644 archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.pom diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java index c5172e0ef..8a34836de 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java @@ -105,7 +105,8 @@ public class NexusIndexerConsumer File indexDirectory = null; if( indexDir != null && !"".equals( indexDir ) ) { - indexDirectory = new File( managedRepository, repository.getIndexDir() ); + //indexDirectory = new File( managedRepository, repository.getIndexDir() ); + indexDirectory = new File( repository.getIndexDir() ); } else { diff --git a/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java b/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java index 330b8b976..87bf9cad0 100644 --- a/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java +++ b/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java @@ -26,7 +26,9 @@ import java.util.Map; import java.util.Set; import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.BooleanClause.Occur; import org.apache.maven.archiva.configuration.ArchivaConfiguration; +import org.apache.maven.archiva.configuration.Configuration; import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; import org.apache.maven.archiva.indexer.search.SearchResultHit; import org.apache.maven.archiva.indexer.search.SearchResultLimits; @@ -69,15 +71,25 @@ public class NexusRepositorySearch // - regular search // - searching within search results // 2. consider pagination - + // 3. multiple repositories + BooleanQuery q = new BooleanQuery(); - // q.add( nexusIndexer.constructQuery( ArtifactInfo.GROUP_ID, "org.apache.archiva" ), Occur.SHOULD ); - // q.add( nexusIndexer.constructQuery( ArtifactInfo.ARTIFACT_ID, "archiva-index-methods-jar-test" ), Occur.SHOULD ); - + q.add( indexer.constructQuery( ArtifactInfo.GROUP_ID, term ), Occur.SHOULD ); + q.add( indexer.constructQuery( ArtifactInfo.ARTIFACT_ID, term ), Occur.SHOULD ); + q.add( indexer.constructQuery( ArtifactInfo.VERSION, term ), Occur.SHOULD ); + q.add( indexer.constructQuery( ArtifactInfo.PACKAGING, term ), Occur.SHOULD ); + + // TODO: what about class & package? + try { FlatSearchRequest request = new FlatSearchRequest( q ); FlatSearchResponse response = indexer.searchFlat( request ); + + if( response == null ) + { + return new SearchResults(); + } return convertToSearchResults( response ); } @@ -104,22 +116,31 @@ public class NexusRepositorySearch { try { - ManagedRepositoryConfiguration repoConfig = archivaConfig.getConfiguration().findManagedRepositoryById( repo ); - String indexDir = repoConfig.getIndexDir(); - File indexDirectory = null; - if( indexDir != null && !"".equals( indexDir ) ) + Configuration config = archivaConfig.getConfiguration(); + ManagedRepositoryConfiguration repoConfig = config.findManagedRepositoryById( repo ); + + if( repoConfig != null ) { - indexDirectory = new File( repoConfig.getLocation(), repoConfig.getIndexDir() ); + String indexDir = repoConfig.getIndexDir(); + File indexDirectory = null; + if( indexDir != null && !"".equals( indexDir ) ) + { + indexDirectory = new File( repoConfig.getIndexDir() ); + } + else + { + indexDirectory = new File( repoConfig.getLocation(), ".indexer" ); + } + + IndexingContext context = + indexer.addIndexingContext( repoConfig.getId(), repoConfig.getId(), new File( repoConfig.getLocation() ), + indexDirectory, null, null, NexusIndexer.FULL_INDEX ); + context.setSearchable( repoConfig.isScanned() ); } else { - indexDirectory = new File( repoConfig.getLocation(), ".indexer" ); + log.warn( "Repository '" + repo + "' not found in configuration." ); } - - IndexingContext context = - indexer.addIndexingContext( repoConfig.getId(), repoConfig.getId(), new File( repoConfig.getLocation() ), - indexDirectory, null, null, NexusIndexer.FULL_INDEX ); - context.setSearchable( repoConfig.isScanned() ); } catch ( UnsupportedExistingLuceneIndexException e ) { @@ -138,12 +159,14 @@ public class NexusRepositorySearch private SearchResults convertToSearchResults( FlatSearchResponse response ) { + // TODO: paginate! + SearchResults results = new SearchResults(); Set artifactInfos = response.getResults(); for ( ArtifactInfo artifactInfo : artifactInfos ) { - String id = artifactInfo.groupId + ":" + artifactInfo.artifactId; + String id = artifactInfo.groupId + ":" + artifactInfo.artifactId; Map hitsMap = results.getHitsMap(); SearchResultHit hit = hitsMap.get( id ); @@ -158,12 +181,17 @@ public class NexusRepositorySearch hit.setGroupId( artifactInfo.groupId ); hit.setRepositoryId( artifactInfo.repository ); hit.setUrl( artifactInfo.repository + "/" + artifactInfo.fname ); - hit.addVersion( artifactInfo.version ); + if( !hit.getVersions().contains( artifactInfo.version ) ) + { + hit.addVersion( artifactInfo.version ); + } } results.addHit( id, hit ); } - + + results.setTotalHits( results.getHitsMap().size() ); + return results; } diff --git a/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResultHit.java b/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResultHit.java index b1e707e54..590280b2d 100644 --- a/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResultHit.java +++ b/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/search/SearchResultHit.java @@ -44,6 +44,7 @@ public class SearchResultHit // Advanced hit, reference to artifactId. private String artifactId; + // TODO: remove/deprecate this field! private String version = ""; private String repositoryId = ""; diff --git a/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml new file mode 100644 index 000000000..1befe9479 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java b/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java index cc08bc834..2c6bc3c93 100644 --- a/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java +++ b/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java @@ -19,9 +19,25 @@ package org.apache.archiva.indexer.search; * under the License. */ +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.io.FileUtils; import org.apache.maven.archiva.configuration.ArchivaConfiguration; +import org.apache.maven.archiva.configuration.Configuration; +import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration; +import org.apache.maven.archiva.indexer.search.SearchResultHit; +import org.apache.maven.archiva.indexer.search.SearchResults; import org.codehaus.plexus.spring.PlexusInSpringTestCase; +import org.easymock.MockControl; +import org.sonatype.nexus.index.ArtifactContext; +import org.sonatype.nexus.index.ArtifactContextProducer; import org.sonatype.nexus.index.NexusIndexer; +import org.sonatype.nexus.index.context.IndexingContext; +import org.sonatype.nexus.index.context.UnsupportedExistingLuceneIndexException; +import org.sonatype.nexus.index.creator.IndexerEngine; public class NexusRepositorySearchTest extends PlexusInSpringTestCase @@ -32,20 +48,144 @@ public class NexusRepositorySearchTest private NexusIndexer indexer; + private IndexingContext context; + + private IndexerEngine indexerEngine; + + private ArtifactContextProducer artifactContextProducer; + + private MockControl archivaConfigControl; + + private Configuration config; + + private final static String TEST_REPO = "nexus-search-test-repo"; + @Override protected void setUp() throws Exception { super.setUp(); - indexer = ( NexusIndexer )lookup( NexusIndexer.class ); + indexer = ( NexusIndexer ) lookup( NexusIndexer.class ); + archivaConfigControl = MockControl.createControl( ArchivaConfiguration.class ); + + archivaConfig = ( ArchivaConfiguration ) archivaConfigControl.getMock(); + search = new NexusRepositorySearch( indexer, archivaConfig ); + + indexerEngine = ( IndexerEngine ) lookup( IndexerEngine.class ); + + artifactContextProducer = ( ArtifactContextProducer ) lookup( ArtifactContextProducer.class ); + + config = new Configuration(); + + ManagedRepositoryConfiguration repositoryConfig = new ManagedRepositoryConfiguration(); + repositoryConfig.setId( TEST_REPO ); + repositoryConfig.setLocation( getBasedir() + "/target/test-classes/" + TEST_REPO ); + repositoryConfig.setLayout( "default" ); + repositoryConfig.setName( "Nexus Search Test Repository" ); + repositoryConfig.setScanned( true ); + repositoryConfig.setSnapshots( false ); + repositoryConfig.setReleases( true ); + + config.addManagedRepository( repositoryConfig ); + + createIndex(); + } + + @Override + protected void tearDown() + throws Exception + { + FileUtils.deleteDirectory( new File( getBasedir(), "/target/test-classes/"+ TEST_REPO + "/.indexer" ) ); + assertFalse( new File( getBasedir(), "/target/test-classes/"+ TEST_REPO + "/.indexer" ).exists() ); + + super.tearDown(); + } + + private void createIndex() + throws IOException, UnsupportedExistingLuceneIndexException + { + context = + indexer.addIndexingContext( TEST_REPO, TEST_REPO, new File( getBasedir(), "/target/test-classes/" + TEST_REPO ), + new File( getBasedir(), "/target/test-classes/" + TEST_REPO + "/.indexer"), null, null, NexusIndexer.FULL_INDEX ); + context.setSearchable( true ); + + indexerEngine.beginIndexing( context ); + + File artifactFile = + new File( getBasedir(), + "/target/test-classes/" + TEST_REPO + "/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar" ); + ArtifactContext ac = artifactContextProducer.getArtifactContext( context, artifactFile ); + indexerEngine.index( context, ac ); + + artifactFile = + new File( getBasedir(), + "/target/test-classes/" + TEST_REPO + "/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar" ); + ac = artifactContextProducer.getArtifactContext( context, artifactFile ); + indexerEngine.index( context, ac ); + + artifactFile = + new File( getBasedir(), + "/target/test-classes/" + TEST_REPO + "/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar" ); + ac = artifactContextProducer.getArtifactContext( context, artifactFile ); + indexerEngine.index( context, ac ); + + indexerEngine.endIndexing( context ); + + assertTrue( new File( getBasedir(), "/target/test-classes/"+ TEST_REPO + "/.indexer" ).exists() ); } public void testQuickSearch() throws Exception { + List selectedRepos = new ArrayList(); + selectedRepos.add( TEST_REPO ); + + archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config ); + + archivaConfigControl.replay(); + + SearchResults results = search.search( "user", selectedRepos, "archiva-search", null ); + + archivaConfigControl.verify(); + + assertNotNull( results ); + assertEquals( 1, results.getTotalHits() ); + + SearchResultHit hit = results.getHits().get( 0 ); + assertEquals( "org.apache.archiva", hit.getGroupId() ); + assertEquals( "archiva-search", hit.getArtifactId() ); + assertEquals( "1.0", hit.getVersions().get( 0 ) ); + assertEquals( "nexus-search-test-repo", hit.getRepositoryId() ); + + archivaConfigControl.reset(); + + archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config ); + + archivaConfigControl.replay(); + + results = search.search( "user", selectedRepos, "org.apache.archiva", null ); + + archivaConfigControl.verify(); + + assertNotNull( results ); + assertEquals( 2, results.getTotalHits() ); + + //TODO: search for class & package names + } + + public void testArtifactFoundInMultipleRepositories() + throws Exception + { + // there should be no duplicates in the search result hit + // TODO: [BROWSE] in artifact info from browse, display all the repositories where the artifact is found + } + + public void testNoMatchFound() + throws Exception + { } diff --git a/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..9c16c3ced6b7754ecdbeee212a80ea136794efbc GIT binary patch literal 2518 zcmWIWW@h1H0D+b{)>dE!l;8x?zOEsTx}JV+`TwB2$6V)j%wQtjyQZ z&(qB{I7H9a?X&Nh(>~t1dKY=Ub+yi&Ilno`;EM5sr$stm=T7K&>pF3;KUoqsMNIpE zO2y7O-9f_MLBS<+wbqKra0^W~4ic>qJ{|NKDC1>Z>~-Lg=E};K0(D*M!oAE+6a?Eg zS2#Pz>BZ?Wz?{XvP>bez7NE28i_+l^$5g=$RgqYbn4FP{N1-sP!o;HFjLfn`JQ}31 zYbZ_yX@%?K0K1vzZc|S@BLjme69a=XUVV-Q1$xOjiN(dWfhWC~9R+H0r$x&6`uM~o z3;73Lu&nCfQ0i!RZ1u3Ic;z$8v;F1^9~OIWelEE`4EA1YX0kL1ym8*UE}Uf+~pd+qB0hqz3`*lsO{6D`*#y`?mXeYT0K)mX~Fi+Wg;uiwoRT`>pxl5Wc~xj zv*EE$#ucsq7<81eNBg04cHUypAtGr*pfYb4*)l^*dP2{QwO1v$nQ zjkO(xD||P*_2bi?_UsAGHnLN1cc3)T^Ta>o?zg_tEtBq((agH=rIP2H-nHL8_zC6A5Gh~dT^C%T@cR1kKQo%U z*9E17Pl*ZJQoGbEy8H>Rm&L(3E5bhAu?;()P1jcTDrZ-wqy8?p_(on0HD8;xoo_UZLT=xFT4qmANRg_&U}s1UFpi3W*q+?DDk#b?NG&SKOf3#B^FQmY>!suA8|bkr48yJNfY}sODw%N!anBxOSpn;LWh9_FkV%ii~N_**_(%1dqv+=CH*L80l z51(@$SG^(S_7g81t&=|9K6;F&oLWn|gB^81g)k$N2s7?V1n3(e5MX%g2%_N`2%!yo zr2=+~$D_M1*C literal 0 HcmV?d00001 diff --git a/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom new file mode 100644 index 000000000..b0d983fde --- /dev/null +++ b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-search/1.0/archiva-search-1.0.pom @@ -0,0 +1,28 @@ + + 4.0.0 + org.apache.archiva + archiva-search + jar + 1.0 + Archiva Search + http://archiva.apache.org + + + junit + junit + 3.8.1 + test + + + commons-lang + commons-lang + 2.3 + + + log4j + log4j + 1.2.8 + + + diff --git a/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..843ee45bc229121bf85c3531d43f432926cee586 GIT binary patch literal 2471 zcmWIWW@h1H0DdE!l;8x?zOEsTx}JV+`TwB2$6V)j%wQtjyQZ z&(qB{I7H9a?X&Nh(>~t1dKY=Ub+yi&Ilno`;EM5sr$stm=T7K&>pF3;KUoqsMNIpE zO2y7O-9f_MLBS<+wbqKra0^W~4ic>qJ{|NKDC1>Z>~-Lg=E};K0(D*M!oAE+6a?Eg zS2#Pz>BZ?Wz?{XvP=Mxo7NE28i_+l^$5g=$RgqYbn4FP{N1-sP!o;HFjLfn`JQ^gh zYbZ%AE`jUf0K51@;2f8DMg|5$CI$vYJh~hU3iOh55{rv#15bM$4iK=tZuiOH)~#E= zR$RRnDr({_F6ziqC>XNhO6%&|Unbp~^rX#1^p8%g#*Pone>4gwiFE~>N#ZL`dv<2# zo%i$4>pv-Iau#;Yky^2EUGnK8W@RRCvN8-r&ZlZj=5C95zT*6Z{XxzL1By~K@|GWT zIKp4^KsdN?%IUv${i(CgpR6&OB;2-aanku`g5~aqo^7>Hae9Iu32m%Z+H4gNA+PZ)$e_OoDQh4^u9LPCSVwFj7@QG-nGcTtcdi4o*Vdqu>;Qy zxrt?|dGM&j%sNV#ih*fS50cXKFcT2EW%@+vhnk~{maZ~^Ibn+6KVxfPx{_dKU@#-y zu!8(ty^7qN-r&=DhZO|&eAm{w&wK81fa{d%r7mkjR=(1Wdbrj(>i|>I^7{A#p4rh} zSEQ|t&z!r_wDp=y;Ey+Jq~6Z^)cpNzTM(;k7L#rVvruyOuV0%MX9rC(lAkhr^W^=n z_PzJq@3kv6Qt!p_yx(GaS{h5rsIZ?E@=j3tObUBX+|Cuuub--O$RFd5uPB*! zQBbh-;3Mv=mDzPHr(fKcIQec!&8SN&Cop_PtBZJ} z;TKzm#hZ>#o>q5B|KegT@uOQ}gkqD|pHPnUiBh@6d09zbi|4r_@7&`%r~6AR?J09* z-nCD3NR^RKow~mL;IghK}kRthsmyXs+A8#K$##2tMCEh{Z z-aCNaU}O?u#$7)E{Q?963~wDlG(3MGv|+C=K#DGesD}WMjt4*{NC&*&$E^`m^g{qhBPTFNA!$V9W84OSsse-oR@e=I zW?+~p*sBJZIZGM~@R$OxD3AjXy?6nYWe@=J6(6vSfJXtWWP`Z{d)bE2Y>lZIYe|RO zJWyGOFt3^@^Uz8@nBg1@*vdYb@k<&{kZw4%Bt(QJ_6&`%Bb*f@G_eE-iU&Y;AhLIW SH!B;+I36G@20B;{%mV;&)9LsC literal 0 HcmV?d00001 diff --git a/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.pom b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.pom new file mode 100644 index 000000000..0b037a3a5 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/1.0/archiva-test-1.0.pom @@ -0,0 +1,23 @@ + + 4.0.0 + org.apache.archiva + archiva-test + jar + 1.0 + archiva-test + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + commons-lang + commons-lang + 2.3 + + + diff --git a/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar b/archiva-modules/archiva-base/archiva-indexer/src/test/resources/nexus-search-test-repo/org/apache/archiva/archiva-test/2.0/archiva-test-2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..e904a17c4e6ca8a7462d0f09df8cb9fdf70eefee GIT binary patch literal 2494 zcmWIWW@h1H00D`))>dE!l;8x?zOEsTx}JV+`TWlR>wB2$6V)j%wQtjyQZ z&(qB{I7H9a?X&Nh(>~t1dKY=Ub+yi&Ilno`;EM5sr$stm=T7K&>pF3;KUoqsMNIpE zO2y7O-9f_MLBS<+wbqKra0^W~4ic>qJ{|NKDC1>Z>~-Lg=E};K0(D*M!oAE+6a?Eg zS2#Pz>BZ?Wz?{XvAd2RC7NE28i_+l^$5g=$RgqYbn4FP{N1-sP!o;HFjLfn`JQ^gh zYbZ%AE`jUf0K51@;2f8DMg|5$CI$vYJh~hU3iOh55{rv#15bM$4iK=tZuiOH)~#E= zR$RRnDr({_F6ziqC>XNhO6%&|Unbp~^rX#1^p8%g#*Pone>4gwiFE~>N#ZL`dv<2# zo%i$4>pv-Iau#;Yky^2EUGnK8W@RRCvN8-r&ZlZj=5C95zT*6Z{XxzL1By~K@|GWT zIKp4^KsdN?%IUv${i(CgpR6&OB;2-aanku`g5~aqo^7>Hae9Iu32m%Z+H4gNA+PZ)$e_OoDQh4^u9LPCSVwFj7@QG-nGcTtcdi4o*Vdqu>;Qy zxrt?|dGM&j%sNV#ih*fS50cXKFcT2EW%@+vhnk~{macBKSzB@b7gGxYrmGdq3=C$Z z8&;5?t5=bmGdK8T-eCoiJZ=ng&YoK|@tK`{#O-y8B1@8mCQQ4)%U*{O}ujV-GpJ|Ejs_|8H?!Q#-K71v%}u?xF#Ge)L!8T&m!7X3Nb1#^GS3wV93 zQD4Vc>|o0WtMreKS$f$uDpCjMUz~h*L&d|zC7xWKEQk3onpgAgWBhc-)4W2%F2`?` z@{3IU)e)ytj;cI8Q=!mmr##_`?L3w3i`yFgPVsaV?p4^u65nKPApezP%feNu7IA(x zeVGqR=d7#=;as>xQ%dRe$r;HHU2d^P#HId?S6Y{M>T#-Y=Cg#a?z2+(@~_l-e|&#r zGd#&aiqXyoT~~8}u~P`dw&cZ9K~a7|YEemMYH@Ix|5I))7R*vkgKU z_G$#A7zCCyssl;5Hl#`gVFG4(4l3~>0A%q#AQMvlBbTTL}+5q& + 4.0.0 + org.apache.archiva + archiva-test + jar + 2.0 + Archiva Test + http://archiva.apache.org + + + junit + junit + 3.8.1 + test + + + commons-lang + commons-lang + 2.3 + + + commons-io + commons-io + 1.4 + + + -- 2.39.5