diff --git a/src/main/java/io/jboot/codegen/service/JbootServiceImplGenerator.java b/src/main/java/io/jboot/codegen/service/JbootServiceImplGenerator.java
index df746e5a4786ba2e24eaf5ac4e2640ec27d504d7..3984c961e98fb1270471271ae93d066d877f914a 100644
--- a/src/main/java/io/jboot/codegen/service/JbootServiceImplGenerator.java
+++ b/src/main/java/io/jboot/codegen/service/JbootServiceImplGenerator.java
@@ -1,101 +1,108 @@
-/**
- * Copyright (c) 2015-2018, Michael Yang 杨福海 (fuhai999@gmail.com).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.jboot.codegen.service;
-
-import com.jfinal.kit.Kv;
-import com.jfinal.kit.PathKit;
-import com.jfinal.kit.StrKit;
-import com.jfinal.plugin.activerecord.generator.BaseModelGenerator;
-import com.jfinal.plugin.activerecord.generator.TableMeta;
-import com.jfinal.template.Engine;
-import com.jfinal.template.source.ClassPathSourceFactory;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-public class JbootServiceImplGenerator extends BaseModelGenerator {
-
- String basePackage;
- String modelPackage;
-
- public JbootServiceImplGenerator(String basePackage, String modelPackage) {
- super(basePackage + ".impl", PathKit.getWebRootPath() + "/src/main/java/" + (basePackage + ".impl").replace(".", "/"));
-
- this.basePackage = basePackage;
- this.modelPackage = modelPackage;
- this.template = "io/jboot/codegen/service/service_impl_template.jf";
-
-
- }
-
- @Override
- public void generate(List tableMetas) {
- System.out.println("Generate base model ...");
- System.out.println("Base Model Output Dir: " + baseModelOutputDir);
-
- Engine engine = Engine.create("forServiceImpl");
- engine.setSourceFactory(new ClassPathSourceFactory());
- engine.addSharedMethod(new StrKit());
- engine.addSharedObject("getterTypeMap", getterTypeMap);
- engine.addSharedObject("javaKeyword", javaKeyword);
-
- for (TableMeta tableMeta : tableMetas) {
- genBaseModelContent(tableMeta);
- }
- writeToFile(tableMetas);
- }
-
-
- @Override
- protected void genBaseModelContent(TableMeta tableMeta) {
- Kv data = Kv.by("serviceImplPackageName", baseModelPackageName);
- data.set("generateChainSetter", generateChainSetter);
- data.set("tableMeta", tableMeta);
- data.set("basePackage", basePackage);
- data.set("modelPackage", modelPackage);
-
- Engine engine = Engine.use("forServiceImpl");
- tableMeta.baseModelContent = engine.getTemplate(template).renderToString(data);
- }
-
- /**
- * base model 覆盖写入
- */
- @Override
- protected void writeToFile(TableMeta tableMeta) throws IOException {
- File dir = new File(baseModelOutputDir);
- if (!dir.exists()) {
- dir.mkdirs();
- }
-
- String target = baseModelOutputDir + File.separator + tableMeta.modelName + "ServiceImpl" + ".java";
-
- File targetFile = new File(target);
- if (targetFile.exists()) {
- return;
- }
-
-
- FileWriter fw = new FileWriter(target);
- try {
- fw.write(tableMeta.baseModelContent);
- } finally {
- fw.close();
- }
- }
-}
+/**
+ * Copyright (c) 2015-2018, Michael Yang 杨福海 (fuhai999@gmail.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.jboot.codegen.service;
+
+import com.jfinal.kit.Kv;
+import com.jfinal.kit.PathKit;
+import com.jfinal.kit.StrKit;
+import com.jfinal.plugin.activerecord.generator.BaseModelGenerator;
+import com.jfinal.plugin.activerecord.generator.TableMeta;
+import com.jfinal.template.Engine;
+import com.jfinal.template.source.ClassPathSourceFactory;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+public class JbootServiceImplGenerator extends BaseModelGenerator {
+
+ String basePackage;
+ String modelPackage;
+
+ public JbootServiceImplGenerator(String basePackage, String modelPackage) {
+ super(basePackage + ".impl", PathKit.getWebRootPath() + "/src/main/java/" + (basePackage + ".impl").replace(".", "/"));
+
+ this.basePackage = basePackage;
+ this.modelPackage = modelPackage;
+ this.template = "io/jboot/codegen/service/service_impl_template.jf";
+
+
+ }
+
+ @Override
+ public void generate(List tableMetas) {
+ System.out.println("Generate base model ...");
+ System.out.println("Base Model Output Dir: " + baseModelOutputDir);
+
+ Engine engine = Engine.create("forServiceImpl");
+ engine.setSourceFactory(new ClassPathSourceFactory());
+ engine.addSharedMethod(new StrKit());
+ engine.addSharedObject("getterTypeMap", getterTypeMap);
+ engine.addSharedObject("javaKeyword", javaKeyword);
+
+ for (TableMeta tableMeta : tableMetas) {
+ genBaseModelContent(tableMeta);
+ }
+ writeToFile(tableMetas);
+ }
+
+
+ @Override
+ protected void genBaseModelContent(TableMeta tableMeta) {
+ Kv data = Kv.by("serviceImplPackageName", baseModelPackageName);
+ data.set("generateChainSetter", generateChainSetter);
+ data.set("tableMeta", tableMeta);
+ data.set("basePackage", basePackage);
+ data.set("modelPackage", modelPackage);
+
+ Engine engine = Engine.use("forServiceImpl");
+ tableMeta.baseModelContent = engine.getTemplate(template).renderToString(data);
+ }
+
+ /**
+ * base model 覆盖写入
+ */
+ @Override
+ protected void writeToFile(TableMeta tableMeta) throws IOException {
+ File dir = new File(baseModelOutputDir);
+ if (!dir.exists()) {
+ dir.mkdirs();
+ }
+
+ String target = baseModelOutputDir + File.separator + tableMeta.modelName + "ServiceImpl" + ".java";
+
+ File targetFile = new File(target);
+ if (targetFile.exists()) {
+ return;
+ }
+
+
+ FileWriter fw = new FileWriter(target);
+ try {
+ fw.write(tableMeta.baseModelContent);
+ } finally {
+ if(fw != null) {
+ try {
+ fw.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+}
diff --git a/src/main/java/io/jboot/codegen/service/JbootServiceInterfaceGenerator.java b/src/main/java/io/jboot/codegen/service/JbootServiceInterfaceGenerator.java
index d481b7ffbd165e1ab138883d29d6ea41c8f60751..474bae85b491ddfd581ec094be90840a208edb06 100644
--- a/src/main/java/io/jboot/codegen/service/JbootServiceInterfaceGenerator.java
+++ b/src/main/java/io/jboot/codegen/service/JbootServiceInterfaceGenerator.java
@@ -1,102 +1,108 @@
-/**
- * Copyright (c) 2015-2018, Michael Yang 杨福海 (fuhai999@gmail.com).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package io.jboot.codegen.service;
-
-import com.jfinal.kit.Kv;
-import com.jfinal.kit.PathKit;
-import com.jfinal.kit.StrKit;
-import com.jfinal.plugin.activerecord.generator.BaseModelGenerator;
-import com.jfinal.plugin.activerecord.generator.TableMeta;
-import com.jfinal.template.Engine;
-import com.jfinal.template.source.ClassPathSourceFactory;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.List;
-
-public class JbootServiceInterfaceGenerator extends BaseModelGenerator {
-
- private String modelPacket;
- private String basePackage;
-
- public JbootServiceInterfaceGenerator(String basePackage, String modelPacket) {
- super(basePackage, PathKit.getWebRootPath() + "/src/main/java/" + basePackage.replace(".", "/"));
-
-
- this.modelPacket = modelPacket;
- this.basePackage = basePackage;
- this.template = "io/jboot/codegen/service/service_template.jf";
-
- }
-
- @Override
- public void generate(List tableMetas) {
- System.out.println("Generate base model ...");
- System.out.println("Base Model Output Dir: " + baseModelOutputDir);
-
- Engine engine = Engine.create("forService");
- engine.setSourceFactory(new ClassPathSourceFactory());
- engine.addSharedMethod(new StrKit());
- engine.addSharedObject("getterTypeMap", getterTypeMap);
- engine.addSharedObject("javaKeyword", javaKeyword);
-
- for (TableMeta tableMeta : tableMetas) {
- genBaseModelContent(tableMeta);
- }
- writeToFile(tableMetas);
- }
-
- @Override
- protected void genBaseModelContent(TableMeta tableMeta) {
- Kv data = Kv.by("baseModelPackageName", baseModelPackageName);
- data.set("generateChainSetter", generateChainSetter);
- data.set("tableMeta", tableMeta);
- data.set("modelPacket", modelPacket);
- data.set("basePackage", basePackage);
-
- Engine engine = Engine.use("forService");
- tableMeta.baseModelContent = engine.getTemplate(template).renderToString(data);
- }
-
-
- /**
- * base model 覆盖写入
- */
- @Override
- protected void writeToFile(TableMeta tableMeta) throws IOException {
- File dir = new File(baseModelOutputDir);
- if (!dir.exists()) {
- dir.mkdirs();
- }
-
- String target = baseModelOutputDir + File.separator + tableMeta.modelName + "Service" + ".java";
-
- File targetFile = new File(target);
- if (targetFile.exists()) {
- return;
- }
-
- FileWriter fw = new FileWriter(target);
- try {
- fw.write(tableMeta.baseModelContent);
- } finally {
- fw.close();
- }
- }
-
-
-}
+/**
+ * Copyright (c) 2015-2018, Michael Yang 杨福海 (fuhai999@gmail.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.jboot.codegen.service;
+
+import com.jfinal.kit.Kv;
+import com.jfinal.kit.PathKit;
+import com.jfinal.kit.StrKit;
+import com.jfinal.plugin.activerecord.generator.BaseModelGenerator;
+import com.jfinal.plugin.activerecord.generator.TableMeta;
+import com.jfinal.template.Engine;
+import com.jfinal.template.source.ClassPathSourceFactory;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.List;
+
+public class JbootServiceInterfaceGenerator extends BaseModelGenerator {
+
+ private String modelPacket;
+ private String basePackage;
+
+ public JbootServiceInterfaceGenerator(String basePackage, String modelPacket) {
+ super(basePackage, PathKit.getWebRootPath() + "/src/main/java/" + basePackage.replace(".", "/"));
+
+
+ this.modelPacket = modelPacket;
+ this.basePackage = basePackage;
+ this.template = "io/jboot/codegen/service/service_template.jf";
+
+ }
+
+ @Override
+ public void generate(List tableMetas) {
+ System.out.println("Generate base model ...");
+ System.out.println("Base Model Output Dir: " + baseModelOutputDir);
+
+ Engine engine = Engine.create("forService");
+ engine.setSourceFactory(new ClassPathSourceFactory());
+ engine.addSharedMethod(new StrKit());
+ engine.addSharedObject("getterTypeMap", getterTypeMap);
+ engine.addSharedObject("javaKeyword", javaKeyword);
+
+ for (TableMeta tableMeta : tableMetas) {
+ genBaseModelContent(tableMeta);
+ }
+ writeToFile(tableMetas);
+ }
+
+ @Override
+ protected void genBaseModelContent(TableMeta tableMeta) {
+ Kv data = Kv.by("baseModelPackageName", baseModelPackageName);
+ data.set("generateChainSetter", generateChainSetter);
+ data.set("tableMeta", tableMeta);
+ data.set("modelPacket", modelPacket);
+ data.set("basePackage", basePackage);
+
+ Engine engine = Engine.use("forService");
+ tableMeta.baseModelContent = engine.getTemplate(template).renderToString(data);
+ }
+
+
+ /**
+ * base model 覆盖写入
+ */
+ @Override
+ protected void writeToFile(TableMeta tableMeta) throws IOException {
+ File dir = new File(baseModelOutputDir);
+ if (!dir.exists()) {
+ dir.mkdirs();
+ }
+
+ String target = baseModelOutputDir + File.separator + tableMeta.modelName + "Service" + ".java";
+
+ File targetFile = new File(target);
+ if (targetFile.exists()) {
+ return;
+ }
+
+ FileWriter fw = new FileWriter(target);
+ try {
+ fw.write(tableMeta.baseModelContent);
+ } finally {
+ if(fw != null) {
+ try {
+ fw.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/src/main/java/io/jboot/core/http/jboot/JbootHttpImpl.java b/src/main/java/io/jboot/core/http/jboot/JbootHttpImpl.java
index 4d43a5b29e0027efbe1326bcfe9fbf349dab7c6d..9d3159158a955cd4f7be3e78c2350aebf1571e1b 100644
--- a/src/main/java/io/jboot/core/http/jboot/JbootHttpImpl.java
+++ b/src/main/java/io/jboot/core/http/jboot/JbootHttpImpl.java
@@ -1,268 +1,279 @@
-/**
- * Copyright (c) 2015-2018, Michael Yang 杨福海 (fuhai999@gmail.com).
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *