diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java deleted file mode 100644 index d6b508875..000000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditEvent.java +++ /dev/null @@ -1,330 +0,0 @@ -package org.apache.maven.archiva.repository.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 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; - -import org.apache.archiva.metadata.model.MetadataFacet; - -/** - * 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 toProperties() - { - Map properties = new HashMap(); - 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 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 + '}'; - } -} diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditListener.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditListener.java deleted file mode 100644 index e57dbe231..000000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditListener.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.apache.maven.archiva.repository.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 ); -} diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java deleted file mode 100644 index 7ec8af4bf..000000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/AuditLog.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.apache.maven.archiva.repository.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; - } -} diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/Auditable.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/Auditable.java deleted file mode 100644 index 29836f6ed..000000000 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/audit/Auditable.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.apache.maven.archiva.repository.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(); -}