1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 package javax.faces.webapp; 21 22 import java.util.logging.Logger; 23 24 import javax.el.ELContext; 25 import javax.faces.component.UIComponent; 26 import javax.faces.context.FacesContext; 27 import javax.servlet.jsp.tagext.JspTag; 28 29 /** 30 * @author Dennis Byrne 31 * @since 1.2 32 */ 33 34 public abstract class UIComponentTagBase extends Object implements JspTag 35 { 36 37 protected static Logger log = Logger.getLogger("javax.faces.webapp"); 38 39 /** 40 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#addChild(javax.faces.component.UIComponent) 41 * @param child 42 */ 43 44 protected abstract void addChild(UIComponent child); 45 46 /** 47 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#addFacet(java.lang.String) 48 * @param name 49 */ 50 51 protected abstract void addFacet(String name); 52 53 /** 54 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getComponentInstance() 55 * @return 56 */ 57 58 public abstract UIComponent getComponentInstance(); 59 60 /** 61 * Specify the "component type name" used together with the component's 62 * family and the Application object to create a UIComponent instance for 63 * this tag. This method is called by other methods in this class, and is 64 * intended to be overridden in subclasses to specify the actual component 65 * type to be created. 66 * 67 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getComponentType() 68 * @return a registered component type name, never null. 69 */ 70 71 public abstract String getComponentType(); 72 73 /** 74 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getCreated() 75 * @return 76 */ 77 78 public abstract boolean getCreated(); 79 80 /** 81 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getELContext() 82 * @return 83 */ 84 85 protected ELContext getELContext() 86 { 87 88 FacesContext ctx = getFacesContext(); 89 90 if (ctx == null) 91 { 92 throw new NullPointerException("FacesContext ctx"); 93 } 94 95 return getFacesContext().getELContext(); 96 } 97 98 /** 99 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getFacesContext() 100 * @return 101 */ 102 103 protected abstract FacesContext getFacesContext(); 104 105 /** 106 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getIndexOfNextChildTag() 107 * @return 108 */ 109 110 protected abstract int getIndexOfNextChildTag(); 111 112 /** 113 * Specify the "renderer type name" used together with the current 114 * renderKit to get a Renderer instance for the corresponding UIComponent. 115 * <p> 116 * A JSP tag can return null here to use the default renderer type string. 117 * If non-null is returned, then the UIComponent's setRendererType method 118 * will be called passing this value, and this will later affect the 119 * type of renderer object returned by UIComponent.getRenderer(). 120 * 121 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getRendererType() 122 * @return 123 */ 124 public abstract String getRendererType(); 125 126 /** 127 * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#setId(java.lang.String) 128 * @param id 129 */ 130 131 public abstract void setId(String id); 132 }