/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.log;
import org.apache.commons.lang.ObjectUtils;
import com.opengamma.util.ArgumentChecker;
/**
* A simple, immutable implementation of {@link LogEvent} which holds the fields directly.
*/
public class SimpleLogEvent implements LogEvent {
private final LogLevel _level;
private final String _message;
/**
* Constructs an instance.
*
* @param level the log level, not null
* @param message the log message
*/
public SimpleLogEvent(LogLevel level, String message) {
ArgumentChecker.notNull(level, "level");
_level = level;
_message = message;
}
/**
* Constructs an instance.
*
* @param level the log level, not null
* @param message the log message
* @return the instance, not null
*/
public static LogEvent of(LogLevel level, String message) {
return new SimpleLogEvent(level, message);
}
@Override
public LogLevel getLevel() {
return _level;
}
@Override
public String getMessage() {
return _message;
}
//-------------------------------------------------------------------------
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((_level == null) ? 0 : _level.hashCode());
result = prime * result + ((_message == null) ? 0 : _message.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof SimpleLogEvent)) {
return false;
}
SimpleLogEvent other = (SimpleLogEvent) obj;
return ObjectUtils.equals(_level, other._level)
&& ObjectUtils.equals(_message, other._message);
}
}