private void checkExpressionActivated(ProcessAnnotatedType<Object> processAnnotatedType)
{
if (processAnnotatedType.getAnnotatedType().getJavaClass().isAnnotationPresent(ExpressionActivated.class))
{
ExpressionActivated expressionActivated = processAnnotatedType.getAnnotatedType().getJavaClass()
.getAnnotation(ExpressionActivated.class);
String expressions = expressionActivated.value();
Class<? extends ExpressionInterpreter> interpreter = expressionActivated.interpreter();
if(interpreter.equals(ExpressionInterpreter.class))
{
interpreter = PropertyExpressionInterpreter.class;
}
ExpressionInterpreter<String, Boolean> expressionInterpreter =
ClassUtils.tryToInstantiateClass(interpreter);
if(expressionInterpreter == null)
{
Logger logger = Logger.getLogger(getClass().getName());
if(logger.isLoggable(Level.WARNING))
{
logger.warning("can't instantiate " + interpreter.getClass().getName());
}
return;
}
expressions = "configName:" + expressionActivated.configName() + ";" + expressions;
if (!expressionInterpreter.evaluate(expressions))
{
// this alternative shall not get used
processAnnotatedType.veto();
}