mirror of https://github.com/apache/archiva.git
remove dependency on repository-layer from audit module
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@921799 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
51acb7acd7
commit
3387b53fca
|
@ -31,6 +31,11 @@
|
|||
<name>Archiva Consumers :: Core Consumers</name>
|
||||
|
||||
<dependencies>
|
||||
<!-- TODO: remove this hard dependency by using an event mechanism -->
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>audit</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>archiva-configuration</artifactId>
|
||||
|
|
|
@ -19,10 +19,10 @@ package org.apache.maven.archiva.consumers.core.repository;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.repository.events.RepositoryListener;
|
||||
import org.apache.maven.archiva.model.ArtifactReference;
|
||||
import org.apache.maven.archiva.repository.ManagedRepositoryContent;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
|
|
@ -21,6 +21,8 @@ package org.apache.maven.archiva.web.action;
|
|||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
import com.opensymphony.xwork2.Validateable;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.Auditable;
|
||||
import org.apache.archiva.checksum.ChecksumAlgorithm;
|
||||
import org.apache.archiva.checksum.ChecksummedFile;
|
||||
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
||||
|
@ -37,8 +39,6 @@ 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.RepositoryNotFoundException;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.repository.audit.Auditable;
|
||||
import org.apache.maven.archiva.repository.metadata.MetadataTools;
|
||||
import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
|
||||
import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
|
||||
|
|
|
@ -19,22 +19,22 @@ package org.apache.maven.archiva.web.action;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import com.opensymphony.xwork2.ActionContext;
|
||||
import com.opensymphony.xwork2.ActionSupport;
|
||||
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.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditListener;
|
||||
import org.apache.archiva.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 java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* LogEnabled and SessionAware ActionSupport
|
||||
*/
|
||||
|
@ -47,7 +47,7 @@ public abstract class PlexusActionSupport
|
|||
protected Logger log = LoggerFactory.getLogger( getClass() );
|
||||
|
||||
/**
|
||||
* @plexus.requirement role="org.apache.maven.archiva.repository.audit.AuditListener"
|
||||
* @plexus.requirement role="org.apache.archiva.audit.AuditListener"
|
||||
*/
|
||||
private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
|
||||
|
||||
|
|
|
@ -19,22 +19,10 @@ package org.apache.maven.archiva.web.action;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
import com.opensymphony.xwork2.Validateable;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.Auditable;
|
||||
import org.apache.archiva.checksum.ChecksumAlgorithm;
|
||||
import org.apache.archiva.checksum.ChecksummedFile;
|
||||
import org.apache.archiva.scheduler.ArchivaTaskScheduler;
|
||||
|
@ -53,8 +41,6 @@ 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.RepositoryNotFoundException;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.repository.audit.Auditable;
|
||||
import org.apache.maven.archiva.repository.metadata.MetadataTools;
|
||||
import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
|
||||
import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
|
||||
|
@ -68,6 +54,20 @@ import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
|
|||
import org.codehaus.plexus.taskqueue.TaskQueueException;
|
||||
import org.codehaus.plexus.util.IOUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
* Upload an artifact using Jakarta file upload in webwork. If set by the user a pom will also be generated. Metadata
|
||||
* will also be updated if one exists, otherwise it would be created.
|
||||
|
|
|
@ -19,16 +19,12 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.archiva.audit.Auditable;
|
||||
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;
|
||||
|
@ -37,6 +33,10 @@ import org.codehaus.redback.integration.interceptor.SecureAction;
|
|||
import org.codehaus.redback.integration.interceptor.SecureActionBundle;
|
||||
import org.codehaus.redback.integration.interceptor.SecureActionException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Abstract AdminRepositories Action base.
|
||||
*
|
||||
|
|
|
@ -21,12 +21,12 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
import com.opensymphony.xwork2.Validateable;
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
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;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
|
@ -21,10 +21,9 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
import com.opensymphony.xwork2.Validateable;
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
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;
|
||||
|
|
|
@ -19,20 +19,20 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||
import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
|
||||
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.configuration.ProxyConnectorConfiguration;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.codehaus.plexus.redback.role.RoleManagerException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* DeleteManagedRepositoryAction
|
||||
*
|
||||
|
|
|
@ -20,12 +20,11 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
*/
|
||||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
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;
|
||||
|
||||
|
|
|
@ -20,11 +20,10 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
*/
|
||||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
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
|
||||
|
|
|
@ -19,19 +19,19 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
import com.opensymphony.xwork2.Validateable;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
|
||||
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;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* AddManagedRepositoryAction
|
||||
*
|
||||
|
|
|
@ -20,11 +20,10 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
*/
|
||||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
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;
|
||||
|
|
|
@ -19,22 +19,20 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.struts2.interceptor.ServletRequestAware;
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
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.configuration.RepositoryGroupConfiguration;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.web.util.ContextUtils;
|
||||
import org.apache.struts2.interceptor.ServletRequestAware;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* RepositoryGroupsAction
|
||||
|
|
|
@ -19,13 +19,10 @@ package org.apache.maven.archiva.web.action.admin.scanning;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
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;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.Auditable;
|
||||
import org.apache.archiva.repository.scanner.RepositoryContentConsumers;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
@ -36,8 +33,6 @@ import org.apache.maven.archiva.configuration.IndeterminateConfigurationExceptio
|
|||
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.security.ArchivaRoleConstants;
|
||||
import org.apache.maven.archiva.web.action.PlexusActionSupport;
|
||||
import org.codehaus.plexus.redback.rbac.Resource;
|
||||
|
@ -46,6 +41,11 @@ import org.codehaus.redback.integration.interceptor.SecureAction;
|
|||
import org.codehaus.redback.integration.interceptor.SecureActionBundle;
|
||||
import org.codehaus.redback.integration.interceptor.SecureActionException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* RepositoryScanningAction
|
||||
*
|
||||
|
|
|
@ -19,19 +19,11 @@ package org.apache.maven.archiva.web.action.reports;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import com.opensymphony.xwork2.Preparable;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditManager;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.security.AccessDeniedException;
|
||||
import org.apache.maven.archiva.security.ArchivaSecurityException;
|
||||
import org.apache.maven.archiva.security.PrincipalNotFoundException;
|
||||
|
@ -42,6 +34,14 @@ import org.codehaus.redback.integration.interceptor.SecureAction;
|
|||
import org.codehaus.redback.integration.interceptor.SecureActionBundle;
|
||||
import org.codehaus.redback.integration.interceptor.SecureActionException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* @plexus.component role="com.opensymphony.xwork2.Action" role-hint="viewAuditLogReport"
|
||||
* instantiation-strategy="per-lookup"
|
||||
|
|
|
@ -19,11 +19,11 @@ package org.apache.maven.archiva.web.action;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.easymock.ArgumentsMatcher;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class AuditEventArgumentsMatcher
|
||||
implements ArgumentsMatcher
|
||||
{
|
||||
|
|
|
@ -19,17 +19,9 @@ package org.apache.maven.archiva.web.action;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import com.opensymphony.xwork2.Action;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditListener;
|
||||
import org.apache.archiva.checksum.ChecksumAlgorithm;
|
||||
import org.apache.archiva.checksum.ChecksummedFile;
|
||||
import org.apache.archiva.scheduler.ArchivaTaskScheduler;
|
||||
|
@ -42,14 +34,22 @@ import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
|
|||
import org.apache.maven.archiva.repository.ManagedRepositoryContent;
|
||||
import org.apache.maven.archiva.repository.RepositoryContentFactory;
|
||||
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.content.ManagedDefaultRepositoryContent;
|
||||
import org.apache.maven.archiva.repository.metadata.MetadataTools;
|
||||
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
||||
import org.easymock.MockControl;
|
||||
import org.easymock.classextension.MockClassControl;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
* UploadActionTest
|
||||
*/
|
||||
|
|
|
@ -19,13 +19,9 @@ package org.apache.maven.archiva.web.action.admin.repositories;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.opensymphony.xwork2.Action;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditListener;
|
||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||
import org.apache.archiva.metadata.repository.stats.RepositoryStatisticsManager;
|
||||
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||
|
@ -35,8 +31,6 @@ import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
|||
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
|
||||
import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
|
||||
import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.repository.audit.AuditListener;
|
||||
import org.apache.maven.archiva.security.ArchivaRoleConstants;
|
||||
import org.apache.maven.archiva.web.action.AuditEventArgumentsMatcher;
|
||||
import org.codehaus.plexus.redback.role.RoleManager;
|
||||
|
@ -47,6 +41,12 @@ import org.codehaus.redback.integration.interceptor.SecureActionBundle;
|
|||
import org.codehaus.redback.integration.interceptor.SecureActionException;
|
||||
import org.easymock.MockControl;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* DeleteManagedRepositoryActionTest
|
||||
*
|
||||
|
|
|
@ -30,8 +30,13 @@
|
|||
<name>Archiva Web :: WebDAV</name>
|
||||
|
||||
<dependencies>
|
||||
<!-- TODO: remove this hardcoding through a better event mechanism -->
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>audit</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>archiva-configuration</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -19,6 +19,8 @@ package org.apache.maven.archiva.webdav;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditListener;
|
||||
import org.apache.archiva.scheduler.ArchivaTaskScheduler;
|
||||
import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
|
||||
import org.apache.archiva.scheduler.repository.RepositoryTask;
|
||||
|
@ -48,8 +50,6 @@ import org.apache.jackrabbit.webdav.property.DavPropertySet;
|
|||
import org.apache.jackrabbit.webdav.property.DefaultDavProperty;
|
||||
import org.apache.jackrabbit.webdav.property.ResourceType;
|
||||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.repository.audit.AuditListener;
|
||||
import org.apache.maven.archiva.webdav.util.IndexWriter;
|
||||
import org.apache.maven.archiva.webdav.util.MimeTypes;
|
||||
import org.codehaus.plexus.taskqueue.TaskQueueException;
|
||||
|
|
|
@ -19,6 +19,9 @@ package org.apache.maven.archiva.webdav;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditListener;
|
||||
import org.apache.archiva.audit.Auditable;
|
||||
import org.apache.archiva.scheduler.repository.RepositoryArchivaTaskScheduler;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
@ -43,9 +46,6 @@ 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.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.content.RepositoryRequest;
|
||||
import org.apache.maven.archiva.repository.layout.LayoutException;
|
||||
import org.apache.maven.archiva.repository.metadata.MetadataTools;
|
||||
|
@ -99,7 +99,7 @@ public class ArchivaDavResourceFactory
|
|||
private Logger log = LoggerFactory.getLogger( ArchivaDavResourceFactory.class );
|
||||
|
||||
/**
|
||||
* @plexus.requirement role="org.apache.maven.archiva.repository.audit.AuditListener"
|
||||
* @plexus.requirement role="org.apache.archiva.audit.AuditListener"
|
||||
*/
|
||||
private List<AuditListener> auditListeners = new ArrayList<AuditListener>();
|
||||
|
||||
|
|
|
@ -19,9 +19,7 @@ package org.apache.maven.archiva.webdav;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.apache.archiva.audit.AuditListener;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.jackrabbit.webdav.DavException;
|
||||
import org.apache.jackrabbit.webdav.DavResource;
|
||||
|
@ -37,11 +35,13 @@ import org.apache.jackrabbit.webdav.lock.Scope;
|
|||
import org.apache.jackrabbit.webdav.lock.SimpleLockManager;
|
||||
import org.apache.jackrabbit.webdav.lock.Type;
|
||||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||
import org.apache.maven.archiva.repository.audit.AuditListener;
|
||||
import org.apache.maven.archiva.webdav.util.MimeTypes;
|
||||
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
|
||||
import org.codehaus.plexus.spring.PlexusToSpringUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
|
||||
public class DavResourceTest
|
||||
extends PlexusInSpringTestCase
|
||||
{
|
||||
|
|
|
@ -19,22 +19,21 @@ package org.apache.maven.archiva.webdav;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.meterware.httpunit.GetMethodWebRequest;
|
||||
import com.meterware.httpunit.HttpUnitOptions;
|
||||
import com.meterware.httpunit.PutMethodWebRequest;
|
||||
import com.meterware.httpunit.WebRequest;
|
||||
import com.meterware.httpunit.WebResponse;
|
||||
import com.meterware.servletunit.InvocationContext;
|
||||
import com.meterware.servletunit.ServletRunner;
|
||||
import com.meterware.servletunit.ServletUnitClient;
|
||||
import net.sf.ehcache.CacheManager;
|
||||
|
||||
import org.apache.archiva.repository.audit.TestAuditListener;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.jackrabbit.webdav.DavSessionProvider;
|
||||
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
|
||||
import org.apache.maven.archiva.configuration.Configuration;
|
||||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||
import org.apache.maven.archiva.repository.audit.AuditListener;
|
||||
import org.apache.maven.archiva.security.ArchivaRoleConstants;
|
||||
import org.apache.maven.archiva.security.ServletAuthenticator;
|
||||
import org.codehaus.plexus.redback.authentication.AuthenticationException;
|
||||
|
@ -50,14 +49,10 @@ import org.codehaus.redback.integration.filter.authentication.basic.HttpBasicAut
|
|||
import org.easymock.MockControl;
|
||||
import org.easymock.classextension.MockClassControl;
|
||||
|
||||
import com.meterware.httpunit.GetMethodWebRequest;
|
||||
import com.meterware.httpunit.HttpUnitOptions;
|
||||
import com.meterware.httpunit.PutMethodWebRequest;
|
||||
import com.meterware.httpunit.WebRequest;
|
||||
import com.meterware.httpunit.WebResponse;
|
||||
import com.meterware.servletunit.InvocationContext;
|
||||
import com.meterware.servletunit.ServletRunner;
|
||||
import com.meterware.servletunit.ServletUnitClient;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* RepositoryServletSecurityTest Test the flow of the authentication and authorization checks. This does not necessarily
|
||||
|
|
|
@ -19,8 +19,8 @@ package org.apache.archiva.repository.audit;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.repository.audit.AuditListener;
|
||||
import org.apache.archiva.audit.AuditEvent;
|
||||
import org.apache.archiva.audit.AuditListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
<artifactId>archiva-repository-layer</artifactId>
|
||||
<artifactId>archiva-configuration</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.archiva</groupId>
|
||||
|
|
|
@ -0,0 +1,330 @@
|
|||
package org.apache.archiva.audit;
|
||||
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.archiva.metadata.model.MetadataFacet;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
* AuditEvent
|
||||
*
|
||||
* @version $Id$
|
||||
*/
|
||||
public class AuditEvent
|
||||
implements MetadataFacet
|
||||
{
|
||||
public static final String TIMESTAMP_FORMAT = "yyyy/MM/dd/HHmmss.SSS";
|
||||
|
||||
public static final String CREATE_DIR = "Created Directory";
|
||||
|
||||
public static final String CREATE_FILE = "Created File";
|
||||
|
||||
public static final String REMOVE_DIR = "Removed Directory";
|
||||
|
||||
public static final String REMOVE_FILE = "Removed File";
|
||||
|
||||
public static final String MODIFY_FILE = "Modified File";
|
||||
|
||||
public static final String MOVE_FILE = "Moved File";
|
||||
|
||||
public static final String MOVE_DIRECTORY = "Moved Directory";
|
||||
|
||||
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 ADD_PATTERN = "Added File Type Pattern";
|
||||
|
||||
public static final String REMOVE_PATTERN = "Removed File Type Pattern";
|
||||
|
||||
private String repositoryId;
|
||||
|
||||
private String userId;
|
||||
|
||||
private String remoteIP;
|
||||
|
||||
// TODO: change to artifact reference? does it ever refer to just a path?
|
||||
|
||||
private String resource;
|
||||
|
||||
private String action;
|
||||
|
||||
private Date timestamp;
|
||||
|
||||
public static final String FACET_ID = "org.apache.archiva.audit";
|
||||
|
||||
private static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone( "UTC" );
|
||||
|
||||
private static final int TS_LENGTH = TIMESTAMP_FORMAT.length();
|
||||
|
||||
public AuditEvent()
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
public AuditEvent( String name, String repositoryId )
|
||||
{
|
||||
String ts = name.substring( 0, TS_LENGTH );
|
||||
try
|
||||
{
|
||||
timestamp = createNameFormat().parse( ts );
|
||||
}
|
||||
catch ( ParseException e )
|
||||
{
|
||||
throw new IllegalArgumentException( "Improperly formatted timestamp for audit log event: " + ts );
|
||||
}
|
||||
|
||||
if ( name.length() > TS_LENGTH )
|
||||
{
|
||||
if ( name.charAt( TS_LENGTH ) != '/' )
|
||||
{
|
||||
throw new IllegalArgumentException(
|
||||
"Improperly formatted name for audit log event, no / separator between timestamp and resource: " +
|
||||
name );
|
||||
}
|
||||
}
|
||||
|
||||
this.repositoryId = repositoryId;
|
||||
}
|
||||
|
||||
public AuditEvent( String repoId, String user, String resource, String action )
|
||||
{
|
||||
this.repositoryId = repoId;
|
||||
this.userId = user;
|
||||
this.resource = resource;
|
||||
this.action = action;
|
||||
this.timestamp = Calendar.getInstance().getTime();
|
||||
}
|
||||
|
||||
public String getRepositoryId()
|
||||
{
|
||||
return repositoryId;
|
||||
}
|
||||
|
||||
public void setRepositoryId( String repositoryId )
|
||||
{
|
||||
this.repositoryId = repositoryId;
|
||||
}
|
||||
|
||||
public String getUserId()
|
||||
{
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId( String userId )
|
||||
{
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getResource()
|
||||
{
|
||||
return resource;
|
||||
}
|
||||
|
||||
public void setResource( String resource )
|
||||
{
|
||||
this.resource = resource;
|
||||
}
|
||||
|
||||
public String getAction()
|
||||
{
|
||||
return action;
|
||||
}
|
||||
|
||||
public void setAction( String action )
|
||||
{
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
public String getRemoteIP()
|
||||
{
|
||||
return remoteIP;
|
||||
}
|
||||
|
||||
public void setRemoteIP( String remoteIP )
|
||||
{
|
||||
this.remoteIP = remoteIP;
|
||||
}
|
||||
|
||||
public Date getTimestamp()
|
||||
{
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
public void setTimestamp( Date timestamp )
|
||||
{
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
public String getFacetId()
|
||||
{
|
||||
return FACET_ID;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
// use the hashCode here to make it unique if multiple events occur at a certain timestamp. None of the other
|
||||
// fields is unique on its own
|
||||
return createNameFormat().format( timestamp ) + "/" + Integer.toHexString( hashCode() );
|
||||
// TODO: a simple incremental counter might be better since it will retain ordering, but then we need to do a
|
||||
// bit of locking...
|
||||
}
|
||||
|
||||
private static SimpleDateFormat createNameFormat()
|
||||
{
|
||||
SimpleDateFormat fmt = new SimpleDateFormat( TIMESTAMP_FORMAT );
|
||||
fmt.setTimeZone( UTC_TIME_ZONE );
|
||||
return fmt;
|
||||
}
|
||||
|
||||
public Map<String, String> toProperties()
|
||||
{
|
||||
Map<String, String> properties = new HashMap<String, String>();
|
||||
properties.put( "action", this.action );
|
||||
if ( this.userId != null )
|
||||
{
|
||||
properties.put( "user", this.userId );
|
||||
}
|
||||
if ( this.remoteIP != null )
|
||||
{
|
||||
properties.put( "remoteIP", this.remoteIP );
|
||||
}
|
||||
if ( this.resource != null )
|
||||
{
|
||||
properties.put( "resource", this.resource );
|
||||
}
|
||||
return properties;
|
||||
}
|
||||
|
||||
public void fromProperties( Map<String, String> properties )
|
||||
{
|
||||
this.action = properties.get( "action" );
|
||||
this.remoteIP = properties.get( "remoteIP" );
|
||||
this.userId = properties.get( "user" );
|
||||
this.resource = properties.get( "resource" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if ( this == o )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( o == null || getClass() != o.getClass() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
AuditEvent that = (AuditEvent) o;
|
||||
|
||||
if ( !action.equals( that.action ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( remoteIP != null ? !remoteIP.equals( that.remoteIP ) : that.remoteIP != null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( repositoryId != null ? !repositoryId.equals( that.repositoryId ) : that.repositoryId != null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( resource != null ? !resource.equals( that.resource ) : that.resource != null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( !timestamp.equals( that.timestamp ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ( userId != null ? !userId.equals( that.userId ) : that.userId != null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int result = repositoryId != null ? repositoryId.hashCode() : 0;
|
||||
result = 31 * result + ( userId != null ? userId.hashCode() : 0 );
|
||||
result = 31 * result + ( remoteIP != null ? remoteIP.hashCode() : 0 );
|
||||
result = 31 * result + ( resource != null ? resource.hashCode() : 0 );
|
||||
result = 31 * result + action.hashCode();
|
||||
result = 31 * result + timestamp.hashCode();
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "AuditEvent{" + "repositoryId='" + repositoryId + '\'' + ", userId='" + userId + '\'' + ", remoteIP='" +
|
||||
remoteIP + '\'' + ", resource='" + resource + '\'' + ", action='" + action + '\'' + ", timestamp=" +
|
||||
timestamp + '}';
|
||||
}
|
||||
}
|
|
@ -21,7 +21,6 @@ package org.apache.archiva.audit;
|
|||
|
||||
import org.apache.archiva.metadata.model.MetadataFacet;
|
||||
import org.apache.archiva.metadata.model.MetadataFacetFactory;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
|
||||
/**
|
||||
* @plexus.component role="org.apache.archiva.metadata.model.MetadataFacetFactory" role-hint="org.apache.archiva.audit"
|
||||
|
@ -38,4 +37,4 @@ public class AuditEventFactory
|
|||
{
|
||||
return new AuditEvent( name, repositoryId );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package org.apache.archiva.audit;
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* AuditListener
|
||||
*
|
||||
* @version $Id$
|
||||
*/
|
||||
public interface AuditListener
|
||||
{
|
||||
/**
|
||||
* Notification that an audit event occured.
|
||||
*
|
||||
* @param event the event details.
|
||||
*/
|
||||
public void auditEvent( AuditEvent event );
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
package org.apache.archiva.audit;
|
||||
|
||||
/*
|
||||
* 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.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* AuditLog - Audit Log.
|
||||
*
|
||||
* @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 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( checkNull( event.getRepositoryId() ) ).append( DELIM );
|
||||
msg.append( event.getUserId() ).append( DELIM );
|
||||
msg.append( checkNull( event.getRemoteIP() ) ).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;
|
||||
}
|
||||
}
|
|
@ -23,8 +23,6 @@ import java.util.Collection;
|
|||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
|
||||
public interface AuditManager
|
||||
{
|
||||
List<AuditEvent> getMostRecentAuditEvents( List<String> repositoryIds );
|
||||
|
@ -54,4 +52,4 @@ public interface AuditManager
|
|||
*/
|
||||
List<AuditEvent> getAuditEventsInRange( Collection<String> repositoryIds, String resourcePattern, Date startTime,
|
||||
Date endTime );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
package org.apache.archiva.audit;
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Auditable
|
||||
*
|
||||
* @version $Id$
|
||||
*/
|
||||
public interface Auditable
|
||||
{
|
||||
/**
|
||||
* Add an AuditListener.
|
||||
*
|
||||
* @param the listener to add.
|
||||
*/
|
||||
public void addAuditListener( AuditListener auditListener );
|
||||
|
||||
/**
|
||||
* Remove an AuditListener.
|
||||
*
|
||||
* @param the listener to remove.
|
||||
*/
|
||||
public void removeAuditListener( AuditListener auditListener );
|
||||
|
||||
/**
|
||||
* Remove all registered {@link AuditListener} objects.
|
||||
*/
|
||||
public void clearAuditListeners();
|
||||
}
|
|
@ -19,6 +19,10 @@ package org.apache.archiva.audit;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
|
@ -29,11 +33,6 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @plexus.component role="org.apache.archiva.audit.AuditManager"
|
||||
*/
|
||||
|
|
|
@ -19,9 +19,6 @@ package org.apache.archiva.audit;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.repository.audit.AuditListener;
|
||||
|
||||
/**
|
||||
* @plexus.component role="org.apache.maven.archiva.repository.audit.AuditListener" role-hint="metadata"
|
||||
*/
|
||||
|
|
|
@ -19,6 +19,11 @@ package org.apache.archiva.audit;
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||
import org.easymock.MockControl;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
|
@ -31,15 +36,6 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.archiva.metadata.repository.MetadataRepository;
|
||||
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
|
||||
import org.apache.maven.archiva.repository.RepositoryContentFactory;
|
||||
import org.apache.maven.archiva.repository.audit.AuditEvent;
|
||||
import org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
|
||||
import org.easymock.MockControl;
|
||||
import org.easymock.classextension.MockClassControl;
|
||||
|
||||
public class AuditManagerTest
|
||||
extends TestCase
|
||||
{
|
||||
|
@ -87,13 +83,6 @@ public class AuditManagerTest
|
|||
ManagedRepositoryConfiguration repository = new ManagedRepositoryConfiguration();
|
||||
repository.setId( TEST_REPO_ID );
|
||||
repository.setLocation( "" );
|
||||
ManagedDefaultRepositoryContent content = new ManagedDefaultRepositoryContent();
|
||||
content.setRepository( repository );
|
||||
MockControl control = MockClassControl.createControl( RepositoryContentFactory.class );
|
||||
RepositoryContentFactory contentFactory = (RepositoryContentFactory) control.getMock();
|
||||
contentFactory.getManagedRepositoryContent( TEST_REPO_ID );
|
||||
control.setDefaultReturnValue( content );
|
||||
control.replay();
|
||||
}
|
||||
|
||||
public void testGetMostRecentEvents()
|
||||
|
@ -602,4 +591,4 @@ public class AuditManagerTest
|
|||
}
|
||||
return names;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue