SLING-11299 : JSP source/linenumber is not always shown when an exception occurs
diff --git a/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java b/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
index 437ecbf..1ac5dca 100644
--- a/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
+++ b/src/main/java/org/apache/sling/scripting/jsp/jasper/JspCompilationContext.java
@@ -53,31 +53,31 @@
*/
public class JspCompilationContext {
- private Map<String, URL> tagFileJarUrls;
+ private final Map<String, URL> tagFileJarUrls;
- private String className;
- private String jspUri;
- private boolean isErrPage;
- private String basePackageName;
- private String derivedPackageName;
- private String servletJavaFileName;
- private String javaPath;
- private String classFileName;
- private String contentType;
- private ServletWriter writer;
- private Options options;
- private Compiler jspCompiler;
+ private volatile String className;
+ private final String jspUri;
+ private volatile boolean isErrPage;
+ private final String basePackageName;
+ private volatile String derivedPackageName;
+ private volatile String servletJavaFileName;
+ private volatile String javaPath;
+ private volatile String classFileName;
+ private volatile String contentType;
+ private volatile ServletWriter writer;
+ private final Options options;
+ private volatile Compiler jspCompiler;
- private String baseURI;
- private String outputDir;
- private ServletContext context;
+ private volatile String baseURI;
+ private volatile String outputDir;
+ private final ServletContext context;
- private JspRuntimeContext rctxt;
+ private final JspRuntimeContext rctxt;
- private boolean isTagFile;
- private boolean protoTypeMode;
- private TagInfo tagInfo;
- private URL tagFileJarUrl;
+ private volatile boolean isTagFile;
+ private volatile boolean protoTypeMode;
+ private volatile TagInfo tagInfo;
+ private volatile URL tagFileJarUrl;
private final boolean defaultIsSession;
@@ -209,8 +209,12 @@
public Compiler activateCompiler() {
if ( jspCompiler == null ) {
- // create compile and compile
- this.compile(); // we ignore the exception
+ synchronized ( this ) {
+ if ( jspCompiler == null ) {
+ // create compile and compile
+ this.compile(); // we ignore the exception
+ }
+ }
}
return jspCompiler;
}