private Object createManagedBean(ManagedBean managedBean, FacesContext facesContext) throws ELException { ExternalContext extContext = facesContext.getExternalContext(); Map requestMap = extContext.getRequestMap(); // check for cyclic references List beansUnderConstruction = (List)requestMap.get(BEANS_UNDER_CONSTRUCTION); if (beansUnderConstruction == null) { beansUnderConstruction = new ArrayList(); requestMap.put(BEANS_UNDER_CONSTRUCTION, beansUnderConstruction); } String managedBeanName = managedBean.getManagedBeanName(); if (beansUnderConstruction.contains(managedBeanName)) { throw new ELException( "Detected cyclic reference to managedBean " + managedBeanName); } beansUnderConstruction.add(managedBeanName); Object obj = null; try { obj = beanBuilder.buildManagedBean(facesContext, managedBean); } finally { beansUnderConstruction.remove(managedBeanName); } putInScope(managedBean, extContext, obj); return obj; }
List<String> expressions = extractExpressions(valueExpression); String valueScope = getScope(facesContext, expression); if (valueScope == null)
private String getScope(FacesContext facesContext, String expression) String beanName = getFirstSegment(expression); ExternalContext externalContext = facesContext.getExternalContext(); ManagedBean mbc = getRuntimeConfig(facesContext).getManagedBean(beanName);
initializeList(facesContext, property.getListEntries(), (List) value); initializeList(facesContext, property.getListEntries(), temp); value = Array.newInstance(value.getClass().getComponentType(), temp.size()); length = temp.size(); initializeList(facesContext, property.getListEntries(), (List) value); initializeMap(facesContext, property.getMapEntries(), (Map) value); break; case ManagedProperty.TYPE_NULL: case ManagedProperty.TYPE_VALUE: if (!isInValidScope(facesContext, property, targetScope)) Object coercedValue = coerceToType(facesContext, value, propertyClass); elResolver.setValue( elContext, bean, property.getPropertyName(), coercedValue);
try initializeProperties(facesContext, beanConfiguration.getManagedProperties(), beanConfiguration.getManagedBeanScope(), bean); + " is not a Map."); initializeMap(facesContext, beanConfiguration.getMapEntries(), (Map) bean); break; + " is not a List."); initializeList(facesContext, beanConfiguration.getListEntries(), (List) bean); break;
private String getScope(FacesContext facesContext, String expression) String beanName = getFirstSegment(expression); ExternalContext externalContext = facesContext.getExternalContext(); ManagedBean mbc = getRuntimeConfig(facesContext).getManagedBean(beanName); if (mbc != null) return getNarrowestScope(facesContext, scopeExpression);
ManagedBeanBuilder managedBeanBuilder = new ManagedBeanBuilder(); Map<String, Object> applicationMap = externalContext.getApplicationMap(); .buildManagedBean(facesContext, bean);
map.put(coerceToType(facesContext, key, keyClass), null); map.put(coerceToType(facesContext, key, keyClass), coerceToType(facesContext, value, valueClass));
initializeList(facesContext, property.getListEntries(), (List<Object>)value); initializeList(facesContext, property.getListEntries(), temp); value = Array.newInstance(value.getClass().getComponentType(), temp.size()); length = temp.size(); initializeList(facesContext, property.getListEntries(), (List<Object>) value); initializeMap(facesContext, property.getMapEntries(), (Map<Object, Object>) value); break; case ManagedProperty.TYPE_NULL: case ManagedProperty.TYPE_VALUE: if (!isInValidScope(facesContext, property, beanConfiguration)) Object coercedValue = coerceToType(facesContext, value, propertyClass); elResolver.setValue(elContext, bean, property.getPropertyName(), coercedValue);
try initializeProperties(facesContext, beanConfiguration, bean); + " is not a Map."); initializeMap(facesContext, beanConfiguration.getMapEntries(), (Map<Object, Object>) bean); break; + " is not a List."); initializeList(facesContext, beanConfiguration.getListEntries(), (List<Object>) bean); break;
private String getScope(FacesContext facesContext, String expression) String beanName = getFirstSegment(expression); ExternalContext externalContext = facesContext.getExternalContext(); ManagedBean mbc = getRuntimeConfig(facesContext).getManagedBean(beanName); return getNarrowestScope(facesContext, mbc.getManagedBeanScopeValueExpression(facesContext) .getExpressionString());
ManagedBeanBuilder managedBeanBuilder = new ManagedBeanBuilder(); Map<String, Object> applicationMap = externalContext.getApplicationMap(); Object beanInstance = managedBeanBuilder.buildManagedBean(facesContext, bean);
private void initializeList(FacesContext facesContext, ListEntries listEntries, List<? super Object> list) { Application application = facesContext.getApplication(); Class<?> valueClass = (listEntries.getValueClass() == null) ? String.class : ClassUtils.simpleJavaTypeToClass(listEntries.getValueClass()); ExpressionFactory expFactory = application.getExpressionFactory(); ELContext elContext = facesContext.getELContext(); for (Iterator<? extends ListEntry> iterator = listEntries.getListEntries(); iterator.hasNext();) { ListEntry entry = iterator.next(); if (entry.isNullValue()) { list.add(null); } else { Object value = entry.getValue(); if (ContainerUtils.isValueReference((String) value)) { ValueExpression valueExpression = expFactory.createValueExpression(elContext, (String) value, Object.class); value = valueExpression.getValue(elContext); } list.add(coerceToType(facesContext, value, valueClass)); } } }
initializeList(facesContext, property.getListEntries(), (List<Object>)value); initializeList(facesContext, property.getListEntries(), temp); value = Array.newInstance(value.getClass().getComponentType(), temp.size()); length = temp.size(); initializeList(facesContext, property.getListEntries(), (List<Object>) value); initializeMap(facesContext, property.getMapEntries(), (Map<Object, Object>) value); break; case ManagedProperty.TYPE_NULL: case ManagedProperty.TYPE_VALUE: if (!isInValidScope(facesContext, property, beanConfiguration)) Object coercedValue = coerceToType(facesContext, value, propertyClass); elResolver.setValue(elContext, bean, property.getPropertyName(), coercedValue);
try initializeProperties(facesContext, beanConfiguration, bean); + " is not a Map."); initializeMap(facesContext, beanConfiguration.getMapEntries(), (Map<Object, Object>) bean); break; + " is not a List."); initializeList(facesContext, beanConfiguration.getListEntries(), (List<Object>) bean); break;
private String getScope(FacesContext facesContext, String expression) String beanName = getFirstSegment(expression); ExternalContext externalContext = facesContext.getExternalContext(); ManagedBean mbc = getRuntimeConfig(facesContext).getManagedBean(beanName); if (mbc != null) return getNarrowestScope(facesContext, scopeExpression);
List<String> expressions = extractExpressions(valueExpression); String valueScope = getScope(facesContext, expression); if (valueScope == null)
ManagedBeanBuilder managedBeanBuilder = new ManagedBeanBuilder(); Map<String, Object> applicationMap = externalContext.getApplicationMap(); Object beanInstance = managedBeanBuilder.buildManagedBean(facesContext, bean);
map.put(coerceToType(facesContext, key, keyClass), null); value = valueExpression.getValue(elContext); map.put(coerceToType(facesContext, key, keyClass), coerceToType(facesContext, value, valueClass));
@SuppressWarnings("unchecked") private Object createManagedBean(final ManagedBean managedBean, final FacesContext facesContext) throws ELException { final ExternalContext extContext = facesContext.getExternalContext(); final Map<Object, Object> facesContextMap = facesContext.getAttributes(); final String managedBeanName = managedBean.getManagedBeanName(); // check for cyclic references List<String> beansUnderConstruction = (List<String>) facesContextMap.get(BEANS_UNDER_CONSTRUCTION); if (beansUnderConstruction == null) { beansUnderConstruction = new ArrayList<String>(); facesContextMap.put(BEANS_UNDER_CONSTRUCTION, beansUnderConstruction); } else if (beansUnderConstruction.contains(managedBeanName)) { throw new ELException("Detected cyclic reference to managedBean " + managedBeanName); } beansUnderConstruction.add(managedBeanName); Object obj = null; try { obj = beanBuilder.buildManagedBean(facesContext, managedBean); } finally { beansUnderConstruction.remove(managedBeanName); } putInScope(managedBean, facesContext, extContext, obj); return obj; }