You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/05/10 00:03:52 UTC
svn commit: r536680 [2/2] - in /maven/archiva/trunk: ./
archiva-base/archiva-configuration/src/main/mdo/
archiva-base/archiva-configuration/src/main/resources/org/apache/maven/archiva/configuration/
archiva-base/archiva-configuration/src/test/conf/ arc...
Added: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/scanner-archiva.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/scanner-archiva.xml?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/scanner-archiva.xml (added)
+++ maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/scanner-archiva.xml Wed May 9 15:03:49 2007
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ ~ 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.
+ -->
+
+<configuration>
+
+ <repositoryScanning>
+ <fileTypes>
+ <fileType>
+ <id>artifacts</id>
+ <patterns>
+ <pattern>**/*.pom</pattern>
+ <pattern>**/*.jar</pattern>
+ <pattern>**/*.ear</pattern>
+ <pattern>**/*.war</pattern>
+ <pattern>**/*.car</pattern>
+ <pattern>**/*.sar</pattern>
+ <pattern>**/*.mar</pattern>
+ <pattern>**/*.rar</pattern>
+ <pattern>**/*.dtd</pattern>
+ <pattern>**/*.tld</pattern>
+ <pattern>**/*.tar.gz</pattern>
+ <pattern>**/*.tar.bz2</pattern>
+ <pattern>**/*.zip</pattern>
+ </patterns>
+ </fileType>
+ <fileType>
+ <id>indexable-content</id>
+ <patterns>
+ <pattern>**/*.txt</pattern>
+ <pattern>**/*.TXT</pattern>
+ <pattern>**/*.block</pattern>
+ <pattern>**/*.config</pattern>
+ <pattern>**/*.pom</pattern>
+ <pattern>**/*.xml</pattern>
+ <pattern>**/*.xsd</pattern>
+ <pattern>**/*.dtd</pattern>
+ <pattern>**/*.tld</pattern>
+ </patterns>
+ </fileType>
+ <fileType>
+ <id>auto-remove</id>
+ <patterns>
+ <pattern>**/*.bak</pattern>
+ <pattern>**/*~</pattern>
+ <pattern>**/*-</pattern>
+ </patterns>
+ </fileType>
+ <fileType>
+ <id>ignored</id>
+ <patterns>
+ <pattern>**/.htaccess</pattern>
+ <pattern>**/KEYS</pattern>
+ <pattern>**/*.rb</pattern>
+ <pattern>**/*.sh</pattern>
+ <pattern>**/.svn/**</pattern>
+ <pattern>**/.DAV/**</pattern>
+ </patterns>
+ </fileType>
+ </fileTypes>
+ <knownContentConsumers>
+ <knownContentConsumer>sample-known</knownContentConsumer>
+ <knownContentConsumer>update-db-artifact</knownContentConsumer>
+ <knownContentConsumer>create-missing-checksums</knownContentConsumer>
+ <knownContentConsumer>update-db-repository-metadata</knownContentConsumer>
+ <knownContentConsumer>validate-checksum</knownContentConsumer>
+ <knownContentConsumer>validate-signature</knownContentConsumer>
+ <knownContentConsumer>index-content</knownContentConsumer>
+ <knownContentConsumer>auto-remove</knownContentConsumer>
+ <knownContentConsumer>auto-rename</knownContentConsumer>
+ </knownContentConsumers>
+ <invalidContentConsumers>
+ <invalidContentConsumer>update-db-bad-content</invalidContentConsumer>
+ </invalidContentConsumers>
+ </repositoryScanning>
+
+ <databaseScanning>
+ <cronExpression>0 0 * * ?</cronExpression>
+ <unprocessedConsumers>
+ <unprocessedConsumer>index-artifact</unprocessedConsumer>
+ <unprocessedConsumer>update-db-project</unprocessedConsumer>
+ <unprocessedConsumer>validate-repository-metadata</unprocessedConsumer>
+ <unprocessedConsumer>index-archive-toc</unprocessedConsumer>
+ <unprocessedConsumer>update-db-bytecode-stats</unprocessedConsumer>
+ <unprocessedConsumer>index-public-methods</unprocessedConsumer>
+ </unprocessedConsumers>
+ <cleanupConsumers>
+ <cleanupConsumer>not-present-remove-db-artifact</cleanupConsumer>
+ <cleanupConsumer>not-present-remove-db-project</cleanupConsumer>
+ <cleanupConsumer>not-present-remove-indexed</cleanupConsumer>
+ </cleanupConsumers>
+ </databaseScanning>
+
+</configuration>
Propchange: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/scanner-archiva.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/scanner-archiva.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/trunk/archiva-base/archiva-repository-layer/src/test/resources/scanner-archiva.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java (added)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java Wed May 9 15:03:49 2007
@@ -0,0 +1,157 @@
+package org.apache.maven.archiva.database.updater;
+
+/*
+ * 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.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.DatabaseScanningConfiguration;
+import org.apache.maven.archiva.consumers.DatabaseCleanupConsumer;
+import org.apache.maven.archiva.consumers.DatabaseUnprocessedArtifactConsumer;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * DatabaseConsumers
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ *
+ * @plexus.component role="org.apache.maven.archiva.database.updater.DatabaseConsumers"
+ */
+public class DatabaseConsumers
+ implements Initializable
+{
+ /**
+ * @plexus.requirement
+ */
+ private ArchivaConfiguration archivaConfiguration;
+
+ /**
+ * @plexus.requirement role="org.apache.maven.archiva.consumers.DatabaseUnprocessedArtifactConsumer"
+ */
+ private List availableUnprocessedConsumers;
+
+ /**
+ * @plexus.requirement role="org.apache.maven.archiva.consumers.DatabaseCleanupConsumer"
+ */
+ private List availableCleanupConsumers;
+
+ private SelectedCleanupConsumersPredicate selectedCleanupConsumers;
+
+ private SelectedUnprocessedConsumersPredicate selectedUnprocessedConsumers;
+
+ class SelectedUnprocessedConsumersPredicate
+ implements Predicate
+ {
+ public boolean evaluate( Object object )
+ {
+ boolean satisfies = false;
+
+ if ( object instanceof DatabaseUnprocessedArtifactConsumer )
+ {
+ DatabaseUnprocessedArtifactConsumer consumer = (DatabaseUnprocessedArtifactConsumer) object;
+ DatabaseScanningConfiguration config = archivaConfiguration.getConfiguration().getDatabaseScanning();
+
+ return config.getUnprocessedConsumers().contains( consumer.getId() );
+ }
+
+ return satisfies;
+ }
+ }
+
+ class SelectedCleanupConsumersPredicate
+ implements Predicate
+ {
+ public boolean evaluate( Object object )
+ {
+ boolean satisfies = false;
+
+ if ( object instanceof DatabaseCleanupConsumer )
+ {
+ DatabaseCleanupConsumer consumer = (DatabaseCleanupConsumer) object;
+ DatabaseScanningConfiguration config = archivaConfiguration.getConfiguration().getDatabaseScanning();
+
+ return config.getUnprocessedConsumers().contains( consumer.getId() );
+ }
+
+ return satisfies;
+ }
+ }
+
+ public void initialize()
+ throws InitializationException
+ {
+ selectedCleanupConsumers = new SelectedCleanupConsumersPredicate();
+ selectedUnprocessedConsumers = new SelectedUnprocessedConsumersPredicate();
+ }
+
+ /**
+ * Get the {@link List} of {@link DatabaseUnprocessedArtifactConsumer} objects
+ * for those consumers selected due to the configuration.
+ *
+ * @return the list of selected {@link DatabaseUnprocessedArtifactConsumer} objects.
+ */
+ public List getSelectedUnprocessedConsumers()
+ {
+ List ret = new ArrayList();
+ ret.addAll( CollectionUtils.select( availableUnprocessedConsumers, selectedUnprocessedConsumers ) );
+ return ret;
+ }
+
+ /**
+ * Get the {@link List} of {@link DatabaseCleanupConsumer} objects for those
+ * consumers selected due to the configuration.
+ *
+ * @return the list of selected {@link DatabaseCleanupConsumer} objects.
+ */
+ public List getSelectedCleanupConsumers()
+ {
+ List ret = new ArrayList();
+ ret.addAll( CollectionUtils.select( availableCleanupConsumers, selectedCleanupConsumers ) );
+ return ret;
+ }
+
+ /**
+ * Get the complete {@link List} of {@link DatabaseUnprocessedArtifactConsumer} objects
+ * that are available in the system, regardless of configuration.
+ *
+ * @return the list of all available {@link DatabaseUnprocessedArtifactConsumer} objects.
+ */
+ public List getAvailableUnprocessedConsumers()
+ {
+ return Collections.unmodifiableList( this.availableUnprocessedConsumers );
+ }
+
+ /**
+ * Get the complete {@link List} of {@link DatabaseCleanupConsumer} objects
+ * that are available in the system, regardless of configuration.
+ *
+ * @return the list of all available {@link DatabaseCleanupConsumer} objects.
+ */
+ public List getAvailableCleanupConsumers()
+ {
+ return Collections.unmodifiableList( this.availableCleanupConsumers );
+ }
+}
Propchange: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/JdoDatabaseUpdater.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/JdoDatabaseUpdater.java?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/JdoDatabaseUpdater.java (original)
+++ maven/archiva/trunk/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/JdoDatabaseUpdater.java Wed May 9 15:03:49 2007
@@ -217,7 +217,7 @@
}
this.activeUnprocessedConsumers.addAll( getActiveConsumerList( dbScanning.getUnprocessedConsumers() ) );
- this.activeProcessedConsumers.addAll( getActiveConsumerList( dbScanning.getProcessedConsumers() ) );
+ this.activeProcessedConsumers.addAll( getActiveConsumerList( dbScanning.getCleanupConsumers() ) );
}
private List getActiveConsumerList( List potentialConsumerList )
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml Wed May 9 15:03:49 2007
@@ -60,6 +60,18 @@
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-database-consumers</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-lucene-consumers</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-signature-consumers</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-applet</artifactId>
<!-- TODO: actually, just exclude from WAR plugin -->
<scope>provided</scope>
Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AddAdminDatabaseConsumerClosure.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AddAdminDatabaseConsumerClosure.java?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AddAdminDatabaseConsumerClosure.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AddAdminDatabaseConsumerClosure.java Wed May 9 15:03:49 2007
@@ -0,0 +1,67 @@
+package org.apache.maven.archiva.web.action.admin.database;
+
+/*
+ * 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.commons.collections.Closure;
+import org.apache.maven.archiva.consumers.ArchivaArtifactConsumer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * AddAdminDatabaseConsumerClosure
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AddAdminDatabaseConsumerClosure
+ implements Closure
+{
+ private List list = new ArrayList();
+
+ private List selectedIds;
+
+ public AddAdminDatabaseConsumerClosure( List selectedIds )
+ {
+ this.selectedIds = selectedIds;
+ }
+
+ public void execute( Object input )
+ {
+ if ( input instanceof ArchivaArtifactConsumer )
+ {
+ ArchivaArtifactConsumer consumer = (ArchivaArtifactConsumer) input;
+
+ boolean enabled = this.selectedIds.contains( consumer.getId() );
+
+ AdminDatabaseConsumer adminconsumer = new AdminDatabaseConsumer();
+ adminconsumer.setEnabled( enabled );
+ adminconsumer.setId( consumer.getId() );
+ adminconsumer.setDescription( consumer.getDescription() );
+
+ list.add( adminconsumer );
+ }
+ }
+
+ public List getList()
+ {
+ return list;
+ }
+}
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AddAdminDatabaseConsumerClosure.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AddAdminDatabaseConsumerClosure.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AddAdminDatabaseConsumerClosure.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumer.java?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumer.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumer.java Wed May 9 15:03:49 2007
@@ -0,0 +1,65 @@
+package org.apache.maven.archiva.web.action.admin.database;
+
+/*
+ * 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.
+ */
+
+/**
+ * AdminDatabaseConsumer
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AdminDatabaseConsumer
+{
+ private boolean enabled = false;
+
+ private String id;
+
+ private String description;
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+
+ public void setDescription( String description )
+ {
+ this.description = description;
+ }
+
+ public void setEnabled( boolean enabled )
+ {
+ this.enabled = enabled;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+}
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumer.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumerComparator.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumerComparator.java?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumerComparator.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumerComparator.java Wed May 9 15:03:49 2007
@@ -0,0 +1,67 @@
+package org.apache.maven.archiva.web.action.admin.database;
+
+/*
+ * 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 java.util.Comparator;
+
+/**
+ * AdminDatabaseConsumerComparator
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AdminDatabaseConsumerComparator
+ implements Comparator
+{
+ private static AdminDatabaseConsumerComparator INSTANCE = new AdminDatabaseConsumerComparator();
+
+ public static AdminDatabaseConsumerComparator getInstance()
+ {
+ return INSTANCE;
+ }
+
+ public int compare( Object o1, Object o2 )
+ {
+ if ( o1 == null && o2 == null )
+ {
+ return 0;
+ }
+
+ if ( o1 == null && o2 != null )
+ {
+ return 1;
+ }
+
+ if ( o1 != null && o2 == null )
+ {
+ return -1;
+ }
+
+ if ( ( o1 instanceof AdminDatabaseConsumer ) && ( o2 instanceof AdminDatabaseConsumer ) )
+ {
+ String id1 = ( (AdminDatabaseConsumer) o1 ).getId();
+ String id2 = ( (AdminDatabaseConsumer) o2 ).getId();
+ return id1.compareToIgnoreCase( id2 );
+ }
+
+ return 0;
+ }
+
+}
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumerComparator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumerComparator.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/AdminDatabaseConsumerComparator.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java Wed May 9 15:03:49 2007
@@ -19,17 +19,23 @@
* under the License.
*/
-import com.opensymphony.webwork.interceptor.ServletRequestAware;
-import com.opensymphony.xwork.ModelDriven;
import com.opensymphony.xwork.Preparable;
-import com.opensymphony.xwork.Validateable;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.DatabaseScanningConfiguration;
+import org.apache.maven.archiva.database.updater.DatabaseConsumers;
+import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.apache.maven.archiva.web.action.admin.scanning.AdminRepositoryConsumerComparator;
+import org.codehaus.plexus.security.rbac.Resource;
import org.codehaus.plexus.security.ui.web.interceptor.SecureAction;
import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
import org.codehaus.plexus.security.ui.web.interceptor.SecureActionException;
import org.codehaus.plexus.xwork.action.PlexusActionSupport;
-import javax.servlet.http.HttpServletRequest;
+import java.util.Collections;
+import java.util.List;
/**
* DatabaseAction
@@ -40,34 +46,101 @@
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="databaseAction"
*/
public class DatabaseAction
-extends PlexusActionSupport
-implements ModelDriven, Preparable, Validateable, SecureAction, ServletRequestAware
+ extends PlexusActionSupport
+ implements Preparable, SecureAction
{
-
- public Object getModel()
- {
- // TODO Auto-generated method stub
- return null;
- }
+ /**
+ * @plexus.requirement
+ */
+ private ArchivaConfiguration archivaConfiguration;
+
+ /**
+ * @plexus.requirement
+ */
+ private DatabaseConsumers databaseConsumers;
+
+ private String cron;
+
+ /**
+ * List of {@link AdminDatabaseConsumer} objects for unprocessed artifacts.
+ */
+ private List unprocessedConsumers;
+
+ /**
+ * List of {@link AdminDatabaseConsumer} objects for "to cleanup" artifacts.
+ */
+ private List cleanupConsumers;
public void prepare()
throws Exception
{
- // TODO Auto-generated method stub
+ Configuration config = archivaConfiguration.getConfiguration();
+ DatabaseScanningConfiguration dbscanning = config.getDatabaseScanning();
+
+ this.cron = dbscanning.getCronExpression();
+
+ AddAdminDatabaseConsumerClosure addAdminDbConsumer;
+ getLogger().info( "Total Available Unprocessed Consumers: " + databaseConsumers.getAvailableUnprocessedConsumers().size() );
+ getLogger().info( "Total Available Cleanup Consumers: " + databaseConsumers.getAvailableCleanupConsumers().size() );
+
+ addAdminDbConsumer = new AddAdminDatabaseConsumerClosure( dbscanning.getUnprocessedConsumers() );
+ CollectionUtils.forAllDo( databaseConsumers.getAvailableUnprocessedConsumers(), addAdminDbConsumer );
+ this.unprocessedConsumers = addAdminDbConsumer.getList();
+ Collections.sort( this.unprocessedConsumers, AdminRepositoryConsumerComparator.getInstance() );
+
+ addAdminDbConsumer = new AddAdminDatabaseConsumerClosure( dbscanning.getCleanupConsumers() );
+ CollectionUtils.forAllDo( databaseConsumers.getAvailableCleanupConsumers(), addAdminDbConsumer );
+ this.cleanupConsumers = addAdminDbConsumer.getList();
+ Collections.sort( this.cleanupConsumers, AdminRepositoryConsumerComparator.getInstance() );
}
+ public String updateUnprocessedConsumers()
+ {
+ getLogger().info( "updateUnprocesedConsumers()" );
+ return INPUT;
+ }
+
+ public String updateCleanupConsumers()
+ {
+ getLogger().info( "updateCleanupConsumers()" );
+ return INPUT;
+ }
+
+ public String updateSchedule()
+ {
+ getLogger().info( "updateSchedule()" );
+ return INPUT;
+ }
+
public SecureActionBundle getSecureActionBundle()
throws SecureActionException
{
- // TODO Auto-generated method stub
- return null;
+ SecureActionBundle bundle = new SecureActionBundle();
+
+ bundle.setRequiresAuthentication( true );
+ bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
+
+ return bundle;
}
- public void setServletRequest( HttpServletRequest request )
+ public String getCron()
{
- // TODO Auto-generated method stub
-
+ return cron;
+ }
+
+ public void setCron( String cron )
+ {
+ this.cron = cron;
+ }
+
+ public List getCleanupConsumers()
+ {
+ return cleanupConsumers;
}
+ public List getUnprocessedConsumers()
+ {
+ return unprocessedConsumers;
+ }
}
Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java Wed May 9 15:03:49 2007
@@ -0,0 +1,66 @@
+package org.apache.maven.archiva.web.action.admin.scanning;
+
+/*
+ * 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.commons.collections.Closure;
+import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * AddAdminRepoConsumerClosure
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AddAdminRepoConsumerClosure
+ implements Closure
+{
+ private List list = new ArrayList();
+
+ private List selectedIds;
+
+ public AddAdminRepoConsumerClosure( List selectedIds )
+ {
+ this.selectedIds = selectedIds;
+ }
+
+ public void execute( Object input )
+ {
+ if ( input instanceof RepositoryContentConsumer )
+ {
+ RepositoryContentConsumer consumer = (RepositoryContentConsumer) input;
+
+ boolean enabled = this.selectedIds.contains( consumer.getId() );
+ AdminRepositoryConsumer adminconsumer = new AdminRepositoryConsumer();
+ adminconsumer.setEnabled( enabled );
+ adminconsumer.setId( consumer.getId() );
+ adminconsumer.setDescription( consumer.getDescription() );
+
+ list.add( adminconsumer );
+ }
+ }
+
+ public List getList()
+ {
+ return list;
+ }
+}
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AddAdminRepoConsumerClosure.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumer.java?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumer.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumer.java Wed May 9 15:03:49 2007
@@ -0,0 +1,63 @@
+package org.apache.maven.archiva.web.action.admin.scanning;
+
+/*
+ * 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.
+ */
+
+/**
+ * AdminRepositoryConsumer
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AdminRepositoryConsumer
+{
+ private boolean enabled = false;
+ private String id;
+ private String description;
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+
+ public void setDescription( String description )
+ {
+ this.description = description;
+ }
+
+ public void setEnabled( boolean enabled )
+ {
+ this.enabled = enabled;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+}
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumer.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java Wed May 9 15:03:49 2007
@@ -0,0 +1,66 @@
+package org.apache.maven.archiva.web.action.admin.scanning;
+
+/*
+ * 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 java.util.Comparator;
+
+/**
+ * AdminRepositoryConsumerComparator
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AdminRepositoryConsumerComparator
+ implements Comparator
+{
+ private static AdminRepositoryConsumerComparator INSTANCE = new AdminRepositoryConsumerComparator();
+
+ public static AdminRepositoryConsumerComparator getInstance()
+ {
+ return INSTANCE;
+ }
+
+ public int compare( Object o1, Object o2 )
+ {
+ if ( o1 == null && o2 == null )
+ {
+ return 0;
+ }
+
+ if ( o1 == null && o2 != null )
+ {
+ return 1;
+ }
+
+ if ( o1 != null && o2 == null )
+ {
+ return -1;
+ }
+
+ if ( ( o1 instanceof AdminRepositoryConsumer ) && ( o2 instanceof AdminRepositoryConsumer ) )
+ {
+ String id1 = ( (AdminRepositoryConsumer) o1 ).getId();
+ String id2 = ( (AdminRepositoryConsumer) o2 ).getId();
+ return id1.compareToIgnoreCase( id2 );
+ }
+
+ return 0;
+ }
+}
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/AdminRepositoryConsumerComparator.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java Wed May 9 15:03:49 2007
@@ -23,10 +23,16 @@
import com.opensymphony.xwork.Validateable;
import org.apache.commons.collections.CollectionUtils;
+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.FileType;
+import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
+import org.apache.maven.archiva.configuration.functors.FiletypeSelectionPredicate;
import org.apache.maven.archiva.configuration.functors.FiletypeToMapClosure;
+import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.codehaus.plexus.registry.RegistryException;
import org.codehaus.plexus.security.rbac.Resource;
import org.codehaus.plexus.security.ui.web.interceptor.SecureAction;
import org.codehaus.plexus.security.ui.web.interceptor.SecureActionBundle;
@@ -55,58 +61,100 @@
*/
private ArchivaConfiguration archivaConfiguration;
+ /**
+ * @plexus.requirement
+ */
+ private RepositoryContentConsumers repoconsumerUtil;
+
private Map fileTypeMap;
-
+
private List fileTypeIds;
- private List goodConsumers = new ArrayList();
+ /**
+ * List of {@link AdminRepositoryConsumer} objects for consumers of known content.
+ */
+ private List knownContentConsumers = new ArrayList();
+
+ /**
+ * List of {@link AdminRepositoryConsumer} objects for consumers of invalid/unknown content.
+ */
+ private List invalidContentConsumers = new ArrayList();
- private List badConsumers = new ArrayList();
-
private String pattern;
-
+
private String fileTypeId;
- public void prepare()
- throws Exception
+ public void addActionError( String anErrorMessage )
{
- Configuration config = archivaConfiguration.getConfiguration();
- FiletypeToMapClosure filetypeToMapClosure = new FiletypeToMapClosure();
-
- CollectionUtils.forAllDo( config.getRepositoryScanning().getFileTypes(), filetypeToMapClosure );
- fileTypeMap = filetypeToMapClosure.getMap();
-
- goodConsumers.clear();
- goodConsumers.addAll( config.getRepositoryScanning().getGoodConsumers() );
-
- badConsumers.clear();
- badConsumers.addAll( config.getRepositoryScanning().getBadConsumers() );
-
- fileTypeIds = new ArrayList();
- fileTypeIds.addAll( fileTypeMap.keySet() );
- Collections.sort( fileTypeIds );
+ super.addActionError( anErrorMessage );
+ getLogger().warn( "[ActionError] " + anErrorMessage );
}
- public String removeFiletypePattern()
+ public void addActionMessage( String aMessage )
{
- getLogger().info( "Remove File Type Pattern [" + getFileTypeId() + ":" + getPattern() + "]" );
-
- // TODO: remove the filetype
- // TODO: save configuration
-
- return INPUT;
+ super.addActionMessage( aMessage );
+ getLogger().info( "[ActionMessage] " + aMessage );
}
public String addFiletypePattern()
{
getLogger().info( "Add New File Type Pattern [" + getFileTypeId() + ":" + getPattern() + "]" );
-
- // TODO: add the filetype.
- // TODO: report error if filetype pattern already exists.
- // TODO: report success (message) if added successfully.
- // TODO: save configuration each time.
-
- return INPUT;
+
+ if ( !isValidFiletypeCommand() )
+ {
+ return INPUT;
+ }
+
+ String id = getFileTypeId();
+ String pattern = getPattern();
+
+ FileType filetype = findFileType( id );
+ if ( filetype == null )
+ {
+ addActionError( "Pattern not added, unable to find filetype " + id );
+ return INPUT;
+ }
+
+ if ( filetype.getPatterns().contains( pattern ) )
+ {
+ addActionError( "Not adding pattern \"" + pattern + "\" to filetype " + id + " as it already exists." );
+ return INPUT;
+ }
+
+ filetype.addPattern( pattern );
+ addActionMessage( "Added pattern \"" + pattern + "\" to filetype " + id );
+
+ return saveConfiguration();
+ }
+
+ public String getFileTypeId()
+ {
+ return fileTypeId;
+ }
+
+ public List getFileTypeIds()
+ {
+ return fileTypeIds;
+ }
+
+ public Map getFileTypeMap()
+ {
+ return fileTypeMap;
+ }
+
+ public List getInvalidContentConsumers()
+ {
+ return invalidContentConsumers;
+ }
+
+ public List getKnownContentConsumers()
+ {
+ return knownContentConsumers;
+ }
+
+ public String getPattern()
+ {
+ return pattern;
}
public SecureActionBundle getSecureActionBundle()
@@ -120,43 +168,112 @@
return bundle;
}
- public List getBadConsumers()
+ public void prepare()
+ throws Exception
{
- return badConsumers;
+ Configuration config = archivaConfiguration.getConfiguration();
+ RepositoryScanningConfiguration reposcanning = config.getRepositoryScanning();
+
+ FiletypeToMapClosure filetypeToMapClosure = new FiletypeToMapClosure();
+
+ CollectionUtils.forAllDo( reposcanning.getFileTypes(), filetypeToMapClosure );
+ fileTypeMap = filetypeToMapClosure.getMap();
+
+ AddAdminRepoConsumerClosure addAdminRepoConsumer;
+
+ addAdminRepoConsumer = new AddAdminRepoConsumerClosure( reposcanning.getKnownContentConsumers() );
+ CollectionUtils.forAllDo( repoconsumerUtil.getAvailableKnownConsumers(), addAdminRepoConsumer );
+ knownContentConsumers.clear();
+ knownContentConsumers.addAll( addAdminRepoConsumer.getList() );
+ Collections.sort( knownContentConsumers, AdminRepositoryConsumerComparator.getInstance() );
+
+ addAdminRepoConsumer = new AddAdminRepoConsumerClosure( reposcanning.getInvalidContentConsumers() );
+ CollectionUtils.forAllDo( repoconsumerUtil.getAvailableInvalidConsumers(), addAdminRepoConsumer );
+ invalidContentConsumers.clear();
+ invalidContentConsumers.addAll( addAdminRepoConsumer.getList() );
+ Collections.sort( invalidContentConsumers, AdminRepositoryConsumerComparator.getInstance() );
+
+ fileTypeIds = new ArrayList();
+ fileTypeIds.addAll( fileTypeMap.keySet() );
+ Collections.sort( fileTypeIds );
}
- public Map getFileTypeMap()
+ public String removeFiletypePattern()
{
- return fileTypeMap;
+ getLogger().info( "Remove File Type Pattern [" + getFileTypeId() + ":" + getPattern() + "]" );
+
+ if ( !isValidFiletypeCommand() )
+ {
+ return INPUT;
+ }
+
+ FileType filetype = findFileType( getFileTypeId() );
+ if ( filetype == null )
+ {
+ addActionError( "Pattern not removed, unable to find filetype " + getFileTypeId() );
+ return INPUT;
+ }
+
+ filetype.removePattern( getPattern() );
+
+ return saveConfiguration();
}
- public List getGoodConsumers()
+ public void setFileTypeId( String fileTypeId )
{
- return goodConsumers;
+ this.fileTypeId = fileTypeId;
}
- public String getFileTypeId()
+ public void setPattern( String pattern )
{
- return fileTypeId;
+ this.pattern = pattern;
}
- public void setFileTypeId( String fileTypeId )
+ public String updateInvalidConsumers()
{
- this.fileTypeId = fileTypeId;
+ addActionMessage("Update Invalid Consumers");
+ return INPUT;
}
- public String getPattern()
+ public String updateKnownConsumers()
{
- return pattern;
+ addActionMessage("Update Known Consumers");
+ return INPUT;
}
- public void setPattern( String pattern )
+ private FileType findFileType( String id )
{
- this.pattern = pattern;
+ RepositoryScanningConfiguration scanning = archivaConfiguration.getConfiguration().getRepositoryScanning();
+ return (FileType) CollectionUtils.find( scanning.getFileTypes(), new FiletypeSelectionPredicate( id ) );
}
- public List getFileTypeIds()
+ private boolean isValidFiletypeCommand()
{
- return fileTypeIds;
+ if ( StringUtils.isBlank( getFileTypeId() ) )
+ {
+ addActionError( "Unable to process blank filetype id." );
+ }
+
+ if ( StringUtils.isBlank( getPattern() ) )
+ {
+ addActionError( "Unable to process blank pattern." );
+ }
+
+ return !hasActionErrors();
+ }
+
+ private String saveConfiguration()
+ {
+ try
+ {
+ archivaConfiguration.save( archivaConfiguration.getConfiguration() );
+ addActionMessage( "Successfully saved configuration" );
+ }
+ catch ( RegistryException e )
+ {
+ addActionError( "Unable to save configuration: " + e.getMessage() );
+ }
+
+ return INPUT;
}
}
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml Wed May 9 15:03:49 2007
@@ -336,30 +336,6 @@
<result name="input">/WEB-INF/jsp/admin/repositoryScanning.jsp</result>
</action>
- <action name="addRepositoryScanning" class="configureScanningAction" method="add">
- <result name="input">/WEB-INF/jsp/admin/addRepositoryScanning.jsp</result>
- <result name="success" type="redirect-action">repositoryScanning</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
-
- <action name="editRepositoryScanning" class="configureScanningAction" method="edit">
- <result name="input">/WEB-INF/jsp/admin/editRepositoryScanning.jsp</result>
- <result name="success" type="redirect-action">repositoryScanning</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
-
- <action name="saveRepositoryScanning" class="configureScanningAction" method="save">
- <result name="input">/WEB-INF/jsp/admin/editRepositoryScanning.jsp</result>
- <result name="success" type="redirect-action">repositoryScanning</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
-
- <action name="deleteRepositoryScanning" class="configureScanningAction" method="confirm">
- <result name="input">/WEB-INF/jsp/admin/deleteRepositoryScanning.jsp</result>
- <result name="success" type="redirect-action">repositoryScanning</result>
- <interceptor-ref name="configuredPrepareParamsStack"/>
- </action>
-
<!-- .\ DATABASE \.________________________________________________ -->
<action name="database" class="databaseAction" method="input">
@@ -367,7 +343,6 @@
</action>
<!-- .\ CONFIGURATION \.___________________________________________ -->
-
<action name="configure" class="configureAction" method="input">
<result name="input">/WEB-INF/jsp/admin/configure.jsp</result>
Added: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/database.jsp
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/database.jsp?view=auto&rev=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/database.jsp (added)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/database.jsp Wed May 9 15:03:49 2007
@@ -0,0 +1,173 @@
+<%--
+ ~ 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.
+ --%>
+
+<%@ taglib prefix="ww" uri="/webwork"%>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+<%@ taglib prefix="pss" uri="/plexusSecuritySystem"%>
+<%@ taglib prefix="archiva" uri="http://maven.apache.org/archiva"%>
+
+<html>
+<head>
+<title>Administration - Database</title>
+<ww:head />
+</head>
+
+<body>
+
+<h1>Administration - Database</h1>
+
+<div id="contentArea">
+
+<ww:actionerror />
+<ww:actionmessage />
+
+<c:url var="iconDeleteUrl" value="/images/icons/delete.gif" />
+<c:url var="iconCreateUrl" value="/images/icons/create.png" />
+
+<div class="admin">
+
+<h2>Database - Unprocessed Artifacts Scanning</h2>
+
+ <ww:form method="post" action="database!updateSchedule"
+ namespace="/admin" validate="false" theme="simple">
+ <table>
+ <ww:textfield name="cron" label="Cron" size="40" theme="xhtml" />
+ <tr>
+ <td colspan="2">
+ <ww:submit value="Update Cron" />
+ </td>
+ </tr>
+ </table>
+ </ww:form>
+
+<h2>Database - Unprocessed Artifacts Scanning</h2>
+
+<c:choose>
+ <c:when test="${empty(unprocessedConsumers)}">
+ <%-- No Consumers. Eeek! --%>
+ <strong>There are no consumers for unprocessed artifacts.</strong>
+ </c:when>
+ <c:otherwise>
+ <%-- Display the consumers. --%>
+
+ <ww:form method="post" action="database!updateUnprocessedConsumers"
+ namespace="/admin" validate="false" theme="simple">
+ <table class="consumers">
+ <tr>
+ <th> </th>
+ <th>Enabled?</th>
+ <th>ID</th>
+ <th>Description</th>
+ </tr>
+ <c:forEach items="${unprocessedConsumers}" var="consumer" varStatus="i">
+ <c:choose>
+ <c:when test='${(i.index)%2 eq 0}'>
+ <c:set var="bgcolor" value="even" scope="page" />
+ </c:when>
+ <c:otherwise>
+ <c:set var="bgcolor" value="odd" scope="page" />
+ </c:otherwise>
+ </c:choose>
+
+ <tr>
+ <td class="${bgcolor}">
+ <ww:checkbox name="enabledUnprocessedConsumer[]" theme="simple" value="${consumer.enabled}" />
+ </td>
+ <td class="${bgcolor}">
+ <c:if test="${consumer.enabled}">
+ <strong>enabled</strong>
+ </c:if>
+ </td>
+ <td class="${bgcolor}">
+ <code>${consumer.id}</code>
+ </td>
+ <td class="${bgcolor}">${consumer.description}</td>
+ </tr>
+ </c:forEach>
+ <tr>
+ <td colspan="4">
+ <ww:submit value="Update Consumers" />
+ </td>
+ </tr>
+ </table>
+ </ww:form>
+
+ </c:otherwise>
+</c:choose>
+
+<h2>Database - Artifact Cleanup Scanning</h2>
+
+<c:choose>
+ <c:when test="${empty(cleanupConsumers)}">
+ <%-- No Consumers. Eeek! --%>
+ <strong>There are no consumers for artifact cleanup.</strong>
+ </c:when>
+ <c:otherwise>
+ <%-- Display the consumers. --%>
+
+ <ww:form method="post" action="database!updateCleanupConsumers"
+ namespace="/admin" validate="false" theme="simple">
+ <table class="consumers">
+ <tr>
+ <th> </th>
+ <th>Enabled?</th>
+ <th>ID</th>
+ <th>Description</th>
+ </tr>
+ <c:forEach items="${cleanupConsumers}" var="consumer" varStatus="i">
+ <c:choose>
+ <c:when test='${(i.index)%2 eq 0}'>
+ <c:set var="bgcolor" value="even" scope="page" />
+ </c:when>
+ <c:otherwise>
+ <c:set var="bgcolor" value="odd" scope="page" />
+ </c:otherwise>
+ </c:choose>
+
+ <tr>
+ <td class="${bgcolor}">
+ <ww:checkbox name="enabledCleanupConsumer[]" theme="simple" value="${consumer.enabled}" />
+ </td>
+ <td class="${bgcolor}">
+ <c:if test="${consumer.enabled}">
+ <strong>enabled</strong>
+ </c:if>
+ </td>
+ <td class="${bgcolor}">
+ <code>${consumer.id}</code>
+ </td>
+ <td class="${bgcolor}">${consumer.description}</td>
+ </tr>
+ </c:forEach>
+ <tr>
+ <td colspan="4">
+ <ww:submit value="Update Consumers" />
+ </td>
+ </tr>
+ </table>
+ </ww:form>
+
+ </c:otherwise>
+</c:choose>
+
+
+</div>
+</body>
+</html>
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/database.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/database.jsp
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositoryScanning.jsp Wed May 9 15:03:49 2007
@@ -144,65 +144,113 @@
</c:otherwise>
</c:choose>
-<h2>Repository Scanning - Consumers of Good Content</h2>
+<h2>Repository Scanning - Consumers of Known Content</h2>
<c:choose>
- <c:when test="${empty(goodConsumers)}">
+ <c:when test="${empty(knownContentConsumers)}">
<%-- No Good Consumers. Eeek! --%>
- <strong>There are no good consumers configured.</strong>
+ <strong>There are no consumers of known content available.</strong>
</c:when>
<c:otherwise>
<%-- Display the consumers. --%>
- <table>
- <c:forEach items="${goodConsumers}" var="consumer" varStatus="i">
+ <ww:form method="post" action="repositoryScanning!updateKnownConsumers"
+ namespace="/admin" validate="false" theme="simple">
+ <table class="consumers">
+ <tr>
+ <th> </th>
+ <th>Enabled?</th>
+ <th>ID</th>
+ <th>Description</th>
+ </tr>
+ <c:forEach items="${knownContentConsumers}" var="consumer" varStatus="i">
<c:choose>
<c:when test='${(i.index)%2 eq 0}'>
- <c:set var="rowColor" value="dark" scope="page" />
+ <c:set var="bgcolor" value="even" scope="page" />
</c:when>
<c:otherwise>
- <c:set var="rowColor" value="lite" scope="page" />
+ <c:set var="bgcolor" value="odd" scope="page" />
</c:otherwise>
</c:choose>
<tr>
- <td><code>${consumer}</code></td>
- <td><img src="<c:url value="/images/icons/delete.gif" />" /></td>
+ <td class="${bgcolor}">
+ <ww:checkbox name="enabledKnownConsumer[]" theme="simple" value="${consumer.enabled}" />
+ </td>
+ <td class="${bgcolor}">
+ <c:if test="${consumer.enabled}">
+ <strong>enabled</strong>
+ </c:if>
+ </td>
+ <td class="${bgcolor}">
+ <code>${consumer.id}</code>
+ </td>
+ <td class="${bgcolor}">${consumer.description}</td>
</tr>
</c:forEach>
+ <tr>
+ <td colspan="4">
+ <ww:submit value="Update Consumers" />
+ </td>
+ </tr>
</table>
+ </ww:form>
</c:otherwise>
</c:choose>
-<h2>Repository Scanning - Consumers of Bad Content</h2>
+<h2>Repository Scanning - Consumers of Invalid Content</h2>
<c:choose>
- <c:when test="${empty(badConsumers)}">
- <%-- No Bad Consumers. Eeek! --%>
- <strong>There are no bad consumers configured.</strong>
+ <c:when test="${empty(invalidContentConsumers)}">
+ <%-- No Consumers. Eeek! --%>
+ <strong>There are no consumers of invalid content available.</strong>
</c:when>
<c:otherwise>
<%-- Display the consumers. --%>
- <table>
- <c:forEach items="${badConsumers}" var="consumer" varStatus="i">
+ <ww:form method="post" action="repositoryScanning!updateInvalidConsumers"
+ namespace="/admin" validate="false" theme="simple">
+ <table class="consumers">
+ <tr>
+ <th> </th>
+ <th>Enabled?</th>
+ <th>ID</th>
+ <th>Description</th>
+ </tr>
+ <c:forEach items="${invalidContentConsumers}" var="consumer" varStatus="i">
<c:choose>
<c:when test='${(i.index)%2 eq 0}'>
- <c:set var="rowColor" value="dark" scope="page" />
+ <c:set var="bgcolor" value="even" scope="page" />
</c:when>
<c:otherwise>
- <c:set var="rowColor" value="lite" scope="page" />
+ <c:set var="bgcolor" value="odd" scope="page" />
</c:otherwise>
</c:choose>
<tr>
- <td><code>${consumer}</code></td>
- <td><img src="<c:url value="/images/icons/delete.gif" />" /></td>
+ <td class="${bgcolor}">
+ <ww:checkbox name="enabledUnknownConsumer[]" theme="simple" value="${consumer.enabled}" />
+ </td>
+ <td class="${bgcolor}">
+ <c:if test="${consumer.enabled}">
+ <strong>enabled</strong>
+ </c:if>
+ </td>
+ <td class="${bgcolor}">
+ <code>${consumer.id}</code>
+ </td>
+ <td class="${bgcolor}">${consumer.description}</td>
</tr>
</c:forEach>
+ <tr>
+ <td colspan="4">
+ <ww:submit value="Update Consumers" />
+ </td>
+ </tr>
</table>
+ </ww:form>
</c:otherwise>
</c:choose></div>
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/maven-base.css Wed May 9 15:03:49 2007
@@ -63,12 +63,10 @@
.xleft, #bannerLeft img {
float: left;
- text-shadow: #7CFC00;
}
.xright, #bannerRight img {
float: right;
- text-shadow: #7CFC00;
}
#banner {
Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/site.css
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/site.css?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/site.css (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/css/site.css Wed May 9 15:03:49 2007
@@ -43,7 +43,6 @@
float: right;
font-size: small;
font-weight: bold;
- xmargin: 0px auto;
margin: 15px auto 0px auto;
height: auto;
width: 150px;
@@ -148,7 +147,9 @@
}
.actionMessage {
+ font-size: 1.0em;
font-weight: bold;
+ color: blue;
}
.errorBullet {
@@ -318,11 +319,27 @@
width: 5%;
}
-div.filetype table td.odd {
+div.filetype table td.odd,
+div.admin table.consumers td.odd {
background-color: #dddddd;
}
-div.filetype table td.event {
+div.filetype table td.even,
+div.admin table.consumers td.even {
background-color: white;
}
+div.admin table.consumers {
+ margin-left: 15px;
+ border: 1px solid gray;
+}
+
+div.admin table.consumers th {
+ font-size: 1.0em;
+ background-color: #cccccc;
+ text-align: left;
+}
+
+div.admin table.consumers td strong {
+ font-size: 0.8em;
+}
\ No newline at end of file
Modified: maven/archiva/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/pom.xml?view=diff&rev=536680&r1=536679&r2=536680
==============================================================================
--- maven/archiva/trunk/pom.xml (original)
+++ maven/archiva/trunk/pom.xml Wed May 9 15:03:49 2007
@@ -325,6 +325,11 @@
</dependency>
<dependency>
<groupId>org.apache.maven.archiva</groupId>
+ <artifactId>archiva-signature-consumers</artifactId>
+ <version>${archiva.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.archiva</groupId>
<artifactId>archiva-model</artifactId>
<version>${archiva.version}</version>
</dependency>