You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2009/03/20 17:12:11 UTC

svn commit: r756563 - in /archiva/trunk/archiva-modules: archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/ archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org...

Author: brett
Date: Fri Mar 20 16:12:10 2009
New Revision: 756563

URL: http://svn.apache.org/viewvc?rev=756563&view=rev
Log:
[MRM-1093] Log configuration and repository changes made.
Submitted by: Jevica Arianne B. Zurbano (applied with modifications and other refactoring)

Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java
    archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoryGroupsAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/SearchActionTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/AbstractRepositoryPurge.java Fri Mar 20 16:12:10 2009
@@ -24,8 +24,12 @@
 import java.util.List;
 import java.util.Set;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.model.ArtifactReference;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.events.RepositoryListener;
 import org.slf4j.Logger;
@@ -43,6 +47,10 @@
     protected final ManagedRepositoryContent repository;
     
 	protected final List<RepositoryListener> listeners;
+	  
+	  private Logger logger = LoggerFactory.getLogger( "org.apache.archiva.AuditLog" );
+	
+	  private static final char DELIM = ' ';
 
     public AbstractRepositoryPurge( ManagedRepositoryContent repository, List<RepositoryListener> listeners )
     {
@@ -101,6 +109,7 @@
                 
                 // TODO: this needs to be logged
                 artifactFile.delete();
+                triggerAuditEvent( repository.getRepository().getId(), ArtifactReference.toKey( reference ), AuditEvent.PURGE_ARTIFACT );
                 purgeSupportFiles( artifactFile );
             }
         }
@@ -133,9 +142,19 @@
         {
             if ( file.exists() && file.isFile() )
             {
+                String fileName = file.getName();
                 file.delete();
                 // TODO: log that it was deleted
+                triggerAuditEvent( repository.getRepository().getId(), fileName, AuditEvent.PURGE_FILE );
             }
         }
     }
+    
+    private void triggerAuditEvent( String repoId, String resource, String action )
+    {
+        String msg = repoId + DELIM + "<system-purge>" + DELIM + "<system>" + DELIM + '\"' + resource + '\"' +
+            DELIM + '\"' + action + '\"';
+        
+        logger.info( msg );
+    }
 }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/DatabaseCleanupRemoveArtifactConsumer.java Fri Mar 20 16:12:10 2009
@@ -32,6 +32,10 @@
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryException;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
+ 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
 import java.io.File;
@@ -74,6 +78,10 @@
      * @plexus.requirement
      */
     private RepositoryContentFactory repositoryFactory;
+    
+    private Logger logger = LoggerFactory.getLogger( "org.apache.archiva.AuditLog" );
+    
+    private static final char DELIM = ' ';
 
     public void beginScan()
     {
@@ -104,6 +112,8 @@
             if( !file.exists() )
             {                    
                 artifactDAO.deleteArtifact( artifact );
+                
+                triggerAuditEvent( repositoryContent.getRepository().getId(), artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion(), AuditEvent.REMOVE_SCANNED );
 
                 // Remove all repository problems related to this artifact
                 Constraint artifactConstraint = new RepositoryProblemByArtifactConstraint( artifact );
@@ -159,4 +169,12 @@
     {
         this.repositoryFactory = repositoryFactory;
     }
+    
+    private void triggerAuditEvent( String repoId, String resource, String action )
+    {
+        String msg = repoId + DELIM + "<db-scan>" + DELIM + "<system>" + DELIM + '\"' + resource + '\"' +
+            DELIM + '\"' + action + '\"';
+        
+        logger.info( msg );
+    }
 }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java Fri Mar 20 16:12:10 2009
@@ -20,8 +20,8 @@
  */
 
 /**
- * AuditEvent 
- *
+ * AuditEvent
+ * 
  * @version $Id$
  */
 public class AuditEvent
@@ -43,13 +43,59 @@
     public static final String COPY_DIRECTORY = "Copied Directory";
 
     public static final String COPY_FILE = "Copied File";
-    
+
     public static final String UPLOAD_FILE = "Uploaded File";
-    
+
+    public static final String ADD_LEGACY_PATH = "Added Legacy Artifact Path";
+
+    public static final String REMOVE_LEGACY_PATH = "Removed Legacy Artifact Path";
+
+    public static final String PURGE_ARTIFACT = "Purged Artifact";
+
+    public static final String PURGE_FILE = "Purged Support File";
+
+    public static final String REMOVE_SCANNED = "Removed in Filesystem";
+
+    // configuration events
+
+    public static final String ADD_MANAGED_REPO = "Added Managed Repository";
+
+    public static final String MODIFY_MANAGED_REPO = "Updated Managed Repository";
+
+    public static final String DELETE_MANAGED_REPO = "Deleted Managed Repository";
+
+    public static final String ADD_REMOTE_REPO = "Added Remote Repository";
+
+    public static final String MODIFY_REMOTE_REPO = "Updated Remote Repository";
+
+    public static final String DELETE_REMOTE_REPO = "Deleted Remote Repository";
+
+    public static final String ADD_REPO_GROUP = "Added Repository Group";
+
+    public static final String DELETE_REPO_GROUP = "Deleted Repository Group";
+
+    public static final String ADD_REPO_TO_GROUP = "Added Repository to Group";
+
+    public static final String DELETE_REPO_FROM_GROUP = "Deleted Repository from Group";
+
+    public static final String ENABLE_REPO_CONSUMER = "Enabled Content Consumer";
+
+    public static final String DISABLE_REPO_CONSUMER = "Disabled Content Consumer";
+
+    public static final String ENABLE_DB_CONSUMER = "Enabled Database Consumer";
+
+    public static final String DISABLE_DB_CONSUMER = "Disabled Database Consumer";
+
+    public static final String ADD_PATTERN = "Added File Type Pattern";
+
+    public static final String REMOVE_PATTERN = "Removed File Type Pattern";
+
+    public static final String DB_SCHEDULE = "Modified Scanning Schedule";
+
     private String repositoryId;
 
     private String userId;
-    
+
     private String remoteIP;
 
     private String resource;
@@ -69,6 +115,16 @@
         this.action = action;
     }
 
+    public AuditEvent( String user, String resource, String action )
+    {
+        this( null, user, resource, action );
+    }
+
+    public AuditEvent( String principal, String action2 )
+    {
+        this( null, principal, action2 );
+    }
+
     public String getRepositoryId()
     {
         return repositoryId;

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java Fri Mar 20 16:12:10 2009
@@ -23,34 +23,38 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * AuditLog - Audit Log. 
- *
- * @version $Id$
+ * AuditLog - Audit Log.
  * 
- * @plexus.component role="org.apache.maven.archiva.repository.audit.AuditListener"
- *                   role-hint="logging"
+ * @version $Id$
+ * @plexus.component role="org.apache.maven.archiva.repository.audit.AuditListener" role-hint="logging"
  */
 public class AuditLog
     implements AuditListener
 {
     public static final Logger logger = LoggerFactory.getLogger( "org.apache.archiva.AuditLog" );
-    
-    private static final char DELIM = ' '; 
+
+    private static final String NONE = "-";
+
+    private static final char DELIM = ' ';
 
     /**
      * Creates a log message in the following format ...
-     * 
      * "{repository_id} {user_id} {remote_ip} \"{resource}\" \"{action}\""
      */
     public void auditEvent( AuditEvent event )
     {
         StringBuffer msg = new StringBuffer();
-        msg.append( event.getRepositoryId() ).append( DELIM );
+        msg.append( checkNull( event.getRepositoryId() ) ).append( DELIM );
         msg.append( event.getUserId() ).append( DELIM );
         msg.append( event.getRemoteIP() ).append( DELIM );
-        msg.append( '\"' ).append( event.getResource() ).append( '\"' ).append( DELIM );
+        msg.append( '\"' ).append( checkNull( event.getResource() ) ).append( '\"' ).append( DELIM );
         msg.append( '\"' ).append( event.getAction() ).append( '\"' );
 
         logger.info( msg.toString() );
     }
+
+    private String checkNull( String s )
+    {
+        return s != null ? s : NONE;
+    }
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaXworkUser.java Fri Mar 20 16:12:10 2009
@@ -30,11 +30,15 @@
  * ArchivaXworkUser
  *
  * @version $Id$
- * @plexus.component role="org.apache.maven.archiva.security.ArchivaXworkUser"
  */
-public class ArchivaXworkUser
+public final class ArchivaXworkUser
 {
-    public String getActivePrincipal( Map<String, ?> sessionMap )
+    private ArchivaXworkUser()
+    {
+        // no touchy
+    }
+    
+    public static String getActivePrincipal( Map<String, ?> sessionMap )
     {
         SecuritySession securitySession =
             (SecuritySession) sessionMap.get( SecuritySystemConstants.SECURITY_SESSION_KEY );

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java Fri Mar 20 16:12:10 2009
@@ -22,7 +22,6 @@
 import java.util.Collections;
 import java.util.List;
 
-import com.opensymphony.xwork2.ActionContext;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.database.ArchivaDatabaseException;
@@ -53,11 +52,6 @@
      */
     private UserRepositories userRepositories;
     
-    /**
-     * @plexus.requirement
-     */
-    private ArchivaXworkUser archivaXworkUser;
-    
     private BrowsingResults results;
 
     private String groupId;
@@ -209,12 +203,6 @@
         }        
     }
     
-    @SuppressWarnings("unchecked")
-    private String getPrincipal()
-    {
-        return archivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() );
-    }
-    
     private List<String> getObservableRepos()
     {
         try

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/DeleteArtifactAction.java Fri Mar 20 16:12:10 2009
@@ -48,7 +48,6 @@
 import org.apache.maven.archiva.repository.RepositoryException;
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
 import org.apache.maven.archiva.repository.audit.AuditEvent;
-import org.apache.maven.archiva.repository.audit.AuditListener;
 import org.apache.maven.archiva.repository.audit.Auditable;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
 import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
@@ -56,12 +55,9 @@
 import org.apache.maven.archiva.repository.metadata.RepositoryMetadataWriter;
 import org.apache.maven.archiva.security.AccessDeniedException;
 import org.apache.maven.archiva.security.ArchivaSecurityException;
-import org.apache.maven.archiva.security.ArchivaXworkUser;
 import org.apache.maven.archiva.security.PrincipalNotFoundException;
 import org.apache.maven.archiva.security.UserRepositories;
-import org.apache.struts2.ServletActionContext;
 
-import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.Preparable;
 import com.opensymphony.xwork2.Validateable;
 
@@ -75,11 +71,6 @@
     implements Validateable, Preparable, Auditable
 {
     /**
-     * @plexus.requirement
-     */
-    private ArchivaXworkUser archivaXworkUser;
-
-    /**
      * The groupId of the artifact to be deleted.
      */
     private String groupId;
@@ -129,11 +120,6 @@
      */
     private DatabaseConsumers databaseConsumers;
 
-    /**
-     * @plexus.requirement role="org.apache.maven.archiva.repository.audit.AuditListener"
-     */
-    private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
-
     private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[] { ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 };
 
     public String getGroupId()
@@ -271,7 +257,7 @@
                 "Artifact \'" + groupId + ":" + artifactId + ":" + version +
                     "\' was successfully deleted from repository \'" + repositoryId + "\'";
 
-            triggerAuditEvent( getPrincipal(), repositoryId, groupId + ":" + artifactId + ":" + version,
+            triggerAuditEvent( repositoryId, groupId + ":" + artifactId + ":" + version,
                                AuditEvent.REMOVE_FILE );
 
             addActionMessage( msg );
@@ -296,12 +282,6 @@
         }
     }
 
-    @SuppressWarnings("unchecked")
-    private String getPrincipal()
-    {
-        return archivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() );
-    }
-
     private File getMetadata( String targetPath )
     {
         String artifactPath = targetPath.substring( 0, targetPath.lastIndexOf( File.separatorChar ) );
@@ -403,21 +383,6 @@
         }
     }
 
-    public void addAuditListener( AuditListener listener )
-    {
-        this.auditListeners.add( listener );
-    }
-
-    public void clearAuditListeners()
-    {
-        this.auditListeners.clear();
-    }
-
-    public void removeAuditListener( AuditListener listener )
-    {
-        this.auditListeners.remove( listener );
-    }
-
     private List<String> getManagableRepos()
     {
         try
@@ -439,15 +404,4 @@
         }
         return Collections.emptyList();
     }
-
-    private void triggerAuditEvent( String user, String repositoryId, String resource, String action )
-    {
-        AuditEvent event = new AuditEvent( repositoryId, user, resource, action );
-        event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );
-
-        for ( AuditListener listener : auditListeners )
-        {
-            listener.auditEvent( event );
-        }
-    }
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/PlexusActionSupport.java Fri Mar 20 16:12:10 2009
@@ -19,12 +19,20 @@
  * under the License.
  */
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
+import org.apache.maven.archiva.repository.audit.AuditEvent;
+import org.apache.maven.archiva.repository.audit.AuditListener;
+import org.apache.maven.archiva.repository.audit.Auditable;
+import org.apache.maven.archiva.security.ArchivaXworkUser;
+import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.interceptor.SessionAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionSupport;
 
 /**
@@ -32,15 +40,74 @@
  */
 public abstract class PlexusActionSupport
     extends ActionSupport
-    implements SessionAware
+    implements SessionAware, Auditable
 {
     protected Map<?, ?> session;
 
     protected Logger log = LoggerFactory.getLogger( getClass() );
-    
+
+    /**
+     * @plexus.requirement role="org.apache.maven.archiva.repository.audit.AuditListener"
+     */
+    private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
+
     @SuppressWarnings("unchecked")
     public void setSession( Map map )
     {
         this.session = map;
     }
+
+    public void addAuditListener( AuditListener listener )
+    {
+        this.auditListeners.add( listener );
+    }
+
+    public void clearAuditListeners()
+    {
+        this.auditListeners.clear();
+    }
+
+    public void removeAuditListener( AuditListener listener )
+    {
+        this.auditListeners.remove( listener );
+    }
+
+    protected void triggerAuditEvent( String repositoryId, String resource, String action )
+    {
+        AuditEvent event = new AuditEvent( repositoryId, getPrincipal(), resource, action );
+        event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );
+    
+        for ( AuditListener listener : auditListeners )
+        {
+            listener.auditEvent( event );
+        }
+    }
+
+    protected void triggerAuditEvent( String resource, String action )
+    {
+        AuditEvent event = new AuditEvent( getPrincipal(), resource, action );
+        event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );
+        
+        for ( AuditListener listener : auditListeners )
+        {
+            listener.auditEvent( event );
+        }
+    }
+
+    protected void triggerAuditEvent( String action )
+    {
+        AuditEvent event = new AuditEvent( getPrincipal(), action );
+        event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );
+        
+        for ( AuditListener listener : auditListeners )
+        {
+            listener.auditEvent( event );
+        }
+    }
+
+    @SuppressWarnings( "unchecked" )
+    protected String getPrincipal()
+    {
+        return ArchivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() );
+    }
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java Fri Mar 20 16:12:10 2009
@@ -45,14 +45,12 @@
 import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.security.AccessDeniedException;
 import org.apache.maven.archiva.security.ArchivaSecurityException;
-import org.apache.maven.archiva.security.ArchivaXworkUser;
 import org.apache.maven.archiva.security.PrincipalNotFoundException;
 import org.apache.maven.archiva.security.UserRepositories;
 import org.apache.struts2.ServletActionContext;
 import org.springframework.web.context.WebApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 
-import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.Preparable;
 
 /**
@@ -87,11 +85,6 @@
      */
     private UserRepositories userRepositories;
     
-    /**
-     * @plexus.requirement
-     */
-    private ArchivaXworkUser archivaXworkUser;
-    
     private static final String RESULTS = "results";
 
     private static final String ARTIFACT = "artifact";
@@ -400,12 +393,6 @@
         return INPUT;
     }
 
-    @SuppressWarnings("unchecked")
-    private String getPrincipal()
-    {
-        return archivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() );
-    }
-
     private List<String> getObservableRepos()
     {
         try
@@ -663,16 +650,6 @@
         this.userRepositories = userRepositories;
     }
 
-    public ArchivaXworkUser getArchivaXworkUser()
-    {
-        return archivaXworkUser;
-    }
-
-    public void setArchivaXworkUser( ArchivaXworkUser archivaXworkUser )
-    {
-        this.archivaXworkUser = archivaXworkUser;
-    }
-
     public Map<String, String> getSearchFields()
     {
         return searchFields;

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java Fri Mar 20 16:12:10 2009
@@ -34,9 +34,7 @@
 import org.apache.maven.archiva.security.ArchivaSecurityException;
 import org.apache.maven.archiva.security.PrincipalNotFoundException;
 import org.apache.maven.archiva.security.UserRepositories;
-import org.apache.maven.archiva.security.ArchivaXworkUser;
 
-import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.Validateable;
 
 /**
@@ -62,13 +60,6 @@
      */
     private UserRepositories userRepositories;
     
-    /**
-     * @plexus.requirement
-     */
-    private ArchivaXworkUser archivaXworkUser;
-
-    /* .\ Input Parameters \.________________________________________ */
-
     private String groupId;
 
     private String artifactId;
@@ -195,12 +186,6 @@
         return SUCCESS;
     }
 
-    @SuppressWarnings("unchecked")
-    private String getPrincipal()
-    {
-        return archivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() );
-    }
-
     private List<String> getObservableRepos()
     {
         try

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/UploadAction.java Fri Mar 20 16:12:10 2009
@@ -48,7 +48,6 @@
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
 import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
 import org.apache.maven.archiva.repository.audit.AuditEvent;
-import org.apache.maven.archiva.repository.audit.AuditListener;
 import org.apache.maven.archiva.repository.audit.Auditable;
 import org.apache.maven.archiva.repository.metadata.MetadataTools;
 import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
@@ -61,10 +60,7 @@
 import org.apache.maven.archiva.security.ArchivaSecurityException;
 import org.apache.maven.archiva.security.PrincipalNotFoundException;
 import org.apache.maven.archiva.security.UserRepositories;
-import org.apache.maven.archiva.security.ArchivaXworkUser;
 
-import org.apache.struts2.ServletActionContext;
-import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.Preparable;
 import com.opensymphony.xwork2.Validateable;
 import org.apache.commons.io.FilenameUtils;
@@ -86,11 +82,6 @@
      private RepositoryContentConsumers consumers;
      
      /**
-      * @plexus.requirement
-      */
-     private ArchivaXworkUser archivaXworkUser;
-    
-    /**
      * The groupId of the artifact to be deployed.
      */
     private String groupId;
@@ -155,11 +146,6 @@
      */
     private RepositoryContentFactory repositoryFactory;
     
-    /**
-     * @plexus.requirement role="org.apache.maven.archiva.repository.audit.AuditListener"
-     */
-    private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
-    
     private ChecksumAlgorithm[] algorithms = new ChecksumAlgorithm[] { ChecksumAlgorithm.SHA1, ChecksumAlgorithm.MD5 };
 
     private ProjectModelWriter pomWriter = new ProjectModel400Writer();
@@ -413,7 +399,7 @@
             String msg = "Artifact \'" + groupId + ":" + artifactId + ":" + version +
                 "\' was successfully deployed to repository \'" + repositoryId + "\'";
                         
-            triggerAuditEvent( getPrincipal(), repositoryId, groupId + ":" + artifactId + ":" + version, AuditEvent.UPLOAD_FILE );
+            triggerAuditEvent( repositoryId, groupId + ":" + artifactId + ":" + version, AuditEvent.UPLOAD_FILE );
             
             addActionMessage( msg );
 
@@ -432,12 +418,6 @@
         }
     }
 
-    @SuppressWarnings("unchecked")
-    private String getPrincipal()
-    {
-        return archivaXworkUser.getActivePrincipal( ActionContext.getContext().getSession() );
-    }
-
     private void copyFile( File sourceFile, File targetPath, String targetFilename )
         throws IOException
     {
@@ -584,21 +564,6 @@
         }
     }
     
-    public void addAuditListener( AuditListener listener )
-    {
-        this.auditListeners.add( listener );
-    }
-
-    public void clearAuditListeners()
-    {
-        this.auditListeners.clear();
-    }
-
-    public void removeAuditListener( AuditListener listener )
-    {
-        this.auditListeners.remove( listener );
-    }
-    
     private List<String> getManagableRepos()
     {
         try
@@ -620,15 +585,4 @@
         }
         return Collections.emptyList();
     }
-
-    private void triggerAuditEvent( String user, String repositoryId, String resource, String action )
-    {
-        AuditEvent event = new AuditEvent( repositoryId, user, resource, action );
-        event.setRemoteIP( ServletActionContext.getRequest().getRemoteAddr() );
-        
-        for ( AuditListener listener : auditListeners )
-        {
-            listener.auditEvent( event );
-        }
-    }
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/database/DatabaseAction.java Fri Mar 20 16:12:10 2009
@@ -28,6 +28,8 @@
 import org.apache.maven.archiva.configuration.DatabaseScanningConfiguration;
 import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.database.updater.DatabaseConsumers;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
+import org.apache.maven.archiva.repository.audit.Auditable;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.apache.maven.archiva.web.action.PlexusActionSupport;
 import org.codehaus.plexus.redback.rbac.Resource;
@@ -46,7 +48,7 @@
  */
 public class DatabaseAction
     extends PlexusActionSupport
-    implements Preparable, SecureAction
+    implements Preparable, SecureAction, Auditable
 {
     /**
      * @plexus.requirement
@@ -103,22 +105,39 @@
 
     public String updateUnprocessedConsumers()
     {
+        List<String> oldConsumers = archivaConfiguration.getConfiguration().getDatabaseScanning().getUnprocessedConsumers();
+        
         archivaConfiguration.getConfiguration().getDatabaseScanning().setUnprocessedConsumers(
             enabledUnprocessedConsumers );
+        
+        filterAddedConsumers( oldConsumers, enabledUnprocessedConsumers );
+        filterRemovedConsumers( oldConsumers, enabledUnprocessedConsumers );
 
         return saveConfiguration();
     }
 
     public String updateCleanupConsumers()
     {
+        List<String> oldConsumers = archivaConfiguration.getConfiguration().getDatabaseScanning().getCleanupConsumers();
+        
         archivaConfiguration.getConfiguration().getDatabaseScanning().setCleanupConsumers( enabledCleanupConsumers );
+        
+        filterAddedConsumers( oldConsumers, enabledCleanupConsumers );
+        filterRemovedConsumers( oldConsumers, enabledCleanupConsumers );
 
         return saveConfiguration();
     }
 
     public String updateSchedule()
     {
+        String oldCron = archivaConfiguration.getConfiguration().getDatabaseScanning().getCronExpression();
+        
         archivaConfiguration.getConfiguration().getDatabaseScanning().setCronExpression( cron );
+        
+        if ( !oldCron.equals( cron ) )
+        {
+            triggerAuditEvent( AuditEvent.DB_SCHEDULE + " " + cron );
+        }
 
         return saveConfiguration();
     }
@@ -195,4 +214,26 @@
     {
         this.enabledCleanupConsumers = enabledCleanupConsumers;
     }
+    
+    private void filterAddedConsumers( List<String> oldList, List<String> newList )
+    {
+        for ( String consumer : newList )
+        {
+            if ( !oldList.contains( consumer ) )
+            {
+                triggerAuditEvent( consumer, AuditEvent.ENABLE_DB_CONSUMER );
+            }
+        }
+    }
+    
+    private void filterRemovedConsumers( List<String> oldList, List<String> newList )
+    {
+        for ( String consumer : oldList )
+        {
+            if ( !newList.contains( consumer ) )
+            {
+                triggerAuditEvent( consumer, AuditEvent.DISABLE_DB_CONSUMER );
+            }
+        }
+    }
 }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractRepositoriesAdminAction.java Fri Mar 20 16:12:10 2009
@@ -19,20 +19,23 @@
  * under the License.
  */
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
 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.InvalidConfigurationException;
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+import org.apache.maven.archiva.repository.audit.Auditable;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
+import org.apache.maven.archiva.web.action.PlexusActionSupport;
 import org.codehaus.plexus.redback.rbac.Resource;
+import org.codehaus.plexus.registry.RegistryException;
 import org.codehaus.redback.integration.interceptor.SecureAction;
 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
 import org.codehaus.redback.integration.interceptor.SecureActionException;
-import org.codehaus.plexus.registry.RegistryException;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.maven.archiva.web.action.PlexusActionSupport;
 
 /**
  * Abstract AdminRepositories Action base.
@@ -44,7 +47,7 @@
  */
 public abstract class AbstractRepositoriesAdminAction
     extends PlexusActionSupport
-    implements SecureAction
+    implements SecureAction, Auditable
 {
     /**
      * @plexus.requirement

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java Fri Mar 20 16:12:10 2009
@@ -24,6 +24,7 @@
 
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.codehaus.plexus.redback.role.RoleManagerException;
 import org.codehaus.plexus.scheduler.CronExpressionValidator;
 import java.io.File;
@@ -86,6 +87,7 @@
         try
         {
             addRepository( repository, configuration );
+            triggerAuditEvent( repository.getId(), null, AuditEvent.ADD_MANAGED_REPO );
             addRepositoryRoles( repository );
             result = saveConfiguration( configuration );
         }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddRemoteRepositoryAction.java Fri Mar 20 16:12:10 2009
@@ -24,6 +24,7 @@
 
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.codehaus.plexus.redback.role.RoleManagerException;
 
 import java.io.IOException;
@@ -66,6 +67,7 @@
         try
         {
             addRepository( repository, configuration );
+            triggerAuditEvent( repository.getId(), null, AuditEvent.ADD_REMOTE_REPO );
             result = saveConfiguration( configuration );
         }
         catch ( IOException e )

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteManagedRepositoryAction.java Fri Mar 20 16:12:10 2009
@@ -34,6 +34,7 @@
 import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.model.ArchivaProjectModel;
 import org.apache.maven.archiva.model.RepositoryContentStatistics;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 
@@ -107,6 +108,7 @@
             Configuration configuration = archivaConfiguration.getConfiguration();
             cleanupRepositoryData( existingRepository );
             removeRepository( repoid, configuration );
+            triggerAuditEvent( repoid, null, AuditEvent.DELETE_MANAGED_REPO );
             result = saveConfiguration( configuration );
 
             if ( result.equals( SUCCESS ) )

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRemoteRepositoryAction.java Fri Mar 20 16:12:10 2009
@@ -25,6 +25,7 @@
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 
 import java.util.List;
 
@@ -74,6 +75,7 @@
 
         Configuration configuration = archivaConfiguration.getConfiguration();
         removeRepository( repoid, configuration );
+        triggerAuditEvent( repoid, null, AuditEvent.DELETE_REMOTE_REPO );
         result = saveConfiguration( configuration );
         
         cleanupRepositoryData( existingRepository );

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupAction.java Fri Mar 20 16:12:10 2009
@@ -24,6 +24,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 
 /**
  * DeleteRepositoryGroupAction
@@ -70,6 +71,7 @@
         }
 		
         config.removeRepositoryGroup( group );
+        triggerAuditEvent( AuditEvent.DELETE_REPO_GROUP + " " + repoGroupId );
         return saveConfiguration( config );
     }
 	

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java Fri Mar 20 16:12:10 2009
@@ -25,6 +25,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.codehaus.plexus.redback.role.RoleManagerException;
 import org.codehaus.plexus.scheduler.CronExpressionValidator;
 
@@ -111,6 +112,7 @@
         try
         {
             addRepository( repository, configuration );
+            triggerAuditEvent( repository.getId(), null, AuditEvent.MODIFY_MANAGED_REPO );
             addRepositoryRoles( repository );
             result = saveConfiguration( configuration );
         }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditRemoteRepositoryAction.java Fri Mar 20 16:12:10 2009
@@ -24,6 +24,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.codehaus.plexus.redback.role.RoleManagerException;
 
 import java.io.IOException;
@@ -81,6 +82,7 @@
         try
         {
             addRepository( repository, configuration );
+            triggerAuditEvent( repository.getId(), null, AuditEvent.MODIFY_REMOTE_REPO );
             result = saveConfiguration( configuration );
         }
         catch ( IOException e )

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoryGroupsAction.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoryGroupsAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoryGroupsAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoryGroupsAction.java Fri Mar 20 16:12:10 2009
@@ -33,6 +33,7 @@
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
 import org.apache.maven.archiva.web.util.ContextUtils;
 
 /**
@@ -130,6 +131,7 @@
         }
             
         configuration.addRepositoryGroup( repositoryGroup );
+        triggerAuditEvent( AuditEvent.ADD_REPO_GROUP + " " + repoGroupId );
         return saveConfiguration( configuration );
     }
     
@@ -157,6 +159,8 @@
         // save repository group configuration
         group.addRepository( repoId );
         config.addRepositoryGroup( group );
+        
+        triggerAuditEvent( repoId, null, AuditEvent.ADD_REPO_TO_GROUP + " " + repoGroupId );
     	
         return saveConfiguration( config );
     }
@@ -185,6 +189,8 @@
         // save repository group configuration
         group.removeRepository( repoId );
         config.addRepositoryGroup( group );
+        
+        triggerAuditEvent( repoId, null, AuditEvent.DELETE_REPO_FROM_GROUP + " " + repoGroupId );
     	
         return saveConfiguration( config );
     }

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/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/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/scanning/RepositoryScanningAction.java Fri Mar 20 16:12:10 2009
@@ -19,8 +19,11 @@
  * under the License.
  */
 
-import com.opensymphony.xwork2.Preparable;
-import com.opensymphony.xwork2.Validateable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -30,20 +33,19 @@
 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.audit.AuditEvent;
+import org.apache.maven.archiva.repository.audit.Auditable;
 import org.apache.maven.archiva.repository.scanner.RepositoryContentConsumers;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.apache.maven.archiva.web.action.PlexusActionSupport;
-
 import org.codehaus.plexus.redback.rbac.Resource;
+import org.codehaus.plexus.registry.RegistryException;
 import org.codehaus.redback.integration.interceptor.SecureAction;
 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
 import org.codehaus.redback.integration.interceptor.SecureActionException;
-import org.codehaus.plexus.registry.RegistryException;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import com.opensymphony.xwork2.Preparable;
+import com.opensymphony.xwork2.Validateable;
 
 /**
  * RepositoryScanningAction
@@ -53,7 +55,7 @@
  */
 public class RepositoryScanningAction
     extends PlexusActionSupport
-    implements Preparable, Validateable, SecureAction
+    implements Preparable, Validateable, SecureAction, Auditable
 {
     /**
      * @plexus.requirement
@@ -92,7 +94,7 @@
     private String pattern;
 
     private String fileTypeId;
-
+    
     public void addActionError( String anErrorMessage )
     {
         super.addActionError( anErrorMessage );
@@ -132,6 +134,8 @@
 
         filetype.addPattern( pattern );
         addActionMessage( "Added pattern \"" + pattern + "\" to filetype " + id );
+        
+        triggerAuditEvent( AuditEvent.ADD_PATTERN + " " + pattern );
 
         return saveConfiguration();
     }
@@ -222,6 +226,8 @@
         }
 
         filetype.removePattern( getPattern() );
+        
+        triggerAuditEvent( AuditEvent.REMOVE_PATTERN + " " + pattern );
 
         return saveConfiguration();
     }
@@ -239,9 +245,14 @@
     public String updateInvalidConsumers()
     {
         addActionMessage( "Update Invalid Consumers" );
+        
+        List<String> oldConsumers = archivaConfiguration.getConfiguration().getRepositoryScanning().getInvalidContentConsumers();
 
         archivaConfiguration.getConfiguration().getRepositoryScanning().setInvalidContentConsumers(
             enabledInvalidContentConsumers );
+        
+        filterAddedConsumers( oldConsumers, enabledInvalidContentConsumers );
+        filterRemovedConsumers( oldConsumers, enabledInvalidContentConsumers );
 
         return saveConfiguration();
     }
@@ -249,9 +260,14 @@
     public String updateKnownConsumers()
     {
         addActionMessage( "Update Known Consumers" );
+        
+        List<String> oldConsumers = archivaConfiguration.getConfiguration().getRepositoryScanning().getKnownContentConsumers();
 
         archivaConfiguration.getConfiguration().getRepositoryScanning().setKnownContentConsumers(
             enabledKnownContentConsumers );
+        
+        filterAddedConsumers( oldConsumers, enabledKnownContentConsumers );
+        filterRemovedConsumers( oldConsumers, enabledKnownContentConsumers );
 
         return saveConfiguration();
     }
@@ -298,6 +314,28 @@
         return SUCCESS;
     }
 
+    private void filterAddedConsumers( List<String> oldList, List<String> newList )
+    {
+        for ( String consumer : newList )
+        {
+            if ( !oldList.contains( consumer ) )
+            {
+                triggerAuditEvent( AuditEvent.ENABLE_REPO_CONSUMER + " " + consumer );
+            }
+        }
+    }
+    
+    private void filterRemovedConsumers( List<String> oldList, List<String> newList )
+    {
+        for ( String consumer : oldList )
+        {
+            if ( !newList.contains( consumer ) )
+            {
+                triggerAuditEvent( AuditEvent.DISABLE_REPO_CONSUMER + " " + consumer );
+            }
+        }
+    }
+
     public List<String> getEnabledInvalidContentConsumers()
     {
         return enabledInvalidContentConsumers;

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/SearchActionTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/SearchActionTest.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/SearchActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/SearchActionTest.java Fri Mar 20 16:12:10 2009
@@ -20,7 +20,6 @@
  */
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.archiva.indexer.search.RepositorySearch;
@@ -35,11 +34,10 @@
 import org.apache.maven.archiva.database.constraints.ArtifactsByChecksumConstraint;
 import org.apache.maven.archiva.database.constraints.UniqueVersionConstraint;
 import org.apache.maven.archiva.model.ArchivaArtifact;
-import org.apache.maven.archiva.security.ArchivaXworkUser;
 import org.apache.maven.archiva.security.UserRepositories;
+import org.codehaus.plexus.redback.users.UserManager;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.easymock.MockControl;
-import org.easymock.classextension.MockClassControl;
 
 import com.opensymphony.xwork2.Action;
 
@@ -65,8 +63,6 @@
     
     private MockControl archivaXworkUserControl;
     
-    private ArchivaXworkUser archivaXworkUser;
-    
     private MockControl searchControl;
     
     private RepositorySearch search;
@@ -93,11 +89,6 @@
         userReposControl = MockControl.createControl( UserRepositories.class );        
         userRepos = ( UserRepositories ) userReposControl.getMock();
         
-        archivaXworkUserControl = MockClassControl.createControl( ArchivaXworkUser.class );
-        archivaXworkUserControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
-        
-        archivaXworkUser = ( ArchivaXworkUser ) archivaXworkUserControl.getMock();
-        
         searchControl = MockControl.createControl( RepositorySearch.class );
         searchControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
         search = ( RepositorySearch ) searchControl.getMock();
@@ -107,7 +98,6 @@
         artifactDao = ( ArtifactDAO ) artifactDaoControl.getMock();
                 
         action.setArchivaConfiguration( archivaConfig );
-        action.setArchivaXworkUser( archivaXworkUser );
         action.setUserRepositories( userRepos );
         action.setDao( dao );
         action.setNexusSearch( search );
@@ -153,7 +143,7 @@
         versions.add( "1.0" );
         versions.add( "1.1" );
         
-        archivaXworkUserControl.expectAndReturn( getActivePrincipal(), "user", 3 );
+        archivaXworkUserControl.expectAndReturn( UserManager.GUEST_USERNAME, "user", 3 );
                 
         userReposControl.expectAndReturn( userRepos.getObservableRepositoryIds( "user" ), selectedRepos, 2 );
         
@@ -178,11 +168,6 @@
         daoControl.verify();
     }
 
-    private String getActivePrincipal()
-    {
-        return archivaXworkUser.getActivePrincipal( Collections.<String,Object>emptyMap() );
-    }
-    
     public void testSearchWithinSearchResults()
         throws Exception
     {
@@ -218,7 +203,7 @@
         versions.add( "1.0" );
         versions.add( "1.1" );
         
-        archivaXworkUserControl.expectAndReturn( getActivePrincipal(), "user", 3 );
+        archivaXworkUserControl.expectAndReturn( UserManager.GUEST_USERNAME, "user", 3 );
                 
         userReposControl.expectAndReturn( userRepos.getObservableRepositoryIds( "user" ), selectedRepos, 2 );
         
@@ -252,7 +237,7 @@
         
         List<String> selectedRepos = new ArrayList<String>();
         
-        archivaXworkUserControl.expectAndReturn( getActivePrincipal(), "user" );
+        archivaXworkUserControl.expectAndReturn( UserManager.GUEST_USERNAME, "user" );
         
         userReposControl.expectAndReturn( userRepos.getObservableRepositoryIds( "user" ), selectedRepos );
         
@@ -284,7 +269,7 @@
                 
         SearchResults results = new SearchResults();
         
-        archivaXworkUserControl.expectAndReturn( getActivePrincipal(), "user", 2 );
+        archivaXworkUserControl.expectAndReturn( UserManager.GUEST_USERNAME, "user", 2 );
                 
         userReposControl.expectAndReturn( userRepos.getObservableRepositoryIds( "user" ), selectedRepos );
         
@@ -339,7 +324,7 @@
         
         SearchFields searchFields = new SearchFields( "org", null, null, null, null, selectedRepos );
         
-        archivaXworkUserControl.expectAndReturn( getActivePrincipal(), "user" );
+        archivaXworkUserControl.expectAndReturn( UserManager.GUEST_USERNAME, "user" );
         
         searchControl.expectAndReturn( search.search( "user", searchFields, limits ), results );
         
@@ -389,7 +374,7 @@
         
         SearchFields searchFields = new SearchFields( "org", null, null, null, null, selectedRepos );
         
-        archivaXworkUserControl.expectAndReturn( getActivePrincipal(), "user", 2 );
+        archivaXworkUserControl.expectAndReturn( UserManager.GUEST_USERNAME, "user", 2 );
         
         userReposControl.expectAndReturn( userRepos.getObservableRepositoryIds( "user" ), selectedRepos );
         
@@ -434,7 +419,7 @@
         
         SearchFields searchFields = new SearchFields( "org", null, null, null, null, selectedRepos );
         
-        archivaXworkUserControl.expectAndReturn( getActivePrincipal(), "user" );
+        archivaXworkUserControl.expectAndReturn( UserManager.GUEST_USERNAME, "user" );
         
         searchControl.expectAndReturn( search.search( "user", searchFields, limits ), results );
         

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java?rev=756563&r1=756562&r2=756563&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/DeleteRepositoryGroupActionTest.java Fri Mar 20 16:12:10 2009
@@ -21,15 +21,16 @@
 
 import java.util.Collections;
 
-import com.opensymphony.xwork2.Action;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
 import org.codehaus.redback.integration.interceptor.SecureActionException;
-import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.easymock.MockControl;
 
+import com.opensymphony.xwork2.Action;
+
 /**
  * DeleteRepositoryGroupActionTest
  *