001: /*
002: * Copyright 2005 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package javax.faces.webapp;
018:
019: import java.util.logging.Logger;
020:
021: import javax.el.ELContext;
022: import javax.faces.component.UIComponent;
023: import javax.faces.context.FacesContext;
024: import javax.servlet.jsp.tagext.JspTag;
025:
026: /**
027: * @author Dennis Byrne
028: * @since 1.2
029: */
030:
031: public abstract class UIComponentTagBase extends Object implements
032: JspTag {
033:
034: protected static Logger log = Logger
035: .getLogger("javax.faces.webapp");
036:
037: /**
038: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#addChild(javax.faces.component.UIComponent)
039: * @param child
040: */
041:
042: protected abstract void addChild(UIComponent child);
043:
044: /**
045: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#addFacet(java.lang.String)
046: * @param name
047: */
048:
049: protected abstract void addFacet(String name);
050:
051: /**
052: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getComponentInstance()
053: * @return
054: */
055:
056: public abstract UIComponent getComponentInstance();
057:
058: /**
059: * Specify the "component type name" used together with the component's
060: * family and the Application object to create a UIComponent instance for
061: * this tag. This method is called by other methods in this class, and is
062: * intended to be overridden in subclasses to specify the actual component
063: * type to be created.
064: *
065: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getComponentType()
066: * @return a registered component type name, never null.
067: */
068:
069: public abstract String getComponentType();
070:
071: /**
072: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getCreated()
073: * @return
074: */
075:
076: public abstract boolean getCreated();
077:
078: /**
079: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getELContext()
080: * @return
081: */
082:
083: protected ELContext getELContext() {
084:
085: FacesContext ctx = getFacesContext();
086:
087: if (ctx == null)
088: throw new NullPointerException("FacesContext ctx");
089:
090: return getFacesContext().getELContext();
091: }
092:
093: /**
094: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getFacesContext()
095: * @return
096: */
097:
098: protected abstract FacesContext getFacesContext();
099:
100: /**
101: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getIndexOfNextChildTag()
102: * @return
103: */
104:
105: protected abstract int getIndexOfNextChildTag();
106:
107: /**
108: * Specify the "renderer type name" used together with the current
109: * renderKit to get a Renderer instance for the corresponding UIComponent.
110: * <p>
111: * A JSP tag can return null here to use the default renderer type string.
112: * If non-null is returned, then the UIComponent's setRendererType method
113: * will be called passing this value, and this will later affect the
114: * type of renderer object returned by UIComponent.getRenderer().
115: *
116: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#getRendererType()
117: * @return
118: */
119: public abstract String getRendererType();
120:
121: /**
122: * @see http://java.sun.com/javaee/5/docs/api/javax/faces/webapp/UIComponentTagBase.html#setId(java.lang.String)
123: * @param id
124: */
125:
126: public abstract void setId(String id);
127: }
|