package slacknotifications.teamcity.payload.util;
import org.apache.commons.beanutils.PropertyUtils;
import slacknotifications.teamcity.Loggers;
import slacknotifications.teamcity.payload.util.TemplateMatcher.VariableResolver;
import java.lang.reflect.InvocationTargetException;
/**
* This is a VariableResolver for the TemplateMatcher
*
* It resolves the values of variables from javaBean objects using
* org.apache.commons.beanutils.PropertyUtils
*
* @author NetWolfUK
*
*/
public class SlackNotificationBeanUtilsVariableResolver implements VariableResolver {
private static final String EXCEPTION_MESSAGE = " thrown when trying to resolve value for ";
Object bean;
public SlackNotificationBeanUtilsVariableResolver(Object javaBean) {
this.bean = javaBean;
}
@Override
public String resolve(String variableName) {
String value = "UNRESOLVED";
try {
value = (String) PropertyUtils.getProperty(bean, variableName);
} catch (IllegalAccessException e) {
Loggers.SERVER.warn(this.getClass().getSimpleName() + " :: " + e.getClass() + EXCEPTION_MESSAGE + variableName);
Loggers.SERVER.debug(e);
} catch (InvocationTargetException e) {
Loggers.SERVER.warn(this.getClass().getSimpleName() + " :: " + e.getClass() + EXCEPTION_MESSAGE + variableName);
Loggers.SERVER.debug(e);
} catch (NoSuchMethodException e) {
Loggers.SERVER.warn(this.getClass().getSimpleName() + " :: " + e.getClass() + EXCEPTION_MESSAGE + variableName);
Loggers.SERVER.debug(e);
}
return value;
}
}