/* XelContextProxy.java Purpose: Description: History: Thu Dec 31 15:49:56 TST 2009, Created by tomyeh Copyright (C) 2009 Potix Corporation. All Rights Reserved. */ package org.zkoss.xel.util; import java.util.Map; import org.zkoss.xel.*; /** * A proxy to replace the variable resolver of a given XEL context. * * @author tomyeh * @since 5.0.0 */ public class XelContextProxy implements XelContext { private final XelContext _ctx; private FunctionMapper _mapper; private VariableResolver _resolver; private boolean _bResolver, _bMapper; /** Replaces the variable resolver with the specified one, * but the function mapper not changed. */ public XelContextProxy(XelContext ctx, VariableResolver resolver) { _ctx = ctx; _resolver = resolver; _bResolver = true; } /** Replaces the function mapper with the specified one, * but the variable resolver not changed. */ public XelContextProxy(XelContext ctx, FunctionMapper mapper) { _ctx = ctx; _mapper = mapper; _bMapper = true; } /** Replaces both variable resolver and function mapper. */ public XelContextProxy(XelContext ctx, VariableResolver resolver, FunctionMapper mapper) { _ctx = ctx; _resolver = resolver; _mapper = mapper; _bResolver = _bMapper = true; } public VariableResolver getVariableResolver() { return _bResolver ? _resolver: _ctx.getVariableResolver(); } public FunctionMapper getFunctionMapper() { return _bMapper ? _mapper: _ctx.getFunctionMapper(); } public Object getAttribute(String name) { return _ctx.getAttribute(name); } public Object setAttribute(String name, Object value) { return _ctx.setAttribute(name, value); } public boolean hasAttribute(String name) { return _ctx.hasAttribute(name); } public Object removeAttribute(String name) { return _ctx.removeAttribute(name); } public Map<String, Object> getAttributes() { return _ctx.getAttributes(); } }