Author: olamy
Date: Wed Mar 7 22:01:51 2012
New Revision: 1298149
URL: http://svn.apache.org/viewvc?rev=1298149&view=rev
Log:
[MRM-1579] rewrite repositories scanning admin page
improve rest services to ease screen implementation.
Added:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java
(contents, props changed)
- copied, changed from r1298148,
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java
(contents, props changed)
- copied, changed from r1298148,
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/utils/MockInvalidRepositoryContentConsumer.java
(with props)
Removed:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java?rev=1298149&r1=1298148&r2=1298149&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaAdministrationService.java
Wed Mar 7 22:01:51 2012
@@ -23,6 +23,7 @@ import org.apache.archiva.admin.model.be
import org.apache.archiva.admin.model.beans.NetworkConfiguration;
import org.apache.archiva.admin.model.beans.OrganisationInformation;
import org.apache.archiva.admin.model.beans.UiConfiguration;
+import org.apache.archiva.rest.api.model.AdminRepositoryConsumer;
import org.apache.archiva.security.common.ArchivaRoleConstants;
import org.codehaus.plexus.redback.authorization.RedbackAuthorization;
@@ -157,6 +158,26 @@ public interface ArchivaAdministrationSe
List<String> getKnownContentConsumers()
throws ArchivaRestServiceException;
+ @Path( "getKnownContentAdminRepositoryConsumers" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @RedbackAuthorization( permissions =
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ /**
+ * @since 1.4-M3
+ */
+ List<AdminRepositoryConsumer> getKnownContentAdminRepositoryConsumers()
+ throws ArchivaRestServiceException;
+
+ @Path( "getInvalidContentAdminRepositoryConsumers" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @RedbackAuthorization( permissions =
ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
+ /**
+ * @since 1.4-M3
+ */
+ List<AdminRepositoryConsumer> getInvalidContentAdminRepositoryConsumers()
+ throws ArchivaRestServiceException;
+
@Path( "getInvalidContentConsumers" )
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java?rev=1298149&r1=1298148&r2=1298149&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultArchivaAdministrationService.java
Wed Mar 7 22:01:51 2012
@@ -27,8 +27,13 @@ import org.apache.archiva.admin.model.be
import org.apache.archiva.admin.model.beans.UiConfiguration;
import org.apache.archiva.model.ArtifactReference;
import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.scanner.RepositoryContentConsumers;
+import org.apache.archiva.rest.api.model.AdminRepositoryConsumer;
import org.apache.archiva.rest.api.services.ArchivaAdministrationService;
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
+import org.apache.archiva.rest.services.utils.AddAdminRepoConsumerClosure;
+import
org.apache.archiva.rest.services.utils.AdminRepositoryConsumerComparator;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
@@ -55,6 +60,9 @@ public class DefaultArchivaAdministratio
@Named( value = "managedRepositoryContent#legacy" )
private ManagedRepositoryContent repositoryContent;
+ @Inject
+ private RepositoryContentConsumers repoConsumerUtil;
+
public List<LegacyArtifactPath> getLegacyArtifactPaths()
throws ArchivaRestServiceException
{
@@ -386,4 +394,40 @@ public class DefaultArchivaAdministratio
throw new ArchivaRestServiceException( e.getMessage() );
}
}
+
+ public List<AdminRepositoryConsumer>
getKnownContentAdminRepositoryConsumers()
+ throws ArchivaRestServiceException
+ {
+ try
+ {
+ AddAdminRepoConsumerClosure addAdminRepoConsumer =
+ new AddAdminRepoConsumerClosure(
archivaAdministration.getKnownContentConsumers() );
+ CollectionUtils.forAllDo(
repoConsumerUtil.getAvailableKnownConsumers(), addAdminRepoConsumer );
+ List<AdminRepositoryConsumer> knownContentConsumers =
addAdminRepoConsumer.getList();
+ Collections.sort( knownContentConsumers,
AdminRepositoryConsumerComparator.getInstance() );
+ return knownContentConsumers;
+ }
+ catch ( RepositoryAdminException e )
+ {
+ throw new ArchivaRestServiceException( e.getMessage() );
+ }
+ }
+
+ public List<AdminRepositoryConsumer>
getInvalidContentAdminRepositoryConsumers()
+ throws ArchivaRestServiceException
+ {
+ try
+ {
+ AddAdminRepoConsumerClosure addAdminRepoConsumer =
+ new AddAdminRepoConsumerClosure(
archivaAdministration.getInvalidContentConsumers() );
+ CollectionUtils.forAllDo(
repoConsumerUtil.getAvailableInvalidConsumers(), addAdminRepoConsumer );
+ List<AdminRepositoryConsumer> invalidContentConsumers =
addAdminRepoConsumer.getList();
+ Collections.sort( invalidContentConsumers,
AdminRepositoryConsumerComparator.getInstance() );
+ return invalidContentConsumers;
+ }
+ catch ( RepositoryAdminException e )
+ {
+ throw new ArchivaRestServiceException( e.getMessage() );
+ }
+ }
}
Copied:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java
(from r1298148,
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java)
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java&p1=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java&r1=1298148&r2=1298149&rev=1298149&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java
Wed Mar 7 22:01:51 2012
@@ -1,4 +1,4 @@
-package org.apache.archiva.web.action.admin.scanning;
+package org.apache.archiva.rest.services.utils;
/*
* Licensed to the Apache Software Foundation (ASF) under one
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AddAdminRepoConsumerClosure.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java
(from r1298148,
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java)
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java?p2=archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java&p1=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java&r1=1298148&r2=1298149&rev=1298149&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java
Wed Mar 7 22:01:51 2012
@@ -1,4 +1,4 @@
-package org.apache.archiva.web.action.admin.scanning;
+package org.apache.archiva.rest.services.utils;
/*
* Licensed to the Apache Software Foundation (ASF) under one
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/utils/AdminRepositoryConsumerComparator.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java?rev=1298149&r1=1298148&r2=1298149&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/ArchivaAdministrationServiceTest.java
Wed Mar 7 22:01:51 2012
@@ -22,10 +22,12 @@ import org.apache.archiva.admin.model.be
import org.apache.archiva.admin.model.beans.LegacyArtifactPath;
import org.apache.archiva.admin.model.beans.OrganisationInformation;
import org.apache.archiva.admin.model.beans.UiConfiguration;
+import org.apache.archiva.rest.api.model.AdminRepositoryConsumer;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import java.util.Arrays;
+import java.util.List;
/**
* @author Olivier Lamy
@@ -130,4 +132,54 @@ public class ArchivaAdministrationServic
assertFalse( ui.isAppletFindEnabled() );
assertFalse( ui.isShowFindArtifacts() );
}
+
+ @Test
+ public void getKnownContentAdminRepositoryConsumer()
+ throws Exception
+ {
+ List<AdminRepositoryConsumer> consumers =
+
getArchivaAdministrationService().getKnownContentAdminRepositoryConsumers();
+ assertFalse( consumers.isEmpty() );
+ }
+
+ @Test
+ public void getInvalidContentAdminRepositoryConsumer()
+ throws Exception
+ {
+ List<AdminRepositoryConsumer> consumers =
+
getArchivaAdministrationService().getInvalidContentAdminRepositoryConsumers();
+ assertFalse( consumers.isEmpty() );
+ assertAllDisabled( consumers );
+
+ getArchivaAdministrationService().addInvalidContentConsumer( "foo" );
+
+ consumers =
getArchivaAdministrationService().getInvalidContentAdminRepositoryConsumers();
+ assertFalse( consumers.isEmpty() );
+ assertAllEnabled( consumers );
+
+
+ getArchivaAdministrationService().removeInvalidContentConsumer( "foo"
);
+
+ consumers =
getArchivaAdministrationService().getInvalidContentAdminRepositoryConsumers();
+
+ assertAllDisabled( consumers );
+
+ assertFalse( consumers.isEmpty() );
+ }
+
+ private void assertAllEnabled( List<AdminRepositoryConsumer> consumers )
+ {
+ for ( AdminRepositoryConsumer consumer : consumers )
+ {
+ assertTrue( consumer.isEnabled() );
+ }
+ }
+
+ private void assertAllDisabled( List<AdminRepositoryConsumer> consumers )
+ {
+ for ( AdminRepositoryConsumer consumer : consumers )
+ {
+ assertFalse( consumer.isEnabled() );
+ }
+ }
}
Added:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/utils/MockInvalidRepositoryContentConsumer.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/utils/MockInvalidRepositoryContentConsumer.java?rev=1298149&view=auto
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/utils/MockInvalidRepositoryContentConsumer.java
(added)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/utils/MockInvalidRepositoryContentConsumer.java
Wed Mar 7 22:01:51 2012
@@ -0,0 +1,110 @@
+package org.apache.archiva.rest.services.utils;
+/*
+ * 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.model.beans.ManagedRepository;
+import org.apache.archiva.consumers.ConsumerException;
+import org.apache.archiva.consumers.ConsumerMonitor;
+import org.apache.archiva.consumers.InvalidRepositoryContentConsumer;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Olivier Lamy
+ */
+@Service( "InvalidRepositoryContentConsumer#mock" )
+public class MockInvalidRepositoryContentConsumer
+ implements InvalidRepositoryContentConsumer
+{
+ public String getId()
+ {
+ return "foo";
+ }
+
+ public String getDescription()
+ {
+ return "the foo";
+ }
+
+ public boolean isPermanent()
+ {
+ return false;
+ }
+
+ public void addConsumerMonitor( ConsumerMonitor monitor )
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public void removeConsumerMonitor( ConsumerMonitor monitor )
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public List<String> getIncludes()
+ {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ public List<String> getExcludes()
+ {
+ return null; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+
+ public void beginScan( ManagedRepository repository, Date whenGathered )
+ throws ConsumerException
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public void beginScan( ManagedRepository repository, Date whenGathered,
boolean executeOnEntireRepo )
+ throws ConsumerException
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public void processFile( String path )
+ throws ConsumerException
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public void processFile( String path, boolean executeOnEntireRepo )
+ throws Exception
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public void completeScan()
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public void completeScan( boolean executeOnEntireRepo )
+ {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+
+ public boolean isProcessUnmodified()
+ {
+ return false; //To change body of implemented methods use File |
Settings | File Templates.
+ }
+}
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/utils/MockInvalidRepositoryContentConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/utils/MockInvalidRepositoryContentConsumer.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java?rev=1298149&r1=1298148&r2=1298149&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/archiva/web/action/admin/scanning/RepositoryScanningAction.java
Wed Mar 7 22:01:51 2012
@@ -28,6 +28,8 @@ import org.apache.archiva.admin.reposito
import org.apache.archiva.audit.Auditable;
import org.apache.archiva.repository.scanner.RepositoryContentConsumers;
import org.apache.archiva.rest.api.model.AdminRepositoryConsumer;
+import org.apache.archiva.rest.services.utils.AddAdminRepoConsumerClosure;
+import
org.apache.archiva.rest.services.utils.AdminRepositoryConsumerComparator;
import org.apache.archiva.security.common.ArchivaRoleConstants;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;