You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2011/11/02 23:30:08 UTC
svn commit: r1196836 - in
/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin:
archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/
archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/r...
Author: olamy
Date: Wed Nov 2 22:30:08 2011
New Revision: 1196836
URL: http://svn.apache.org/viewvc?rev=1196836&view=rev
Log:
add a convenient method to create index in repository admin service
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java?rev=1196836&r1=1196835&r2=1196836&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/managed/ManagedRepositoryAdmin.java Wed Nov 2 22:30:08 2011
@@ -22,6 +22,7 @@ package org.apache.archiva.admin.model.m
import org.apache.archiva.admin.model.AuditInformation;
import org.apache.archiva.admin.model.RepositoryAdminException;
import org.apache.archiva.admin.model.beans.ManagedRepository;
+import org.apache.maven.index.context.IndexingContext;
import java.util.List;
import java.util.Map;
@@ -53,5 +54,15 @@ public interface ManagedRepositoryAdmin
AuditInformation auditInformation, boolean resetStats )
throws RepositoryAdminException;
+ /**
+ *
+ * @param repository
+ * @return
+ * @throws RepositoryAdminException
+ * @since 1.4-M2
+ */
+ IndexingContext createIndexContext( ManagedRepository repository )
+ throws RepositoryAdminException;
+
}
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java?rev=1196836&r1=1196835&r2=1196836&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java Wed Nov 2 22:30:08 2011
@@ -24,8 +24,13 @@ import org.apache.archiva.admin.model.be
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;
import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
import org.apache.archiva.audit.AuditEvent;
+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.ManagedRepositoryConfiguration;
+import org.apache.archiva.configuration.ProxyConnectorConfiguration;
+import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.MetadataRepositoryException;
import org.apache.archiva.metadata.repository.RepositorySession;
@@ -37,12 +42,10 @@ import org.apache.archiva.security.commo
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.validator.GenericValidator;
-import org.apache.archiva.configuration.Configuration;
-import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
-import org.apache.archiva.configuration.ProxyConnectorConfiguration;
-import org.apache.archiva.configuration.RepositoryGroupConfiguration;
import org.apache.maven.index.NexusIndexer;
+import org.apache.maven.index.context.IndexCreator;
import org.apache.maven.index.context.IndexingContext;
+import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.redback.role.RoleManagerException;
import org.codehaus.plexus.taskqueue.TaskQueueException;
@@ -51,10 +54,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
+import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
import java.io.IOException;
+import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -93,10 +98,23 @@ public class DefaultManagedRepositoryAdm
@Inject
private PlexusSisuBridge plexusSisuBridge;
+ @Inject
+ private MavenIndexerUtils mavenIndexerUtils;
@Inject
protected RoleManager roleManager;
+ @PostConstruct
+ private void initialize()
+ throws RepositoryAdminException
+ {
+ // initialize index context on start
+ for ( ManagedRepository managedRepository : getManagedRepositories() )
+ {
+ createIndexContext( managedRepository );
+ }
+ }
+
public List<ManagedRepository> getManagedRepositories()
throws RepositoryAdminException
{
@@ -494,6 +512,62 @@ public class DefaultManagedRepositoryAdm
}
configuration.addManagedRepository( repository );
+
+ }
+
+ public IndexingContext createIndexContext( ManagedRepository repository )
+ throws RepositoryAdminException
+ {
+ try
+ {
+ List<? extends IndexCreator> indexCreators = mavenIndexerUtils.getAllIndexCreators();
+ NexusIndexer indexer = plexusSisuBridge.lookup( NexusIndexer.class );
+
+ IndexingContext context = indexer.getIndexingContexts().get( repository.getId() );
+
+ if ( context != null )
+ {
+ log.debug( "skip adding repository with id {} as already exists", repository.getId() );
+ return context;
+ }
+
+ String indexDir = repository.getIndexDirectory();
+ File managedRepository = new File( repository.getLocation() );
+
+ File indexDirectory = null;
+ if ( indexDir != null && !"".equals( indexDir ) )
+ {
+ indexDirectory = new File( repository.getIndexDirectory() );
+ }
+ else
+ {
+ indexDirectory = new File( managedRepository, ".indexer" );
+ }
+
+ context =
+ indexer.addIndexingContext( repository.getId(), repository.getId(), managedRepository, indexDirectory,
+ managedRepository.toURI().toURL().toExternalForm(),
+ indexDirectory.toURI().toURL().toString(), indexCreators );
+
+ context.setSearchable( repository.isScanned() );
+ return context;
+ }
+ catch ( MalformedURLException e )
+ {
+ throw new RepositoryAdminException( e.getMessage(), e );
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryAdminException( e.getMessage(), e );
+ }
+ catch ( PlexusSisuBridgeException e )
+ {
+ throw new RepositoryAdminException( e.getMessage(), e );
+ }
+ catch ( UnsupportedExistingLuceneIndexException e )
+ {
+ throw new RepositoryAdminException( e.getMessage(), e );
+ }
}
private ManagedRepositoryConfiguration getStageRepoConfig( ManagedRepositoryConfiguration repository )