null check; parser fix
This commit is contained in:
@@ -42,14 +42,8 @@ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingle
|
||||
}
|
||||
|
||||
protected void doParse(Element element, BeanDefinitionBuilder definitionBuilder) {
|
||||
boolean enableManagedBeans = parseEnableManagedBeans(element, definitionBuilder);
|
||||
if (enableManagedBeans) {
|
||||
definitionBuilder.addPropertyValue("expressionParser", new JsfManagedBeanAwareELExpressionParser(
|
||||
DefaultExpressionFactoryUtils.createExpressionFactory()));
|
||||
} else {
|
||||
parseExpressionParser(element, definitionBuilder);
|
||||
}
|
||||
parseConversionService(element, definitionBuilder);
|
||||
parseExpressionParser(element, definitionBuilder, parseEnableManagedBeans(element, definitionBuilder));
|
||||
parseViewFactoryCreator(element, definitionBuilder);
|
||||
}
|
||||
|
||||
@@ -80,26 +74,52 @@ public class FacesFlowBuilderServicesBeanDefinitionParser extends AbstractSingle
|
||||
}
|
||||
}
|
||||
|
||||
private void parseExpressionParser(Element element, BeanDefinitionBuilder definitionBuilder) {
|
||||
String expressionParser = element.getAttribute("expression-parser");
|
||||
if (StringUtils.hasText(expressionParser)) {
|
||||
definitionBuilder.addPropertyReference("expressionParser", expressionParser);
|
||||
} else {
|
||||
Object value = definitionBuilder.getBeanDefinition().getPropertyValues().getPropertyValue(
|
||||
"conversionService");
|
||||
private void parseExpressionParser(Element element, BeanDefinitionBuilder definitionBuilder,
|
||||
boolean enableManagedBeans) {
|
||||
if (enableManagedBeans) {
|
||||
if (StringUtils.hasText(element.getAttribute("expression-parser"))) {
|
||||
throw new IllegalStateException(
|
||||
"Do not specify a custom expression-parser when enable-managed-beans is true");
|
||||
}
|
||||
Object value = getConversionServiceValue(definitionBuilder);
|
||||
if (value instanceof RuntimeBeanReference) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(WebFlowELExpressionParser.class);
|
||||
.genericBeanDefinition(JsfManagedBeanAwareELExpressionParser.class);
|
||||
builder.addConstructorArgValue(DefaultExpressionFactoryUtils.createExpressionFactory());
|
||||
builder.addPropertyValue("conversionService", value);
|
||||
definitionBuilder.addPropertyValue("expressionParser", builder.getBeanDefinition());
|
||||
} else {
|
||||
ConversionService conversionService = (ConversionService) value;
|
||||
WebFlowELExpressionParser elExpressionParser = new WebFlowELExpressionParser(
|
||||
JsfManagedBeanAwareELExpressionParser elExpressionParser = new JsfManagedBeanAwareELExpressionParser(
|
||||
DefaultExpressionFactoryUtils.createExpressionFactory());
|
||||
elExpressionParser.setConversionService(conversionService);
|
||||
definitionBuilder.addPropertyValue("expressionParser", elExpressionParser);
|
||||
}
|
||||
} else {
|
||||
String expressionParser = element.getAttribute("expression-parser");
|
||||
if (StringUtils.hasText(expressionParser)) {
|
||||
definitionBuilder.addPropertyReference("expressionParser", expressionParser);
|
||||
} else {
|
||||
Object value = getConversionServiceValue(definitionBuilder);
|
||||
if (value instanceof RuntimeBeanReference) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(WebFlowELExpressionParser.class);
|
||||
builder.addConstructorArgValue(DefaultExpressionFactoryUtils.createExpressionFactory());
|
||||
builder.addPropertyValue("conversionService", value);
|
||||
definitionBuilder.addPropertyValue("expressionParser", builder.getBeanDefinition());
|
||||
} else if (value instanceof ConversionService) {
|
||||
ConversionService conversionService = (ConversionService) value;
|
||||
WebFlowELExpressionParser elExpressionParser = new WebFlowELExpressionParser(
|
||||
DefaultExpressionFactoryUtils.createExpressionFactory());
|
||||
elExpressionParser.setConversionService(conversionService);
|
||||
definitionBuilder.addPropertyValue("expressionParser", elExpressionParser);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Object getConversionServiceValue(BeanDefinitionBuilder definitionBuilder) {
|
||||
return definitionBuilder.getBeanDefinition().getPropertyValues().getPropertyValue("conversionService")
|
||||
.getValue();
|
||||
}
|
||||
}
|
||||
@@ -176,8 +176,10 @@ public class FlowActionListener implements ActionListener {
|
||||
validateMethod = ReflectionUtils.findMethod(validator.getClass(), validateMethodName, new Class[] {
|
||||
model.getClass(), Errors.class });
|
||||
if (validateMethod != null) {
|
||||
ReflectionUtils.invokeMethod(validateMethod, validator, new Object[] { model,
|
||||
new MessageContextErrors(requestContext.getMessageContext()) });
|
||||
String objectName = getModelExpression(requestContext).getExpressionString();
|
||||
MessageContextErrors errors = new MessageContextErrors(requestContext.getMessageContext(),
|
||||
objectName, model, null, null);
|
||||
ReflectionUtils.invokeMethod(validateMethod, validator, new Object[] { model, errors });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,8 +59,7 @@ class FlowBuilderServicesBeanDefinitionParser extends AbstractSingleBeanDefiniti
|
||||
if (StringUtils.hasText(expressionParser)) {
|
||||
definitionBuilder.addPropertyReference("expressionParser", expressionParser);
|
||||
} else {
|
||||
Object value = definitionBuilder.getBeanDefinition().getPropertyValues().getPropertyValue(
|
||||
"converisonService");
|
||||
Object value = getConversionServiceValue(definitionBuilder);
|
||||
if (value instanceof RuntimeBeanReference) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(DefaultExpressionParserFactory.class);
|
||||
@@ -85,4 +84,8 @@ class FlowBuilderServicesBeanDefinitionParser extends AbstractSingleBeanDefiniti
|
||||
}
|
||||
}
|
||||
|
||||
private Object getConversionServiceValue(BeanDefinitionBuilder definitionBuilder) {
|
||||
return definitionBuilder.getBeanDefinition().getPropertyValues().getPropertyValue("conversionService")
|
||||
.getValue();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user