/*
* 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.
*/
package org.apache.log4j;
import org.apache.log4j.spi.ErrorHandler;
import org.apache.log4j.spi.LoggingEvent;
import java.util.Vector;
/**
* Utility class used in testing to capture errors dispatched
* by appenders.
*
* @author Curt Arnold
*/
public final class VectorErrorHandler implements ErrorHandler {
/**
* Logger.
*/
private Logger logger;
/**
* Appender.
*/
private Appender appender;
/**
* Backup appender.
*/
private Appender backupAppender;
/**
* Array of processed errors.
*/
private final Vector errors = new Vector();
/**
* Default constructor.
*/
public VectorErrorHandler() {
}
/**
* {@inheritDoc}
*/
public void setLogger(final Logger logger) {
this.logger = logger;
}
/**
* Gets last logger specified by setLogger.
* @return logger.
*/
public Logger getLogger() {
return logger;
}
/**
* {@inheritDoc}
*/
public void activateOptions() {
}
/**
* {@inheritDoc}
*/
public void error(
final String message, final Exception e, final int errorCode) {
error(message, e, errorCode, null);
}
/**
* {@inheritDoc}
*/
public void error(final String message) {
error(message, null, -1, null);
}
/**
* {@inheritDoc}
*/
public void error(
final String message, final Exception e, final int errorCode,
final LoggingEvent event) {
errors.addElement(
new Object[] { message, e, new Integer(errorCode), event });
}
/**
* Gets message from specified error.
*
* @param index index.
* @return message, may be null.
*/
public String getMessage(final int index) {
return (String) ((Object[]) errors.elementAt(index))[0];
}
/**
* Gets exception from specified error.
*
* @param index index.
* @return exception.
*/
public Exception getException(final int index) {
return (Exception) ((Object[]) errors.elementAt(index))[1];
}
/**
* Gets error code from specified error.
*
* @param index index.
* @return error code, -1 if not specified.
*/
public int getErrorCode(final int index) {
return ((Integer) ((Object[]) errors.elementAt(index))[2]).intValue();
}
/**
* Gets logging event from specified error.
*
* @param index index.
* @return exception.
*/
public LoggingEvent getEvent(final int index) {
return (LoggingEvent) ((Object[]) errors.elementAt(index))[3];
}
/**
* Gets number of errors captured.
* @return number of errors captured.
*/
public int size() {
return errors.size();
}
/**
* {@inheritDoc}
*/
public void setAppender(final Appender appender) {
this.appender = appender;
}
/**
* Get appender.
* @return appender, may be null.
*/
public Appender getAppender() {
return appender;
}
/**
* {@inheritDoc}
*/
public void setBackupAppender(final Appender appender) {
this.backupAppender = appender;
}
/**
* Get backup appender.
* @return backup appender, may be null.
*/
public Appender getBackupAppender() {
return backupAppender;
}
}
|