1 14 15 package com.sun.facelets.compiler; 16 17 import java.io.IOException ; 18 import java.lang.reflect.Method ; 19 import java.util.Map ; 20 21 import javax.el.ELException; 22 import javax.el.FunctionMapper; 23 import javax.faces.FacesException; 24 import javax.faces.component.UIComponent; 25 26 import com.sun.facelets.FaceletContext; 27 import com.sun.facelets.FaceletException; 28 import com.sun.facelets.FaceletHandler; 29 import com.sun.facelets.el.CompositeFunctionMapper; 30 import com.sun.facelets.tag.TagLibrary; 31 32 final class NamespaceHandler extends FunctionMapper implements FaceletHandler { 33 34 private final TagLibrary library; 35 private final Map ns; 36 private FaceletHandler next; 37 38 public NamespaceHandler(FaceletHandler next, TagLibrary library, Map ns) { 39 this.library = library; 40 this.ns = ns; 41 this.next = next; 42 } 43 44 public void apply(FaceletContext ctx, UIComponent parent) 45 throws IOException , FacesException, FaceletException, ELException { 46 FunctionMapper orig = ctx.getFunctionMapper(); 47 ctx.setFunctionMapper(new CompositeFunctionMapper(this, orig)); 48 try { 49 next.apply(ctx, parent); 50 } finally { 51 ctx.setFunctionMapper(orig); 52 } 53 } 54 55 public Method resolveFunction(String prefix, String localName) { 56 String uri = (String ) this.ns.get(prefix); 57 if (uri != null) { 58 return this.library.createFunction(uri, localName); 59 } 60 return null; 61 } 62 63 } 64 | Popular Tags |