You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/08/13 18:05:44 UTC
[commons-bcel] branch master updated: Close resources (#138)
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git
The following commit(s) were added to refs/heads/master by this push:
new 16b89fd2 Close resources (#138)
16b89fd2 is described below
commit 16b89fd20d6050cd0cbf93366d7c14360569847a
Author: Michael Ernst <me...@cs.washington.edu>
AuthorDate: Sat Aug 13 11:05:40 2022 -0700
Close resources (#138)
* Close resources
* Use `UncheckedIOException` instead of `Error`
---
src/examples/Package.java | 5 ++-
src/main/java/org/apache/bcel/Repository.java | 3 +-
.../java/org/apache/bcel/util/AttributeHTML.java | 6 ++--
src/main/java/org/apache/bcel/util/Class2HTML.java | 12 +++----
src/main/java/org/apache/bcel/util/CodeHTML.java | 19 ++++++-----
.../java/org/apache/bcel/util/ConstantHTML.java | 39 +++++++++++-----------
src/main/java/org/apache/bcel/util/MethodHTML.java | 37 ++++++++++----------
.../java/org/apache/bcel/AbstractTestCase.java | 11 ++++--
8 files changed, 70 insertions(+), 62 deletions(-)
diff --git a/src/examples/Package.java b/src/examples/Package.java
index 5f1d108c..5576aebb 100644
--- a/src/examples/Package.java
+++ b/src/examples/Package.java
@@ -160,14 +160,13 @@ public class Package {
System.out.println("Creating jar file: " + defaultJar);
- // starting processing: Grab from the dependents list an add back to it
+ // starting processing: Grab from the dependents list and add back to it
// and the allClasses list. see addDependents
while (!dependents.isEmpty()) {
final String name = dependents.firstKey();
final String from = dependents.remove(name);
if (allClasses.get(name) == null) {
- try {
- final InputStream is = classPath.getInputStream(name);
+ try (final InputStream is = classPath.getInputStream(name)) {
clazz = new ClassParser(is, name).parse();
addDependents(clazz);
} catch (final IOException e) {
diff --git a/src/main/java/org/apache/bcel/Repository.java b/src/main/java/org/apache/bcel/Repository.java
index e2bf835f..c048fbdb 100644
--- a/src/main/java/org/apache/bcel/Repository.java
+++ b/src/main/java/org/apache/bcel/Repository.java
@@ -229,8 +229,7 @@ public abstract class Repository {
* found
*/
public static ClassPath.ClassFile lookupClassFile( final String class_name ) {
- try {
- final ClassPath path = repository.getClassPath();
+ try (final ClassPath path = repository.getClassPath()) {
if (path == null) {
return null;
}
diff --git a/src/main/java/org/apache/bcel/util/AttributeHTML.java b/src/main/java/org/apache/bcel/util/AttributeHTML.java
index e3cc53a9..2dd16b07 100644
--- a/src/main/java/org/apache/bcel/util/AttributeHTML.java
+++ b/src/main/java/org/apache/bcel/util/AttributeHTML.java
@@ -17,6 +17,7 @@
*/
package org.apache.bcel.util;
+import java.io.Closeable;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
@@ -41,7 +42,7 @@ import org.apache.bcel.classfile.Utility;
/**
* Convert found attributes into HTML file.
*/
-final class AttributeHTML {
+final class AttributeHTML implements Closeable {
private final String className; // name of current class
private final PrintWriter printWriter; // file to write to
@@ -63,7 +64,8 @@ final class AttributeHTML {
}
- void close() {
+ @Override
+ public void close() {
printWriter.println("</TABLE></BODY></HTML>");
printWriter.close();
}
diff --git a/src/main/java/org/apache/bcel/util/Class2HTML.java b/src/main/java/org/apache/bcel/util/Class2HTML.java
index 6dac298c..4e34ea7e 100644
--- a/src/main/java/org/apache/bcel/util/Class2HTML.java
+++ b/src/main/java/org/apache/bcel/util/Class2HTML.java
@@ -207,12 +207,12 @@ public class Class2HTML implements Constants {
/*
* Attributes can't be written in one step, so we just open a file which will be written consequently.
*/
- final AttributeHTML attributeHtml = new AttributeHTML(dir, className, constantPool, constantHtml, charset);
- new MethodHTML(dir, className, methods, javaClass.getFields(), constantHtml, attributeHtml, charset);
- // Write main file (with frames, yuk)
- writeMainHTML(attributeHtml, charset);
- new CodeHTML(dir, className, methods, constantPool, constantHtml, charset);
- attributeHtml.close();
+ try (final AttributeHTML attributeHtml = new AttributeHTML(dir, className, constantPool, constantHtml, charset)) {
+ new MethodHTML(dir, className, methods, javaClass.getFields(), constantHtml, attributeHtml, charset);
+ // Write main file (with frames, yuk)
+ writeMainHTML(attributeHtml, charset);
+ new CodeHTML(dir, className, methods, constantPool, constantHtml, charset);
+ }
}
diff --git a/src/main/java/org/apache/bcel/util/CodeHTML.java b/src/main/java/org/apache/bcel/util/CodeHTML.java
index 4519699a..911fd740 100644
--- a/src/main/java/org/apache/bcel/util/CodeHTML.java
+++ b/src/main/java/org/apache/bcel/util/CodeHTML.java
@@ -57,16 +57,17 @@ private final String className; // name of current class
// this.methods = methods;
this.constantPool = constant_pool;
this.constantHtml = constant_html;
- printWriter = new PrintWriter(dir + class_name + "_code.html", charset.name());
- printWriter.print("<HTML><head><meta charset=\"");
- printWriter.print(charset.name());
- printWriter.println("\"></head>");
- printWriter.println("<BODY BGCOLOR=\"#C0C0C0\">");
- for (int i = 0; i < methods.length; i++) {
- writeMethod(methods[i], i);
+ try (PrintWriter newPrintWriter = new PrintWriter(dir + class_name + "_code.html", charset.name())) {
+ printWriter = newPrintWriter;
+ printWriter.print("<HTML><head><meta charset=\"");
+ printWriter.print(charset.name());
+ printWriter.println("\"></head>");
+ printWriter.println("<BODY BGCOLOR=\"#C0C0C0\">");
+ for (int i = 0; i < methods.length; i++) {
+ writeMethod(methods[i], i);
+ }
+ printWriter.println("</BODY></HTML>");
}
- printWriter.println("</BODY></HTML>");
- printWriter.close();
}
diff --git a/src/main/java/org/apache/bcel/util/ConstantHTML.java b/src/main/java/org/apache/bcel/util/ConstantHTML.java
index bc1f9f3b..fae19d77 100644
--- a/src/main/java/org/apache/bcel/util/ConstantHTML.java
+++ b/src/main/java/org/apache/bcel/util/ConstantHTML.java
@@ -54,27 +54,28 @@ final class ConstantHTML {
this.constantPool = constant_pool;
this.methods = methods;
constants = constant_pool.getConstantPool();
- printWriter = new PrintWriter(dir + class_name + "_cp.html", charset.name());
- constantRef = new String[constants.length];
- constantRef[0] = "<unknown>";
- printWriter.print("<HTML><head><meta charset=\"");
- printWriter.print(charset.name());
- printWriter.println("\"></head>");
- printWriter.println("<BODY BGCOLOR=\"#C0C0C0\"><TABLE BORDER=0>");
- // Loop through constants, constants[0] is reserved
- for (int i = 1; i < constants.length; i++) {
- if (i % 2 == 0) {
- printWriter.print("<TR BGCOLOR=\"#C0C0C0\"><TD>");
- } else {
- printWriter.print("<TR BGCOLOR=\"#A0A0A0\"><TD>");
- }
- if (constants[i] != null) {
- writeConstant(i);
+ try (PrintWriter newPrintWriter = new PrintWriter(dir + class_name + "_cp.html", charset.name())) {
+ printWriter = newPrintWriter;
+ constantRef = new String[constants.length];
+ constantRef[0] = "<unknown>";
+ printWriter.print("<HTML><head><meta charset=\"");
+ printWriter.print(charset.name());
+ printWriter.println("\"></head>");
+ printWriter.println("<BODY BGCOLOR=\"#C0C0C0\"><TABLE BORDER=0>");
+ // Loop through constants, constants[0] is reserved
+ for (int i = 1; i < constants.length; i++) {
+ if (i % 2 == 0) {
+ printWriter.print("<TR BGCOLOR=\"#C0C0C0\"><TD>");
+ } else {
+ printWriter.print("<TR BGCOLOR=\"#A0A0A0\"><TD>");
+ }
+ if (constants[i] != null) {
+ writeConstant(i);
+ }
+ printWriter.print("</TD></TR>\n");
}
- printWriter.print("</TD></TR>\n");
+ printWriter.println("</TABLE></BODY></HTML>");
}
- printWriter.println("</TABLE></BODY></HTML>");
- printWriter.close();
}
diff --git a/src/main/java/org/apache/bcel/util/MethodHTML.java b/src/main/java/org/apache/bcel/util/MethodHTML.java
index f15110b6..377afeca 100644
--- a/src/main/java/org/apache/bcel/util/MethodHTML.java
+++ b/src/main/java/org/apache/bcel/util/MethodHTML.java
@@ -45,25 +45,26 @@ final class MethodHTML {
this.className = className;
this.attributeHtml = attributeHtml;
this.constantHtml = constantHtml;
- printWriter = new PrintWriter(dir + className + "_methods.html", charset.name());
- printWriter.print("<HTML><head><meta charset=\"");
- printWriter.print(charset.name());
- printWriter.println("\"></head>");
- printWriter.println("<BODY BGCOLOR=\"#C0C0C0\"><TABLE BORDER=0>");
- printWriter.println("<TR><TH ALIGN=LEFT>Access flags</TH><TH ALIGN=LEFT>Type</TH>"
- + "<TH ALIGN=LEFT>Field name</TH></TR>");
- for (final Field field : fields) {
- writeField(field);
- }
- printWriter.println("</TABLE>");
- printWriter.println("<TABLE BORDER=0><TR><TH ALIGN=LEFT>Access flags</TH>"
- + "<TH ALIGN=LEFT>Return type</TH><TH ALIGN=LEFT>Method name</TH>"
- + "<TH ALIGN=LEFT>Arguments</TH></TR>");
- for (int i = 0; i < methods.length; i++) {
- writeMethod(methods[i], i);
+ try (PrintWriter newPrintWriter = new PrintWriter(dir + className + "_methods.html", charset.name())) {
+ printWriter = newPrintWriter;
+ printWriter.print("<HTML><head><meta charset=\"");
+ printWriter.print(charset.name());
+ printWriter.println("\"></head>");
+ printWriter.println("<BODY BGCOLOR=\"#C0C0C0\"><TABLE BORDER=0>");
+ printWriter.println("<TR><TH ALIGN=LEFT>Access flags</TH><TH ALIGN=LEFT>Type</TH>"
+ + "<TH ALIGN=LEFT>Field name</TH></TR>");
+ for (final Field field : fields) {
+ writeField(field);
+ }
+ printWriter.println("</TABLE>");
+ printWriter.println("<TABLE BORDER=0><TR><TH ALIGN=LEFT>Access flags</TH>"
+ + "<TH ALIGN=LEFT>Return type</TH><TH ALIGN=LEFT>Method name</TH>"
+ + "<TH ALIGN=LEFT>Arguments</TH></TR>");
+ for (int i = 0; i < methods.length; i++) {
+ writeMethod(methods[i], i);
+ }
+ printWriter.println("</TABLE></BODY></HTML>");
}
- printWriter.println("</TABLE></BODY></HTML>");
- printWriter.close();
}
diff --git a/src/test/java/org/apache/bcel/AbstractTestCase.java b/src/test/java/org/apache/bcel/AbstractTestCase.java
index 0203fd00..d7ad5e66 100644
--- a/src/test/java/org/apache/bcel/AbstractTestCase.java
+++ b/src/test/java/org/apache/bcel/AbstractTestCase.java
@@ -19,6 +19,8 @@
package org.apache.bcel;
import java.io.File;
+import java.io.IOException;
+import java.io.UncheckedIOException;
import java.util.ArrayList;
import java.util.List;
@@ -63,9 +65,12 @@ public abstract class AbstractTestCase
public SyntheticRepository createRepos(final String cpentry)
{
- final ClassPath cp = new ClassPath("target" + File.separator + "testdata"
- + File.separator + cpentry + File.separator);
- return SyntheticRepository.getInstance(cp);
+ try (ClassPath cp = new ClassPath("target" + File.separator + "testdata"
+ + File.separator + cpentry + File.separator)) {
+ return SyntheticRepository.getInstance(cp);
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
}
/**