Author: markt
Date: Sun Jul 26 18:53:58 2015
New Revision: 1692747
URL: http://svn.apache.org/r1692747
Log:
Fix resource leak spotted by Eclipse by using try-with-resources
Modified:
tomcat/trunk/java/org/apache/jasper/JspC.java
Modified: tomcat/trunk/java/org/apache/jasper/JspC.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=1692747&r1=1692746&r2=1692747&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/JspC.java (original)
+++ tomcat/trunk/java/org/apache/jasper/JspC.java Sun Jul 26 18:53:58 2015
@@ -1054,79 +1054,74 @@ public class JspC extends Task implement
String insertEndMarker =
Localizer.getMessage("jspc.webinc.insertEnd");
- BufferedReader reader = new BufferedReader(openWebxmlReader(webXml));
- BufferedReader fragmentReader = new BufferedReader(
- openWebxmlReader(new File(webxmlFile)));
- PrintWriter writer = new PrintWriter(openWebxmlWriter(webXml2));
-
- // Insert the <servlet> and <servlet-mapping> declarations
- boolean inserted = false;
- int current = reader.read();
- while (current > -1) {
- if (current == '<') {
- String element = getElement(reader);
- if (!inserted && insertBefore.contains(element)) {
- // Insert generated content here
- writer.println(insertStartMarker);
- while (true) {
- String line = fragmentReader.readLine();
- if (line == null) {
- writer.println();
- break;
- }
- writer.println(line);
- }
- writer.println(insertEndMarker);
- writer.println();
- writer.write(element);
- inserted = true;
- } else if (element.equals(insertStartMarker)) {
- // Skip the previous auto-generated content
- while (true) {
- current = reader.read();
- if (current < 0) {
- throw new EOFException();
- }
- if (current == '<') {
- element = getElement(reader);
- if (element.equals(insertEndMarker)) {
+ try (BufferedReader reader = new
BufferedReader(openWebxmlReader(webXml));
+ BufferedReader fragmentReader =
+ new BufferedReader(openWebxmlReader(new
File(webxmlFile)));
+ PrintWriter writer = new
PrintWriter(openWebxmlWriter(webXml2))) {
+
+ // Insert the <servlet> and <servlet-mapping> declarations
+ boolean inserted = false;
+ int current = reader.read();
+ while (current > -1) {
+ if (current == '<') {
+ String element = getElement(reader);
+ if (!inserted && insertBefore.contains(element)) {
+ // Insert generated content here
+ writer.println(insertStartMarker);
+ while (true) {
+ String line = fragmentReader.readLine();
+ if (line == null) {
+ writer.println();
break;
}
+ writer.println(line);
+ }
+ writer.println(insertEndMarker);
+ writer.println();
+ writer.write(element);
+ inserted = true;
+ } else if (element.equals(insertStartMarker)) {
+ // Skip the previous auto-generated content
+ while (true) {
+ current = reader.read();
+ if (current < 0) {
+ throw new EOFException();
+ }
+ if (current == '<') {
+ element = getElement(reader);
+ if (element.equals(insertEndMarker)) {
+ break;
+ }
+ }
}
- }
- current = reader.read();
- while (current == '\n' || current == '\r') {
current = reader.read();
+ while (current == '\n' || current == '\r') {
+ current = reader.read();
+ }
+ continue;
+ } else {
+ writer.write(element);
}
- continue;
} else {
- writer.write(element);
+ writer.write(current);
}
- } else {
- writer.write(current);
+ current = reader.read();
}
- current = reader.read();
}
- writer.close();
- reader.close();
- fragmentReader.close();
+ try (FileInputStream fis = new FileInputStream(webXml2);
+ FileOutputStream fos = new FileOutputStream(webXml)) {
- FileInputStream fis = new FileInputStream(webXml2);
- FileOutputStream fos = new FileOutputStream(webXml);
-
- byte buf[] = new byte[512];
- while (true) {
- int n = fis.read(buf);
- if (n < 0) {
- break;
+ byte buf[] = new byte[512];
+ while (true) {
+ int n = fis.read(buf);
+ if (n < 0) {
+ break;
+ }
+ fos.write(buf, 0, n);
}
- fos.write(buf, 0, n);
}
- fis.close();
- fos.close();
-
if(!webXml2.delete() && log.isDebugEnabled())
log.debug(Localizer.getMessage("jspc.delete.fail",
webXml2.toString()));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]