From e4da1fa6f5a56bbf63bae1de7d1b7dd0ae0375aa Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Date: Wed, 5 Nov 2014 20:11:08 +0100 Subject: [PATCH 1/4] [MRM-1390] Add REST methods to search JCR store for generic metadata and properties Added REST methods: artifactsByProjectVersionMetadata/{key}/{value} artifactsByMetadata/{key}/{value} artifactsByProperty/{key}/{value} searchArtifacts/{text} searchArtifacts/{key}/{text} In JCR implementation When searching into any property (key = nil) we can't do exact searchs --- .../apt/adminguide/webservices/rest.apt.vm | 33 +++ .../rest/api/services/BrowseService.java | 98 +++++++ .../rest/services/AbstractRestService.java | 8 +- .../rest/services/DefaultBrowseService.java | 102 +++++++ .../services/AbstractArchivaRestTest.java | 2 + .../rest/services/BrowseServiceTest.java | 86 ++++++ .../metadata/metadata-repository-api/pom.xml | 5 + .../AbstractMetadataRepository.java | 35 +++ .../repository/MetadataRepository.java | 63 +++++ .../AbstractMetadataRepositoryTest.java | 262 ++++++++++++++++-- .../plugins/metadata-store-cassandra/pom.xml | 5 + .../CassandraMetadataRepository.java | 37 +++ .../CassandraMetadataRepositoryTest.java | 105 ++++++- .../plugins/metadata-store-file/pom.xml | 5 + .../file/FileMetadataRepository.java | 35 +++ .../file/FileMetadataRepositoryTest.java | 97 +++++++ .../plugins/metadata-store-jcr/pom.xml | 10 + .../repository/jcr/JcrMetadataRepository.java | 112 +++++++- 18 files changed, 1069 insertions(+), 31 deletions(-) diff --git a/archiva-docs/src/site/apt/adminguide/webservices/rest.apt.vm b/archiva-docs/src/site/apt/adminguide/webservices/rest.apt.vm index 91471710b4..874c3eaf2b 100644 --- a/archiva-docs/src/site/apt/adminguide/webservices/rest.apt.vm +++ b/archiva-docs/src/site/apt/adminguide/webservices/rest.apt.vm @@ -75,6 +75,39 @@ Using REST Services To know all the possible options, you can refer to the javadoc of SearchRequest class. +* Browse Service + + Get a Browse Service Client : + +%{snippet|id=cxf-browseservice-creation|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java} + + Get artifacts based on project version metadata, generic metadata added previously in Archiva : + +%{snippet|id=get-artifacts-by-project-version-metadata|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java} + + Get artifacts based on the artifact properties : + +%{snippet|id=get-artifacts-by-metadata|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java} + + + Get artifacts based on the project properties from POM : + +%{snippet|id=get-artifacts-by-property|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java} + + + Searching by properties and metadata : + +%{snippet|id=search-artifacts-by-field|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java} + +%{snippet|id=search-artifacts|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java} + + + + Get Search + +%{snippet|id=quick-search|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java} + + Dependencies to add in order to use those REST Services %{snippet|id=rest-dependencies|ignoreDownloadError=true|url=https://raw.githubusercontent.com/apache/archiva/master/pom.xml} diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java index 5cd0f50b9a..777d15d90f 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java @@ -231,4 +231,102 @@ Boolean artifactAvailable( @PathParam( "g" ) String groupId, @PathParam( "a" ) S @RedbackAuthorization(noPermission = true, noRestriction = true) List getArtifacts( @PathParam("r") String repositoryId ) throws ArchivaRestServiceException; + + /** + * Return List of artifacts from this repository with project version level metadata key matching value. If + * repository is not provided the search runs in all repositories. + * + * @param key + * @param value + * @param repositoryId + * @return + * @throws ArchivaRestServiceException + * @since 2.2 + */ + @Path( "artifactsByProjectVersionMetadata/{key}/{value}" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @RedbackAuthorization( noPermission = true, noRestriction = true ) + List getArtifactsByProjectVersionMetadata( @PathParam( "key" ) String key, @PathParam( "value" ) String value, + @QueryParam("repositoryId") String repositoryId ) + throws ArchivaRestServiceException; + + /** + * Return List of artifacts from this repository with artifact metadata key matching value. + * If repository is not provided the search runs in all repositories. + * + * @param key + * @param value + * @param repositoryId + * @return + * @throws ArchivaRestServiceException + * @since 2.2 + */ + @Path( "artifactsByMetadata/{key}/{value}" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @RedbackAuthorization( noPermission = true, noRestriction = true ) + List getArtifactsByMetadata( @PathParam( "key" ) String key, @PathParam( "value" ) String value, + @QueryParam("repositoryId") String repositoryId ) + throws ArchivaRestServiceException; + + /** + * Return List of artifacts from this repository with property key matching value. + * If repository is not provided the search runs in all repositories. + * + * @param key + * @param value + * @param repositoryId + * @return + * @throws ArchivaRestServiceException + * @since 2.2 + */ + @Path( "artifactsByProperty/{key}/{value}" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @RedbackAuthorization( noPermission = true, noRestriction = true ) + List getArtifactsByProperty( @PathParam( "key" ) String key, @PathParam( "value" ) String value, + @QueryParam("repositoryId") String repositoryId ) + throws ArchivaRestServiceException; + + /** + * Search artifacts with any property matching text. If repository is not provided the search runs in all + * repositories. If exact is true only the artifacts whose property match exactly are returned. + * + * @param text + * @param repositoryId + * @param exact + * @return + * @throws ArchivaRestServiceException + * @since 2.2 + */ + @Path( "searchArtifacts/{text}" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @RedbackAuthorization( noPermission = true, noRestriction = true ) + List searchArtifacts( @PathParam( "text" ) String text, + @QueryParam( "repositoryId" ) String repositoryId, + @QueryParam( "exact" ) Boolean exact ) + throws ArchivaRestServiceException; + + /** + * Search artifacts with the property specified by key matching text. If repository is not provided the search runs + * in all repositories. If exact is true only the artifacts whose property match exactly are returned. + * + * @param key + * @param text + * @param repositoryId + * @param exact + * @return + * @throws ArchivaRestServiceException + * @since 2.2 + */ + @Path( "searchArtifacts/{key}/{text}" ) + @GET + @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } ) + @RedbackAuthorization( noPermission = true, noRestriction = true ) + List searchArtifacts( @PathParam( "key" ) String key, @PathParam( "text" ) String text, + @QueryParam( "repositoryId" ) String repositoryId, + @QueryParam( "exact" ) Boolean exact ) + throws ArchivaRestServiceException; } diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java index b0107cc384..2282959b32 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java @@ -62,6 +62,7 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; + import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -322,9 +323,14 @@ protected List buildArtifacts( List artifactMetadata for ( ArtifactMetadata artifact : artifactMetadatas ) { + String repoId = repositoryId != null ? repositoryId : artifact.getRepositoryId(); + if ( repoId == null ) { + throw new IllegalStateException( "Repository Id is null" ); + } + ArtifactBuilder builder = new ArtifactBuilder().forArtifactMetadata( artifact ).withManagedRepositoryContent( - repositoryContentFactory.getManagedRepositoryContent( repositoryId ) ); + repositoryContentFactory.getManagedRepositoryContent( repoId ) ); Artifact art = builder.build(); art.setUrl( getArtifactUrl( art, repositoryId ) ); artifacts.add( art ); diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java index c7af0fece4..5e5a4654b5 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java @@ -941,6 +941,66 @@ public List getArtifacts( String repositoryId ) } } + @Override + public List getArtifactsByProjectVersionMetadata( String key, String value, String repositoryId ) + throws ArchivaRestServiceException + { + RepositorySession repositorySession = repositorySessionFactory.createSession(); + try + { + List artifactMetadatas = repositorySession.getRepository().getArtifactsByProjectVersionMetadata( key, value, repositoryId ); + return buildArtifacts( artifactMetadatas, repositoryId ); + } + catch ( MetadataRepositoryException e ) + { + throw new ArchivaRestServiceException( e.getMessage(), e ); + } + finally + { + repositorySession.close(); + } + } + + @Override + public List getArtifactsByMetadata( String key, String value, String repositoryId ) + throws ArchivaRestServiceException + { + RepositorySession repositorySession = repositorySessionFactory.createSession(); + try + { + List artifactMetadatas = repositorySession.getRepository().getArtifactsByMetadata( key, value, repositoryId ); + return buildArtifacts( artifactMetadatas, repositoryId ); + } + catch ( MetadataRepositoryException e ) + { + throw new ArchivaRestServiceException( e.getMessage(), e ); + } + finally + { + repositorySession.close(); + } + } + + @Override + public List getArtifactsByProperty( String key, String value, String repositoryId ) + throws ArchivaRestServiceException + { + RepositorySession repositorySession = repositorySessionFactory.createSession(); + try + { + List artifactMetadatas = repositorySession.getRepository().getArtifactsByProperty( key, value, repositoryId ); + return buildArtifacts( artifactMetadatas, repositoryId ); + } + catch ( MetadataRepositoryException e ) + { + throw new ArchivaRestServiceException( e.getMessage(), e ); + } + finally + { + repositorySession.close(); + } + } + @Override public Boolean importMetadata( MetadataAddRequest metadataAddRequest, String repositoryId ) throws ArchivaRestServiceException @@ -959,6 +1019,48 @@ public Boolean importMetadata( MetadataAddRequest metadataAddRequest, String rep return result; } + @Override + public List searchArtifacts( String text, String repositoryId, Boolean exact ) + throws ArchivaRestServiceException + { + RepositorySession repositorySession = repositorySessionFactory.createSession(); + try + { + List artifactMetadatas = + repositorySession.getRepository().searchArtifacts( text, repositoryId, exact == null ? false : exact ); + return buildArtifacts( artifactMetadatas, repositoryId ); + } + catch ( MetadataRepositoryException e ) + { + throw new ArchivaRestServiceException( e.getMessage(), e ); + } + finally + { + repositorySession.close(); + } + } + + @Override + public List searchArtifacts( String key, String text, String repositoryId, Boolean exact ) + throws ArchivaRestServiceException + { + RepositorySession repositorySession = repositorySessionFactory.createSession(); + try + { + List artifactMetadatas = + repositorySession.getRepository().searchArtifacts( key, text, repositoryId, exact == null ? false : exact ); + return buildArtifacts( artifactMetadatas, repositoryId ); + } + catch ( MetadataRepositoryException e ) + { + throw new ArchivaRestServiceException( e.getMessage(), e ); + } + finally + { + repositorySession.close(); + } + } + //--------------------------- // internals //--------------------------- diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java index 310448015b..2453e6af8d 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java @@ -252,6 +252,7 @@ protected RedbackRuntimeConfigurationService getRedbackRuntimeConfigurationServi protected BrowseService getBrowseService( String authzHeader, boolean useXml ) { + // START SNIPPET: cxf-browseservice-creation BrowseService service = JAXRSClientFactory.create( getBaseUrl() + "/" + getRestServicesPath() + "/archivaServices/", BrowseService.class, @@ -274,6 +275,7 @@ protected BrowseService getBrowseService( String authzHeader, boolean useXml ) WebClient.client( service ).type( MediaType.APPLICATION_JSON_TYPE ); } return service; + // END SNIPPET: cxf-browseservice-creation } diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java index 99cb83b5db..9490cf6a6d 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java @@ -236,6 +236,92 @@ public void getArtifactDownloadInfos() } + @Test + public void getArtifactsByMetadata() + throws Exception + { + // START SNIPPET: get-artifacts-by-metadata + BrowseService browseService = getBrowseService( authorizationHeader, true ); + + List artifactDownloadInfos = browseService.getArtifactsByMetadata( "type", "pom", TEST_REPO_ID ); + + assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 11 ); + // END SNIPPET: get-artifacts-by-metadata + } + + + @Test + public void getArtifactsByProjectVersionMetadata() + throws Exception + { + // START SNIPPET: get-artifacts-by-project-version-metadata + BrowseService browseService = getBrowseService( authorizationHeader, true ); + + browseService.addMetadata( "commons-cli", "commons-cli", "1.0", "wine", "bordeaux", TEST_REPO_ID ); + + List artifactDownloadInfos = browseService.getArtifactsByProjectVersionMetadata( "wine", "bordeaux", TEST_REPO_ID ); + + assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 3 ); + // END SNIPPET: get-artifacts-by-project-version-metadata + } + + + @Test + public void getArtifactsByProjectVersionMetadataWithNoRepository() + throws Exception + { + BrowseService browseService = getBrowseService( authorizationHeader, true ); + + browseService.addMetadata( "commons-cli", "commons-cli", "1.0", "wine", "bordeaux", TEST_REPO_ID ); + + List artifactDownloadInfos = browseService.getArtifactsByProjectVersionMetadata( "wine", "bordeaux", null ); + + assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 3 ); + } + + + @Test + public void getArtifactsByProperty() + throws Exception + { + // START SNIPPET: get-artifacts-by-property + BrowseService browseService = getBrowseService( authorizationHeader, true ); + + List artifactDownloadInfos = browseService.getArtifactsByProperty( "org.name", "The Apache Software Foundation", TEST_REPO_ID ); + + assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 7 ); + // END SNIPPET: get-artifacts-by-property + } + + + @Test + public void searchArtifacts() + throws Exception + { + // START SNIPPET: search-artifacts + BrowseService browseService = getBrowseService( authorizationHeader, true ); + + List artifactDownloadInfos = browseService.searchArtifacts( "The Apache Software Foundation", TEST_REPO_ID, true ); + + assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 7 ); + // END SNIPPET: search-artifacts + } + + + @Test + public void searchArtifactsByField() + throws Exception + { + // START SNIPPET: search-artifacts-by-field + BrowseService browseService = getBrowseService( authorizationHeader, true ); + + List artifactDownloadInfos = browseService.searchArtifacts( "org.name", "The Apache Software Foundation", TEST_REPO_ID, true ); + + assertThat( artifactDownloadInfos ).isNotNull().isNotEmpty().hasSize( 7 ); + // END SNIPPET: search-artifacts-by-field + } + + @Test public void readArtifactContentText() throws Exception diff --git a/archiva-modules/metadata/metadata-repository-api/pom.xml b/archiva-modules/metadata/metadata-repository-api/pom.xml index 8cfd25d683..face82553a 100644 --- a/archiva-modules/metadata/metadata-repository-api/pom.xml +++ b/archiva-modules/metadata/metadata-repository-api/pom.xml @@ -67,6 +67,11 @@ assertj-core test + + org.apache.archiva + generic-metadata-support + test + diff --git a/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/AbstractMetadataRepository.java b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/AbstractMetadataRepository.java index 7372229bdb..8bec50167f 100644 --- a/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/AbstractMetadataRepository.java +++ b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/AbstractMetadataRepository.java @@ -124,6 +124,27 @@ public Collection getArtifactsByChecksum( String repositoryId, throw new UnsupportedOperationException(); } + @Override + public List getArtifactsByProjectVersionMetadata( String key , String value , String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException(); + } + + @Override + public List getArtifactsByMetadata( String key , String value , String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException(); + } + + @Override + public List getArtifactsByProperty( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException(); + } + @Override public void removeArtifact( String repositoryId, String namespace, String project, String version, String id ) throws MetadataRepositoryException @@ -277,4 +298,18 @@ public T obtainAccess( Class aClass ) throw new UnsupportedOperationException(); } + @Override + public List searchArtifacts( String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException(); + } + + @Override + public List searchArtifacts( String key, String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException(); + } + } diff --git a/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java index eb7648bdfe..421eccd918 100644 --- a/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java +++ b/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java @@ -102,6 +102,43 @@ Collection getRepositories() Collection getArtifactsByChecksum( String repositoryId, String checksum ) throws MetadataRepositoryException; + /** + * Get artifacts with a project version metadata key that matches the passed value. + * + * @param key + * @param value + * @param repositoryId can be null, meaning search in all repositories + * @return a list of artifacts + * @throws MetadataRepositoryException + */ + List getArtifactsByProjectVersionMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException; + + /** + * Get artifacts with an artifact metadata key that matches the passed value. + * + * @param key + * @param value + * @param repositoryId can be null, meaning search in all repositories + * @return a list of artifacts + * @throws MetadataRepositoryException + */ + List getArtifactsByMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException; + + /** + * Get artifacts with a property key that matches the passed value. + * Possible keys are 'scm.url', 'org.name', 'url', 'mailingList.0.name', 'license.0.name',... + * + * @param key + * @param value + * @param repositoryId can be null, meaning search in all repositories + * @return a list of artifacts + * @throws MetadataRepositoryException + */ + List getArtifactsByProperty( String key, String value, String repositoryId ) + throws MetadataRepositoryException; + void removeArtifact( String repositoryId, String namespace, String project, String version, String id ) throws MetadataRepositoryException; @@ -270,4 +307,30 @@ void close() T obtainAccess( Class aClass ) throws MetadataRepositoryException; + + /** + * Full text artifacts search. + * + * @param text + * @param repositoryId can be null to search in all repositories + * @param exact running an exact search, the value must exactly match the text. + * @return a list of artifacts + * @throws MetadataRepositoryException + */ + List searchArtifacts( String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException; + + /** + * Full text artifacts search inside the specified key. + * + * @param key search only inside this key + * @param text + * @param repositoryId can be null to search in all repositories + * @param exact running an exact search, the value must exactly match the text. + * @return a list of artifacts + * @throws MetadataRepositoryException + */ + List searchArtifacts( String key, String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException; + } diff --git a/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java b/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java index 221eae279a..75c961fbc2 100644 --- a/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java +++ b/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java @@ -19,7 +19,26 @@ * under the License. */ +import static org.assertj.core.api.Assertions.assertThat; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.TimeZone; + import junit.framework.TestCase; + +import org.apache.archiva.metadata.generic.GenericMetadataFacet; +import org.apache.archiva.metadata.generic.GenericMetadataFacetFactory; import org.apache.archiva.metadata.model.ArtifactMetadata; import org.apache.archiva.metadata.model.CiManagement; import org.apache.archiva.metadata.model.Dependency; @@ -41,22 +60,6 @@ import org.slf4j.LoggerFactory; import org.springframework.test.context.ContextConfiguration; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.TimeZone; - -import static org.assertj.core.api.Assertions.assertThat; - @RunWith( ArchivaSpringJUnit4ClassRunner.class ) @ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } ) public abstract class AbstractMetadataRepositoryTest @@ -76,6 +79,10 @@ public abstract class AbstractMetadataRepositoryTest private static final String TEST_PROJECT_VERSION_2_0 = "2.0"; + private static final String TEST_URL = "http://archiva.apache.org"; + + private static final Organization TEST_ORGANIZATION = new Organization( "Apache", "http://apache.org" ); + private static final String TEST_FACET_ID = "test-facet-id"; private static final String TEST_NAME = "test/name"; @@ -88,7 +95,9 @@ public abstract class AbstractMetadataRepositoryTest private static final String TEST_SHA1 = "2e5daf0201ddeb068a62d5e08da18657ab2c6be9"; - private static final String TEST_METADATA_VALUE = "test-metadata"; + private static final String TEST_METADATA_KEY = "testkey"; + + private static final String TEST_METADATA_VALUE = "testmetadata"; protected Logger log = LoggerFactory.getLogger( getClass() ); @@ -125,6 +134,10 @@ public MetadataFacet createMetadataFacet( String repositoryId, String name ) return new TestMetadataFacet( "", TEST_VALUE ); } } ); + + // for the getArtifactsByProjectVersionMetadata tests + factories.put( GenericMetadataFacet.FACET_ID, new GenericMetadataFacetFactory() ); + return factories; } @@ -301,10 +314,7 @@ public void testUpdateProjectVersionMetadataWithAllElements() tracker.setUrl( "issue tracker url" ); metadata.setIssueManagement( tracker ); - Organization org = new Organization(); - org.setName( "org name" ); - org.setUrl( "url" ); - metadata.setOrganization( org ); + metadata.setOrganization( TEST_ORGANIZATION ); License l = new License(); l.setName( "license name" ); @@ -341,8 +351,8 @@ public void testUpdateProjectVersionMetadataWithAllElements() assertEquals( "system", metadata.getIssueManagement().getSystem() ); assertEquals( "issue tracker url", metadata.getIssueManagement().getUrl() ); - assertEquals( "org name", metadata.getOrganization().getName() ); - assertEquals( "url", metadata.getOrganization().getUrl() ); + assertEquals( TEST_ORGANIZATION.getName(), metadata.getOrganization().getName() ); + assertEquals( TEST_ORGANIZATION.getUrl(), metadata.getOrganization().getUrl() ); assertEquals( 1, metadata.getMailingLists().size() ); MailingList retrievedMailingList = metadata.getMailingLists().get( 0 ); @@ -1192,6 +1202,72 @@ public void testGetArtifactsByChecksumNoResult() assertThat( artifactsByChecksum ).isNotNull().isEmpty(); } + @Test + public void testGetArtifactsByProjectVersionMetadata() + throws Exception + { + createArtifactWithGenericMetadataFacet( 10 ); + Collection artifactsByMetadata = + repository.getArtifactsByProjectVersionMetadata( TEST_METADATA_KEY, TEST_METADATA_VALUE, TEST_REPO_ID ); + assertThat( artifactsByMetadata ).hasSize( 1 ); + ArtifactMetadata artifactMetadata = artifactsByMetadata.iterator().next(); + assertThat( artifactMetadata.getId() ).isEqualTo( "projectId-1.0.jar" ); + assertThat( artifactMetadata.getSha1() ).isEqualTo( TEST_SHA1 ); + assertThat( artifactMetadata.getRepositoryId() ).isEqualTo( TEST_REPO_ID ); + } + + @Test + public void testGetArtifactsByProjectVersionMetadataNoRepository() + throws Exception + { + createArtifactWithGenericMetadataFacet(); + Collection artifactsByMetadata = + repository.getArtifactsByProjectVersionMetadata( TEST_METADATA_KEY, TEST_METADATA_VALUE, null ); + assertThat( artifactsByMetadata ).hasSize( 1 ); + assertThat( artifactsByMetadata.iterator().next().getRepositoryId() ).isNotNull().isNotEmpty(); + } + + @Test + public void testGetArtifactsByProjectVersionMetadataAllRepositories() + throws Exception + { + createArtifactWithGenericMetadataFacet(); + Collection artifactsByMetadata = + repository.getArtifactsByProjectVersionMetadata( TEST_METADATA_KEY, TEST_METADATA_VALUE, null ); + assertThat( artifactsByMetadata ).hasSize( 1 ); + } + + @Test + public void testGetArtifactsByMetadataAllRepositories() + throws Exception + { + createArtifactWithMavenArtifactFacet(); + Collection artifactsByMetadata = + repository.getArtifactsByMetadata( "foo", TEST_METADATA_VALUE, null ); + assertThat( artifactsByMetadata ).hasSize( 1 ); + ArtifactMetadata artifactMetadata = artifactsByMetadata.iterator().next(); + assertThat( artifactMetadata.getId() ).isEqualTo( "projectId-1.0.jar" ); + assertThat( artifactMetadata.getSha1() ).isEqualTo( TEST_SHA1 ); + assertThat( artifactMetadata.getRepositoryId() ).isEqualTo( TEST_REPO_ID ); + MetadataFacet facet = artifactMetadata.getFacet( TEST_FACET_ID ); + assertThat( facet ).isNotNull(); + assertThat( facet.toProperties() ).isEqualTo( Collections.singletonMap( "foo", TEST_METADATA_VALUE ) ); + } + + @Test + public void testGetArtifactsByPropertySingleResult() + throws Exception + { + createArtifactWithData(); + // only works on JCR implementation + // Collection artifactsByProperty = repository.getArtifactsByProperty( "org.name", TEST_ORGANIZATION.getName(), TEST_REPO_ID ); + Collection artifactsByProperty = repository.getArtifactsByProperty( "url", TEST_URL, TEST_REPO_ID ); + assertThat( artifactsByProperty ).hasSize( 1 ); + ArtifactMetadata artifactMetadata = artifactsByProperty.iterator().next(); + assertThat( artifactMetadata.getId() ).isEqualTo( "projectId-1.0.jar" ); + assertThat( artifactMetadata.getSha1() ).isEqualTo( TEST_SHA1 ); + assertThat( artifactMetadata.getRepositoryId() ).isEqualTo( TEST_REPO_ID ); + } @Test public void testDeleteRepository() @@ -1424,6 +1500,78 @@ public void testgetProjectReferences() } + @Test + public void testSearchArtifactsByKey() + throws Exception + { + createArtifactWithData(); + Collection artifactsByProperty = repository.searchArtifacts( "url", TEST_URL, TEST_REPO_ID, false ); + assertThat( artifactsByProperty ).isNotNull().isNotEmpty(); + } + + @Test + public void testSearchArtifactsByKeyExact() + throws Exception + { + createArtifactWithData(); + Collection artifactsByProperty = repository.searchArtifacts( "url", TEST_URL, TEST_REPO_ID, true ); + assertThat( artifactsByProperty ).isNotNull().isNotEmpty(); + artifactsByProperty = repository.searchArtifacts( "org.name", "pache", TEST_REPO_ID, true ); + assertThat( artifactsByProperty ).isNotNull().isEmpty(); + } + + @Test + public void testSearchArtifactsByFacetKey() + throws Exception + { + createArtifactWithGenericMetadataFacet(); + Collection artifactsByProperty = repository.searchArtifacts( TEST_METADATA_KEY, TEST_METADATA_VALUE, TEST_REPO_ID, false ); + assertThat( artifactsByProperty ).isNotNull().isNotEmpty(); + } + + @Test + public void testSearchArtifactsByFacetKeyAllRepos() + throws Exception + { + createArtifactWithGenericMetadataFacet(); + Collection artifactsByProperty = repository.searchArtifacts( TEST_METADATA_KEY, TEST_METADATA_VALUE, null, false ); + assertThat( artifactsByProperty ).isNotNull().isNotEmpty(); + } + + @Test + public void testSearchArtifactsFullText() + throws Exception + { + createArtifactWithGenericMetadataFacet(); + // only works in JCR + // Collection artifactsByProperty = repository.searchArtifacts( TEST_URL, TEST_REPO_ID, false ); + Collection artifactsByProperty = + repository.searchArtifacts( TEST_METADATA_VALUE, TEST_REPO_ID, false ); + assertThat( artifactsByProperty ).isNotNull().isNotEmpty(); + } + + @Test + public void testSearchArtifactsFullTextExact() + throws Exception + { + createArtifactWithGenericMetadataFacet(); + // only works in JCR + // Collection artifactsByProperty = repository.searchArtifacts( TEST_URL, TEST_REPO_ID, true ); + Collection artifactsByProperty = + repository.searchArtifacts( TEST_METADATA_VALUE, TEST_REPO_ID, true ); + assertThat( artifactsByProperty ).isNotNull().isNotEmpty(); + artifactsByProperty = repository.searchArtifacts( TEST_METADATA_VALUE.substring( 2 ), TEST_REPO_ID, true ); + assertThat( artifactsByProperty ).isNotNull().isEmpty(); + } + + @Test + public void testSearchArtifactsFullTextByFacet() + throws Exception + { + createArtifactWithGenericMetadataFacet(); + Collection artifactsByProperty = repository.searchArtifacts( TEST_METADATA_VALUE, TEST_REPO_ID, false ); + assertThat( artifactsByProperty ).isNotNull().isNotEmpty(); + } private static ProjectMetadata createProject() { @@ -1438,6 +1586,74 @@ private static ProjectMetadata createProject( String ns ) return project; } + private void createArtifactWithGenericMetadataFacet() + throws MetadataRepositoryException, MetadataResolutionException + { + createArtifactWithGenericMetadataFacet( 1 ); + } + + private void createArtifactWithGenericMetadataFacet( int artifacts ) + throws MetadataRepositoryException, MetadataResolutionException + { + MetadataFacet metadataFacet = new GenericMetadataFacet(); + Map properties = new HashMap<>(); + properties.put( TEST_METADATA_KEY, TEST_METADATA_VALUE ); + metadataFacet.fromProperties( properties ); + createArtifactWithFacet( artifacts, null, metadataFacet ); + } + + private void createArtifactWithMavenArtifactFacet() + throws MetadataRepositoryException, MetadataResolutionException + { + createArtifactWithMavenArtifactFacet( 1 ); + } + + private void createArtifactWithMavenArtifactFacet( int artifacts ) + throws MetadataRepositoryException, MetadataResolutionException + { + TestMetadataFacet facet = new TestMetadataFacet( TEST_METADATA_VALUE ); + createArtifactWithFacet( artifacts, facet, null ); + } + + private void createArtifactWithFacet( int artifacts, MetadataFacet artifactFacet, + MetadataFacet projectVersionMetadataFacet ) + throws MetadataRepositoryException, MetadataResolutionException + { + for ( int i = 0; i < artifacts; i++ ) + { + ArtifactMetadata artifact = createArtifact(); + if ( artifactFacet != null ) + { + artifact.addFacet( artifactFacet ); + } + repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); + } + if ( projectVersionMetadataFacet != null ) + { + ProjectVersionMetadata metadata = + repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); + metadata.addFacet( projectVersionMetadataFacet ); + metadata.setOrganization( TEST_ORGANIZATION ); + metadata.setUrl( TEST_URL ); + repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata ); + } + repository.save(); + } + + private void createArtifactWithData() + throws MetadataRepositoryException, MetadataResolutionException + { + ArtifactMetadata artifact = createArtifact(); + repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact ); + ProjectVersionMetadata metadata = + repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ); + metadata.setOrganization( TEST_ORGANIZATION ); + metadata.setUrl( TEST_URL ); + + repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata ); + repository.save(); + } + private static ArtifactMetadata createArtifact() { return createArtifact( "jar" ); diff --git a/archiva-modules/plugins/metadata-store-cassandra/pom.xml b/archiva-modules/plugins/metadata-store-cassandra/pom.xml index 6a8072c87a..83a6b17105 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/pom.xml +++ b/archiva-modules/plugins/metadata-store-cassandra/pom.xml @@ -130,6 +130,11 @@ spring-test test + + org.apache.archiva + generic-metadata-support + test + org.assertj assertj-core diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java index f58b429b99..779c19f1c5 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java @@ -21,6 +21,7 @@ import com.google.common.base.Predicate; import com.google.common.collect.Iterables; + import me.prettyprint.cassandra.serializers.LongSerializer; import me.prettyprint.cassandra.serializers.StringSerializer; import me.prettyprint.cassandra.service.template.ColumnFamilyResult; @@ -37,6 +38,7 @@ import me.prettyprint.hector.api.mutation.Mutator; import me.prettyprint.hector.api.query.QueryResult; import me.prettyprint.hector.api.query.RangeSlicesQuery; + import org.apache.archiva.configuration.ArchivaConfiguration; import org.apache.archiva.metadata.model.ArtifactMetadata; import org.apache.archiva.metadata.model.CiManagement; @@ -67,6 +69,7 @@ import org.slf4j.LoggerFactory; import javax.persistence.PersistenceException; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -1823,6 +1826,26 @@ public Collection getArtifactsByChecksum( final String reposit return artifactMetadataMap.values(); } + @Override + public List getArtifactsByProjectVersionMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "not yet implemented in Cassandra backend" ); + } + + @Override + public List getArtifactsByMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "not yet implemented in Cassandra backend" ); + } + + @Override + public List getArtifactsByProperty( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "getArtifactsByProperty not yet implemented in Cassandra backend" ); + } @Override public void removeArtifact( final String repositoryId, final String namespace, final String project, @@ -2174,4 +2197,18 @@ protected ModelMapper getModelMapper() { return ModelMapperHolder.MODEL_MAPPER; } + + @Override + public List searchArtifacts( String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "searchArtifacts not yet implemented in Cassandra backend" ); + } + + @Override + public List searchArtifacts( String key, String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "searchArtifacts not yet implemented in Cassandra backend" ); + } } diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java b/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java index c26a660e88..97b3718f7c 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java @@ -19,21 +19,19 @@ * under the License. */ -import org.apache.archiva.metadata.model.MailingList; import org.apache.archiva.metadata.model.MetadataFacetFactory; import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest; import org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel; import org.apache.commons.io.FileUtils; import org.junit.After; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import javax.inject.Inject; import javax.inject.Named; + import java.io.File; -import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @@ -44,8 +42,6 @@ public class CassandraMetadataRepositoryTest extends AbstractMetadataRepositoryTest { - private Logger logger = LoggerFactory.getLogger( getClass() ); - @Inject @Named(value = "archivaEntityManagerFactory#cassandra") CassandraArchivaManager cassandraArchivaManager; @@ -73,6 +69,103 @@ public void setUp() clearReposAndNamespace( cassandraArchivaManager ); } + @Override + @Ignore + public void testGetArtifactsByProjectVersionMetadata() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByProjectVersionMetadataNoRepository() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByProjectVersionMetadataAllRepositories() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByMetadataAllRepositories() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByPropertySingleResult() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByKey() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByKeyExact() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsFullText() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsFullTextExact() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByFacetKeyAllRepos() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByFacetKey() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsFullTextByFacet() + throws Exception + { + // TODO not implemented + } + + /** * ensure all dependant tables are cleaned up (mailinglist, license, dependencies) * diff --git a/archiva-modules/plugins/metadata-store-file/pom.xml b/archiva-modules/plugins/metadata-store-file/pom.xml index ae161cd016..87b5c3e136 100644 --- a/archiva-modules/plugins/metadata-store-file/pom.xml +++ b/archiva-modules/plugins/metadata-store-file/pom.xml @@ -61,6 +61,11 @@ ${project.version} test + + org.apache.archiva + generic-metadata-support + test + org.apache.logging.log4j log4j-jcl diff --git a/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java b/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java index e04c7d3bf9..cca21bcd4c 100644 --- a/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java +++ b/archiva-modules/plugins/metadata-store-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java @@ -778,6 +778,27 @@ private void getArtifactsByChecksum( List artifacts, String re } } + @Override + public List getArtifactsByProjectVersionMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "not yet implemented in File backend" ); + } + + @Override + public List getArtifactsByMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "not yet implemented in File backend" ); + } + + @Override + public List getArtifactsByProperty( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "getArtifactsByProperty not yet implemented in File backend" ); + } + private File getMetadataDirectory( String repoId, String facetId ) { return new File( getBaseDirectory( repoId ), "facets/" + facetId ); @@ -1296,4 +1317,18 @@ private void getArtifacts( List artifacts, String repoId, Stri } } } + + @Override + public List searchArtifacts( String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "searchArtifacts not yet implemented in File backend" ); + } + + @Override + public List searchArtifacts( String key, String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + throw new UnsupportedOperationException( "searchArtifacts not yet implemented in File backend" ); + } } diff --git a/archiva-modules/plugins/metadata-store-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java b/archiva-modules/plugins/metadata-store-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java index df97f2e8c8..aa589f3f2f 100644 --- a/archiva-modules/plugins/metadata-store-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java +++ b/archiva-modules/plugins/metadata-store-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java @@ -26,6 +26,7 @@ import org.apache.archiva.configuration.Configuration; import org.apache.archiva.configuration.ManagedRepositoryConfiguration; import org.junit.Before; +import org.junit.Ignore; import java.io.File; import java.util.Map; @@ -55,6 +56,102 @@ public void setUp() this.repository = new FileMetadataRepository( factories, config ); } + @Override + @Ignore + public void testGetArtifactsByProjectVersionMetadata() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByProjectVersionMetadataNoRepository() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByProjectVersionMetadataAllRepositories() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByMetadataAllRepositories() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testGetArtifactsByPropertySingleResult() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByKey() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByKeyExact() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsFullText() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsFullTextExact() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByFacetKeyAllRepos() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsByFacetKey() + throws Exception + { + // TODO not implemented + } + + @Override + @Ignore + public void testSearchArtifactsFullTextByFacet() + throws Exception + { + // TODO not implemented + } + protected static ArchivaConfiguration createTestConfiguration( File directory ) { ArchivaConfiguration config = mock( ArchivaConfiguration.class ); diff --git a/archiva-modules/plugins/metadata-store-jcr/pom.xml b/archiva-modules/plugins/metadata-store-jcr/pom.xml index e139e8a4d2..9102982580 100644 --- a/archiva-modules/plugins/metadata-store-jcr/pom.xml +++ b/archiva-modules/plugins/metadata-store-jcr/pom.xml @@ -78,6 +78,16 @@ spring-test test + + org.apache.archiva + generic-metadata-support + test + + + org.apache.archiva + maven2-repository + test + org.assertj assertj-core diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java index fbfe373868..d4c79b6039 100644 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java +++ b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java @@ -40,6 +40,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.collect.ImmutableMap; + import javax.jcr.NamespaceRegistry; import javax.jcr.Node; import javax.jcr.NodeIterator; @@ -55,6 +57,9 @@ import javax.jcr.nodetype.NodeTypeTemplate; import javax.jcr.query.Query; import javax.jcr.query.QueryResult; +import javax.jcr.query.Row; +import javax.jcr.query.RowIterator; + import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -66,6 +71,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; /** @@ -711,6 +717,83 @@ public List getArtifactsByChecksum( String repositoryId, Strin return artifacts; } + private List runJcrQuery( String repositoryId, String q, Map bindings ) + throws MetadataRepositoryException + { + List artifacts; + if ( repositoryId != null ) + { + q += " AND ISDESCENDANTNODE(artifact,'/" + getRepositoryContentPath( repositoryId ) + "')"; + } + + log.info( "Running JCR Query: {}", q ); + + try + { + Query query = getJcrSession().getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 ); + ValueFactory valueFactory = getJcrSession().getValueFactory(); + for ( Entry entry : bindings.entrySet() ) + { + query.bindValue( entry.getKey(), valueFactory.createValue( entry.getValue() ) ); + } + long start = Calendar.getInstance().getTimeInMillis(); + QueryResult result = query.execute(); + long end = Calendar.getInstance().getTimeInMillis(); + log.info( "JCR Query ran in {} milliseconds: {}", end - start , q ); + + artifacts = new ArrayList<>(); + RowIterator rows = result.getRows(); + while ( rows.hasNext() ) + { + Row row = rows.nextRow(); + Node node = row.getNode( "artifact" ); + artifacts.add( getArtifactFromNode( repositoryId, node ) ); + } + } + catch ( RepositoryException e ) + { + throw new MetadataRepositoryException( e.getMessage(), e ); + } + return artifacts; + } + + @Override + public List getArtifactsByProjectVersionMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + String q = + "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE + "] AS projectVersion INNER JOIN [" + ARTIFACT_NODE_TYPE + + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) INNER JOIN [" + FACET_NODE_TYPE + + "] AS facet ON ISCHILDNODE(facet, projectVersion) WHERE ([facet].[" + key + "] = $value)"; + + return runJcrQuery( repositoryId, q, ImmutableMap.of( "value", value ) ); + } + + + @Override + public List getArtifactsByMetadata( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + String q = + "SELECT * FROM [" + ARTIFACT_NODE_TYPE + "] AS artifact INNER JOIN [" + FACET_NODE_TYPE + + "] AS facet ON ISCHILDNODE(facet, artifact) WHERE ([facet].[" + key + "] = $value)"; + + return runJcrQuery( repositoryId, q, ImmutableMap.of( "value", value ) ); + } + + + @Override + public List getArtifactsByProperty( String key, String value, String repositoryId ) + throws MetadataRepositoryException + { + String q = + "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE + "] AS projectVersion INNER JOIN [" + ARTIFACT_NODE_TYPE + + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) WHERE ([projectVersion].[" + key + + "] = $value)"; + + return runJcrQuery( repositoryId, q, ImmutableMap.of( "value", value ) ); + } + @Override public void removeRepository( String repositoryId ) @@ -1319,6 +1402,33 @@ public void close() } } + + @Override + public List searchArtifacts( String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + return searchArtifacts( null, text, repositoryId, exact ); + } + + @Override + public List searchArtifacts( String key, String text, String repositoryId, boolean exact ) + throws MetadataRepositoryException + { + // we can't do exact search in any property (*), we need a key + boolean e = exact && key != null; + String theKey = key == null ? "*" : "[" + key + "]"; + String projectVersionCondition = + e ? "(projectVersion." + theKey + " = $value)" : "contains([projectVersion]." + theKey + ", $value)"; + String facetCondition = e ? "(facet." + theKey + " = $value)" : "contains([facet]." + theKey + ", $value)"; + String q = + "SELECT * FROM [" + PROJECT_VERSION_NODE_TYPE + "] AS projectVersion LEFT OUTER JOIN [" + + ARTIFACT_NODE_TYPE + "] AS artifact ON ISCHILDNODE(artifact, projectVersion) LEFT OUTER JOIN [" + + FACET_NODE_TYPE + "] AS facet ON ISCHILDNODE(facet, projectVersion) WHERE (" + + projectVersionCondition + " OR " + facetCondition + ")"; + + return runJcrQuery( repositoryId, q, ImmutableMap.of( "value", text ) ); + } + private ArtifactMetadata getArtifactFromNode( String repositoryId, Node artifactNode ) throws RepositoryException { @@ -1326,7 +1436,7 @@ private ArtifactMetadata getArtifactFromNode( String repositoryId, Node artifact ArtifactMetadata artifact = new ArtifactMetadata(); artifact.setId( id ); - artifact.setRepositoryId( repositoryId ); + artifact.setRepositoryId( repositoryId == null ? artifactNode.getAncestor(2).getName() : repositoryId ); Node projectVersionNode = artifactNode.getParent(); Node projectNode = projectVersionNode.getParent(); From 4e5d1183c31651680e8266198f41c4464647b28d Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Date: Sun, 23 Nov 2014 11:34:24 +0100 Subject: [PATCH 2/4] [MRM-1390] Implement search methods for generic metadata and properties in Cassandra store Some caveats with Cassandra implementation: We can't search artifacts by any (wildcard) property, so searchArtifacts(text,...) just calls getArtifactsByMetadata The exact parameter is ignored as we can't do non exact searches in Cassandra --- .../CassandraMetadataRepository.java | 141 ++++++++++++++---- .../repository/cassandra/CassandraUtils.java | 8 +- .../cassandra/model/MetadataFacetModel.java | 5 + .../CassandraMetadataRepositoryTest.java | 98 ------------ .../repository/jcr/JcrMetadataRepository.java | 3 + 5 files changed, 127 insertions(+), 128 deletions(-) diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java index 779c19f1c5..268fd157ec 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java @@ -77,6 +77,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -1826,25 +1827,114 @@ public Collection getArtifactsByChecksum( final String reposit return artifactMetadataMap.values(); } + /** + * Project version and artifact level metadata are stored in the same place, no distinctions in Cassandra + * implementation, just calls {@link #getArtifactsByMetadata(String, String, String)} + */ @Override public List getArtifactsByProjectVersionMetadata( String key, String value, String repositoryId ) throws MetadataRepositoryException { - throw new UnsupportedOperationException( "not yet implemented in Cassandra backend" ); + return getArtifactsByMetadata( key, value, repositoryId ); } @Override public List getArtifactsByMetadata( String key, String value, String repositoryId ) throws MetadataRepositoryException { - throw new UnsupportedOperationException( "not yet implemented in Cassandra backend" ); + RangeSlicesQuery query = + HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // + .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // + .setColumnNames( MetadataFacetModel.COLUMNS ) // + .addEqualsExpression( VALUE.toString(), value ); + + if ( key != null ) + { + query.addEqualsExpression( KEY.toString(), key ); // + } + if ( repositoryId != null ) + { + query.addEqualsExpression( "repositoryName", repositoryId ); + } + + QueryResult> metadataFacetResult = query.execute(); + if ( metadataFacetResult.get() == null || metadataFacetResult.get().getCount() < 1 ) + { + return Collections.emptyList(); + } + + List artifactMetadatas = new LinkedList(); + + // TODO doing multiple queries, there should be a way to get all the artifactMetadatas for any number of + // projects + for ( Row row : metadataFacetResult.get() ) + { + QueryResult> artifactMetadataResult = + HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // + .setColumnFamily( cassandraArchivaManager.getArtifactMetadataFamilyName() ) // + .setColumnNames( ArtifactMetadataModel.COLUMNS ) // + .setRowCount( Integer.MAX_VALUE ) // + .addEqualsExpression( REPOSITORY_NAME.toString(), + getStringValue( row.getColumnSlice(), REPOSITORY_NAME ) ) // + .addEqualsExpression( NAMESPACE_ID.toString(), getStringValue( row.getColumnSlice(), NAMESPACE_ID ) ) // + .addEqualsExpression( PROJECT.toString(), getStringValue( row.getColumnSlice(), PROJECT_ID ) ) // + .addEqualsExpression( PROJECT_VERSION.toString(), + getStringValue( row.getColumnSlice(), PROJECT_VERSION ) ) // + .execute(); + + if ( artifactMetadataResult.get() == null || artifactMetadataResult.get().getCount() < 1 ) + { + return Collections.emptyList(); + } + + for ( Row artifactMetadataRow : artifactMetadataResult.get() ) + { + artifactMetadatas.add( mapArtifactMetadataStringColumnSlice( artifactMetadataRow.getColumnSlice() ) ); + } + } + + return mapArtifactMetadataToArtifact( metadataFacetResult, artifactMetadatas ); } @Override public List getArtifactsByProperty( String key, String value, String repositoryId ) throws MetadataRepositoryException { - throw new UnsupportedOperationException( "getArtifactsByProperty not yet implemented in Cassandra backend" ); + QueryResult> result = + HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // + .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataFamilyName() ) // + .setColumnNames( PROJECT_ID.toString(), REPOSITORY_NAME.toString(), NAMESPACE_ID.toString(), + PROJECT_VERSION.toString() ) // + .addEqualsExpression( key, value ) // + .execute(); + + int count = result.get().getCount(); + + if ( count < 1 ) + { + return Collections.emptyList(); + } + + List artifacts = new LinkedList(); + + for ( Row row : result.get() ) + { + // TODO doing multiple queries, there should be a way to get all the artifactMetadatas for any number of + // projects + try + { + artifacts.addAll( getArtifacts( getStringValue( row.getColumnSlice(), REPOSITORY_NAME ), + getStringValue( row.getColumnSlice(), NAMESPACE_ID ), + getStringValue( row.getColumnSlice(), PROJECT_ID ), + getStringValue( row.getColumnSlice(), PROJECT_VERSION ) ) ); + } + catch ( MetadataResolutionException e ) + { + // never raised + throw new IllegalStateException( e ); + } + } + return artifacts; } @Override @@ -2046,29 +2136,12 @@ public Collection getArtifacts( final String repoId, final Str for ( Row row : result.get() ) { - ColumnSlice columnSlice = row.getColumnSlice(); - ArtifactMetadata artifactMetadata = new ArtifactMetadata(); - artifactMetadata.setNamespace( getStringValue( columnSlice, NAMESPACE_ID.toString() ) ); - artifactMetadata.setSize( getAsLongValue( columnSlice, SIZE.toString() ) ); - artifactMetadata.setId( getStringValue( columnSlice, ID.toString() ) ); - artifactMetadata.setFileLastModified( getAsLongValue( columnSlice, FILE_LAST_MODIFIED.toString() ) ); - artifactMetadata.setMd5( getStringValue( columnSlice, MD5.toString() ) ); - artifactMetadata.setProject( getStringValue( columnSlice, PROJECT.toString() ) ); - artifactMetadata.setProjectVersion( getStringValue( columnSlice, PROJECT_VERSION.toString() ) ); - artifactMetadata.setRepositoryId( repoId ); - artifactMetadata.setSha1( getStringValue( columnSlice, SHA1.toString() ) ); - artifactMetadata.setVersion( getStringValue( columnSlice, VERSION.toString() ) ); - Long whenGathered = getAsLongValue( columnSlice, WHEN_GATHERED.toString() ); - if ( whenGathered != null ) - { - artifactMetadata.setWhenGathered( new Date( whenGathered ) ); - } - artifactMetadatas.add( artifactMetadata ); + artifactMetadatas.add( mapArtifactMetadataStringColumnSlice( row.getColumnSlice() ) ); } result = HFactory.createRangeSlicesQuery( keyspace, ss, ss, ss ) // .setColumnFamily( cassandraArchivaManager.getMetadataFacetFamilyName() ) // - .setColumnNames( FACET_ID.toString(), NAME.toString(), VALUE.toString(), KEY.toString(), PROJECT_VERSION.toString() ) // + .setColumnNames( MetadataFacetModel.COLUMNS ) // .setRowCount( Integer.MAX_VALUE ) // .addEqualsExpression( REPOSITORY_NAME.toString(), repoId ) // .addEqualsExpression( NAMESPACE_ID.toString(), namespace ) // @@ -2076,6 +2149,13 @@ public Collection getArtifacts( final String repoId, final Str .addEqualsExpression( PROJECT_VERSION.toString(), projectVersion ) // .execute(); + return mapArtifactMetadataToArtifact(result, artifactMetadatas); + } + + /** + * Attach metadata to each of the ArtifactMetadata objects + */ + private List mapArtifactMetadataToArtifact(QueryResult> result, List artifactMetadatas) { if ( result.get() == null || result.get().getCount() < 1 ) { return artifactMetadatas; @@ -2147,8 +2227,6 @@ public boolean apply( MetadataFacetModel metadataFacetModel ) } } } - - } return artifactMetadatas; @@ -2198,17 +2276,28 @@ protected ModelMapper getModelMapper() return ModelMapperHolder.MODEL_MAPPER; } + /** + * This implementation just calls getArtifactsByMetadata( null, text, repositoryId ). We can't search artifacts by + * any property. + */ @Override public List searchArtifacts( String text, String repositoryId, boolean exact ) throws MetadataRepositoryException { - throw new UnsupportedOperationException( "searchArtifacts not yet implemented in Cassandra backend" ); + return getArtifactsByMetadata( null, text, repositoryId ); } + /** + * The exact parameter is ignored as we can't do non exact searches in Cassandra + */ @Override public List searchArtifacts( String key, String text, String repositoryId, boolean exact ) throws MetadataRepositoryException { - throw new UnsupportedOperationException( "searchArtifacts not yet implemented in Cassandra backend" ); + // TODO optimize + List artifacts = new LinkedList(); + artifacts.addAll( getArtifactsByMetadata( key, text, repositoryId ) ); + artifacts.addAll( getArtifactsByProperty( key, text, repositoryId ) ); + return artifacts; } } diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java index 6366fe9f8d..f3de42b905 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraUtils.java @@ -95,18 +95,18 @@ public static String getStringValue( ColumnSlice columnSlice, St return hColumn == null ? null : hColumn.getValue(); } - public static Long getLongValue( ColumnSlice columnSlice, String columnName ) + public static Long getLongValue( ColumnSlice columnSlice, String columnName ) { if ( StringUtils.isEmpty( columnName ) ) { return null; } - HColumn hColumn = columnSlice.getColumnByName( columnName ); + HColumn hColumn = (HColumn) columnSlice.getColumnByName( columnName ); return hColumn == null ? null : hColumn.getValue(); } - public static String getAsStringValue( ColumnSlice columnSlice, String columnName ) + public static String getAsStringValue( ColumnSlice columnSlice, String columnName ) { StringSerializer ss = StringSerializer.get(); if ( StringUtils.isEmpty( columnName ) ) @@ -114,7 +114,7 @@ public static String getAsStringValue( ColumnSlice columnSlice, St return null; } - HColumn hColumn = columnSlice.getColumnByName( columnName ); + HColumn hColumn = columnSlice.getColumnByName( columnName ); return hColumn == null ? null : ss.fromByteBuffer( hColumn.getValueBytes() ); } diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java index ae494e1ab6..a2347bf1b6 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java @@ -19,6 +19,8 @@ * under the License. */ +import static org.apache.archiva.metadata.repository.cassandra.model.ColumnNames.*; + import org.apache.archiva.metadata.repository.cassandra.CassandraUtils; /** @@ -29,6 +31,9 @@ */ public class MetadataFacetModel { + public static final String[] COLUMNS = new String[] { FACET_ID.toString(), KEY.toString(), VALUE.toString(), + REPOSITORY_NAME.toString(), NAMESPACE_ID.toString(), PROJECT_ID.toString(), PROJECT_VERSION.toString() }; + private String facetId; private String key; diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java b/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java index 97b3718f7c..b4f0cdb82e 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java @@ -25,7 +25,6 @@ import org.apache.commons.io.FileUtils; import org.junit.After; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import javax.inject.Inject; @@ -69,103 +68,6 @@ public void setUp() clearReposAndNamespace( cassandraArchivaManager ); } - @Override - @Ignore - public void testGetArtifactsByProjectVersionMetadata() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByProjectVersionMetadataNoRepository() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByProjectVersionMetadataAllRepositories() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByMetadataAllRepositories() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testGetArtifactsByPropertySingleResult() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByKey() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByKeyExact() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsFullText() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsFullTextExact() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByFacetKeyAllRepos() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsByFacetKey() - throws Exception - { - // TODO not implemented - } - - @Override - @Ignore - public void testSearchArtifactsFullTextByFacet() - throws Exception - { - // TODO not implemented - } - - /** * ensure all dependant tables are cleaned up (mailinglist, license, dependencies) * diff --git a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java index d4c79b6039..8fecba8a55 100644 --- a/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java +++ b/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java @@ -1403,6 +1403,9 @@ public void close() } + /** + * Exact is ignored as we can't do exact search in any property, we need a key + */ @Override public List searchArtifacts( String text, String repositoryId, boolean exact ) throws MetadataRepositoryException From db8c78d4d750c6d1cdd1094004d3663f8df44667 Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Date: Mon, 24 Nov 2014 20:00:03 +0100 Subject: [PATCH 3/4] [MRM-1390] Cassandra: rename Metadata Facet column 'key' to 'facetKey' The column 'key' can't be queried in Cassandra Probably because 'key' is reserved for the element key or a limitation in Hector --- .../metadata/repository/cassandra/model/ColumnNames.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ColumnNames.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ColumnNames.java index 7bbec29e6d..fa81935609 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ColumnNames.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ColumnNames.java @@ -32,7 +32,7 @@ public enum ColumnNames NAMESPACE_ID( "namespaceId" ), PROJECT_ID( "projectId" ), PROJECT_VERSION( "projectVersion" ), - KEY( "key" ), + KEY( "facetKey" ), VALUE( "value" ), ID( "id" ), SIZE( "size" ), From f11f39932a5fabcd14195897da3ff5b2cbcb7acc Mon Sep 17 00:00:00 2001 From: Carlos Sanchez Date: Mon, 24 Nov 2014 10:54:32 +0100 Subject: [PATCH 4/4] [MRM-1390] Bump version to 2.2.0 --- archiva-cli/pom.xml | 2 +- archiva-docs/pom.xml | 2 +- archiva-jetty/pom.xml | 2 +- archiva-modules/archiva-base/archiva-checksum/pom.xml | 2 +- archiva-modules/archiva-base/archiva-common/pom.xml | 2 +- archiva-modules/archiva-base/archiva-configuration/pom.xml | 2 +- .../archiva-consumers/archiva-consumer-api/pom.xml | 2 +- .../archiva-consumers/archiva-consumer-archetype/pom.xml | 2 +- .../archiva-consumers/archiva-core-consumers/pom.xml | 2 +- .../archiva-consumers/archiva-lucene-consumers/pom.xml | 2 +- .../archiva-consumers/archiva-metadata-consumer/pom.xml | 2 +- .../archiva-consumers/archiva-signature-consumers/pom.xml | 2 +- archiva-modules/archiva-base/archiva-consumers/pom.xml | 2 +- archiva-modules/archiva-base/archiva-converter/pom.xml | 2 +- archiva-modules/archiva-base/archiva-filelock/pom.xml | 2 +- archiva-modules/archiva-base/archiva-indexer/pom.xml | 2 +- archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml | 2 +- archiva-modules/archiva-base/archiva-maven2-model/pom.xml | 2 +- archiva-modules/archiva-base/archiva-model/pom.xml | 2 +- archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml | 2 +- archiva-modules/archiva-base/archiva-policies/pom.xml | 2 +- archiva-modules/archiva-base/archiva-proxy-api/pom.xml | 2 +- archiva-modules/archiva-base/archiva-proxy-common/pom.xml | 2 +- archiva-modules/archiva-base/archiva-proxy/pom.xml | 2 +- .../archiva-repository-admin-api/pom.xml | 2 +- .../archiva-repository-admin-default/pom.xml | 2 +- archiva-modules/archiva-base/archiva-repository-admin/pom.xml | 2 +- archiva-modules/archiva-base/archiva-repository-layer/pom.xml | 2 +- .../archiva-base/archiva-repository-scanner/pom.xml | 2 +- archiva-modules/archiva-base/archiva-security-common/pom.xml | 2 +- archiva-modules/archiva-base/archiva-test-utils/pom.xml | 2 +- archiva-modules/archiva-base/archiva-transaction/pom.xml | 2 +- archiva-modules/archiva-base/archiva-xml-tools/pom.xml | 2 +- archiva-modules/archiva-base/pom.xml | 2 +- archiva-modules/archiva-karaf/archiva-features/pom.xml | 2 +- archiva-modules/archiva-karaf/pom.xml | 2 +- .../archiva-scheduler/archiva-scheduler-api/pom.xml | 2 +- .../archiva-scheduler/archiva-scheduler-indexing/pom.xml | 2 +- .../archiva-scheduler-repository-api/pom.xml | 2 +- .../archiva-scheduler/archiva-scheduler-repository/pom.xml | 2 +- archiva-modules/archiva-scheduler/pom.xml | 2 +- .../archiva-web/archiva-rest/archiva-rest-api/pom.xml | 2 +- .../archiva-web/archiva-rest/archiva-rest-services/pom.xml | 2 +- archiva-modules/archiva-web/archiva-rest/pom.xml | 2 +- archiva-modules/archiva-web/archiva-rss/pom.xml | 2 +- archiva-modules/archiva-web/archiva-security/pom.xml | 2 +- archiva-modules/archiva-web/archiva-test-mocks/pom.xml | 2 +- archiva-modules/archiva-web/archiva-web-common/pom.xml | 2 +- archiva-modules/archiva-web/archiva-webapp-test/pom.xml | 2 +- archiva-modules/archiva-web/archiva-webapp/pom.xml | 2 +- archiva-modules/archiva-web/archiva-webdav/pom.xml | 2 +- archiva-modules/archiva-web/pom.xml | 2 +- archiva-modules/metadata/metadata-model-maven2/pom.xml | 2 +- archiva-modules/metadata/metadata-model/pom.xml | 2 +- archiva-modules/metadata/metadata-repository-api/pom.xml | 2 +- archiva-modules/metadata/pom.xml | 2 +- archiva-modules/metadata/test-repository/pom.xml | 2 +- archiva-modules/plugins/audit/pom.xml | 2 +- archiva-modules/plugins/generic-metadata-support/pom.xml | 2 +- archiva-modules/plugins/maven2-repository/pom.xml | 2 +- archiva-modules/plugins/metadata-store-cassandra/pom.xml | 2 +- archiva-modules/plugins/metadata-store-file/pom.xml | 2 +- archiva-modules/plugins/metadata-store-jcr/pom.xml | 2 +- archiva-modules/plugins/npanday-support/pom.xml | 2 +- archiva-modules/plugins/pom.xml | 2 +- archiva-modules/plugins/problem-reports/pom.xml | 2 +- archiva-modules/plugins/repository-statistics/pom.xml | 2 +- archiva-modules/plugins/stage-repository-merge/pom.xml | 2 +- archiva-modules/pom.xml | 2 +- pom.xml | 4 ++-- 70 files changed, 71 insertions(+), 71 deletions(-) diff --git a/archiva-cli/pom.xml b/archiva-cli/pom.xml index 41ec6b8688..3e8e9b3b47 100644 --- a/archiva-cli/pom.xml +++ b/archiva-cli/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-cli diff --git a/archiva-docs/pom.xml b/archiva-docs/pom.xml index a2751a25fb..1e5ac770aa 100644 --- a/archiva-docs/pom.xml +++ b/archiva-docs/pom.xml @@ -21,7 +21,7 @@ org.apache.archiva archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-docs diff --git a/archiva-jetty/pom.xml b/archiva-jetty/pom.xml index 344038f3d8..7fc0836de0 100644 --- a/archiva-jetty/pom.xml +++ b/archiva-jetty/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-jetty pom diff --git a/archiva-modules/archiva-base/archiva-checksum/pom.xml b/archiva-modules/archiva-base/archiva-checksum/pom.xml index 915d389264..c23286296e 100644 --- a/archiva-modules/archiva-base/archiva-checksum/pom.xml +++ b/archiva-modules/archiva-base/archiva-checksum/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-checksum bundle diff --git a/archiva-modules/archiva-base/archiva-common/pom.xml b/archiva-modules/archiva-base/archiva-common/pom.xml index 8663fc5037..cde304aae1 100644 --- a/archiva-modules/archiva-base/archiva-common/pom.xml +++ b/archiva-modules/archiva-base/archiva-common/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-common diff --git a/archiva-modules/archiva-base/archiva-configuration/pom.xml b/archiva-modules/archiva-base/archiva-configuration/pom.xml index 976fb1dd25..fa2ad1ccc5 100644 --- a/archiva-modules/archiva-base/archiva-configuration/pom.xml +++ b/archiva-modules/archiva-base/archiva-configuration/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-configuration diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml index 9abc941cb1..8e81e36846 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-consumers - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-consumer-api bundle diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/pom.xml index 8d5ea41f77..b141994377 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-archetype/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-consumers - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-consumer-archetype maven-archetype diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml index 41eda78beb..5e01347aaf 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-consumers - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-core-consumers bundle diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml index 7a91b5352a..cd44114c04 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-consumers - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-lucene-consumers bundle diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml index 04b04e93cf..d406c4f0d6 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-metadata-consumer/pom.xml @@ -23,7 +23,7 @@ archiva-consumers org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-metadata-consumer bundle diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-signature-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/archiva-signature-consumers/pom.xml index 3254fb289c..9b112dae00 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-signature-consumers/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-signature-consumers/pom.xml @@ -20,7 +20,7 @@ org.apache.archiva archiva-consumers - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-signature-consumers diff --git a/archiva-modules/archiva-base/archiva-consumers/pom.xml b/archiva-modules/archiva-base/archiva-consumers/pom.xml index c8622d5ad8..dc16ce2e5f 100644 --- a/archiva-modules/archiva-base/archiva-consumers/pom.xml +++ b/archiva-modules/archiva-base/archiva-consumers/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-consumers diff --git a/archiva-modules/archiva-base/archiva-converter/pom.xml b/archiva-modules/archiva-base/archiva-converter/pom.xml index 0a402f8f13..fe94a7260c 100644 --- a/archiva-modules/archiva-base/archiva-converter/pom.xml +++ b/archiva-modules/archiva-base/archiva-converter/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-converter diff --git a/archiva-modules/archiva-base/archiva-filelock/pom.xml b/archiva-modules/archiva-base/archiva-filelock/pom.xml index 173a03b62b..37aa3aea1d 100644 --- a/archiva-modules/archiva-base/archiva-filelock/pom.xml +++ b/archiva-modules/archiva-base/archiva-filelock/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-filelock diff --git a/archiva-modules/archiva-base/archiva-indexer/pom.xml b/archiva-modules/archiva-base/archiva-indexer/pom.xml index 7e900c87fd..bb68732419 100644 --- a/archiva-modules/archiva-base/archiva-indexer/pom.xml +++ b/archiva-modules/archiva-base/archiva-indexer/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-indexer diff --git a/archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml b/archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml index 420841f332..b9dc78d8c9 100644 --- a/archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml +++ b/archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-maven2-metadata diff --git a/archiva-modules/archiva-base/archiva-maven2-model/pom.xml b/archiva-modules/archiva-base/archiva-maven2-model/pom.xml index 6843c014cb..9923908c6e 100644 --- a/archiva-modules/archiva-base/archiva-maven2-model/pom.xml +++ b/archiva-modules/archiva-base/archiva-maven2-model/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-maven2-model diff --git a/archiva-modules/archiva-base/archiva-model/pom.xml b/archiva-modules/archiva-base/archiva-model/pom.xml index 1b7045b55d..8c3f583b0b 100755 --- a/archiva-modules/archiva-base/archiva-model/pom.xml +++ b/archiva-modules/archiva-base/archiva-model/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-model diff --git a/archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml b/archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml index 280cdb3e40..94316d8c20 100644 --- a/archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml +++ b/archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-plexus-bridge diff --git a/archiva-modules/archiva-base/archiva-policies/pom.xml b/archiva-modules/archiva-base/archiva-policies/pom.xml index 2b9790f329..7306a05650 100644 --- a/archiva-modules/archiva-base/archiva-policies/pom.xml +++ b/archiva-modules/archiva-base/archiva-policies/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-policies diff --git a/archiva-modules/archiva-base/archiva-proxy-api/pom.xml b/archiva-modules/archiva-base/archiva-proxy-api/pom.xml index 6096427fae..f8dcefff49 100644 --- a/archiva-modules/archiva-base/archiva-proxy-api/pom.xml +++ b/archiva-modules/archiva-base/archiva-proxy-api/pom.xml @@ -22,7 +22,7 @@ archiva-base org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-proxy-api bundle diff --git a/archiva-modules/archiva-base/archiva-proxy-common/pom.xml b/archiva-modules/archiva-base/archiva-proxy-common/pom.xml index cf188601c9..5f0ba44aad 100644 --- a/archiva-modules/archiva-base/archiva-proxy-common/pom.xml +++ b/archiva-modules/archiva-base/archiva-proxy-common/pom.xml @@ -22,7 +22,7 @@ archiva-base org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-proxy-common bundle diff --git a/archiva-modules/archiva-base/archiva-proxy/pom.xml b/archiva-modules/archiva-base/archiva-proxy/pom.xml index 18c7f02ca1..2fdf14f6e3 100644 --- a/archiva-modules/archiva-base/archiva-proxy/pom.xml +++ b/archiva-modules/archiva-base/archiva-proxy/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-proxy diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml index 68d33d81f7..4ff34750f5 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-repository-admin - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-repository-admin-api bundle diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml index 39c7e18a67..eaa1cf62ef 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-repository-admin - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-repository-admin-default bundle diff --git a/archiva-modules/archiva-base/archiva-repository-admin/pom.xml b/archiva-modules/archiva-base/archiva-repository-admin/pom.xml index 5dc02ffcee..8fb25f347c 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-admin/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-repository-admin Archiva Base :: Repository Admin diff --git a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml index 817af621e8..ad0830f882 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-repository-layer diff --git a/archiva-modules/archiva-base/archiva-repository-scanner/pom.xml b/archiva-modules/archiva-base/archiva-repository-scanner/pom.xml index e766214083..199b839a4f 100644 --- a/archiva-modules/archiva-base/archiva-repository-scanner/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-scanner/pom.xml @@ -23,7 +23,7 @@ archiva-base org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-repository-scanner bundle diff --git a/archiva-modules/archiva-base/archiva-security-common/pom.xml b/archiva-modules/archiva-base/archiva-security-common/pom.xml index ca79d95bcb..64a6c71434 100644 --- a/archiva-modules/archiva-base/archiva-security-common/pom.xml +++ b/archiva-modules/archiva-base/archiva-security-common/pom.xml @@ -22,7 +22,7 @@ archiva-base org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT org.apache.archiva archiva-security-common diff --git a/archiva-modules/archiva-base/archiva-test-utils/pom.xml b/archiva-modules/archiva-base/archiva-test-utils/pom.xml index 04192bc07d..c1e22d863b 100644 --- a/archiva-modules/archiva-base/archiva-test-utils/pom.xml +++ b/archiva-modules/archiva-base/archiva-test-utils/pom.xml @@ -22,7 +22,7 @@ archiva-base org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-test-utils diff --git a/archiva-modules/archiva-base/archiva-transaction/pom.xml b/archiva-modules/archiva-base/archiva-transaction/pom.xml index 350433e6e8..38fc497344 100644 --- a/archiva-modules/archiva-base/archiva-transaction/pom.xml +++ b/archiva-modules/archiva-base/archiva-transaction/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-transaction bundle diff --git a/archiva-modules/archiva-base/archiva-xml-tools/pom.xml b/archiva-modules/archiva-base/archiva-xml-tools/pom.xml index 06fe736fb3..e949e5bbd8 100644 --- a/archiva-modules/archiva-base/archiva-xml-tools/pom.xml +++ b/archiva-modules/archiva-base/archiva-xml-tools/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-base - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-xml-tools diff --git a/archiva-modules/archiva-base/pom.xml b/archiva-modules/archiva-base/pom.xml index 5e4742ee46..cb6dbec48c 100644 --- a/archiva-modules/archiva-base/pom.xml +++ b/archiva-modules/archiva-base/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-modules - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-base diff --git a/archiva-modules/archiva-karaf/archiva-features/pom.xml b/archiva-modules/archiva-karaf/archiva-features/pom.xml index a582a7bab8..68fb6f6b13 100644 --- a/archiva-modules/archiva-karaf/archiva-features/pom.xml +++ b/archiva-modules/archiva-karaf/archiva-features/pom.xml @@ -21,7 +21,7 @@ org.apache.archiva archiva-karaf - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 org.apache.archiva.karaf diff --git a/archiva-modules/archiva-karaf/pom.xml b/archiva-modules/archiva-karaf/pom.xml index e56228b97d..860d87702f 100644 --- a/archiva-modules/archiva-karaf/pom.xml +++ b/archiva-modules/archiva-karaf/pom.xml @@ -21,7 +21,7 @@ org.apache.archiva archiva-modules - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-karaf diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-api/pom.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-api/pom.xml index e937db1ffe..e811ca5265 100644 --- a/archiva-modules/archiva-scheduler/archiva-scheduler-api/pom.xml +++ b/archiva-modules/archiva-scheduler/archiva-scheduler-api/pom.xml @@ -22,7 +22,7 @@ archiva-scheduler org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-scheduler-api bundle diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml index 72cc89eedc..fcdb3cb440 100644 --- a/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml +++ b/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/pom.xml @@ -22,7 +22,7 @@ archiva-scheduler org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-scheduler-indexing bundle diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository-api/pom.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-repository-api/pom.xml index cf47808640..4da66dc624 100644 --- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository-api/pom.xml +++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository-api/pom.xml @@ -22,7 +22,7 @@ archiva-scheduler org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-scheduler-repository-api bundle diff --git a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml index 4b7c13dd58..14babe4f47 100644 --- a/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml +++ b/archiva-modules/archiva-scheduler/archiva-scheduler-repository/pom.xml @@ -22,7 +22,7 @@ archiva-scheduler org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-scheduler-repository bundle diff --git a/archiva-modules/archiva-scheduler/pom.xml b/archiva-modules/archiva-scheduler/pom.xml index fdd925049c..46fd76d91b 100644 --- a/archiva-modules/archiva-scheduler/pom.xml +++ b/archiva-modules/archiva-scheduler/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-modules - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-scheduler diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml index 4f9e8a49ae..b56d3adf6f 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/pom.xml @@ -22,7 +22,7 @@ archiva-rest org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-rest-api diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml index 37d9c39d7b..c63241d2af 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-rest - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-rest-services bundle diff --git a/archiva-modules/archiva-web/archiva-rest/pom.xml b/archiva-modules/archiva-web/archiva-rest/pom.xml index 22adc7b959..f60976e13a 100644 --- a/archiva-modules/archiva-web/archiva-rest/pom.xml +++ b/archiva-modules/archiva-web/archiva-rest/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-web - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-rest Archiva Web :: REST support diff --git a/archiva-modules/archiva-web/archiva-rss/pom.xml b/archiva-modules/archiva-web/archiva-rss/pom.xml index 6aba48e4ae..fef756ce6f 100644 --- a/archiva-modules/archiva-web/archiva-rss/pom.xml +++ b/archiva-modules/archiva-web/archiva-rss/pom.xml @@ -22,7 +22,7 @@ archiva-web org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-rss diff --git a/archiva-modules/archiva-web/archiva-security/pom.xml b/archiva-modules/archiva-web/archiva-security/pom.xml index 2c176d222a..d18f3430ab 100644 --- a/archiva-modules/archiva-web/archiva-security/pom.xml +++ b/archiva-modules/archiva-web/archiva-security/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-web - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-security diff --git a/archiva-modules/archiva-web/archiva-test-mocks/pom.xml b/archiva-modules/archiva-web/archiva-test-mocks/pom.xml index c60811f692..c155f1cb10 100644 --- a/archiva-modules/archiva-web/archiva-test-mocks/pom.xml +++ b/archiva-modules/archiva-web/archiva-test-mocks/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-web - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-test-mocks diff --git a/archiva-modules/archiva-web/archiva-web-common/pom.xml b/archiva-modules/archiva-web/archiva-web-common/pom.xml index 7cf47e25b8..d2d3a77fd1 100644 --- a/archiva-modules/archiva-web/archiva-web-common/pom.xml +++ b/archiva-modules/archiva-web/archiva-web-common/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-web - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-web-common diff --git a/archiva-modules/archiva-web/archiva-webapp-test/pom.xml b/archiva-modules/archiva-web/archiva-webapp-test/pom.xml index 26a9d26782..9c841c39ab 100644 --- a/archiva-modules/archiva-web/archiva-webapp-test/pom.xml +++ b/archiva-modules/archiva-web/archiva-webapp-test/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-web - 2.1.2-SNAPSHOT + 2.2-SNAPSHOT archiva-webapp-test pom diff --git a/archiva-modules/archiva-web/archiva-webapp/pom.xml b/archiva-modules/archiva-web/archiva-webapp/pom.xml index d4893cf22a..c12918ef9c 100644 --- a/archiva-modules/archiva-web/archiva-webapp/pom.xml +++ b/archiva-modules/archiva-web/archiva-webapp/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva archiva-web - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-webapp war diff --git a/archiva-modules/archiva-web/archiva-webdav/pom.xml b/archiva-modules/archiva-web/archiva-webdav/pom.xml index 39422f283b..58b8043a63 100644 --- a/archiva-modules/archiva-web/archiva-webdav/pom.xml +++ b/archiva-modules/archiva-web/archiva-webdav/pom.xml @@ -23,7 +23,7 @@ org.apache.archiva archiva-web - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-webdav diff --git a/archiva-modules/archiva-web/pom.xml b/archiva-modules/archiva-web/pom.xml index 85c64cf861..71c2ce3add 100644 --- a/archiva-modules/archiva-web/pom.xml +++ b/archiva-modules/archiva-web/pom.xml @@ -19,7 +19,7 @@ org.apache.archiva archiva-modules - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT archiva-web diff --git a/archiva-modules/metadata/metadata-model-maven2/pom.xml b/archiva-modules/metadata/metadata-model-maven2/pom.xml index 5d23fc7fde..5478e3c563 100644 --- a/archiva-modules/metadata/metadata-model-maven2/pom.xml +++ b/archiva-modules/metadata/metadata-model-maven2/pom.xml @@ -22,7 +22,7 @@ metadata org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT metadata-model-maven2 bundle diff --git a/archiva-modules/metadata/metadata-model/pom.xml b/archiva-modules/metadata/metadata-model/pom.xml index a6785299c7..bcb441ce4f 100644 --- a/archiva-modules/metadata/metadata-model/pom.xml +++ b/archiva-modules/metadata/metadata-model/pom.xml @@ -22,7 +22,7 @@ metadata org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT metadata-model bundle diff --git a/archiva-modules/metadata/metadata-repository-api/pom.xml b/archiva-modules/metadata/metadata-repository-api/pom.xml index face82553a..d96c32b051 100644 --- a/archiva-modules/metadata/metadata-repository-api/pom.xml +++ b/archiva-modules/metadata/metadata-repository-api/pom.xml @@ -22,7 +22,7 @@ metadata org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT metadata-repository-api bundle diff --git a/archiva-modules/metadata/pom.xml b/archiva-modules/metadata/pom.xml index 40d68114b8..2cd11ba167 100644 --- a/archiva-modules/metadata/pom.xml +++ b/archiva-modules/metadata/pom.xml @@ -22,7 +22,7 @@ archiva-modules org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT metadata Archiva :: Metadata diff --git a/archiva-modules/metadata/test-repository/pom.xml b/archiva-modules/metadata/test-repository/pom.xml index eaa871bfc4..bb3409885d 100644 --- a/archiva-modules/metadata/test-repository/pom.xml +++ b/archiva-modules/metadata/test-repository/pom.xml @@ -22,7 +22,7 @@ metadata org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT test-repository Archiva Metadata :: Repository for Testing diff --git a/archiva-modules/plugins/audit/pom.xml b/archiva-modules/plugins/audit/pom.xml index e6f2326c72..b473495268 100644 --- a/archiva-modules/plugins/audit/pom.xml +++ b/archiva-modules/plugins/audit/pom.xml @@ -22,7 +22,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT audit bundle diff --git a/archiva-modules/plugins/generic-metadata-support/pom.xml b/archiva-modules/plugins/generic-metadata-support/pom.xml index d16c563d96..13e5790fd8 100644 --- a/archiva-modules/plugins/generic-metadata-support/pom.xml +++ b/archiva-modules/plugins/generic-metadata-support/pom.xml @@ -22,7 +22,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT generic-metadata-support bundle diff --git a/archiva-modules/plugins/maven2-repository/pom.xml b/archiva-modules/plugins/maven2-repository/pom.xml index 55940532b0..8672dc0602 100644 --- a/archiva-modules/plugins/maven2-repository/pom.xml +++ b/archiva-modules/plugins/maven2-repository/pom.xml @@ -22,7 +22,7 @@ org.apache.archiva plugins - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT maven2-repository bundle diff --git a/archiva-modules/plugins/metadata-store-cassandra/pom.xml b/archiva-modules/plugins/metadata-store-cassandra/pom.xml index 83a6b17105..50198b34e7 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/pom.xml +++ b/archiva-modules/plugins/metadata-store-cassandra/pom.xml @@ -23,7 +23,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT metadata-store-cassandra bundle diff --git a/archiva-modules/plugins/metadata-store-file/pom.xml b/archiva-modules/plugins/metadata-store-file/pom.xml index 87b5c3e136..5b658dde9f 100644 --- a/archiva-modules/plugins/metadata-store-file/pom.xml +++ b/archiva-modules/plugins/metadata-store-file/pom.xml @@ -22,7 +22,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT metadata-store-file bundle diff --git a/archiva-modules/plugins/metadata-store-jcr/pom.xml b/archiva-modules/plugins/metadata-store-jcr/pom.xml index 9102982580..2c07709b10 100644 --- a/archiva-modules/plugins/metadata-store-jcr/pom.xml +++ b/archiva-modules/plugins/metadata-store-jcr/pom.xml @@ -23,7 +23,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT metadata-store-jcr bundle diff --git a/archiva-modules/plugins/npanday-support/pom.xml b/archiva-modules/plugins/npanday-support/pom.xml index 861cf7c104..b86b70e4f6 100644 --- a/archiva-modules/plugins/npanday-support/pom.xml +++ b/archiva-modules/plugins/npanday-support/pom.xml @@ -23,7 +23,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT npanday-support bundle diff --git a/archiva-modules/plugins/pom.xml b/archiva-modules/plugins/pom.xml index da23c36793..e8439a61fd 100644 --- a/archiva-modules/plugins/pom.xml +++ b/archiva-modules/plugins/pom.xml @@ -22,7 +22,7 @@ archiva-modules org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT plugins Archiva :: Core Plugins diff --git a/archiva-modules/plugins/problem-reports/pom.xml b/archiva-modules/plugins/problem-reports/pom.xml index ab446f674d..dd8e648b7c 100644 --- a/archiva-modules/plugins/problem-reports/pom.xml +++ b/archiva-modules/plugins/problem-reports/pom.xml @@ -22,7 +22,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT problem-reports bundle diff --git a/archiva-modules/plugins/repository-statistics/pom.xml b/archiva-modules/plugins/repository-statistics/pom.xml index 90a9902be6..59c6ecbf11 100644 --- a/archiva-modules/plugins/repository-statistics/pom.xml +++ b/archiva-modules/plugins/repository-statistics/pom.xml @@ -22,7 +22,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT repository-statistics bundle diff --git a/archiva-modules/plugins/stage-repository-merge/pom.xml b/archiva-modules/plugins/stage-repository-merge/pom.xml index 176c0a986f..cf92a8eae9 100644 --- a/archiva-modules/plugins/stage-repository-merge/pom.xml +++ b/archiva-modules/plugins/stage-repository-merge/pom.xml @@ -22,7 +22,7 @@ plugins org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT org.apache.archiva stage-repository-merge diff --git a/archiva-modules/pom.xml b/archiva-modules/pom.xml index d213c34e0f..b5ff4ead94 100644 --- a/archiva-modules/pom.xml +++ b/archiva-modules/pom.xml @@ -21,7 +21,7 @@ archiva org.apache.archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT 4.0.0 archiva-modules diff --git a/pom.xml b/pom.xml index ffa09300a8..d6ae063e43 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ archiva - 2.1.2-SNAPSHOT + 2.2.0-SNAPSHOT pom Apache Archiva @@ -79,7 +79,7 @@ 2.0 UTF-8 true - + 3.6.2 2.8.0