parsePropertyOptions(property, simpleProperty.getPropertyOptions());
}
if (simpleProperty.getOptionSource() != null) {
PropertyOptionsSource optionsSource = new PropertyOptionsSource();
OptionSource source = simpleProperty.getOptionSource();
optionsSource.setTarget(source.getTarget().toString());
optionsSource.setLinkToTarget(source.isLinkToTarget());
if (source.getFilter() != null && source.getFilter().length() > 40) {
throw new IllegalArgumentException("Filter expression must be less than 40 chars long");
}
optionsSource.setFilter(source.getFilter());
ExpressionScope expressionScope = source.getExpressionScope();
if (expressionScope != null) {
optionsSource.setExpressionScope(PropertyOptionsSource.ExpressionScope.fromValue(expressionScope
.value()));
}
String expression = source.getExpression();
if (expression == null || expression.isEmpty())
throw new IllegalArgumentException("Expression must not be empty");
if (expression.length() > 400)
throw new IllegalArgumentException("Expression must be less than 400 chars long");
optionsSource.setExpression(expression);