Author: olamy
Date: Sun Sep 4 14:53:33 2011
New Revision: 1165041
URL: http://svn.apache.org/viewvc?rev=1165041&view=rev
Log:
[MRM-1506] api to configure RemoteRepository : implementation of add and delete
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/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/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java?rev=1165041&r1=1165040&r2=1165041&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
(original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
Sun Sep 4 14:53:33 2011
@@ -19,10 +19,9 @@ package org.apache.archiva.admin.reposit
*/
import org.apache.archiva.admin.AuditInformation;
+import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
import org.apache.archiva.admin.repository.RepositoryAdminException;
-import org.apache.archiva.admin.repository.RepositoryCommonValidator;
import org.apache.archiva.audit.AuditEvent;
-import org.apache.archiva.audit.AuditListener;
import org.apache.archiva.metadata.repository.MetadataRepository;
import org.apache.archiva.metadata.repository.MetadataRepositoryException;
import org.apache.archiva.metadata.repository.RepositorySession;
@@ -34,16 +33,11 @@ import org.apache.archiva.security.Archi
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.validator.GenericValidator;
-import org.apache.maven.archiva.configuration.ArchivaConfiguration;
import org.apache.maven.archiva.configuration.Configuration;
-import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.redback.role.RoleManagerException;
-import org.codehaus.plexus.redback.users.User;
-import org.codehaus.plexus.registry.Registry;
-import org.codehaus.plexus.registry.RegistryException;
import org.codehaus.plexus.taskqueue.TaskQueueException;
import org.codehaus.redback.components.scheduler.CronExpressionValidator;
import org.slf4j.Logger;
@@ -67,6 +61,7 @@ import java.util.Map;
*/
@Service( "managedRepositoryAdmin#default" )
public class DefaultManagedRepositoryAdmin
+ extends AbstractRepositoryAdmin
implements ManagedRepositoryAdmin
{
@@ -76,12 +71,6 @@ public class DefaultManagedRepositoryAdm
public static final String STAGE_REPO_ID_END = "-stage";
- @Inject
- private ArchivaConfiguration archivaConfiguration;
-
- @Inject
- @Named( value = "commons-configuration" )
- private Registry registry;
@Inject
@Named( value = "archivaTaskScheduler#repository" )
@@ -93,11 +82,6 @@ public class DefaultManagedRepositoryAdm
@Inject
private RepositoryStatisticsManager repositoryStatisticsManager;
- @Inject
- private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
-
- @Inject
- private RepositoryCommonValidator repositoryCommonValidator;
@Inject
protected RoleManager roleManager;
@@ -145,7 +129,7 @@ public class DefaultManagedRepositoryAdm
throws RepositoryAdminException
{
- repositoryCommonValidator.basicValidation( managedRepository, false );
+ getRepositoryCommonValidator().basicValidation( managedRepository, false );
triggerAuditEvent( managedRepository.getId(), null, AuditEvent.ADD_MANAGED_REPO,
auditInformation );
return
addManagedRepository( managedRepository.getId(), managedRepository.getLayout(),
managedRepository.getName(),
@@ -184,7 +168,7 @@ public class DefaultManagedRepositoryAdm
throw new RepositoryAdminException( "Cron expression cannot be empty." );
}
- String repoLocation = repositoryCommonValidator.removeExpressions( location );
+ String repoLocation = getRepositoryCommonValidator().removeExpressions( location
);
if ( !GenericValidator.matchRegexp( repoLocation, REPOSITORY_LOCATION_VALID_EXPRESSION
) )
{
@@ -379,7 +363,7 @@ public class DefaultManagedRepositoryAdm
// Ensure that the fields are valid.
- repositoryCommonValidator.basicValidation( managedRepository, true );
+ getRepositoryCommonValidator().basicValidation( managedRepository, true );
Configuration configuration = getArchivaConfiguration().getConfiguration();
@@ -446,38 +430,6 @@ public class DefaultManagedRepositoryAdm
// utils methods
//--------------------------
- protected void triggerAuditEvent( String repositoryId, String resource, String action,
- AuditInformation auditInformation )
- {
- User user = auditInformation == null ? null : auditInformation.getUser();
- AuditEvent event =
- new AuditEvent( repositoryId, user == null ? "null" : (String) user.getPrincipal(),
resource, action );
- event.setRemoteIP( auditInformation == null ? "null" : auditInformation.getRemoteAddr()
);
-
- for ( AuditListener listener : getAuditListeners() )
- {
- listener.auditEvent( event );
- }
-
- }
-
-
- private void saveConfiguration( Configuration config )
- throws RepositoryAdminException
- {
- try
- {
- getArchivaConfiguration().save( config );
- }
- catch ( RegistryException e )
- {
- throw new RepositoryAdminException( "Error occurred in the registry.", e );
- }
- catch ( IndeterminateConfigurationException e )
- {
- throw new RepositoryAdminException( "Error occurred while saving the configuration.",
e );
- }
- }
protected void addRepository( ManagedRepositoryConfiguration repository, Configuration
configuration )
throws RepositoryAdminException, IOException
@@ -581,15 +533,6 @@ public class DefaultManagedRepositoryAdm
// setters/getters
//--------------------------
- public ArchivaConfiguration getArchivaConfiguration()
- {
- return archivaConfiguration;
- }
-
- public void setArchivaConfiguration( ArchivaConfiguration archivaConfiguration )
- {
- this.archivaConfiguration = archivaConfiguration;
- }
public RoleManager getRoleManager()
{
@@ -621,15 +564,6 @@ public class DefaultManagedRepositoryAdm
this.repositorySessionFactory = repositorySessionFactory;
}
- public List<AuditListener> getAuditListeners()
- {
- return auditListeners;
- }
-
- public void setAuditListeners( List<AuditListener> auditListeners )
- {
- this.auditListeners = auditListeners;
- }
public RepositoryArchivaTaskScheduler getRepositoryTaskScheduler()
{
@@ -640,24 +574,4 @@ public class DefaultManagedRepositoryAdm
{
this.repositoryTaskScheduler = repositoryTaskScheduler;
}
-
- public Registry getRegistry()
- {
- return registry;
- }
-
- public void setRegistry( Registry registry )
- {
- this.registry = registry;
- }
-
- public RepositoryCommonValidator getRepositoryCommonValidator()
- {
- return repositoryCommonValidator;
- }
-
- public void setRepositoryCommonValidator( RepositoryCommonValidator repositoryCommonValidator
)
- {
- this.repositoryCommonValidator = repositoryCommonValidator;
- }
}
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java?rev=1165041&r1=1165040&r2=1165041&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
(original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/main/java/org/apache/archiva/admin/repository/remote/DefaultRemoteRepositoryAdmin.java
Sun Sep 4 14:53:33 2011
@@ -18,13 +18,14 @@ package org.apache.archiva.admin.reposit
* under the License.
*/
+import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
import org.apache.archiva.admin.repository.RepositoryAdminException;
import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
import org.springframework.stereotype.Service;
-import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
@@ -34,16 +35,16 @@ import java.util.List;
*/
@Service( "remoteRepositoryAdmin#default" )
public class DefaultRemoteRepositoryAdmin
+ extends AbstractRepositoryAdmin
implements RemoteRepositoryAdmin
{
- @Inject
- private ArchivaConfiguration archivaConfiguration;
+
public List<RemoteRepository> getRemoteRepositories()
throws RepositoryAdminException
{
List<RemoteRepository> remoteRepositories = new ArrayList<RemoteRepository>();
- for ( RemoteRepositoryConfiguration repositoryConfiguration : archivaConfiguration.getConfiguration().getRemoteRepositories()
)
+ for ( RemoteRepositoryConfiguration repositoryConfiguration : getArchivaConfiguration().getConfiguration().getRemoteRepositories()
)
{
remoteRepositories.add(
new RemoteRepository( repositoryConfiguration.getId(), repositoryConfiguration.getName(),
@@ -67,16 +68,63 @@ public class DefaultRemoteRepositoryAdmi
return null;
}
- public Boolean deleteRemoteRepository( String repositoryId )
+ public Boolean addRemoteRepository( RemoteRepository remoteRepository )
throws RepositoryAdminException
{
- return null; //To change body of implemented methods use File | Settings | File
Templates.
+ getRepositoryCommonValidator().basicValidation( remoteRepository, false );
+
+ //TODO we can validate it's a good uri/url
+ if ( StringUtils.isEmpty( remoteRepository.getUrl() ) )
+ {
+ throw new RepositoryAdminException( "url cannot be null" );
+ }
+
+ //MRM-752 - url needs trimming
+ remoteRepository.setUrl( StringUtils.trim( remoteRepository.getUrl() ) );
+
+ RemoteRepositoryConfiguration remoteRepositoryConfiguration = new RemoteRepositoryConfiguration();
+ remoteRepositoryConfiguration.setId( remoteRepository.getId() );
+ remoteRepositoryConfiguration.setPassword( remoteRepository.getPassword() );
+ remoteRepositoryConfiguration.setTimeout( remoteRepository.getTimeout() );
+ remoteRepositoryConfiguration.setUrl( remoteRepository.getUrl() );
+ remoteRepositoryConfiguration.setUsername( remoteRepository.getUserName() );
+ remoteRepositoryConfiguration.setLayout( remoteRepository.getLayout() );
+ remoteRepositoryConfiguration.setName( remoteRepository.getName() );
+
+ Configuration configuration = getArchivaConfiguration().getConfiguration();
+ configuration.addRemoteRepository( remoteRepositoryConfiguration );
+ saveConfiguration( configuration );
+ return Boolean.TRUE;
}
- public Boolean addRemoteRepository( RemoteRepository remoteRepository )
+ public Boolean deleteRemoteRepository( String repositoryId )
throws RepositoryAdminException
{
- return null; //To change body of implemented methods use File | Settings | File
Templates.
+ Configuration configuration = getArchivaConfiguration().getConfiguration();
+
+ RemoteRepositoryConfiguration remoteRepositoryConfiguration =
+ configuration.getRemoteRepositoriesAsMap().get( repositoryId );
+ if ( remoteRepositoryConfiguration == null )
+ {
+ throw new RepositoryAdminException(
+ "remoteRepository with id " + repositoryId + " not exist cannot remove it"
);
+ }
+
+ configuration.removeRemoteRepository( remoteRepositoryConfiguration );
+
+ // [MRM-520] Proxy Connectors are not deleted with the deletion of a Repository.
+ List<ProxyConnectorConfiguration> proxyConnectors = getProxyConnectors();
+ for ( ProxyConnectorConfiguration proxyConnector : proxyConnectors )
+ {
+ if ( StringUtils.equals( proxyConnector.getTargetRepoId(), repositoryId ) )
+ {
+ configuration.removeProxyConnector( proxyConnector );
+ }
+ }
+
+ saveConfiguration( configuration );
+
+ return Boolean.TRUE;
}
public Boolean updateRemoteRepository( RemoteRepository remoteRepository )
Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java?rev=1165041&r1=1165040&r2=1165041&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java
(original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/src/test/java/org/apache/archiva/admin/repository/remote/RemoteRepositoryAdminTest.java
Sun Sep 4 14:53:33 2011
@@ -55,4 +55,45 @@ public class RemoteRepositoryAdminTest
assertNull( central.getUserName() );
assertNull( central.getPassword() );
}
+
+ @Test
+ public void addAndDelete()
+ throws Exception
+ {
+ int initialSize = remoteRepositoryAdmin.getRemoteRepositories().size();
+
+ RemoteRepository remoteRepository = getRemoteRepository();
+
+ remoteRepositoryAdmin.addRemoteRepository( remoteRepository );
+
+ assertEquals( initialSize + 1, remoteRepositoryAdmin.getRemoteRepositories().size()
);
+
+ RemoteRepository repo = remoteRepositoryAdmin.getRemoteRepository( "foo" );
+ assertNotNull( repo );
+ assertEquals( getRemoteRepository().getPassword(), repo.getPassword() );
+ assertEquals( getRemoteRepository().getUrl(), repo.getUrl() );
+ assertEquals( getRemoteRepository().getUserName(), repo.getUserName() );
+ assertEquals( getRemoteRepository().getName(), repo.getName() );
+ assertEquals( getRemoteRepository().getTimeout(), repo.getTimeout() );
+
+ remoteRepositoryAdmin.deleteRemoteRepository( "foo" );
+
+ assertEquals( initialSize, remoteRepositoryAdmin.getRemoteRepositories().size() );
+
+ repo = remoteRepositoryAdmin.getRemoteRepository( "foo" );
+ assertNull( repo );
+ }
+
+
+ private RemoteRepository getRemoteRepository()
+ {
+ RemoteRepository remoteRepository = new RemoteRepository();
+ remoteRepository.setUrl( "http://foo.com/maven-it-rocks" );
+ remoteRepository.setTimeout( 10 );
+ remoteRepository.setName( "maven foo" );
+ remoteRepository.setUserName( "foo-name" );
+ remoteRepository.setPassword( "toto" );
+ remoteRepository.setId( "foo" );
+ return remoteRepository;
+ }
}
|