some progress on new indexer

Signed-off-by: olivier lamy <olamy@apache.org>
This commit is contained in:
olivier lamy 2017-06-24 09:33:50 +10:00
parent ddbb6cdaf4
commit 0bfead8264
7 changed files with 31 additions and 60 deletions

View File

@ -20,18 +20,11 @@ package org.apache.archiva.common.plexusbridge;
*/
import org.apache.maven.index.context.IndexCreator;
import org.apache.maven.index.creator.JarFileContentsIndexCreator;
import org.apache.maven.index.creator.MavenArchetypeArtifactInfoIndexCreator;
import org.apache.maven.index.creator.MavenPluginArtifactInfoIndexCreator;
import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
import org.apache.maven.index.creator.OsgiArtifactIndexCreator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@ -44,32 +37,14 @@ public class MavenIndexerUtils
private Logger log = LoggerFactory.getLogger( getClass() );
@Inject
private List<? extends IndexCreator> allIndexCreators;
@Inject
public MavenIndexerUtils( PlexusSisuBridge plexusSisuBridge )
throws PlexusSisuBridgeException
public MavenIndexerUtils()
{
allIndexCreators = new ArrayList( plexusSisuBridge.lookupList( IndexCreator.class ) );
if ( allIndexCreators == null || allIndexCreators.isEmpty() )
{
// olamy when the TCL is not a URLClassLoader lookupList fail !
// when using tomcat maven plugin so adding a simple hack
log.warn( "using lookupList from sisu plexus failed so build indexCreator manually" );
allIndexCreators =
Arrays.asList( plexusSisuBridge.lookup( IndexCreator.class, OsgiArtifactIndexCreator.ID ),
plexusSisuBridge.lookup( IndexCreator.class, MavenArchetypeArtifactInfoIndexCreator.ID ),
plexusSisuBridge.lookup( IndexCreator.class, MinimalArtifactInfoIndexCreator.ID ),
plexusSisuBridge.lookup( IndexCreator.class, JarFileContentsIndexCreator.ID ),
plexusSisuBridge.lookup( IndexCreator.class, MavenPluginArtifactInfoIndexCreator.ID ) );
}
if ( allIndexCreators == null || allIndexCreators.isEmpty() )
{
throw new PlexusSisuBridgeException( "no way to initiliaze IndexCreator" );
throw new RuntimeException( "cannot initiliaze IndexCreators" );
}
log.debug( "allIndexCreators {}", allIndexCreators );

View File

@ -28,5 +28,5 @@
default-lazy-init="true">
<context:annotation-config/>
<context:component-scan base-package="org.apache.archiva.common.plexusbridge"/>
<context:component-scan base-package="org.apache.archiva.common.plexusbridge,org.apache.maven.index"/>
</beans>

View File

@ -40,16 +40,10 @@
<dependency>
<groupId>org.apache.maven.indexer</groupId>
<artifactId>indexer-core</artifactId>
<exclusions>
<exclusion>
<groupId>org.sonatype.sisu</groupId>
<artifactId>sisu-guava</artifactId>
</exclusion>
<exclusion>
<groupId>org.sonatype.sisu</groupId>
<artifactId>sisu-guice</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.apache.maven.archetype</groupId>

View File

@ -23,9 +23,6 @@ import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.RemoteRepository;
import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
import org.apache.archiva.common.plexusbridge.MavenIndexerUtils;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
import org.apache.archiva.configuration.Configuration;
import org.apache.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
@ -60,29 +57,15 @@ public class DefaultRemoteRepositoryAdmin
{
@Inject
private PlexusSisuBridge plexusSisuBridge;
@Inject
private MavenIndexerUtils mavenIndexerUtils;
// fields
private List<? extends IndexCreator> indexCreators;
@Inject
private NexusIndexer indexer;
@PostConstruct
private void initialize()
throws RepositoryAdminException
{
try
{
indexCreators = mavenIndexerUtils.getAllIndexCreators();
indexer = plexusSisuBridge.lookup( NexusIndexer.class );
}
catch ( PlexusSisuBridgeException e )
{
throw new RepositoryAdminException( e.getMessage(), e );
}
for ( RemoteRepository remoteRepository : getRemoteRepositories() )
{
createIndexContext( remoteRepository );
@ -323,7 +306,7 @@ public class DefaultRemoteRepositoryAdmin
}
return indexer.addIndexingContext( contextKey, remoteRepository.getId(), repoDir, indexDirectory,
remoteRepository.getUrl(), calculateIndexRemoteUrl( remoteRepository ),
mavenIndexerUtils.getAllIndexCreators() );
indexCreators );
}
catch ( MalformedURLException e )
{

View File

@ -29,7 +29,7 @@
<context:annotation-config />
<context:component-scan
base-package="org.apache.archiva.admin.repository,org.apache.maven.index"/>
base-package="org.apache.archiva.admin.repository"/>
<alias name="redbackRuntimeConfigurationAdmin#default" alias="userConfiguration#archiva"/>

View File

@ -19,6 +19,7 @@ package org.apache.archiva.metadata.repository.jcr;
* under the License.
*/
import com.google.common.base.Objects;
import org.apache.archiva.metadata.model.MetadataFacetFactory;
import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest;
import org.apache.commons.io.FileUtils;

20
pom.xml
View File

@ -86,7 +86,7 @@
<javaxMailVersion>1.4</javaxMailVersion>
<!--jettyVersion>9.4.5.v20170502</jettyVersion-->
<jettyVersion>9.4.7-SNAPSHOT</jettyVersion>
<guava.version>22.0</guava.version>
<guava.version>15.0</guava.version>
<openjpaVersion>2.4.1</openjpaVersion>
<!-- restore when we will be able to use a derby in memory database -->
@ -318,12 +318,30 @@
<groupId>com.google.code.atinject</groupId>
<artifactId>atinject</artifactId>
</exclusion>
<exclusion>
<groupId>org.sonatype.sisu</groupId>
<artifactId>sisu-guava</artifactId>
</exclusion>
<exclusion>
<groupId>org.sonatype.sisu</groupId>
<artifactId>sisu-guice</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-common</artifactId>
<version>3.0.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.maven</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.sonatype.sisu</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>