cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/tagplugin TagPlugin.java TagPluginContext.java TagPluginFactory.java
kinman 2002/12/03 16:48:43 Modified:jasper2/src/share/org/apache/jasper EmbededServletOptions.java JspC.java Options.java jasper2/src/share/org/apache/jasper/compiler Compiler.java Node.java TagPluginManager.java jasper2/src/share/org/apache/jasper/compiler/tagplugin TagPlugin.java TagPluginContext.java Removed: jasper2/src/share/org/apache/jasper/compiler/tagplugin TagPluginFactory.java Log: - First cut in defining the tag plugin interface and an implementation of framework in Jasper. WARNING: This is still experimental and subject to change. Revision ChangesPath 1.14 +15 -3 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/EmbededServletOptions.java Index: EmbededServletOptions.java === RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/EmbededServletOptions.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- EmbededServletOptions.java28 Nov 2002 04:18:07 - 1.13 +++ EmbededServletOptions.java4 Dec 2002 00:48:42 - 1.14 @@ -70,6 +70,7 @@ import org.apache.jasper.compiler.TldLocationsCache; import org.apache.jasper.compiler.JspConfig; +import org.apache.jasper.compiler.TagPluginManager; import org.apache.jasper.xmlparser.ParserUtils; import java.util.*; @@ -175,6 +176,11 @@ private JspConfig jspConfig = null; /** + * TagPluginManager + */ +private TagPluginManager tagPluginManager = null; + +/** * Java platform encoding to generate the JSP * page servlet. */ @@ -301,6 +307,10 @@ return jspConfig; } +public TagPluginManager getTagPluginManager() { + return tagPluginManager; +} + /** * Create an EmbededServletOptions object using data available from * ServletConfig and ServletContext. @@ -475,6 +485,8 @@ // Setup the jsp config info for this web app. jspConfig = new JspConfig(context); + // Create a Tag plugin instance + tagPluginManager = new TagPluginManager(context); } } 1.19 +15 -6 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java Index: JspC.java === RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- JspC.java 16 Nov 2002 04:20:09 - 1.18 +++ JspC.java 4 Dec 2002 00:48:42 - 1.19 @@ -74,6 +74,8 @@ import org.apache.jasper.logging.Logger; import org.apache.jasper.logging.JasperLogger; import org.apache.jasper.compiler.JspConfig; +import org.apache.jasper.compiler.JspConfig; +import org.apache.jasper.compiler.TagPluginManager; /** * Shell for the jspc compiler. Handles all options associated with the @@ -197,6 +199,9 @@ */ private TldLocationsCache tldLocationsCache = null; +private JspConfig jspConfig = null; +private TagPluginManager tagPluginManager = null; + private boolean listErrors = false; private boolean showSuccess = false; @@ -737,6 +742,8 @@ } catch (MalformedURLException me) { System.out.println(** + me); } + jspConfig = new JspConfig(context); + tagPluginManager = new TagPluginManager(context); } @@ -945,10 +952,12 @@ * Obtain JSP configuration informantion specified in web.xml. */ public JspConfig getJspConfig() { -// XXX - Stubbed out so Jasper compiles. -initServletContext(); -return new JspConfig( context ); + return jspConfig; } + +public TagPluginManager getTagPluginManager() { +return tagPluginManager; +} } 1.10 +9 -3 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/Options.java Index: Options.java === RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/Options.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- Options.java 16 Nov 2002 04:20:09 - 1.9 +++ Options.java 4 Dec 2002 00:48:42 - 1.10 @@ -68,6 +68,7 @@ import org.apache.jasper.compiler.TldLocationsCache; import org.apache.jasper.compiler.JspConfig; +import org.apache.jasper.compiler.TagPluginManager; /** * A class to hold all init parameters specific to the JSP engine. @@ -172,4 +173,9 @@ * Obtain JSP configuration informantion
cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/tagplugin TagPlugin.java TagPluginContext.java TagPluginFactory.java
kinman 2002/11/22 17:36:49 Modified:jasper2/src/share/org/apache/jasper/compiler Generator.java Node.java Added: jasper2/src/share/org/apache/jasper/compiler TagPluginManager.java jasper2/src/share/org/apache/jasper/compiler/tagplugin TagPlugin.java TagPluginContext.java TagPluginFactory.java Log: - Define interfaces for tag plugins. - Modify Generator to prepare attributes that may be access from plugins. Revision ChangesPath 1.130 +83 -67 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java Index: Generator.java === RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v retrieving revision 1.129 retrieving revision 1.130 diff -u -r1.129 -r1.130 --- Generator.java22 Nov 2002 23:47:15 - 1.129 +++ Generator.java23 Nov 2002 01:36:49 - 1.130 @@ -1558,6 +1558,8 @@ generateLocalVariables( out, n ); } + prepareCustomAttributes(n, handlerInfo); + if (n.implementsSimpleTag()) { generateCustomDoTag(n, handlerInfo, tagHandlerVar); } else { @@ -1879,6 +1881,69 @@ } } + /** + * Preprocess the attributes for the custom tag, except fragment + * attributes. + */ + private void prepareCustomAttributes(Node.CustomTag n, + TagHandlerInfo handlerInfo) +throws JasperException { + +Node.JspAttribute[] attrs = n.getJspAttributes(); +for (int i=0; iattrs.length; i++) { +String attrValue = attrs[i].getValue(); +if (attrValue == null) { +if (attrs[i].isNamedAttribute() ) { +if (!n.checkIfAttributeIsJspFragment( + attrs[i].getName())) { +attrValue = generateNamedAttributeValue( +attrs[i].getNamedAttributeNode() ); +} +} +else { +continue; +} +} +String attrName = attrs[i].getName(); + +Method m = null; +Class[] c = null; +if (attrs[i].isDynamic()) { +c = OBJECT_CLASS; +} else { +m = handlerInfo.getSetterMethod(attrName); +if (m == null) { +err.jspError(n, jsp.error.unable.to_find_method, + attrName); +} +c = m.getParameterTypes(); +// XXX assert(c.length 0) +} + +if (attrs[i].isExpression()) { +// Do nothing +} else if (attrs[i].isNamedAttribute()) { +if (!n.checkIfAttributeIsJspFragment(attrs[i].getName()) + !attrs[i].isDynamic()) { +attrValue = convertString( +c[0], attrValue, attrName, +handlerInfo.getPropertyEditorClass(attrName), +false); +} +} else if (attrs[i].isELInterpreterInput()) { +// run attrValue through the expression interpreter +attrValue = JspUtil.interpreterCall(this.isTagFile, +attrValue, c[0], n.getPrefix(), _jspx_fnmap ); +} else { +attrValue = convertString( +c[0], attrValue, attrName, +handlerInfo.getPropertyEditorClass(attrName), +true); +} + attrs[i].setProcessedValue(attrValue); + } + } + private void generateCustomStart(Node.CustomTag n, TagHandlerInfo handlerInfo, String tagHandlerVar, @@ -2384,70 +2449,20 @@ out.println();); } - Node.JspAttribute[] attrs = n.getJspAttributes(); - for (int i=0; iattrs.length; i++) { - String attrValue = attrs[i].getValue(); - if (attrValue == null) { -if( attrs[i].isNamedAttribute() ) { -if( n.checkIfAttributeIsJspFragment( -attrs[i].getName() ) ) -{ -