package org.graylog2.syslog4j.impl.message.modifier;
import org.graylog2.syslog4j.SyslogMessageModifierConfigIF;
import org.graylog2.syslog4j.SyslogMessageModifierIF;
public abstract class AbstractSyslogMessageModifier implements SyslogMessageModifierIF {
private static final long serialVersionUID = 7632959170109372003L;
protected SyslogMessageModifierConfigIF messageModifierConfig = null;
public AbstractSyslogMessageModifier(SyslogMessageModifierConfigIF messageModifierConfig) {
this.messageModifierConfig = messageModifierConfig;
}
public String[] parseInlineModifier(String message) {
return parseInlineModifier(message, this.messageModifierConfig.getPrefix(), this.messageModifierConfig.getSuffix());
}
public static String[] parseInlineModifier(String message, String prefix, String suffix) {
String[] messageAndModifier = null;
if (message == null || "".equals(message.trim())) {
return null;
}
if (prefix == null || "".equals(prefix)) {
prefix = " ";
}
if (suffix == null || "".equals(suffix)) {
int pi = message.lastIndexOf(prefix);
if (pi > -1) {
messageAndModifier = new String[]{message.substring(0, pi), message.substring(pi + prefix.length())};
}
} else {
int si = message.lastIndexOf(suffix);
if (si > -1) {
int pi = message.lastIndexOf(prefix, si);
if (pi > -1) {
messageAndModifier = new String[]{message.substring(0, pi), message.substring(pi + prefix.length(), si)};
}
}
}
return messageAndModifier;
}
protected abstract boolean verify(String message, String modifier);
public boolean verify(String message) {
String[] messageAndModifier = parseInlineModifier(message);
if (messageAndModifier == null || messageAndModifier.length != 2) {
return false;
}
return verify(messageAndModifier[0], messageAndModifier[1]);
}
}