[MRM-1282] implement maven metadata for artifacts and remove legacy code

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@921196 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Porter 2010-03-10 00:42:44 +00:00
parent 7e14904c86
commit 3bdb27b8a0
1 changed files with 12 additions and 28 deletions

View File

@ -19,26 +19,27 @@ package org.apache.archiva.web.xmlrpc.services;
* under the License. * under the License.
*/ */
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import org.apache.archiva.indexer.search.RepositorySearch; import org.apache.archiva.indexer.search.RepositorySearch;
import org.apache.archiva.indexer.search.SearchResultHit; import org.apache.archiva.indexer.search.SearchResultHit;
import org.apache.archiva.indexer.search.SearchResultLimits; import org.apache.archiva.indexer.search.SearchResultLimits;
import org.apache.archiva.indexer.search.SearchResults; import org.apache.archiva.indexer.search.SearchResults;
import org.apache.archiva.metadata.model.ArtifactMetadata; import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.model.FacetedMetadata;
import org.apache.archiva.metadata.model.ProjectVersionMetadata; import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.metadata.model.ProjectVersionReference; import org.apache.archiva.metadata.model.ProjectVersionReference;
import org.apache.archiva.metadata.repository.MetadataRepository; import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.MetadataResolver; import org.apache.archiva.metadata.repository.MetadataResolver;
import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet; import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
import org.apache.archiva.web.xmlrpc.api.SearchService; import org.apache.archiva.web.xmlrpc.api.SearchService;
import org.apache.archiva.web.xmlrpc.api.beans.Artifact; import org.apache.archiva.web.xmlrpc.api.beans.Artifact;
import org.apache.archiva.web.xmlrpc.api.beans.Dependency; import org.apache.archiva.web.xmlrpc.api.beans.Dependency;
import org.apache.archiva.web.xmlrpc.security.XmlRpcUserRepositories; import org.apache.archiva.web.xmlrpc.security.XmlRpcUserRepositories;
import org.apache.maven.archiva.repository.content.ArtifactExtensionMapping;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
public class SearchServiceImpl public class SearchServiceImpl
implements SearchService implements SearchService
@ -84,7 +85,7 @@ public class SearchServiceImpl
// slight behaviour change to previous implementation: instead of allocating "jar" when not // slight behaviour change to previous implementation: instead of allocating "jar" when not
// found in the database, we can rely on the metadata repository to create it on the fly. We // found in the database, we can rely on the metadata repository to create it on the fly. We
// just allocate the default packaging if the Maven facet is not found. // just allocate the default packaging if the Maven facet is not found.
ProjectVersionMetadata model = FacetedMetadata model =
metadataResolver.getProjectVersion( repoId, resultHit.getGroupId(), metadataResolver.getProjectVersion( repoId, resultHit.getGroupId(),
resultHit.getArtifactId(), version ); resultHit.getArtifactId(), version );
@ -124,28 +125,11 @@ public class SearchServiceImpl
{ {
for ( ArtifactMetadata artifact : metadataRepository.getArtifactsByChecksum( repoId, checksum ) ) for ( ArtifactMetadata artifact : metadataRepository.getArtifactsByChecksum( repoId, checksum ) )
{ {
// TODO: use a maven facet instead, for now just using the extension and classifier // TODO: customise XMLRPC to handle non-Maven artifacts
String type = null; MavenArtifactFacet facet = (MavenArtifactFacet) artifact.getFacet( MavenArtifactFacet.FACET_ID );
String key = artifact.getProject() + "-" + artifact.getVersion();
String filename = artifact.getId();
int extIndex = filename.lastIndexOf( "." );
if ( filename.startsWith( key ) )
{
int i = key.length();
char nextToken = filename.charAt( i );
if ( nextToken == '-' )
{
String classifier = filename.substring( i + 1, extIndex );
String extension = filename.substring( extIndex + 1 );
type = ArtifactExtensionMapping.mapExtensionAndClassifierToType( classifier, extension );
}
else if ( nextToken == '.' )
{
type = ArtifactExtensionMapping.mapExtensionToType( filename.substring( i + 1 ) );
}
}
results.add( new Artifact( artifact.getRepositoryId(), artifact.getNamespace(), artifact.getProject(), results.add( new Artifact( artifact.getRepositoryId(), artifact.getNamespace(), artifact.getProject(),
artifact.getVersion(), type ) ); artifact.getVersion(), facet != null ? facet.getType() : null ) );
} }
} }
return results; return results;