/* SimpleMapper.java Purpose: Description: History: Tue Sep 4 23:09:16 2007, Created by tomyeh Copyright (C) 2007 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under LGPL Version 2.1 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.xel.util; import java.util.Collection; import org.zkoss.util.DualCollection; import org.zkoss.xel.Function; import org.zkoss.xel.FunctionMapper; import org.zkoss.xel.FunctionMapperExt; /** * A simple function mapper. * * @author tomyeh * @since 3.0.0 */ public class SimpleMapper extends TaglibMapper { private FunctionMapper _parent; public SimpleMapper() { } public SimpleMapper(FunctionMapper parent) { _parent = parent; } /** Returns the parent mapper, or null if no parent. */ public FunctionMapper getParent() { return _parent; } /** Sets the parent mapper. * * @param parent the parent mapper, or null if no parent. */ public void setParent(FunctionMapper parent) { _parent = parent; } //-- FunctionMapper --// public Function resolveFunction(String prefix, String name) { Function m = super.resolveFunction(prefix, name); return m != null ? m: _parent != null ? _parent.resolveFunction(prefix, name): null; } //-- FunctionMapperExt --// public Collection<String> getClassNames() { return combine(super.getClassNames(), _parent instanceof FunctionMapperExt ? ((FunctionMapperExt)_parent).getClassNames(): null); } public Class resolveClass(String name) { Class m = super.resolveClass(name); return m != null ? m: _parent instanceof FunctionMapperExt ? ((FunctionMapperExt)_parent).resolveClass(name): null; } private static Collection<String> combine(Collection<String> first, Collection<String> second) { return DualCollection.combine( first != null && !first.isEmpty() ? first: null, second != null && !second.isEmpty() ? second: null); } }