Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 88253 invoked from network); 4 Aug 2006 14:05:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 4 Aug 2006 14:05:11 -0000 Received: (qmail 79729 invoked by uid 500); 4 Aug 2006 14:05:05 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 79678 invoked by uid 500); 4 Aug 2006 14:05:05 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 79667 invoked by uid 500); 4 Aug 2006 14:05:05 -0000 Delivered-To: apmail-jakarta-tomcat-dev@jakarta.apache.org Received: (qmail 79664 invoked by uid 99); 4 Aug 2006 14:05:05 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Aug 2006 07:05:05 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Aug 2006 07:05:04 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 4996F1A981A; Fri, 4 Aug 2006 07:04:44 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r428729 - in /tomcat/tc6.0.x/trunk/java/org/apache: catalina/ catalina/core/ jasper/ jasper/compiler/ jasper/runtime/ Date: Fri, 04 Aug 2006 14:04:42 -0000 To: tomcat-dev@jakarta.apache.org From: remm@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060804140444.4996F1A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: remm Date: Fri Aug 4 07:04:42 2006 New Revision: 428729 URL: http://svn.apache.org/viewvc?rev=428729&view=rev Log: - Use the classname as the servlet context attribute name for the annotation processor. - Fix init of the naming context used by the annotation processor. - Jasper will now use the annotation processor from the servlet context. - Remove the ignore annotation compile time parameter for Jasper, which was a temporary hack. Added: tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/AnnotationHelper.java (with props) Removed: tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/AnnotationProcessor.java Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/Globals.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java tomcat/tc6.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java tomcat/tc6.0.x/trunk/java/org/apache/jasper/JspC.java tomcat/tc6.0.x/trunk/java/org/apache/jasper/Options.java tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Generator.java tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/Globals.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/Globals.java?rev=428729&r1=428728&r2=428729&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/Globals.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/Globals.java Fri Aug 4 07:04:42 2006 @@ -88,14 +88,6 @@ /** - * The servlet context attribute under which we store the annotation - * processor that is used by the JSP engine. - */ - public static final String ANNOTATION_PROCESSOR_ATTR = - "org.apache.catalina.annotation_processor"; - - - /** * The request attribute under which we forward a Java exception * (as an object of type Throwable) to an error page. */ Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java?rev=428729&r1=428728&r2=428729&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardContext.java Fri Aug 4 07:04:42 2006 @@ -4168,20 +4168,6 @@ } } - // Initialize annotation processor - if (ok && !getIgnoreAnnotations()) { - if (annotationProcessor == null) { - if (isUseNaming() && namingContextListener != null) { - annotationProcessor = - new DefaultAnnotationProcessor(namingContextListener.getEnvContext()); - } else { - annotationProcessor = new DefaultAnnotationProcessor(null); - } - } - getServletContext().setAttribute - (Globals.ANNOTATION_PROCESSOR_ATTR, annotationProcessor); - } - // Standard container startup if (log.isDebugEnabled()) log.debug("Processing standard container startup"); @@ -4303,11 +4289,20 @@ // Set annotation processing parameter for Jasper (unfortunately, since // this can be configured in many places and not just in /WEB-INF/web.xml, // there are not many solutions) - if (ignoreAnnotations) { - Wrapper jspServlet = (Wrapper) findChild(Constants.JSP_SERVLET_NAME); - jspServlet.addInitParameter("org.apache.jasper.IGNORE_ANNOTATIONS", "true"); + // Initialize annotation processor + if (ok && !getIgnoreAnnotations()) { + if (annotationProcessor == null) { + if (isUseNaming() && namingContextListener != null) { + annotationProcessor = + new DefaultAnnotationProcessor(namingContextListener.getEnvContext()); + } else { + annotationProcessor = new DefaultAnnotationProcessor(null); + } + } + getServletContext().setAttribute + (AnnotationProcessor.class.getName(), annotationProcessor); } - + try { // Create context attributes that will be required Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java?rev=428729&r1=428728&r2=428729&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java Fri Aug 4 07:04:42 2006 @@ -174,11 +174,6 @@ */ private boolean xpoweredBy; - /** - * Should annotations be ignored? - */ - private boolean ignoreAnnotations = false; - public String getProperty(String name ) { return settings.getProperty( name ); } @@ -250,13 +245,6 @@ } /** - * Should annotations on tags be ignored? - */ - public boolean getIgnoreAnnotations() { - return ignoreAnnotations; - } - - /** * Is the generation of SMAP info for JSR45 debuggin suppressed? */ public boolean isSmapSuppressed() { @@ -396,11 +384,6 @@ String validating=config.getInitParameter( "validating"); if( "false".equals( validating )) ParserUtils.validating=false; - String annotations = config.getInitParameter("org.apache.jasper.IGNORE_ANNOTATIONS"); - if ("true".equals(annotations)) { - ignoreAnnotations = true; - } - String keepgen = config.getInitParameter("keepgenerated"); if (keepgen != null) { if (keepgen.equalsIgnoreCase("true")) { Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/JspC.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/JspC.java?rev=428729&r1=428728&r2=428729&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jasper/JspC.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/JspC.java Fri Aug 4 07:04:42 2006 @@ -159,7 +159,6 @@ private boolean smapSuppressed = true; private boolean smapDumped = false; private boolean caching = true; - private boolean ignoreAnnotations = false; private Map cache = new HashMap(); private String compiler = null; @@ -589,20 +588,6 @@ */ public void setCompilerSourceVM(String vm) { compilerSourceVM = vm; - } - - /** - * Should annotations on tags be ignored? - */ - public boolean getIgnoreAnnotations() { - return ignoreAnnotations; - } - - /** - * Should annotations on tags be ignored? - */ - public void setIgnoreAnnotations(boolean ignoreAnnotations) { - this.ignoreAnnotations = ignoreAnnotations; } public TldLocationsCache getTldLocationsCache() { Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/Options.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/Options.java?rev=428729&r1=428728&r2=428729&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jasper/Options.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/Options.java Fri Aug 4 07:04:42 2006 @@ -92,11 +92,6 @@ public boolean getTrimSpaces(); /** - * Should annotations on tags be ignored? - */ - public boolean getIgnoreAnnotations(); - - /** * Class ID for use in the plugin tag when the browser is IE. */ public String getIeClassId(); Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Generator.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Generator.java?rev=428729&r1=428728&r2=428729&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Generator.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Generator.java Fri Aug 4 07:04:42 2006 @@ -1,5 +1,5 @@ /* - * Copyright 1999,2004 The Apache Software Foundation. + * Copyright 1999,2004-2006 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -63,6 +63,7 @@ * * Tomcat 6.x * @author Jacob Hookom + * @author Remy Maucherat */ class Generator { @@ -70,6 +71,7 @@ private static final Class[] OBJECT_CLASS = { Object.class }; private static final String VAR_EXPRESSIONFACTORY = "_el_expressionfactory"; + private static final String VAR_ANNOTATIONPROCESSOR = "_jsp_annotationprocessor"; private ServletWriter out; @@ -405,7 +407,16 @@ out.print("getServletConfig()"); } out.println(".getServletContext()).getExpressionFactory();"); - + + out.printin(VAR_ANNOTATIONPROCESSOR); + out.print(" = (org.apache.AnnotationProcessor) "); + if (ctxt.isTagFile()) { + out.print("config"); + } else { + out.print("getServletConfig()"); + } + out.println(".getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());"); + out.popIndent(); out.printil("}"); out.println(); @@ -505,6 +516,9 @@ out.printin("private javax.el.ExpressionFactory "); out.print(VAR_EXPRESSIONFACTORY); out.println(";"); + out.printin("private org.apache.AnnotationProcessor "); + out.print(VAR_ANNOTATIONPROCESSOR); + out.println(";"); out.println(); } @@ -2143,11 +2157,11 @@ out.print("new "); out.print(tagHandlerClassName); out.println("();"); - if (!ctxt.getOptions().getIgnoreAnnotations()) { - out.printin("org.apache.jasper.runtime.AnnotationProcessor.postConstruct("); - out.print(tagHandlerVar); - out.println(");"); - } + out.printin("org.apache.jasper.runtime.AnnotationHelper.postConstruct("); + out.print(VAR_ANNOTATIONPROCESSOR); + out.print(", "); + out.print(tagHandlerVar); + out.println(");"); } // includes setting the context @@ -2293,21 +2307,21 @@ } else { out.printin(tagHandlerVar); out.println(".release();"); - if (!ctxt.getOptions().getIgnoreAnnotations()) { - out.printil("try {"); - out.pushIndent(); - out.printin("org.apache.jasper.runtime.AnnotationProcessor.preDestroy("); - out.print(tagHandlerVar); - out.println(");"); - out.popIndent(); - out.printil("} catch (Exception e) {"); - out.pushIndent(); - out.printin("log(\"Error processing preDestroy on tag instance of \" +"); - out.print(tagHandlerVar); - out.println(".getClass().getName());"); - out.popIndent(); - out.printil("}"); - } + out.printil("try {"); + out.pushIndent(); + out.printin("org.apache.jasper.runtime.AnnotationHelper.preDestroy("); + out.print(VAR_ANNOTATIONPROCESSOR); + out.print(", "); + out.print(tagHandlerVar); + out.println(");"); + out.popIndent(); + out.printil("} catch (Exception e) {"); + out.pushIndent(); + out.printin("log(\"Error processing preDestroy on tag instance of \" +"); + out.print(tagHandlerVar); + out.println(".getClass().getName());"); + out.popIndent(); + out.printil("}"); } } if (isTagFile || isFragment) { @@ -2350,21 +2364,21 @@ } else { out.printin(tagHandlerVar); out.println(".release();"); - if (!ctxt.getOptions().getIgnoreAnnotations()) { - out.printil("try {"); - out.pushIndent(); - out.printin("org.apache.jasper.runtime.AnnotationProcessor.preDestroy("); - out.print(tagHandlerVar); - out.println(");"); - out.popIndent(); - out.printil("} catch (Exception e) {"); - out.pushIndent(); - out.printin("log(\"Error processing preDestroy on tag instance of \" +"); - out.print(tagHandlerVar); - out.println(".getClass().getName());"); - out.popIndent(); - out.printil("}"); - } + out.printil("try {"); + out.pushIndent(); + out.printin("org.apache.jasper.runtime.AnnotationHelper.preDestroy("); + out.print(VAR_ANNOTATIONPROCESSOR); + out.print(", "); + out.print(tagHandlerVar); + out.println(");"); + out.popIndent(); + out.printil("} catch (Exception e) {"); + out.pushIndent(); + out.printin("log(\"Error processing preDestroy on tag instance of \" +"); + out.print(tagHandlerVar); + out.println(".getClass().getName());"); + out.popIndent(); + out.printil("}"); } if (n.implementsTryCatchFinally()) { @@ -2405,11 +2419,11 @@ out.println("();"); // Resource injection - if (!ctxt.getOptions().getIgnoreAnnotations()) { - out.printin("org.apache.jasper.runtime.AnnotationProcessor.postConstruct("); - out.print(tagHandlerVar); - out.println(");"); - } + out.printin("org.apache.jasper.runtime.AnnotationHelper.postConstruct("); + out.print(VAR_ANNOTATIONPROCESSOR); + out.print(", "); + out.print(tagHandlerVar); + out.println(");"); generateSetters(n, tagHandlerVar, handlerInfo, true); @@ -2455,11 +2469,11 @@ syncScriptingVars(n, VariableInfo.AT_END); // Resource injection - if (!ctxt.getOptions().getIgnoreAnnotations()) { - out.printin("org.apache.jasper.runtime.AnnotationProcessor.preDestroy("); - out.print(tagHandlerVar); - out.println(");"); - } + out.printin("org.apache.jasper.runtime.AnnotationHelper.preDestroy("); + out.print(VAR_ANNOTATIONPROCESSOR); + out.print(", "); + out.print(tagHandlerVar); + out.println(");"); n.setEndJavaLine(out.getJavaLine()); } Added: tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/AnnotationHelper.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/AnnotationHelper.java?rev=428729&view=auto ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/AnnotationHelper.java (added) +++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/AnnotationHelper.java Fri Aug 4 07:04:42 2006 @@ -0,0 +1,60 @@ +/* + * Copyright 2006 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.jasper.runtime; + +import java.lang.reflect.InvocationTargetException; + +import javax.naming.NamingException; + +import org.apache.AnnotationProcessor; + + +/** + * Verify the annotation and Process it. + * + * @author Fabien Carrion + * @author Remy Maucherat + * @version $Revision: 303236 $, $Date: 2006-03-09 16:46:52 -0600 (Thu, 09 Mar 2006) $ + */ +public class AnnotationHelper { + + + /** + * Call postConstruct method on the specified instance. Note: In Jasper, this + * calls naming resources injection as well. + */ + public static void postConstruct(AnnotationProcessor processor, Object instance) + throws IllegalAccessException, InvocationTargetException, NamingException { + if (processor != null) { + processor.processAnnotations(instance); + processor.postConstruct(instance); + } + } + + + /** + * Call preDestroy method on the specified instance. + */ + public static void preDestroy(AnnotationProcessor processor, Object instance) + throws IllegalAccessException, InvocationTargetException { + if (processor != null) { + processor.preDestroy(instance); + } + } + + +} Propchange: tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/AnnotationHelper.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java?rev=428729&r1=428728&r2=428729&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/runtime/TagHandlerPool.java Fri Aug 4 07:04:42 2006 @@ -16,10 +16,11 @@ package org.apache.jasper.runtime; +import javax.servlet.ServletConfig; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; -import javax.servlet.ServletConfig; +import org.apache.AnnotationProcessor; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.jasper.Constants; @@ -40,7 +41,7 @@ // index of next available tag handler private int current; - private boolean ignoreAnnotations = false; + protected AnnotationProcessor annotationProcessor = null; public static TagHandlerPool getTagHandlerPool( ServletConfig config) { TagHandlerPool result=null; @@ -76,10 +77,8 @@ } this.handlers = new Tag[maxSize]; this.current = -1; - String annotations = getOption(config, "org.apache.jasper.IGNORE_ANNOTATIONS", null); - if ("true".equals(annotations)) { - ignoreAnnotations = true; - } + this.annotationProcessor = + (AnnotationProcessor) config.getServletContext().getAttribute(AnnotationProcessor.class.getName()); } /** @@ -124,9 +123,7 @@ // wait for us to construct a tag for this thread. try { Tag instance = (Tag) handlerClass.newInstance(); - if (!ignoreAnnotations) { - AnnotationProcessor.postConstruct(instance); - } + AnnotationHelper.postConstruct(annotationProcessor, instance); return instance; } catch (Exception e) { throw new JspException(e.getMessage(), e); @@ -149,9 +146,9 @@ } // There is no need for other threads to wait for us to release handler.release(); - if (!ignoreAnnotations) { + if (annotationProcessor != null) { try { - AnnotationProcessor.preDestroy(handler); + AnnotationHelper.preDestroy(annotationProcessor, handler); } catch (Exception e) { log.warn("Error processing preDestroy on tag instance of " + handler.getClass().getName(), e); @@ -166,9 +163,9 @@ public synchronized void release() { for (int i = current; i >= 0; i--) { handlers[i].release(); - if (!ignoreAnnotations) { + if (annotationProcessor != null) { try { - AnnotationProcessor.preDestroy(handlers[i]); + AnnotationHelper.preDestroy(annotationProcessor, handlers[i]); } catch (Exception e) { log.warn("Error processing preDestroy on tag instance of " + handlers[i].getClass().getName(), e); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org For additional commands, e-mail: dev-help@tomcat.apache.org