📄 uicomponentbase.java
字号:
else if (parent instanceof UIComponentBase) { ((UIComponentBase) parent).removeChild(child); } else { parent.getChildren().remove(child); } child.setParent(_parent); } public int size() { return _list.size(); } public boolean isEmpty() { return _list.isEmpty(); } public Iterator<UIComponent> iterator() { return _list.iterator(); } } public String toString() { return getClass().getName() + "[" + getId() + "]"; } private static class ComponentMap extends HashMap<String,UIComponent> { private UIComponent _parent; ComponentMap(UIComponent parent) { _parent = parent; } @Override public UIComponent put(String key, UIComponent o) { if (key == null) throw new NullPointerException(); UIComponent child = (UIComponent) o; UIComponent parent = child.getParent(); if (parent instanceof UIComponentBase) { ((UIComponentBase) parent).removeChild(child); } child.setParent(_parent); UIComponent oldChild = super.put(key, o); if (oldChild != null && oldChild != o) { oldChild.setParent(null); } return oldChild; } @Override public UIComponent remove(Object key) { if (key == null) throw new NullPointerException(); UIComponent oldChild = super.remove(key); if (oldChild != null) { oldChild.setParent(null); } return oldChild; } } private static class FacetAndChildIterator implements Iterator<UIComponent> { private final UIComponent []_children; private int _index; FacetAndChildIterator(UIComponent []children) { _children = children; } public boolean hasNext() { return _index < _children.length; } public UIComponent next() { if (_index < _children.length) return _children[_index++]; else return null; } public void remove() { throw new UnsupportedOperationException(); } } private static class AttributeMap extends AbstractMap<String,Object> implements Serializable { private final transient HashMap<String,Property> _propertyMap; private HashMap<String,Object> _extMap; private Object _obj; AttributeMap(Object obj) { _obj = obj; Class cl = obj.getClass(); synchronized (cl) { HashMap<String,Property> propMap = _compMap.get(cl); if (propMap == null) { propMap = introspectComponent(cl); _compMap.put(cl, propMap); } _propertyMap = propMap; } } Object saveState(FacesContext context) { return _extMap; } void restoreState(FacesContext context, Object state) { _extMap = (HashMap<String,Object>) state; } public boolean containsKey(String name) { Property prop = _propertyMap.get(name); if (prop != null) return false; else if (_extMap != null) return _extMap.containsKey(name); else return false; } @Override public Object get(Object v) { String name = (String) v; Property prop = _propertyMap.get(name); if (prop == null) { if (_extMap != null) return _extMap.get(name); else { // XXX: ValueExpression? return null; } } Method getter = prop.getGetter(); if (getter == null) throw new IllegalArgumentException(name + " is not readable"); try { return getter.invoke(_obj); } catch (InvocationTargetException e) { throw new FacesException(e.getCause()); } catch (Exception e) { throw new FacesException(e); } } @Override public Object put(String name, Object value) { if (name == null || value == null) throw new NullPointerException(); Property prop = _propertyMap.get(name); if (prop == null) { if (_extMap == null) _extMap = new HashMap<String,Object>(8); return _extMap.put(name, value); } if (prop.getSetter() == null) throw new IllegalArgumentException(name + " is not writable"); try { return prop.getSetter().invoke(_obj, value); } catch (Exception e) { throw new FacesException(e); } } @Override public Object remove(Object name) { Property prop = _propertyMap.get(name); if (prop == null) { if (_extMap != null) return _extMap.remove(name); else return null; } throw new IllegalArgumentException(name + " cannot be removed"); } public Set<Map.Entry<String,Object>> entrySet() { if (_extMap != null) return _extMap.entrySet(); else return Collections.EMPTY_SET; } private static HashMap<String,Property> introspectComponent(Class cl) { HashMap<String,Property> map = new HashMap<String,Property>(); try { BeanInfo info = Introspector.getBeanInfo(cl, Object.class); for (PropertyDescriptor propDesc : info.getPropertyDescriptors()) { Property prop = new Property(propDesc.getReadMethod(), propDesc.getWriteMethod()); map.put(propDesc.getName(), prop); } } catch (Exception e) { throw new FacesException(e); } return map; } } private static class Property { private final Method _getter; private final Method _setter; Property(Method getter, Method setter) { _getter = getter; _setter = setter; } public Method getGetter() { return _getter; } public Method getSetter() { return _setter; } } private static class ValueExpressionAdapter extends ValueExpression implements StateHolder { private ValueBinding _binding; private boolean _isTransient; ValueExpressionAdapter() { } ValueExpressionAdapter(ValueBinding binding) { _binding = binding; } ValueBinding getBinding() { return _binding; } public Object getValue(ELContext elContext) { return _binding.getValue(FacesContext.getCurrentInstance()); } public void setValue(ELContext elContext, Object value) { _binding.setValue(FacesContext.getCurrentInstance(), value); } public boolean isReadOnly(ELContext elContext) { return _binding.isReadOnly(FacesContext.getCurrentInstance()); } public Class getType(ELContext elContext) { return _binding.getType(FacesContext.getCurrentInstance()); } public Class getExpectedType() { return Object.class; } public boolean isLiteralText() { return false; } public int hashCode() { return _binding.getExpressionString().hashCode(); } public boolean equals(Object o) { if (! (o instanceof ValueExpression)) return false; ValueExpression expr = (ValueExpression) o; return getExpressionString().equals(expr.getExpressionString()); } public String getExpressionString() { return _binding.getExpressionString(); } public Object saveState(FacesContext context) { return saveAttachedState(context, _binding); } public void restoreState(FacesContext context, Object state) { _binding = (ValueBinding) restoreAttachedState(context, state); } public boolean isTransient() { return _isTransient; } public void setTransient(boolean isTransient) { _isTransient = isTransient; } public String toString() { return "ValueExpressionAdapter[" + getExpressionString() + "]"; } } private static class ValueBindingAdapter extends ValueBinding { private final ValueExpression _expr; ValueBindingAdapter(ValueExpression expr) { _expr = expr; } public Object getValue(FacesContext context) throws EvaluationException { return _expr.getValue(context.getELContext()); } public void setValue(FacesContext context, Object value) throws EvaluationException { _expr.setValue(context.getELContext(), value); } public boolean isReadOnly(FacesContext context) throws EvaluationException { return _expr.isReadOnly(context.getELContext()); } public Class getType(FacesContext context) throws EvaluationException { return _expr.getType(context.getELContext()); } public String getExpressionString() { return _expr.getExpressionString(); } public String toString() { return "ValueBindingAdapter[" + _expr + "]"; } } static class IOExceptionWrapper extends IOException { private Throwable _cause; IOExceptionWrapper(String msg, Throwable cause) { super(msg); _cause = cause; } public Throwable getCause() { return _cause; } } private static final void addRendererCode(String renderer) { if (renderer == null || _rendererToCodeMap.get(renderer) != null) return; Integer code = _rendererToCodeMap.size() + 1; _rendererToCodeMap.put(renderer, code); _codeToRendererMap.put(code, renderer); } static { addRendererCode(new UIColumn().getRendererType()); addRendererCode(new UICommand().getRendererType()); addRendererCode(new UIData().getRendererType()); addRendererCode(new UIForm().getRendererType()); addRendererCode(new UIGraphic().getRendererType()); addRendererCode(new UIInput().getRendererType()); addRendererCode(new UIMessage().getRendererType()); addRendererCode(new UIMessages().getRendererType()); addRendererCode(new UINamingContainer().getRendererType()); addRendererCode(new UIOutput().getRendererType()); addRendererCode(new UIPanel().getRendererType()); addRendererCode(new UIParameter().getRendererType()); addRendererCode(new UISelectBoolean().getRendererType()); addRendererCode(new UISelectItem().getRendererType()); addRendererCode(new UISelectItems().getRendererType()); addRendererCode(new UISelectMany().getRendererType()); addRendererCode(new UISelectOne().getRendererType()); addRendererCode(new UIViewRoot().getRendererType()); addRendererCode(new HtmlColumn().getRendererType()); addRendererCode(new HtmlCommandButton().getRendererType()); addRendererCode(new HtmlCommandLink().getRendererType()); addRendererCode(new HtmlDataTable().getRendererType()); addRendererCode(new HtmlForm().getRendererType()); addRendererCode(new HtmlGraphicImage().getRendererType()); addRendererCode(new HtmlInputHidden().getRendererType()); addRendererCode(new HtmlInputSecret().getRendererType()); addRendererCode(new HtmlInputText().getRendererType()); addRendererCode(new HtmlInputTextarea().getRendererType()); addRendererCode(new HtmlMessage().getRendererType()); addRendererCode(new HtmlMessages().getRendererType()); addRendererCode(new HtmlOutputFormat().getRendererType()); addRendererCode(new HtmlOutputLabel().getRendererType()); addRendererCode(new HtmlOutputLink().getRendererType()); addRendererCode(new HtmlOutputText().getRendererType()); addRendererCode(new HtmlPanelGrid().getRendererType()); addRendererCode(new HtmlPanelGroup().getRendererType()); addRendererCode(new HtmlSelectBooleanCheckbox().getRendererType()); addRendererCode(new HtmlSelectManyCheckbox().getRendererType()); addRendererCode(new HtmlSelectManyListbox().getRendererType()); addRendererCode(new HtmlSelectManyMenu().getRendererType()); addRendererCode(new HtmlSelectOneListbox().getRendererType()); addRendererCode(new HtmlSelectOneMenu().getRendererType()); addRendererCode(new HtmlSelectOneRadio().getRendererType()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -