luehe 2002/11/13 09:40:43 Modified: jasper2/src/share/org/apache/jasper/compiler Generator.java jasper2/src/share/org/apache/jasper/runtime JspContextWrapper.java Log: JspContextWrapper: Allocate vectors for nested, at_begin, and at_end variables only if needed. Revision Changes Path 1.125 +22 -6 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.124 retrieving revision 1.125 diff -u -r1.124 -r1.125 --- Generator.java 8 Nov 2002 19:55:47 -0000 1.124 +++ Generator.java 13 Nov 2002 17:40:38 -0000 1.125 @@ -3031,19 +3031,35 @@ out.printil("public void setJspContext( JspContext ctx ) {"); out.pushIndent(); out.printil("super.setJspContext(ctx);"); - out.printil("java.util.Vector _jspx_nested = new java.util.Vector();"); - out.printil("java.util.Vector _jspx_at_begin = new java.util.Vector();"); - out.printil("java.util.Vector _jspx_at_end = new java.util.Vector();"); TagVariableInfo[] tagVars = tagInfo.getTagVariableInfos(); + out.printil("java.util.Vector _jspx_nested = null;"); + out.printil("java.util.Vector _jspx_at_begin = null;"); + out.printil("java.util.Vector _jspx_at_end = null;"); + for (int i=0; i<tagVars.length; i++) { + switch(tagVars[i].getScope()) { case VariableInfo.NESTED: + out.printil("if (_jspx_nested == null)"); + out.pushIndent(); + out.printil("_jspx_nested = new java.util.Vector();"); + out.popIndent(); out.printin("_jspx_nested.addElement("); break; + case VariableInfo.AT_BEGIN: + out.printil("if (_jspx_at_begin == null)"); + out.pushIndent(); + out.printil("_jspx_at_begin = new java.util.Vector();"); + out.popIndent(); out.printin("_jspx_at_begin.addElement("); break; + case VariableInfo.AT_END: + out.printil("if (_jspx_at_end == null)"); + out.pushIndent(); + out.printil("_jspx_at_end = new java.util.Vector();"); + out.popIndent(); out.printin("_jspx_at_end.addElement("); break; } // switch 1.8 +41 -26 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/runtime/JspContextWrapper.java Index: JspContextWrapper.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/runtime/JspContextWrapper.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- JspContextWrapper.java 1 Nov 2002 01:13:47 -0000 1.7 +++ JspContextWrapper.java 13 Nov 2002 17:40:41 -0000 1.8 @@ -124,8 +124,9 @@ this.atBeginVars = atBeginVars; this.atEndVars = atEndVars; this.pageAttributes = new Hashtable(16); - this.originalNestedVars = new Hashtable(nestedVars.size()); - + if (nestedVars != null) { + this.originalNestedVars = new Hashtable(nestedVars.size()); + } copyPageToTagScope(VariableInfo.AT_BEGIN); saveNestedVariables(); } @@ -326,14 +327,18 @@ switch (scope) { case VariableInfo.NESTED: - iter = nestedVars.iterator(); + if (nestedVars != null) { + iter = nestedVars.iterator(); + } break; case VariableInfo.AT_BEGIN: - iter = atBeginVars.iterator(); + if (atBeginVars != null) { + iter = atBeginVars.iterator(); + } break; } - while (iter.hasNext()) { + while ((iter != null) && iter.hasNext()) { String varName = (String) iter.next(); Object obj = invokingJspCtxt.getAttribute(varName); if (obj != null) { @@ -353,17 +358,23 @@ switch (scope) { case VariableInfo.NESTED: - iter = nestedVars.iterator(); + if (nestedVars != null) { + iter = nestedVars.iterator(); + } break; case VariableInfo.AT_BEGIN: - iter = atBeginVars.iterator(); + if (atBeginVars != null) { + iter = atBeginVars.iterator(); + } break; case VariableInfo.AT_END: - iter = atEndVars.iterator(); + if (atEndVars != null) { + iter = atEndVars.iterator(); + } break; } - while (iter.hasNext()) { + while ((iter != null) && iter.hasNext()) { String varName = (String) iter.next(); Object obj = getAttribute(varName); if (obj != null) { @@ -379,12 +390,14 @@ * the invoking JSP context, so they can later be restored. */ public void saveNestedVariables() { - Iterator iter = nestedVars.iterator(); - while (iter.hasNext()) { - String varName = (String) iter.next(); - Object obj = invokingJspCtxt.getAttribute(varName); - if (obj != null) { - originalNestedVars.put(varName, obj); + if (nestedVars != null) { + Iterator iter = nestedVars.iterator(); + while (iter.hasNext()) { + String varName = (String) iter.next(); + Object obj = invokingJspCtxt.getAttribute(varName); + if (obj != null) { + originalNestedVars.put(varName, obj); + } } } } @@ -394,14 +407,16 @@ * context. */ public void restoreNestedVariables() { - Iterator iter = nestedVars.iterator(); - while (iter.hasNext()) { - String varName = (String) iter.next(); - Object obj = originalNestedVars.get(varName); - if (obj != null) { - invokingJspCtxt.setAttribute(varName, obj); - } else { - invokingJspCtxt.removeAttribute(varName, PAGE_SCOPE); + if (nestedVars != null) { + Iterator iter = nestedVars.iterator(); + while (iter.hasNext()) { + String varName = (String) iter.next(); + Object obj = originalNestedVars.get(varName); + if (obj != null) { + invokingJspCtxt.setAttribute(varName, obj); + } else { + invokingJspCtxt.removeAttribute(varName, PAGE_SCOPE); + } } } }
-- To unsubscribe, e-mail: <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>