Close the classloader if it's a closeable (java7+)
diff --git a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java
index ef4e2a1..3130428 100644
--- a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java
+++ b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XSDToJavaRunner.java
@@ -19,6 +19,7 @@
package org.apache.cxf.maven_plugin;
+import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -134,11 +135,17 @@
Model model = loadModel(opt);
if (model == null) {
listener.message(xsdFile, "Failed to create model");
+ if (loader instanceof Closeable) {
+ ((Closeable)loader).close();
+ }
return -1;
}
Outline outline = model.generateCode(opt, listener);
if (outline == null) {
listener.message(xsdFile, "Failed to generate code");
+ if (loader instanceof Closeable) {
+ ((Closeable)loader).close();
+ }
return -1;
}
@@ -148,8 +155,14 @@
model.codeModel.build(cw);
} catch (IOException e) {
listener.error(e);
+ if (loader instanceof Closeable) {
+ ((Closeable)loader).close();
+ }
return -1;
}
+ if (loader instanceof Closeable) {
+ ((Closeable)loader).close();
+ }
return 0;
}