mirror of https://github.com/apache/archiva.git
[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:
parent
7e14904c86
commit
3bdb27b8a0
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue