public static UIComponent addPersistent( FacesContext context, ServletRequest req, UIComponent parent, ValueExpression binding, Class childClass) throws Exception { if (context == null) context = FacesContext.getCurrentInstance(); if (parent == null) { UIComponentClassicTagBase parentTag = (UIComponentClassicTagBase) req.getAttribute("caucho.jsf.parent"); parent = parentTag.getComponentInstance(); BodyContent body = parentTag.getBodyContent(); addVerbatim(parent, body); } UIComponent child = null; if (binding != null) child = (UIComponent) binding.getValue(context.getELContext()); if (child == null) { child = (UIComponent) childClass.newInstance(); // jsf/3251 if (binding != null) binding.setValue(context.getELContext(), child); } if (parent != null) parent.getChildren().add(child); return child; }
public static UIComponent addFacet( FacesContext context, ServletRequest req, UIComponent parent, String facetName, ValueExpression binding, Class childClass) throws Exception { if (context == null) context = FacesContext.getCurrentInstance(); if (parent == null) { UIComponentClassicTagBase parentTag = (UIComponentClassicTagBase) req.getAttribute("caucho.jsf.parent"); parent = parentTag.getComponentInstance(); } UIComponent child = null; if (binding != null) child = (UIComponent) binding.getValue(context.getELContext()); if (child == null) child = (UIComponent) childClass.newInstance(); if (parent != null) parent.getFacets().put(facetName, child); if (binding != null) binding.setValue(context.getELContext(), child); return child; }
@Override public T eval(List<String> tuple) { double result = 0; for (ValueExpression factor : _veList) { Object currentVal = factor.eval(tuple); NumericConversion currentType = (NumericConversion) (factor.getType()); result += currentType.toDouble(currentVal); } return _wrapper.fromDouble(result); }
private void doSetBindings(ELContext elContext, UIComponent component) { if (component == null) return; ValueExpression binding = component.getValueExpression("binding"); if (binding != null) binding.setValue(elContext, component); Iterator<UIComponent> iter = component.getFacetsAndChildren(); while (iter.hasNext()) doSetBindings(elContext, iter.next()); }
static final int evalInt(ValueExpression expr, FacesContext context) { try { return (Integer) expr.getValue(context.getELContext()); } catch (ELException e) { throw new FacesException(e); } }
static final String evalString(ValueExpression expr, FacesContext context) { try { return (String) expr.getValue(context.getELContext()); } catch (ELException e) { throw new FacesException(e); } }
@Override public void createIndexConditions(Session session, TableFilter filter) { TableFilter tf = getTableFilter(); if (filter == tf && column.getType() == Value.BOOLEAN) { IndexCondition cond = IndexCondition.get(Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(true))); filter.addIndexCondition(cond); } }
@Override public Expression optimize(Session session) { left = left.optimize(session); boolean constant = left.isConstant(); if (constant && left == ValueExpression.getNull()) { return left; } boolean allValuesConstant = true; boolean allValuesNull = true; int size = valueList.size(); for (int i = 0; i < size; i++) { Expression e = valueList.get(i); e = e.optimize(session); if (e.isConstant() && e.getValue(session) != ValueNull.INSTANCE) { allValuesNull = false; } if (allValuesConstant && !e.isConstant()) { allValuesConstant = false; } if (left instanceof ExpressionColumn && e instanceof Parameter) { ((Parameter) e).setColumn(((ExpressionColumn) left).getColumn()); } valueList.set(i, e); } if (constant && allValuesConstant) { return ValueExpression.get(getValue(session)); } if (size == 1) { Expression right = valueList.get(0); Expression expr = new Comparison(session, Comparison.EQUAL, left, right); expr = expr.optimize(session); return expr; } if (allValuesConstant && !allValuesNull) { int leftType = left.getType(); if (leftType == Value.UNKNOWN) { return this; } Expression expr = new ConditionInConstantSet(session, left, valueList); expr = expr.optimize(session); return expr; } return this; }
public Expression optimize(Session session) { boolean allConst = isDeterministic(); for (int i = 0, len = args.length; i < len; i++) { Expression e = args[i].optimize(session); args[i] = e; allConst &= e.isConstant(); } if (allConst) { return ValueExpression.get(getValue(session)); } return this; }
static final boolean evalBoolean(ValueExpression expr, FacesContext context) { try { Object value = expr.getValue(context.getELContext()); if (value == null) return false; else if (value instanceof Boolean) return ((Boolean) value).booleanValue(); else if (value instanceof String) return "true".equalsIgnoreCase((String) value); else return false; } catch (ELException e) { throw new FacesException(e); } }
@Override public Expression optimize(Session session) { boolean allConst = true; for (int i = 0; i < list.length; i++) { Expression e = list[i].optimize(session); if (!e.isConstant()) { allConst = false; } list[i] = e; } if (allConst) { return ValueExpression.get(getValue(session)); } return this; }
/** Sets the value expression with the given name. */ @Override public void setValueExpression(String name, ValueExpression expr) { PropEnum prop = _propMap.get(name); if (prop != null) { switch (prop) { case DIR: if (expr != null && expr.isLiteralText()) { _dir = Util.evalString(expr); return; } else _dirExpr = expr; break; case ESCAPE: if (expr != null && expr.isLiteralText()) { _escape = Util.evalBoolean(expr); return; } else _escapeExpr = expr; break; case LANG: if (expr != null && expr.isLiteralText()) { _lang = Util.evalString(expr); return; } else _langExpr = expr; break; case STYLE: if (expr != null && expr.isLiteralText()) { _style = Util.evalString(expr); return; } else _styleExpr = expr; break; case STYLE_CLASS: if (expr != null && expr.isLiteralText()) { _styleClass = Util.evalString(expr); return; } else _styleClassExpr = expr; break; case TITLE: if (expr != null && expr.isLiteralText()) { _title = Util.evalString(expr); return; } else _titleExpr = expr; break; } } super.setValueExpression(name, expr); }
@Override public T eval(List<String> tuple) { final ValueExpression firstVE = _veList.get(0); final Object firstObj = firstVE.eval(tuple); final NumericConversion firstType = (NumericConversion) firstVE.getType(); double result = firstType.toDouble(firstObj); for (int i = 1; i < _veList.size(); i++) { final ValueExpression currentVE = _veList.get(i); final Object currentObj = currentVE.eval(tuple); final NumericConversion currentType = (NumericConversion) currentVE.getType(); result -= currentType.toDouble(currentObj); } return _wrapper.fromDouble(result); }
private void printComponentTree( PrintWriter out, String errorId, FacesContext context, UIComponent comp, int depth) { for (int i = 0; i < depth; i++) out.print(' '); boolean isError = false; if (errorId != null && errorId.equals(comp.getClientId(context))) { isError = true; out.print("<span style='color:red'>"); } out.print("<" + comp.getClass().getSimpleName()); if (comp.getId() != null) out.print(" id=\"" + comp.getId() + "\""); for (Method method : comp.getClass().getMethods()) { if (!method.getName().startsWith("get") && !method.getName().startsWith("is")) continue; else if (method.getParameterTypes().length != 0) continue; String name; if (method.getName().startsWith("get")) name = method.getName().substring(3); else if (method.getName().startsWith("is")) name = method.getName().substring(2); else continue; // XXX: getURL name = Character.toLowerCase(name.charAt(0)) + name.substring(1); ValueExpression expr = comp.getValueExpression(name); Class type = method.getReturnType(); if (expr != null) { out.print(" " + name + "=\"" + expr.getExpressionString() + "\""); } else if (method.getDeclaringClass().equals(UIComponent.class) || method.getDeclaringClass().equals(UIComponentBase.class)) { } else if (name.equals("family")) { } else if (String.class.equals(type)) { try { Object value = method.invoke(comp); if (value != null) out.print(" " + name + "=\"" + value + "\""); } catch (Exception e) { } } } int facetCount = comp.getFacetCount(); int childCount = comp.getChildCount(); if (facetCount == 0 && childCount == 0) { out.print("/>"); if (isError) out.print("</span>"); out.println(); return; } out.println(">"); if (isError) out.print("</span>"); for (int i = 0; i < childCount; i++) { printComponentTree(out, errorId, context, comp.getChildren().get(i), depth + 1); } for (int i = 0; i < depth; i++) out.print(' '); if (isError) out.print("<span style='color:red'>"); out.println("</" + comp.getClass().getSimpleName() + ">"); if (isError) out.print("</span>"); }
static Object saveWithType(ValueExpression expr, FacesContext context) { if (expr != null) { return new Object[] {expr.getExpressionString(), expr.getExpectedType()}; } else return null; }
static String save(ValueExpression expr, FacesContext context) { if (expr != null) return expr.getExpressionString(); else return null; }
@Override public Expression getNotIfPossible(Session session) { return new Comparison( session, Comparison.EQUAL, this, ValueExpression.get(ValueBoolean.get(false))); }
/** Sets the value expression with the given name. */ @Override public void setValueExpression(String name, ValueExpression expr) { PropEnum prop = _propMap.get(name); if (prop != null) { switch (prop) { case DIR: if (expr != null && expr.isLiteralText()) { _dir = Util.evalString(expr); return; } else _dirExpr = expr; break; case ERROR_CLASS: if (expr != null && expr.isLiteralText()) { _errorClass = Util.evalString(expr); return; } else _errorClassExpr = expr; break; case ERROR_STYLE: if (expr != null && expr.isLiteralText()) { _errorStyle = Util.evalString(expr); return; } else _errorStyleExpr = expr; break; case FATAL_CLASS: if (expr != null && expr.isLiteralText()) { _fatalClass = Util.evalString(expr); return; } else _fatalClassExpr = expr; break; case FATAL_STYLE: if (expr != null && expr.isLiteralText()) { _fatalStyle = Util.evalString(expr); return; } else _fatalStyleExpr = expr; break; case INFO_CLASS: if (expr != null && expr.isLiteralText()) { _infoClass = Util.evalString(expr); return; } else _infoClassExpr = expr; break; case INFO_STYLE: if (expr != null && expr.isLiteralText()) { _infoStyle = Util.evalString(expr); return; } else _infoStyleExpr = expr; break; case LANG: if (expr != null && expr.isLiteralText()) { _lang = Util.evalString(expr); return; } else _langExpr = expr; break; case STYLE: if (expr != null && expr.isLiteralText()) { _style = Util.evalString(expr); return; } else _styleExpr = expr; break; case STYLE_CLASS: if (expr != null && expr.isLiteralText()) { _styleClass = Util.evalString(expr); return; } else _styleClassExpr = expr; break; case TITLE: if (expr != null && expr.isLiteralText()) { _title = Util.evalString(expr); return; } else _titleExpr = expr; break; case TOOLTIP: if (expr != null && expr.isLiteralText()) { _tooltip = Util.evalBoolean(expr); return; } else _tooltipExpr = expr; break; case WARN_CLASS: if (expr != null && expr.isLiteralText()) { _warnClass = Util.evalString(expr); return; } else _warnClassExpr = expr; break; case WARN_STYLE: if (expr != null && expr.isLiteralText()) { _warnStyle = Util.evalString(expr); return; } else _warnStyleExpr = expr; break; } } super.setValueExpression(name, expr); }