protected Object doConvert(Object source, Class targetClass, ConversionContext context) throws Exception { String encodedCriteria = (String) source; if (!StringUtils.hasText(encodedCriteria) || WildcardTransitionCriteria.WILDCARD_EVENT_ID.equals(encodedCriteria)) { return WildcardTransitionCriteria.INSTANCE; } else if (flowServiceLocator.getExpressionParser().isDelimitedExpression(encodedCriteria)) { Expression expression = flowServiceLocator.getExpressionParser().parseExpression(encodedCriteria); return createBooleanExpressionTransitionCriteria(expression); } else if (encodedCriteria.startsWith(BEAN_PREFIX)) { return flowServiceLocator.getTransitionCriteria(encodedCriteria.substring(BEAN_PREFIX.length())); } else { return createEventIdTransitionCriteria(encodedCriteria); } }
/** * Add all web flow specific converters to given conversion service. */ protected void addWebFlowConverters(GenericConversionService conversionService) { conversionService.addConverter(new TextToTransitionCriteria(this)); conversionService.addConverter(new TextToTargetStateResolver(this)); conversionService.addConverter(new TextToViewSelector(this)); conversionService.addConverter(new TextToExpression(getExpressionParser())); conversionService.addConverter(new TextToMethodSignature(conversionService)); } }