glenn 2002/12/08 05:42:53
Modified: jasper2/src/share/org/apache/jasper
EmbededServletOptions.java
JspCompilationContext.java
jasper2/src/share/org/apache/jasper/compiler Compiler.java
JspRuntimeContext.java
jasper2/src/share/org/apache/jasper/servlet
JspServletWrapper.java
Log:
Port bug fixes and minor changes I made to Tomcat 4 to Tomcat 5 where appropriate.
Revision Changes Path
1.15 +8 -5
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.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- EmbededServletOptions.java 4 Dec 2002 00:48:42 -0000 1.14
+++ EmbededServletOptions.java 8 Dec 2002 13:42:52 -0000 1.15
@@ -184,7 +184,7 @@
* Java platform encoding to generate the JSP
* page servlet.
*/
- private String javaEncoding;
+ private String javaEncoding = "UTF8";
public String getProperty(String name ) {
return settings.getProperty( name );
@@ -476,7 +476,10 @@
this.compiler = config.getInitParameter("compiler");
- this.javaEncoding = config.getInitParameter("javaEncoding");
+ String javaEncoding = config.getInitParameter("javaEncoding");
+ if (javaEncoding != null) {
+ this.javaEncoding = javaEncoding;
+ }
// Setup the global Tag Libraries location cache for this
// web-application.
1.27 +3 -11
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java
Index: JspCompilationContext.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspCompilationContext.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- JspCompilationContext.java 5 Dec 2002 02:27:35 -0000 1.26
+++ JspCompilationContext.java 8 Dec 2002 13:42:52 -0000 1.27
@@ -579,9 +579,6 @@
throws JasperException, FileNotFoundException
{
try {
- if (servletClass == null && !options.getDevelopment()) {
- compile();
- }
jspLoader = new JasperLoader
(outUrls,
getServletPackageName() + "." + getServletClassName(),
@@ -597,14 +594,9 @@
getServletClassName();
}
servletClass = jspLoader.loadClass(name);
- } catch (FileNotFoundException ex) {
- jspCompiler.removeGeneratedFiles();
- throw ex;
} catch (ClassNotFoundException cex) {
throw new JasperException(
Constants.getString("jsp.error.unable.load"),cex);
- } catch (JasperException ex) {
- throw ex;
} catch (Exception ex) {
throw new JasperException
(Constants.getString("jsp.error.unable.compile"), ex);
1.41 +36 -44
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java
Index: Compiler.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- Compiler.java 5 Dec 2002 23:56:39 -0000 1.40
+++ Compiler.java 8 Dec 2002 13:42:53 -0000 1.41
@@ -120,6 +120,7 @@
private ErrorDispatcher errDispatcher;
private PageInfo pageInfo;
private JspServletWrapper jsw;
+ private JasperAntLogger logger;
private TagFileProcessor tfp;
protected Project project=null;
@@ -148,20 +149,19 @@
// Initializing project
project = new Project();
// XXX We should use a specialized logger to redirect to jasperlog
- // DefaultLogger bl=new JasperAntLogger();
- DefaultLogger bl=new DefaultLogger();
- bl.setOutputPrintStream(System.err);
- bl.setErrorPrintStream(System.err);
+ logger = new JasperAntLogger();
+ logger.setOutputPrintStream(System.out);
+ logger.setErrorPrintStream(System.err);
if( Constants.jasperLog.getVerbosityLevel() >= Logger.DEBUG ) {
- bl.setMessageOutputLevel( Project.MSG_VERBOSE );
+ logger.setMessageOutputLevel( Project.MSG_VERBOSE );
} else {
- bl.setMessageOutputLevel( Project.MSG_INFO );
+ logger.setMessageOutputLevel( Project.MSG_INFO );
}
if( log.isTraceEnabled() ) {
- bl.setMessageOutputLevel( Project.MSG_VERBOSE );
+ logger.setMessageOutputLevel( Project.MSG_VERBOSE );
}
- project.addBuildListener( bl );
+ project.addBuildListener( logger);
if( options.getCompiler() != null ) {
if( log.isDebugEnabled() )
@@ -169,22 +169,27 @@
project.setProperty("build.compiler", options.getCompiler() );
}
project.init();
-// Vector v=project.getBuildListeners();
-// if( v.size() > 0 ) {
-// BuildListener bl=(BuildListener)v.elementAt(0);
-// System.out.println("XXX " + bl );
-// ((DefaultLogger)bl).setMessageOutputLevel(Project.MSG_VERBOSE);
-// }
return project;
}
- static class JasperAntLogger extends DefaultLogger {
- private static org.apache.commons.logging.Log log=
- org.apache.commons.logging.LogFactory.getLog( Compiler.class );
+ class JasperAntLogger extends DefaultLogger {
+
+ private StringBuffer reportBuf = new StringBuffer();
+
protected void printMessage(final String message,
final PrintStream stream,
final int priority) {
- log.info( message );
+ }
+
+ protected void log(String message) {
+ reportBuf.append(message);
+ reportBuf.append(System.getProperty("line.separator"));
+ }
+
+ protected String getReport() {
+ String report = reportBuf.toString();
+ reportBuf.setLength(0);
+ return report;
}
}
@@ -225,31 +230,13 @@
String javaFileName = ctxt.getServletJavaFileName();
// Setup the ServletWriter
- // We try UTF8 by default. If it fails, we use the java encoding
- // specified for JspServlet init parameter "javaEncoding".
-
- String javaEncoding = "UTF8";
+ String javaEncoding = ctxt.getOptions().getJavaEncoding();
OutputStreamWriter osw = null;
try {
osw = new OutputStreamWriter(new FileOutputStream(javaFileName),
javaEncoding);
} catch (UnsupportedEncodingException ex) {
- // Try to get the java encoding from the "javaEncoding"
- // init parameter for JspServlet.
- javaEncoding = ctxt.getOptions().getJavaEncoding();
- if (javaEncoding != null) {
- try {
- osw = new OutputStreamWriter
- (new FileOutputStream(javaFileName),javaEncoding);
- } catch (UnsupportedEncodingException ex2) {
- // no luck :-(
- errDispatcher.jspError("jsp.error.invalid.javaEncoding",
- "UTF8", javaEncoding);
- }
- } else {
- errDispatcher.jspError("jsp.error.needAlternateJavaEncoding",
- "UTF8");
- }
+ errDispatcher.jspError("jsp.error.needAlternateJavaEncoding",
javaEncoding);
}
ServletWriter writer = new ServletWriter(new PrintWriter(osw));
@@ -322,13 +309,13 @@
throws FileNotFoundException, JasperException, Exception {
long t1=System.currentTimeMillis();
- String javaEncoding = "UTF8";
+ String javaEncoding = ctxt.getOptions().getJavaEncoding();
String javaFileName = ctxt.getServletJavaFileName();
String classpath = ctxt.getClassPath();
String sep = System.getProperty("path.separator");
- String errorReport = null;
+ StringBuffer errorReport = new StringBuffer();
boolean success = true;
// Start capturing the System.err output for this thread
@@ -381,9 +368,15 @@
success = false;
}
+ errorReport.append(logger.getReport());
+
// Stop capturing the System.err output for this thread
- errorReport = SystemLogHandler.unsetThread();
-
+ String errorCapture = SystemLogHandler.unsetThread();
+ if (errorCapture != null) {
+ errorReport.append(System.getProperty("line.separator"));
+ errorReport.append(errorCapture);
+ }
+
if (!ctxt.keepGenerated()) {
File javaFile = new File(javaFileName);
javaFile.delete();
@@ -391,8 +384,7 @@
if (!success) {
log.error( "Error compiling file: " + javaFileName + " " + errorReport);
- if(errorReport!=null )
- errDispatcher.javacError(errorReport, javaFileName, pageNodes);
+ errDispatcher.javacError(errorReport.toString(), javaFileName,
pageNodes);
}
long t2=System.currentTimeMillis();
1.8 +25 -18
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspRuntimeContext.java
Index: JspRuntimeContext.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspRuntimeContext.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- JspRuntimeContext.java 28 Nov 2002 04:18:08 -0000 1.7
+++ JspRuntimeContext.java 8 Dec 2002 13:42:53 -0000 1.8
@@ -96,10 +96,6 @@
* is dependent upon. If a dpendent file changes the JSP page
* which included it is recompiled.
*
- * Saves information about JSP dependincies to the file
- * <code>JSP_DEPENDENCY.ser</code> in the web application context
- * work directory.
- *
* Only used if a web application context is a directory.
*
* @author Glenn L. Nielsen
@@ -389,20 +385,30 @@
if( policy != null ) {
try {
// Get the permissions for the web app context
- String contextDir = context.getRealPath("/");
- if( contextDir == null ) {
- contextDir = options.getScratchDir().toString();
+ String docBase = context.getRealPath("/");
+ if( docBase == null ) {
+ docBase = options.getScratchDir().toString();
+ }
+ if (!docBase.endsWith(File.separator)){
+ docBase = docBase + File.separator;
}
- URL url = new URL("file:" + contextDir);
+ File contextDir = new File(docBase);
+ URL url = contextDir.getCanonicalFile().toURL();
codeSource = new CodeSource(url,null);
permissionCollection = policy.getPermissions(codeSource);
- // Create a file read permission for web app context directory
- if (contextDir.endsWith(File.separator)) {
- contextDir = contextDir + "-";
+
+ docBase = docBase + "-";
+ permissionCollection.add(new FilePermission(docBase,"read"));
+
+ // Create a file read permission for web app tempdir (work)
directory
+ String workDir = options.getScratchDir().toString();
+ if (workDir.endsWith(File.separator)) {
+ workDir = workDir + "-";
} else {
- contextDir = contextDir + File.separator + "-";
+ workDir = workDir + File.separator + "-";
}
- permissionCollection.add(new FilePermission(contextDir,"read"));
+ permissionCollection.add(new FilePermission(workDir,"read"));
+
// Allow the JSP to access org.apache.jasper.runtime.HttpJspBase
permissionCollection.add( new RuntimePermission(
"accessClassInPackage.org.apache.jasper.runtime") );
@@ -435,7 +441,8 @@
permissionCollection.add(
new FilePermission(jndiUrl,"read") );
}
- } catch(MalformedURLException mfe) {
+ } catch(Exception e) {
+ context.log("Security Init for context failed",e);
}
}
}
1.23 +7 -5
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java
Index: JspServletWrapper.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- JspServletWrapper.java 5 Dec 2002 02:27:35 -0000 1.22
+++ JspServletWrapper.java 8 Dec 2002 13:42:53 -0000 1.23
@@ -115,6 +115,7 @@
private long available = 0L;
private ServletConfig config;
private Options options;
+ private boolean firstTime = true;
private boolean isTagFile;
private int tripCount;
@@ -183,6 +184,7 @@
}
theServlet.init(config);
+ firstTime = false;
}
}
}
@@ -202,7 +204,7 @@
if (ctxt.isRemoved()) {
throw new FileNotFoundException(jspUri);
}
- if (options.getDevelopment()) {
+ if (options.getDevelopment() || firstTime ) {
synchronized (this) {
ctxt.compile();
}
@@ -284,7 +286,7 @@
Constants.getString("jsp.error.unavailable"));
}
- if (options.getDevelopment()) {
+ if (options.getDevelopment() || firstTime ) {
synchronized (this) {
ctxt.compile();
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>