You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/03/26 17:00:11 UTC
svn commit: r1581900 - in /tomcat/trunk: ./
java/org/apache/catalina/startup/ java/org/apache/jasper/compiler/
java/org/apache/jasper/servlet/ java/org/apache/tomcat/util/scan/
Author: markt
Date: Wed Mar 26 16:00:10 2014
New Revision: 1581900
URL: http://svn.apache.org/r1581900
Log:
More try-with-resources
Modified:
tomcat/trunk/TOMCAT-NEXT.txt
tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
tomcat/trunk/java/org/apache/jasper/compiler/Compiler.java
tomcat/trunk/java/org/apache/jasper/compiler/JDTCompiler.java
tomcat/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java
tomcat/trunk/java/org/apache/jasper/compiler/ParserController.java
tomcat/trunk/java/org/apache/jasper/compiler/ServletWriter.java
tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java
tomcat/trunk/java/org/apache/tomcat/util/scan/Jar.java
Modified: tomcat/trunk/TOMCAT-NEXT.txt
URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/TOMCAT-NEXT.txt (original)
+++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 16:00:10 2014
@@ -214,8 +214,8 @@ but possibly 7.1.x).
- Use of try with resources
- Started.
- javax.* complete
- - o.a.[catalina to el ] complete
- - o.a.jasper in progress
+ - o.a.[catalina to jasper ] complete
+ - o.a.juli in progress
- remainder TODO
- Catching multiple exceptions
- Started
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Wed Mar 26 16:00:10 2014
@@ -1655,21 +1655,21 @@ public class ContextConfig implements Li
protected void processResourceJARs(Set<WebXml> fragments) {
for (WebXml fragment : fragments) {
URL url = fragment.getURL();
- Jar jar = null;
try {
if ("jar".equals(url.getProtocol())) {
- jar = JarFactory.newInstance(url);
- jar.nextEntry();
- String entryName = jar.getEntryName();
- while (entryName != null) {
- if (entryName.startsWith("META-INF/resources/")) {
- context.getResources().createWebResourceSet(
- WebResourceRoot.ResourceSetType.RESOURCE_JAR,
- "/", url, "/META-INF/resources");
- break;
- }
+ try (Jar jar = JarFactory.newInstance(url)) {
jar.nextEntry();
- entryName = jar.getEntryName();
+ String entryName = jar.getEntryName();
+ while (entryName != null) {
+ if (entryName.startsWith("META-INF/resources/")) {
+ context.getResources().createWebResourceSet(
+ WebResourceRoot.ResourceSetType.RESOURCE_JAR,
+ "/", url, "/META-INF/resources");
+ break;
+ }
+ jar.nextEntry();
+ entryName = jar.getEntryName();
+ }
}
} else if ("file".equals(url.getProtocol())) {
File file = new File(url.toURI());
@@ -1686,10 +1686,6 @@ public class ContextConfig implements Li
} catch (URISyntaxException e) {
log.error(sm.getString("contextConfig.resourceJarFail", url,
context.getName()));
- } finally {
- if (jar != null) {
- jar.close();
- }
}
}
}
@@ -1937,11 +1933,7 @@ public class ContextConfig implements Li
protected void processAnnotationsJar(URL url, WebXml fragment,
boolean handlesTypesOnly) {
- Jar jar = null;
-
- try {
- jar = JarFactory.newInstance(url);
-
+ try (Jar jar = JarFactory.newInstance(url)) {
jar.nextEntry();
String entryName = jar.getEntryName();
while (entryName != null) {
@@ -1962,10 +1954,6 @@ public class ContextConfig implements Li
}
} catch (IOException e) {
log.error(sm.getString("contextConfig.jarFile", url), e);
- } finally {
- if (jar != null) {
- jar.close();
- }
}
}
Modified: tomcat/trunk/java/org/apache/jasper/compiler/Compiler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/Compiler.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/Compiler.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/Compiler.java Wed Mar 26 16:00:10 2014
@@ -173,7 +173,6 @@ public abstract class Compiler {
ctxt.checkOutputDir();
String javaFileName = ctxt.getServletJavaFileName();
- ServletWriter writer = null;
try {
/*
* The setting of isELIgnored changes the behaviour of the parser
@@ -207,11 +206,10 @@ public abstract class Compiler {
if (ctxt.isPrototypeMode()) {
// generate prototype .java file for the tag file
- writer = setupContextWriter(javaFileName);
- Generator.generate(writer, this, pageNodes);
- writer.close();
- writer = null;
- return null;
+ try (ServletWriter writer = setupContextWriter(javaFileName)) {
+ Generator.generate(writer, this, pageNodes);
+ return null;
+ }
}
// Validate and process attributes - don't re-validate the
@@ -248,10 +246,9 @@ public abstract class Compiler {
ELFunctionMapper.map(pageNodes);
// generate servlet .java file
- writer = setupContextWriter(javaFileName);
- Generator.generate(writer, this, pageNodes);
- writer.close();
- writer = null;
+ try (ServletWriter writer = setupContextWriter(javaFileName)) {
+ Generator.generate(writer, this, pageNodes);
+ }
// The writer is only used during the compile, dereference
// it in the JspCompilationContext when done to allow it
@@ -265,14 +262,6 @@ public abstract class Compiler {
}
} catch (Exception e) {
- if (writer != null) {
- try {
- writer.close();
- writer = null;
- } catch (Exception e1) {
- // do nothing
- }
- }
// Remove the generated .java file
File file = new File(javaFileName);
if (file.exists()) {
@@ -283,14 +272,6 @@ public abstract class Compiler {
}
}
throw e;
- } finally {
- if (writer != null) {
- try {
- writer.close();
- } catch (Exception e2) {
- // do nothing
- }
- }
}
// JSR45 Support
Modified: tomcat/trunk/java/org/apache/jasper/compiler/JDTCompiler.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JDTCompiler.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/JDTCompiler.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/JDTCompiler.java Wed Mar 26 16:00:10 2014
@@ -105,14 +105,10 @@ public class JDTCompiler extends org.apa
@Override
public char[] getContents() {
char[] result = null;
- FileInputStream is = null;
- InputStreamReader isr = null;
- Reader reader = null;
- try {
- is = new FileInputStream(sourceFile);
- isr = new InputStreamReader(is,
- ctxt.getOptions().getJavaEncoding());
- reader = new BufferedReader(isr);
+ try (FileInputStream is = new FileInputStream(sourceFile);
+ InputStreamReader isr = new InputStreamReader(
+ is, ctxt.getOptions().getJavaEncoding());
+ Reader reader = new BufferedReader(isr)) {
char[] chars = new char[8192];
StringBuilder buf = new StringBuilder();
int count;
@@ -124,22 +120,6 @@ public class JDTCompiler extends org.apa
buf.getChars(0, result.length, result, 0);
} catch (IOException e) {
log.error("Compilation error", e);
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException ioe) {/*Ignore*/}
- }
- if (isr != null) {
- try {
- isr.close();
- } catch (IOException ioe) {/*Ignore*/}
- }
- if (is != null) {
- try {
- is.close();
- } catch (IOException exc) {/*Ignore*/}
- }
}
return result;
}
@@ -204,17 +184,17 @@ public class JDTCompiler extends org.apa
private NameEnvironmentAnswer findType(String className) {
- InputStream is = null;
- try {
- if (className.equals(targetClassName)) {
- ICompilationUnit compilationUnit =
- new CompilationUnit(sourceFile, className);
- return
- new NameEnvironmentAnswer(compilationUnit, null);
- }
- String resourceName =
+ if (className.equals(targetClassName)) {
+ ICompilationUnit compilationUnit =
+ new CompilationUnit(sourceFile, className);
+ return
+ new NameEnvironmentAnswer(compilationUnit, null);
+ }
+
+ String resourceName =
className.replace('.', '/') + ".class";
- is = classLoader.getResourceAsStream(resourceName);
+
+ try (InputStream is = classLoader.getResourceAsStream(resourceName)) {
if (is != null) {
byte[] classBytes;
byte[] buf = new byte[8192];
@@ -237,14 +217,6 @@ public class JDTCompiler extends org.apa
log.error("Compilation error", exc);
} catch (org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException exc) {
log.error("Compilation error", exc);
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (IOException exc) {
- // Ignore
- }
- }
}
return null;
}
Modified: tomcat/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java Wed Mar 26 16:00:10 2014
@@ -86,71 +86,52 @@ public class JavacErrorDetail {
// be modified (corrected) during the execution of this method
if (jspBeginLineNum > 0 && ctxt != null) {
- InputStream is = null;
- FileInputStream fis = null;
-
- try {
+ try (InputStream is = ctxt.getResourceAsStream(jspFileName)) {
// Read both files in, so we can inspect them
- is = ctxt.getResourceAsStream(jspFileName);
String[] jspLines = readFile(is);
- fis = new FileInputStream(ctxt.getServletJavaFileName());
- String[] javaLines = readFile(fis);
+ try (FileInputStream fis = new FileInputStream(ctxt.getServletJavaFileName())) {
+ String[] javaLines = readFile(fis);
- if (jspLines.length < jspBeginLineNum) {
- // Avoid ArrayIndexOutOfBoundsException
- // Probably bug 48498 but could be some other cause
- jspExtract = Localizer.getMessage("jsp.error.bug48498");
- return;
- }
+ if (jspLines.length < jspBeginLineNum) {
+ // Avoid ArrayIndexOutOfBoundsException
+ // Probably bug 48498 but could be some other cause
+ jspExtract = Localizer.getMessage("jsp.error.bug48498");
+ return;
+ }
- // If the line contains the opening of a multi-line scriptlet
- // block, then the JSP line number we got back is probably
- // faulty. Scan forward to match the java line...
- if (jspLines[jspBeginLineNum-1].lastIndexOf("<%") >
- jspLines[jspBeginLineNum-1].lastIndexOf("%>")) {
- String javaLine = javaLines[javaLineNum-1].trim();
-
- for (int i=jspBeginLineNum-1; i<jspLines.length; i++) {
- if (jspLines[i].indexOf(javaLine) != -1) {
- // Update jsp line number
- jspBeginLineNum = i+1;
- break;
+ // If the line contains the opening of a multi-line scriptlet
+ // block, then the JSP line number we got back is probably
+ // faulty. Scan forward to match the java line...
+ if (jspLines[jspBeginLineNum-1].lastIndexOf("<%") >
+ jspLines[jspBeginLineNum-1].lastIndexOf("%>")) {
+ String javaLine = javaLines[javaLineNum-1].trim();
+
+ for (int i=jspBeginLineNum-1; i<jspLines.length; i++) {
+ if (jspLines[i].indexOf(javaLine) != -1) {
+ // Update jsp line number
+ jspBeginLineNum = i+1;
+ break;
+ }
}
}
- }
- // copy out a fragment of JSP to display to the user
- StringBuilder fragment = new StringBuilder(1024);
- int startIndex = Math.max(0, jspBeginLineNum-1-3);
- int endIndex = Math.min(
- jspLines.length-1, jspBeginLineNum-1+3);
-
- for (int i=startIndex;i<=endIndex; ++i) {
- fragment.append(i+1);
- fragment.append(": ");
- fragment.append(jspLines[i]);
- fragment.append(Constants.NEWLINE);
+ // copy out a fragment of JSP to display to the user
+ StringBuilder fragment = new StringBuilder(1024);
+ int startIndex = Math.max(0, jspBeginLineNum-1-3);
+ int endIndex = Math.min(
+ jspLines.length-1, jspBeginLineNum-1+3);
+
+ for (int i=startIndex;i<=endIndex; ++i) {
+ fragment.append(i+1);
+ fragment.append(": ");
+ fragment.append(jspLines[i]);
+ fragment.append(Constants.NEWLINE);
+ }
+ jspExtract = fragment.toString();
}
- jspExtract = fragment.toString();
-
} catch (IOException ioe) {
// Can't read files - ignore
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (IOException ioe) {
- // Ignore
- }
- }
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException ioe) {
- // Ignore
- }
- }
}
}
this.jspBeginLineNum = jspBeginLineNum;
Modified: tomcat/trunk/java/org/apache/jasper/compiler/ParserController.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/ParserController.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/ParserController.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/ParserController.java Wed Mar 26 16:00:10 2014
@@ -220,22 +220,13 @@ class ParserController implements TagCon
isEncodingSpecifiedInProlog, isBomPresent);
} else {
// Standard syntax
- InputStreamReader inStreamReader = null;
- try {
- inStreamReader = JspUtil.getReader(absFileName, sourceEnc,
- jar, ctxt, err, skip);
+ try (InputStreamReader inStreamReader = JspUtil.getReader(
+ absFileName, sourceEnc, jar, ctxt, err, skip);) {
JspReader jspReader = new JspReader(ctxt, absFileName,
inStreamReader, err);
parsedPage = Parser.parse(this, jspReader, parent, isTagFile,
directiveOnly, jar, sourceEnc, jspConfigPageEnc,
isDefaultPageEncoding, isBomPresent);
- } finally {
- if (inStreamReader != null) {
- try {
- inStreamReader.close();
- } catch (Exception any) {
- }
- }
}
}
Modified: tomcat/trunk/java/org/apache/jasper/compiler/ServletWriter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/ServletWriter.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/ServletWriter.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/ServletWriter.java Wed Mar 26 16:00:10 2014
@@ -24,7 +24,8 @@ import java.io.PrintWriter;
* @author Anil K. Vijendran
* @author Kin-man Chung
*/
-public class ServletWriter {
+public class ServletWriter implements AutoCloseable {
+
private static final int TAB_WIDTH = 2;
private static final String SPACES = " ";
@@ -43,6 +44,7 @@ public class ServletWriter {
this.writer = writer;
}
+ @Override
public void close() {
writer.close();
}
Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java (original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java Wed Mar 26 16:00:10 2014
@@ -344,23 +344,12 @@ public class JspCServletContext implemen
throw new MalformedURLException("Path '" + path +
"' does not start with '/'");
URL url = new URL(myResourceBaseURL, path.substring(1));
- InputStream is = null;
- try {
- is = url.openStream();
+ try (InputStream is = url.openStream()) {
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
url = null;
- } finally {
- if (is != null) {
- try {
- is.close();
- } catch (Throwable t2) {
- ExceptionUtils.handleThrowable(t2);
- }
- }
}
return url;
-
}
Modified: tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java (original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java Wed Mar 26 16:00:10 2014
@@ -278,9 +278,9 @@ public class TldScanner {
jarFound = true;
}
boolean found = false;
- Jar jar = JarFactory.newInstance(urlConn.getURL());
- URL jarURL = jar.getJarFileURL();
- try {
+ URL jarURL = null;
+ try (Jar jar = JarFactory.newInstance(urlConn.getURL())) {
+ jarURL = jar.getJarFileURL();
jar.nextEntry();
for (String entryName = jar.getEntryName();
entryName != null;
@@ -298,8 +298,6 @@ public class TldScanner {
throw new IOException(e);
}
}
- } finally {
- jar.close();
}
if (found) {
tldFound = true;
Modified: tomcat/trunk/java/org/apache/tomcat/util/scan/Jar.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/scan/Jar.java?rev=1581900&r1=1581899&r2=1581900&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/Jar.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/scan/Jar.java Wed Mar 26 16:00:10 2014
@@ -29,7 +29,7 @@ import java.net.URL;
* based {@link java.net.URL}s, {@link java.util.jar.JarFile} creates a copy of the JAR in the
* temporary directory so {@link java.util.jar.JarInputStream} is faster.
*/
-public interface Jar {
+public interface Jar extends AutoCloseable {
/**
* Obtain the URL for accessing the JAR file.
@@ -70,6 +70,7 @@ public interface Jar {
/**
* Close any resources associated with this JAR.
*/
+ @Override
void close();
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org