aboutsummaryrefslogtreecommitdiffstats
path: root/archiva-modules
diff options
context:
space:
mode:
authorOlivier Lamy <olamy@apache.org>2011-09-01 07:33:21 +0000
committerOlivier Lamy <olamy@apache.org>2011-09-01 07:33:21 +0000
commit5a1a84ca3023078795cc1ffffdc86cfc6053e717 (patch)
tree710254e8fd4f458024fdddf90b98071b0819b534 /archiva-modules
parentf42244015ec3f920aa70718b0796b3035d6d526d (diff)
downloadarchiva-5a1a84ca3023078795cc1ffffdc86cfc6053e717.tar.gz
archiva-5a1a84ca3023078795cc1ffffdc86cfc6053e717.zip
[MRM-1490] expose rest services: split in more smaller classes rather than a big one with all services
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1163923 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules')
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java87
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java38
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java60
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java124
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java225
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml1
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java25
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/PingServiceTest.java11
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java60
9 files changed, 307 insertions, 324 deletions
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java
new file mode 100644
index 000000000..cb592a2a9
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ManagedRepositoriesService.java
@@ -0,0 +1,87 @@
+package org.apache.archiva.rest.api.services;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.admin.repository.RepositoryAdminException;
+import org.apache.archiva.rest.api.model.ManagedRepository;
+import org.apache.archiva.rest.api.model.RemoteRepository;
+import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.codehaus.plexus.redback.authorization.RedbackAuthorization;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import java.util.List;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.4
+ */
+@Path( "/managedRepositoriesService/" )
+public interface ManagedRepositoriesService
+{
+ @Path( "getManagedRepositories" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
+ @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ List<ManagedRepository> getManagedRepositories()
+ throws RepositoryAdminException;
+
+ @Path( "getManagedRepository/{repositoryId}" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
+ @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ ManagedRepository getManagedRepository( @PathParam( "repositoryId" ) String repositoryId )
+ throws RepositoryAdminException;
+
+ @Path( "deleteManagedRepository" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
+ @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ Boolean deleteManagedRepository( @QueryParam( "repositoryId" ) String repositoryId,
+ @QueryParam( "deleteContent" ) boolean deleteContent )
+ throws Exception;
+
+
+ @Path( "addManagedRepository" )
+ @POST
+ @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
+ @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ Boolean addManagedRepository( ManagedRepository managedRepository )
+ throws Exception;
+
+
+ @Path( "updateManagedRepository" )
+ @POST
+ @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
+ @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ Boolean updateManagedRepository( ManagedRepository managedRepository )
+ throws Exception;
+
+
+
+}
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
index 0fb0b14ee..e2ce30181 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/RepositoriesService.java
@@ -42,45 +42,7 @@ import java.util.List;
@Path( "/repositoriesService/" )
public interface RepositoriesService
{
- @Path( "getManagedRepositories" )
- @GET
- @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
- @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
- List<ManagedRepository> getManagedRepositories()
- throws RepositoryAdminException;
-
- @Path( "getManagedRepository/{repositoryId}" )
- @GET
- @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
- @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
- ManagedRepository getManagedRepository( @PathParam( "repositoryId" ) String repositoryId )
- throws RepositoryAdminException;
-
- @Path( "deleteManagedRepository" )
- @GET
- @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
- @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
- Boolean deleteManagedRepository( @QueryParam( "repositoryId" ) String repositoryId,
- @QueryParam( "deleteContent" ) boolean deleteContent )
- throws Exception;
-
- @Path( "addManagedRepository" )
- @POST
- @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
- @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
- Boolean addManagedRepository( ManagedRepository managedRepository )
- throws Exception;
-
-
- @Path( "updateManagedRepository" )
- @POST
- @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
- @RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
- Boolean updateManagedRepository( ManagedRepository managedRepository )
- throws Exception;
@Path( "getRemoteRepositories" )
@GET
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java
new file mode 100644
index 000000000..9c1db9aac
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/AbstractRestService.java
@@ -0,0 +1,60 @@
+package org.apache.archiva.rest.services;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.admin.AuditInformation;
+import org.apache.archiva.audit.AuditListener;
+import org.codehaus.plexus.redback.users.User;
+import org.codehaus.redback.rest.services.RedbackAuthenticationThreadLocal;
+import org.codehaus.redback.rest.services.RedbackRequestInformation;
+
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * abstract class with common utilities methods
+ *
+ * @author Olivier Lamy
+ * @since 1.4
+ */
+public abstract class AbstractRestService
+{
+
+ @Inject
+ private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
+
+ protected AuditInformation getAuditInformation()
+ {
+ RedbackRequestInformation redbackRequestInformation = RedbackAuthenticationThreadLocal.get();
+ User user = redbackRequestInformation == null ? null : redbackRequestInformation.getUser();
+ String remoteAddr = redbackRequestInformation == null ? null : redbackRequestInformation.getRemoteAddr();
+ return new AuditInformation( user, remoteAddr );
+ }
+
+ public List<AuditListener> getAuditListeners()
+ {
+ return auditListeners;
+ }
+
+ public void setAuditListeners( List<AuditListener> auditListeners )
+ {
+ this.auditListeners = auditListeners;
+ }
+}
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java
new file mode 100644
index 000000000..a275f0d4f
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java
@@ -0,0 +1,124 @@
+package org.apache.archiva.rest.services;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.archiva.admin.repository.RepositoryAdminException;
+import org.apache.archiva.admin.repository.managed.ManagedRepositoryAdmin;
+import org.apache.archiva.rest.api.model.ManagedRepository;
+import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Olivier Lamy
+ * @since 1.4
+ */
+@Service( "managedRepositoriesService#rest" )
+public class DefaultManagedRepositoriesService
+ extends AbstractRestService
+ implements ManagedRepositoriesService
+{
+
+ @Inject
+ private ManagedRepositoryAdmin managedRepositoryAdmin;
+
+ public List<ManagedRepository> getManagedRepositories()
+ throws RepositoryAdminException
+ {
+ List<org.apache.archiva.admin.repository.managed.ManagedRepository> repos =
+ managedRepositoryAdmin.getManagedRepositories();
+
+ List<ManagedRepository> managedRepos = new ArrayList<ManagedRepository>( repos.size() );
+
+ for ( org.apache.archiva.admin.repository.managed.ManagedRepository repoConfig : repos )
+ {
+ // TODO staging repo too
+ ManagedRepository repo =
+ new ManagedRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(),
+ repoConfig.getLayout(), repoConfig.isSnapshots(), repoConfig.isReleases(),
+ repoConfig.isBlockRedeployments(), false, repoConfig.getCronExpression() );
+ managedRepos.add( repo );
+ }
+
+ return managedRepos;
+ }
+
+ public ManagedRepository getManagedRepository( String repositoryId )
+ throws RepositoryAdminException
+ {
+ List<ManagedRepository> repos = getManagedRepositories();
+ for ( ManagedRepository repo : repos )
+ {
+ if ( StringUtils.equals( repo.getId(), repositoryId ) )
+ {
+ return repo;
+ }
+ }
+ return null;
+ }
+
+
+ public Boolean deleteManagedRepository( String repoId, boolean deleteContent )
+ throws Exception
+ {
+
+ return managedRepositoryAdmin.deleteManagedRepository( repoId, getAuditInformation(), deleteContent );
+ }
+
+ public Boolean addManagedRepository( ManagedRepository managedRepository )
+ throws Exception
+ {
+ org.apache.archiva.admin.repository.managed.ManagedRepository repo =
+ new org.apache.archiva.admin.repository.managed.ManagedRepository();
+ repo.setLocation( managedRepository.getLocation() );
+ repo.setBlockRedeployments( managedRepository.isBlockRedeployments() );
+ repo.setCronExpression( managedRepository.getCronExpression() );
+ repo.setId( managedRepository.getId() );
+ repo.setLayout( managedRepository.getLayout() );
+ repo.setName( managedRepository.getName() );
+ repo.setReleases( managedRepository.isReleases() );
+ repo.setSnapshots( managedRepository.isSnapshots() );
+ return managedRepositoryAdmin.addManagedRepository( repo, managedRepository.isStageRepoNeeded(),
+ getAuditInformation() );
+ }
+
+
+ public Boolean updateManagedRepository( ManagedRepository managedRepository )
+ throws Exception
+ {
+ org.apache.archiva.admin.repository.managed.ManagedRepository repo =
+ new org.apache.archiva.admin.repository.managed.ManagedRepository();
+ repo.setLocation( managedRepository.getLocation() );
+ repo.setBlockRedeployments( managedRepository.isBlockRedeployments() );
+ repo.setCronExpression( managedRepository.getCronExpression() );
+ repo.setId( managedRepository.getId() );
+ repo.setLayout( managedRepository.getLayout() );
+ repo.setName( managedRepository.getName() );
+ repo.setReleases( managedRepository.isReleases() );
+ repo.setSnapshots( managedRepository.isSnapshots() );
+ return managedRepositoryAdmin.updateManagedRepository( repo, managedRepository.isStageRepoNeeded(),
+ getAuditInformation(),
+ managedRepository.isResetStats() );
+ }
+
+}
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
index 0cd5deeae..d85c3561e 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultRepositoriesService.java
@@ -19,33 +19,19 @@ package org.apache.archiva.rest.services;
* under the License.
*/
-import org.apache.archiva.admin.AuditInformation;
-import org.apache.archiva.admin.repository.RepositoryAdminException;
import org.apache.archiva.admin.repository.managed.ManagedRepositoryAdmin;
-import org.apache.archiva.audit.AuditEvent;
-import org.apache.archiva.audit.AuditListener;
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
-import org.apache.archiva.rest.api.model.ManagedRepository;
import org.apache.archiva.rest.api.model.RemoteRepository;
import org.apache.archiva.rest.api.services.RepositoriesService;
import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
import org.apache.archiva.scheduler.repository.RepositoryTask;
-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.IndeterminateConfigurationException;
-import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
-import org.apache.maven.archiva.security.ArchivaRoleConstants;
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.rest.services.RedbackAuthenticationThreadLocal;
-import org.codehaus.redback.rest.services.RedbackRequestInformation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@@ -53,8 +39,6 @@ import org.springframework.stereotype.Service;
import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.PathParam;
-import java.io.File;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -64,6 +48,7 @@ import java.util.List;
*/
@Service( "repositoriesService#rest" )
public class DefaultRepositoriesService
+ extends AbstractRestService
implements RepositoriesService
{
private Logger log = LoggerFactory.getLogger( getClass() );
@@ -76,10 +61,6 @@ public class DefaultRepositoriesService
private static final String REPOSITORY_LOCATION_VALID_EXPRESSION = "^[-a-zA-Z0-9._/~:?!&amp;=\\\\]+$";
- // TODO move this field to an abstract class
- @Inject
- private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
-
@Inject
protected RoleManager roleManager;
@@ -103,47 +84,6 @@ public class DefaultRepositoriesService
@Inject
private ManagedRepositoryAdmin managedRepositoryAdmin;
- public List<ManagedRepository> getManagedRepositories()
- throws RepositoryAdminException
- {
- List<org.apache.archiva.admin.repository.managed.ManagedRepository> repos =
- managedRepositoryAdmin.getManagedRepositories();
-
- List<ManagedRepository> managedRepos = new ArrayList<ManagedRepository>( repos.size() );
-
- for ( org.apache.archiva.admin.repository.managed.ManagedRepository repoConfig : repos )
- {
- // TODO staging repo too
- ManagedRepository repo =
- new ManagedRepository( repoConfig.getId(), repoConfig.getName(), repoConfig.getLocation(),
- repoConfig.getLayout(), repoConfig.isSnapshots(), repoConfig.isReleases(),
- repoConfig.isBlockRedeployments(), false, repoConfig.getCronExpression() );
- managedRepos.add( repo );
- }
-
- return managedRepos;
- }
-
- public ManagedRepository getManagedRepository( String repositoryId )
- throws RepositoryAdminException
- {
- List<ManagedRepository> repos = getManagedRepositories();
- for ( ManagedRepository repo : repos )
- {
- if ( StringUtils.equals( repo.getId(), repositoryId ) )
- {
- return repo;
- }
- }
- return null;
- }
-
- public Boolean deleteManagedRepository( String repoId, boolean deleteContent )
- throws Exception
- {
-
- return managedRepositoryAdmin.deleteManagedRepository( repoId, getAuditInformation(), deleteContent );
- }
public List<RemoteRepository> getRemoteRepositories()
{
@@ -162,42 +102,7 @@ public class DefaultRepositoriesService
return remoteRepos;
}
- public Boolean addManagedRepository( ManagedRepository managedRepository )
- throws Exception
- {
- org.apache.archiva.admin.repository.managed.ManagedRepository repo =
- new org.apache.archiva.admin.repository.managed.ManagedRepository();
- repo.setLocation( managedRepository.getLocation() );
- repo.setBlockRedeployments( managedRepository.isBlockRedeployments() );
- repo.setCronExpression( managedRepository.getCronExpression() );
- repo.setId( managedRepository.getId() );
- repo.setLayout( managedRepository.getLayout() );
- repo.setName( managedRepository.getName() );
- repo.setReleases( managedRepository.isReleases() );
- repo.setSnapshots( managedRepository.isSnapshots() );
- return managedRepositoryAdmin.addManagedRepository( repo, managedRepository.isStageRepoNeeded(),
- getAuditInformation() );
- }
-
-
- public Boolean updateManagedRepository( ManagedRepository managedRepository )
- throws Exception
- {
- org.apache.archiva.admin.repository.managed.ManagedRepository repo =
- new org.apache.archiva.admin.repository.managed.ManagedRepository();
- repo.setLocation( managedRepository.getLocation() );
- repo.setBlockRedeployments( managedRepository.isBlockRedeployments() );
- repo.setCronExpression( managedRepository.getCronExpression() );
- repo.setId( managedRepository.getId() );
- repo.setLayout( managedRepository.getLayout() );
- repo.setName( managedRepository.getName() );
- repo.setReleases( managedRepository.isReleases() );
- repo.setSnapshots( managedRepository.isSnapshots() );
- return managedRepositoryAdmin.updateManagedRepository( repo, managedRepository.isStageRepoNeeded(),
- getAuditInformation(), managedRepository.isResetStats() );
- }
-
-
+ // FIXME olamy move this to repository admin component !
public Boolean scanRepository( String repositoryId, boolean fullScan )
{
if ( repositoryTaskScheduler.isProcessingRepositoryTask( repositoryId ) )
@@ -238,132 +143,6 @@ public class DefaultRepositoriesService
return false;
}
}
-
- //-----------------------------------------------
- // util methods
- // FIXME most are copied from xmlrpc
- // olamt move those in common utility classes
- //-----------------------------------------------
-
- protected void triggerAuditEvent( String repositoryId, String resource, String action )
- {
- User user = RedbackAuthenticationThreadLocal.get().getUser();
- if ( user == null )
- {
- log.warn( "no user found in Redback ThreadLocal" );
- AuditEvent event =
- new AuditEvent( repositoryId, user == null ? "null" : user.getUsername(), resource, action );
- // FIXME use a thread local through cxf interceptors to store this
- //event.setRemoteIP( getRemoteAddr() );
-
- for ( AuditListener listener : auditListeners )
- {
- listener.auditEvent( event );
- }
- }
- }
-
- protected void addRepositoryRoles( ManagedRepositoryConfiguration newRepository )
- throws RoleManagerException
- {
- String repoId = newRepository.getId();
-
- // TODO: double check these are configured on start up
- // TODO: belongs in the business logic
-
- if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId ) )
- {
- roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_OBSERVER, repoId );
- }
-
- if ( !roleManager.templatedRoleExists( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId ) )
- {
- roleManager.createTemplatedRole( ArchivaRoleConstants.TEMPLATE_REPOSITORY_MANAGER, repoId );
- }
- }
-
- public Boolean executeRepositoryScanner( String repoId )
- throws Exception
- {
- return scanRepository( repoId, true );
- }
-
- private void saveConfiguration( Configuration config )
- throws Exception
- {
- try
- {
- archivaConfiguration.save( config );
- }
- catch ( RegistryException e )
- {
- throw new Exception( "Error occurred in the registry." );
- }
- catch ( IndeterminateConfigurationException e )
- {
- throw new Exception( "Error occurred while saving the configuration." );
- }
- }
-
- protected void addRepository( ManagedRepositoryConfiguration repository, Configuration configuration )
- throws IOException
- {
- // Normalize the path
- File file = new File( repository.getLocation() );
- repository.setLocation( file.getCanonicalPath() );
- if ( !file.exists() )
- {
- file.mkdirs();
- }
- if ( !file.exists() || !file.isDirectory() )
- {
- throw new IOException(
- "Unable to add repository - no write access, can not create the root directory: " + file );
- }
-
- configuration.addManagedRepository( repository );
- }
-
- private ManagedRepositoryConfiguration getStageRepoConfig( ManagedRepositoryConfiguration repository )
- {
- ManagedRepositoryConfiguration stagingRepository = new ManagedRepositoryConfiguration();
- stagingRepository.setId( repository.getId() + "-stage" );
- stagingRepository.setLayout( repository.getLayout() );
- stagingRepository.setName( repository.getName() + "-stage" );
- stagingRepository.setBlockRedeployments( repository.isBlockRedeployments() );
- stagingRepository.setDaysOlder( repository.getDaysOlder() );
- stagingRepository.setDeleteReleasedSnapshots( repository.isDeleteReleasedSnapshots() );
- stagingRepository.setIndexDir( repository.getIndexDir() );
- String path = repository.getLocation();
- int lastIndex = path.lastIndexOf( '/' );
- stagingRepository.setLocation( path.substring( 0, lastIndex ) + "/" + stagingRepository.getId() );
- stagingRepository.setRefreshCronExpression( repository.getRefreshCronExpression() );
- stagingRepository.setReleases( repository.isReleases() );
- stagingRepository.setRetentionCount( repository.getRetentionCount() );
- stagingRepository.setScanned( repository.isScanned() );
- stagingRepository.setSnapshots( repository.isSnapshots() );
- return stagingRepository;
- }
-
-
- private String removeExpressions( String directory )
- {
- String value = StringUtils.replace( directory, "${appserver.base}",
- registry.getString( "appserver.base", "${appserver.base}" ) );
- value = StringUtils.replace( value, "${appserver.home}",
- registry.getString( "appserver.home", "${appserver.home}" ) );
- return value;
- }
-
-
- private AuditInformation getAuditInformation()
- {
- RedbackRequestInformation redbackRequestInformation = RedbackAuthenticationThreadLocal.get();
- User user = redbackRequestInformation == null ? null : redbackRequestInformation.getUser();
- String remoteAddr = redbackRequestInformation == null ? null : redbackRequestInformation.getRemoteAddr();
- return new AuditInformation( user, remoteAddr );
- }
-
}
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
index c6575c393..d4fc609e7 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/resources/META-INF/spring-context.xml
@@ -50,6 +50,7 @@
<jaxrs:serviceBeans>
<ref bean="pingService#rest"/>
<ref bean="repositoriesService#rest"/>
+ <ref bean="managedRepositoriesService#rest"/>
</jaxrs:serviceBeans>
<jaxrs:outInterceptors>
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
index b8e9cbbb5..8f224ee19 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/AbstractArchivaRestTest.java
@@ -19,6 +19,10 @@ package org.apache.archiva.rest.services;
*/
+import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
+import org.apache.archiva.rest.api.services.PingService;
+import org.apache.archiva.rest.api.services.RepositoriesService;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.codehaus.redback.rest.services.AbstractRestServicesTest;
/**
@@ -35,4 +39,25 @@ public abstract class AbstractArchivaRestTest
{
return "classpath*:META-INF/spring-context.xml,classpath:META-INF/spring-context-test.xml";
}
+
+ protected RepositoriesService getRepositoriesService()
+ {
+ return JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
+ RepositoriesService.class );
+
+ }
+
+ protected ManagedRepositoriesService getManagedRepositoriesService()
+ {
+ return JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
+ ManagedRepositoriesService.class );
+
+ }
+
+ protected PingService getPingService()
+ {
+ return JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
+ PingService.class );
+
+ }
}
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/PingServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/PingServiceTest.java
index da9ea8233..08cdc829f 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/PingServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/PingServiceTest.java
@@ -20,10 +20,8 @@ package org.apache.archiva.rest.services;
*/
import org.apache.archiva.rest.api.services.PingService;
-import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.ServerWebApplicationException;
import org.apache.cxf.jaxrs.client.WebClient;
-import org.codehaus.redback.rest.services.AbstractRestServicesTest;
import org.junit.Ignore;
import org.junit.Test;
@@ -35,13 +33,6 @@ public class PingServiceTest
extends AbstractArchivaRestTest
{
- PingService getPingService()
- {
- return JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
- PingService.class );
-
- }
-
@Test
public void ping()
@@ -83,7 +74,7 @@ public class PingServiceTest
assertEquals( "Yeah Baby It rocks!", res );
}
- @Ignore("FIXME guest failed ???")
+ @Ignore( "FIXME guest failed ???" )
public void pingWithAuthzGuest()
throws Exception
{
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
index beb9573f7..d7c0e691f 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/RepositoriesServiceTest.java
@@ -21,8 +21,8 @@ package org.apache.archiva.rest.services;
import org.apache.archiva.rest.api.model.ManagedRepository;
import org.apache.archiva.rest.api.model.RemoteRepository;
+import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
import org.apache.archiva.rest.api.services.RepositoriesService;
-import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.ServerWebApplicationException;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.maven.archiva.common.utils.FileUtil;
@@ -38,12 +38,6 @@ public class RepositoriesServiceTest
extends AbstractArchivaRestTest
{
- RepositoriesService getRepositoriesService()
- {
- return JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
- RepositoriesService.class );
-
- }
@Test( expected = ServerWebApplicationException.class )
public void listRemoteRepositoriesKarmaFailed()
@@ -98,7 +92,12 @@ public class RepositoriesServiceTest
RepositoriesService service = getRepositoriesService();
WebClient.client( service ).header( "Authorization", authorizationHeader );
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
- String repoId = service.getManagedRepositories().get( 0 ).getId();
+
+ ManagedRepositoriesService managedRepositoriesService = getManagedRepositoriesService();
+ WebClient.client( managedRepositoriesService ).header( "Authorization", authorizationHeader );
+ WebClient.getConfig( managedRepositoriesService ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
+
+ String repoId = managedRepositoriesService.getManagedRepositories().get( 0 ).getId();
assertTrue( service.scanRepository( repoId, true ) );
@@ -108,51 +107,6 @@ public class RepositoriesServiceTest
}
- @Test
- public void addManagedRepo()
- throws Exception
- {
- RepositoriesService service = getRepositoriesService();
- WebClient.client( service ).header( "Authorization", authorizationHeader );
- WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
- ManagedRepository repo = getTestManagedRepository();
- if ( service.getManagedRepository( repo.getId() ) != null )
- {
- service.deleteManagedRepository( repo.getId(), true );
- assertNull( service.getManagedRepository( repo.getId() ) );
- }
- service.addManagedRepository( repo );
- assertNotNull( service.getManagedRepository( repo.getId() ) );
- }
-
- @Test
- public void updateManagedRepo()
- throws Exception
- {
- RepositoriesService service = getRepositoriesService();
- WebClient.client( service ).header( "Authorization", authorizationHeader );
- WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
- ManagedRepository repo = getTestManagedRepository();
- if ( service.getManagedRepository( repo.getId() ) != null )
- {
- service.deleteManagedRepository( repo.getId(), true );
- assertNull( service.getManagedRepository( repo.getId() ) );
- }
- service.addManagedRepository( repo );
- repo = service.getManagedRepository( repo.getId() );
- assertNotNull( repo );
- assertEquals( "test", repo.getName() );
- // toto is foo in French :-)
- repo.setName( "toto" );
-
- service.updateManagedRepository( repo );
-
- repo = service.getManagedRepository( repo.getId() );
- assertNotNull( repo );
- assertEquals( "toto", repo.getName() );
-
- }
-
private ManagedRepository getTestManagedRepository()
{