List of usage examples for org.springframework.expression.spel.support StandardEvaluationContext StandardEvaluationContext
public StandardEvaluationContext()
From source file:org.springframework.data.document.mongodb.convert.MappingMongoConverter.java
private <S extends Object> S read(final MongoPersistentEntity<S> entity, final DBObject dbo) { final StandardEvaluationContext spelCtx = new StandardEvaluationContext(); if (null != applicationContext) { spelCtx.setBeanResolver(new BeanFactoryResolver(applicationContext)); }/*from w ww . jav a 2s . c o m*/ if (!(dbo instanceof BasicDBList)) { String[] keySet = dbo.keySet().toArray(new String[] {}); for (String key : keySet) { spelCtx.setVariable(key, dbo.get(key)); } } final List<String> ctorParamNames = new ArrayList<String>(); final MongoPersistentProperty idProperty = entity.getIdProperty(); final S instance = constructInstance(entity, new PreferredConstructor.ParameterValueProvider() { @SuppressWarnings("unchecked") public <T> T getParameterValue(PreferredConstructor.Parameter<T> parameter) { String name = parameter.getName(); TypeInformation<T> type = parameter.getType(); Class<T> rawType = parameter.getRawType(); String key = idProperty == null ? name : idProperty.getName().equals(name) ? idProperty.getKey() : name; Object obj = dbo.get(key); ctorParamNames.add(name); if (obj instanceof DBRef) { return read(type, ((DBRef) obj).fetch()); } else if (obj instanceof BasicDBList) { BasicDBList objAsDbList = (BasicDBList) obj; List<?> l = unwrapList(objAsDbList, type); return conversionService.convert(l, rawType); } else if (obj instanceof DBObject) { return read(type, ((DBObject) obj)); } else if (null != obj && obj.getClass().isAssignableFrom(rawType)) { return (T) obj; } else if (null != obj) { return conversionService.convert(obj, rawType); } return null; } }, spelCtx); // Set properties not already set in the constructor entity.doWithProperties(new PropertyHandler<MongoPersistentProperty>() { public void doWithPersistentProperty(MongoPersistentProperty prop) { boolean isConstructorProperty = ctorParamNames.contains(prop.getName()); boolean hasValueForProperty = dbo.containsField(prop.getKey()); if (!hasValueForProperty || isConstructorProperty) { return; } Object obj = getValueInternal(prop, dbo, spelCtx, prop.getSpelExpression()); try { setProperty(instance, prop, obj, useFieldAccessOnly); } catch (IllegalAccessException e) { throw new MappingException(e.getMessage(), e); } catch (InvocationTargetException e) { throw new MappingException(e.getMessage(), e); } } }); // Handle associations entity.doWithAssociations(new AssociationHandler<MongoPersistentProperty>() { public void doWithAssociation(Association<MongoPersistentProperty> association) { MongoPersistentProperty inverseProp = association.getInverse(); Object obj = getValueInternal(inverseProp, dbo, spelCtx, inverseProp.getSpelExpression()); try { setProperty(instance, inverseProp, obj); } catch (IllegalAccessException e) { throw new MappingException(e.getMessage(), e); } catch (InvocationTargetException e) { throw new MappingException(e.getMessage(), e); } } }); return instance; }
From source file:org.springframework.data.gemfire.config.annotation.support.AbstractAnnotationConfigSupport.java
/** * Constructs, configures and initializes a new instance of an {@link EvaluationContext}. * * @param beanFactory reference to the Spring {@link BeanFactory}. * @return a new {@link EvaluationContext}. * @see org.springframework.beans.factory.BeanFactory * @see org.springframework.expression.EvaluationContext * @see #getBeanFactory()/* w w w . jav a 2s .c om*/ */ protected EvaluationContext newEvaluationContext(BeanFactory beanFactory) { StandardEvaluationContext evaluationContext = new StandardEvaluationContext(); evaluationContext.addPropertyAccessor(new BeanFactoryAccessor()); evaluationContext.addPropertyAccessor(new EnvironmentAccessor()); evaluationContext.addPropertyAccessor(new MapAccessor()); evaluationContext.setTypeLocator(new StandardTypeLocator(getBeanClassLoader())); configureTypeConverter(evaluationContext, beanFactory); return evaluationContext; }
From source file:org.springframework.integration.expression.ExpressionUtils.java
/** * Create a {@link StandardEvaluationContext} with a {@link MapAccessor} in its * property accessor property and the supplied {@link ConversionService} in its * conversionService property./* w w w. ja v a 2 s .c o m*/ * @param conversionService the conversion service. * @return the evaluation context. */ private static StandardEvaluationContext createStandardEvaluationContext(ConversionService conversionService, BeanFactory beanFactory) { StandardEvaluationContext evaluationContext = new StandardEvaluationContext(); evaluationContext.addPropertyAccessor(new MapAccessor()); if (conversionService != null) { evaluationContext.setTypeConverter(new StandardTypeConverter(conversionService)); } if (beanFactory != null) { evaluationContext.setBeanResolver(new BeanFactoryResolver(beanFactory)); } return evaluationContext; }