浏览代码

try finally 改为 try with resources

James 5 年之前
父节点
当前提交
bcca605859
共有 2 个文件被更改,包括 12 次插入44 次删除
  1. 11 41
      src/main/java/com/jfinal/template/Template.java
  2. 1 3
      src/main/java/com/jfinal/template/io/Writer.java

+ 11 - 41
src/main/java/com/jfinal/template/Template.java

@@ -53,11 +53,8 @@ public class Template {
 	 * 渲染到 OutputStream 中去
 	 */
 	public void render(Map<?, ?> data, OutputStream outputStream) {
-		ByteWriter byteWriter = env.engineConfig.writerBuffer.getByteWriter(outputStream);
-		try {
+		try (ByteWriter byteWriter = env.engineConfig.writerBuffer.getByteWriter(outputStream)) {
 			ast.exec(env, new Scope(data, env.engineConfig.sharedObjectMap), byteWriter);
-		} finally {
-			byteWriter.close();
 		}
 	}
 	
@@ -73,11 +70,8 @@ public class Template {
 	 * 渲染到 Writer 中去
 	 */
 	public void render(Map<?, ?> data, Writer writer) {
-		CharWriter charWriter = env.engineConfig.writerBuffer.getCharWriter(writer);
-		try {
+		try (CharWriter charWriter = env.engineConfig.writerBuffer.getCharWriter(writer)) {
 			ast.exec(env, new Scope(data, env.engineConfig.sharedObjectMap), charWriter);
-		} finally {
-			charWriter.close();
 		}
 	}
 	
@@ -93,12 +87,9 @@ public class Template {
 	 * 渲染到 String 中去
 	 */
 	public String renderToString(Map<?, ?> data) {
-		FastStringWriter fsw = env.engineConfig.writerBuffer.getFastStringWriter();
-		try {
+		try (FastStringWriter fsw = env.engineConfig.writerBuffer.getFastStringWriter()) {
 			render(data, fsw);
 			return fsw.toString();
-		} finally {
-			fsw.close();
 		}
 	}
 	
@@ -178,19 +169,10 @@ public class Template {
 	 * </pre>
 	 */
 	public String renderToString(Map<?, ?> data, Func<CharWriter> func) {
-		FastStringWriter fsw = env.engineConfig.writerBuffer.getFastStringWriter();
-		try {
-			
-			CharWriter charWriter = env.engineConfig.writerBuffer.getCharWriter(fsw);
-			try {
-				func.call(ast, env, new Scope(data, env.engineConfig.sharedObjectMap), charWriter);
-			} finally {
-				charWriter.close();
-			}
-			
+		try (FastStringWriter fsw = env.engineConfig.writerBuffer.getFastStringWriter();
+				CharWriter charWriter = env.engineConfig.writerBuffer.getCharWriter(fsw)) {
+			func.call(ast, env, new Scope(data, env.engineConfig.sharedObjectMap), charWriter);
 			return fsw.toString();
-		} finally {
-			fsw.close();
 		}
 	}
 	
@@ -198,11 +180,8 @@ public class Template {
 	 * 渲染到 OutputStream 中去
 	 */
 	public void render(Map<?, ?> data, OutputStream outputStream, Func<ByteWriter> func) {
-		ByteWriter byteWriter = env.engineConfig.writerBuffer.getByteWriter(outputStream);
-		try {
+		try (ByteWriter byteWriter = env.engineConfig.writerBuffer.getByteWriter(outputStream)) {
 			func.call(ast, env, new Scope(data, env.engineConfig.sharedObjectMap), byteWriter);
-		} finally {
-			byteWriter.close();
 		}
 	}
 	
@@ -210,11 +189,8 @@ public class Template {
 	 * 渲染到 Writer 中去
 	 */
 	public void render(Map<?, ?> data, Writer writer, Func<CharWriter> func) {
-		CharWriter charWriter = env.engineConfig.writerBuffer.getCharWriter(writer);
-		try {
+		try (CharWriter charWriter = env.engineConfig.writerBuffer.getCharWriter(writer)) {
 			func.call(ast, env, new Scope(data, env.engineConfig.sharedObjectMap), charWriter);
-		} finally {
-			charWriter.close();
 		}
 	}
 	
@@ -223,15 +199,9 @@ public class Template {
 	 * 适用于代码生成器类似应用场景
 	 */
 	public void render(Map<?, ?> data, File file, Func<ByteWriter> func) {
-		try (FileOutputStream fos = new FileOutputStream(file)) {
-			
-			ByteWriter byteWriter = env.engineConfig.writerBuffer.getByteWriter(fos);
-			try {
-				func.call(ast, env, new Scope(data, env.engineConfig.sharedObjectMap), byteWriter);
-			} finally {
-				byteWriter.close();
-			}
-			
+		try (FileOutputStream fos = new FileOutputStream(file);
+				ByteWriter byteWriter = env.engineConfig.writerBuffer.getByteWriter(fos)) {
+			func.call(ast, env, new Scope(data, env.engineConfig.sharedObjectMap), byteWriter);
 		} catch (IOException e) {
 			throw new RuntimeException(e);
 		}

+ 1 - 3
src/main/java/com/jfinal/template/io/Writer.java

@@ -22,14 +22,12 @@ import java.util.Date;
 /**
  * Writer
  */
-public abstract class Writer {
+public abstract class Writer implements AutoCloseable {
 	
 	protected DateFormats formats = new DateFormats();
 	
 	public abstract void flush() throws IOException;
 	
-	public abstract void close();
-	
 	public abstract void write(IWritable writable) throws IOException;
 	
 	public abstract void write(String string, int offset, int length) throws IOException;