Author: jdumay
Date: Thu Feb 26 05:32:30 2009
New Revision: 748021

URL: http://svn.apache.org/viewvc?rev=748021&view=rev
Log:
Audit logging interceptor changes

Added:
    
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/AuditLoggingPostRepositoryInterceptor.java
Modified:
    
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyRepositoryManager.java
    
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/api/RepositoryContext.java
    
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
    
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/resources/META-INF/spring-context.xml
    
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/HttpRepositoryContext.java

Modified: 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyRepositoryManager.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyRepositoryManager.java?rev=748021&r1=748020&r2=748021&view=diff
==============================================================================
--- 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyRepositoryManager.java
 (original)
+++ 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyRepositoryManager.java
 Thu Feb 26 05:32:30 2009
@@ -41,6 +41,7 @@
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryException;
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
+import org.apache.maven.archiva.repository.audit.Auditable;
 import org.apache.maven.archiva.repository.content.RepositoryRequest;
 import org.apache.maven.archiva.repository.layout.LayoutException;
 import org.apache.maven.model.DistributionManagement;

Modified: 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/api/RepositoryContext.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/api/RepositoryContext.java?rev=748021&r1=748020&r2=748021&view=diff
==============================================================================
--- 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/api/RepositoryContext.java
 (original)
+++ 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/api/RepositoryContext.java
 Thu Feb 26 05:32:30 2009
@@ -72,7 +72,13 @@
 
     /**
      * Gets the ContentType of the Response
-     * @return
+     * @return contentType
      */
     String getContentType();
+
+    /**
+     * Gets the IP Address of the requester
+     * @return ipAdress
+     */
+    String getRemoteIP();
 }

Added: 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/AuditLoggingPostRepositoryInterceptor.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/AuditLoggingPostRepositoryInterceptor.java?rev=748021&view=auto
==============================================================================
--- 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/AuditLoggingPostRepositoryInterceptor.java
 (added)
+++ 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/AuditLoggingPostRepositoryInterceptor.java
 Thu Feb 26 05:32:30 2009
@@ -0,0 +1,64 @@
+package org.apache.archiva.repository;
+
+/*
+ * 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.ArrayList;
+import java.util.List;
+import org.apache.archiva.repository.api.RepositoryContext;
+import org.apache.archiva.repository.api.interceptor.PostRepositoryInterceptor;
+import org.apache.maven.archiva.repository.audit.AuditEvent;
+import org.apache.maven.archiva.repository.audit.AuditListener;
+import org.apache.maven.archiva.repository.audit.Auditable;
+
+public class AuditLoggingPostRepositoryInterceptor implements 
PostRepositoryInterceptor, Auditable
+{
+    private final List<AuditListener> auditListeners = new 
ArrayList<AuditListener>();
+
+    public void intercept(RepositoryContext context)
+    {
+        triggerAuditEvent(context);
+    }
+
+    private void triggerAuditEvent( RepositoryContext context )
+    {
+        AuditEvent event = new AuditEvent( context.getRepositoryId(), 
context.getPrincipal(), context.getLogicalPath(), 
context.getRequestType().toString() );
+        event.setRemoteIP( context.getRemoteIP() );
+
+        for ( AuditListener listener : auditListeners )
+        {
+            listener.auditEvent( event );
+        }
+    }
+
+    public void addAuditListener(AuditListener auditListener)
+    {
+        auditListeners.add(auditListener);
+    }
+
+    public void clearAuditListeners()
+    {
+        auditListeners.clear();
+    }
+
+    public void removeAuditListener(AuditListener auditListener)
+    {
+        auditListeners.add(auditListener);
+    }
+}

Modified: 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java?rev=748021&r1=748020&r2=748021&view=diff
==============================================================================
--- 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
 (original)
+++ 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/java/org/apache/archiva/repository/GroupRepositoryManager.java
 Thu Feb 26 05:32:30 2009
@@ -97,7 +97,7 @@
         if (isMetadataRequest(context) && isProjectReference(context))
         {
             ArchivaRepositoryMetadata mainMetadata = null;
-            for (final String repositoryId : 
groupConfiguration.getRepositories() )
+            for (final String repositoryId : new 
ArrayList<String>(groupConfiguration.getRepositories()) )
             {
                 final ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 final MutableResourceContext resourceContext = 
getMetadataLogicalPathWithoutChecksum(context);
@@ -173,7 +173,7 @@
         final RepositoryGroupConfiguration groupConfiguration = 
getGroupConfiguration(context.getRepositoryId());
         
         final LinkedHashMap<String, Status> statusMap = new 
LinkedHashMap<String, Status>();
-        for (final String repositoryId : groupConfiguration.getRepositories())
+        for (final String repositoryId : new 
ArrayList<String>(groupConfiguration.getRepositories()))
         {
             final MutableResourceContext resourceContext = 
getMetadataLogicalPathWithoutChecksum(context);
             resourceContext.setRepositoryId(repositoryId);
@@ -229,7 +229,7 @@
 
     private boolean readFromGroup(final RepositoryGroupConfiguration 
groupConfiguration, ResourceContext context, OutputStream os)
     {
-        for (final String repositoryId : groupConfiguration.getRepositories())
+        for (final String repositoryId : new 
ArrayList<String>(groupConfiguration.getRepositories()))
         {
             final MutableResourceContext resourceContext = new 
MutableResourceContext(context);
             resourceContext.setRepositoryId(repositoryId);

Modified: 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/resources/META-INF/spring-context.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/resources/META-INF/spring-context.xml?rev=748021&r1=748020&r2=748021&view=diff
==============================================================================
--- 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/resources/META-INF/spring-context.xml
 (original)
+++ 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-base/archiva-repository/src/main/resources/META-INF/spring-context.xml
 Thu Feb 26 05:32:30 2009
@@ -3,6 +3,8 @@
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd";>
 
+       <bean name="auditLoggingPostRepositoryInteceptor" 
class="org.apache.archiva.repository.AuditLoggingPostRepositoryInterceptor"/>
+
        <bean name="repositoryFactory" 
class="org.apache.archiva.repository.DefaultRepositoryFactory" lazy-init="true">
            <constructor-arg ref="repositoryContentFactory"/>
        </bean>

Modified: 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/HttpRepositoryContext.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/HttpRepositoryContext.java?rev=748021&r1=748020&r2=748021&view=diff
==============================================================================
--- 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/HttpRepositoryContext.java
 (original)
+++ 
archiva/branches/archiva-with-new-repoapi/archiva-modules/archiva-web/archiva-repository-servlet/src/main/java/org/apache/archiva/web/servlet/HttpRepositoryContext.java
 Thu Feb 26 05:32:30 2009
@@ -66,6 +66,11 @@
         }
     }
 
+    public String getRemoteIP()
+    {
+        return request.getRemoteAddr();
+    }
+
     private static String getPrincipal(HttpServletRequest request)
     {
         String header = request.getHeader( "Authorization" );


Reply via email to