diff --git a/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java b/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java
index ff375e520d..8e6f41ba03 100644
--- a/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java
+++ b/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java
@@ -120,6 +120,14 @@ public class Plugin extends AbstractMojo {
)
private org.jooq.meta.jaxb.Logging logging;
+ /**
+ * The on-error behavior.
+ */
+ @Parameter(
+ property = "jooq.codegen.onError"
+ )
+ private org.jooq.meta.jaxb.OnError onError;
+
/**
* The jdbc settings.
*/
@@ -180,6 +188,7 @@ public class Plugin extends AbstractMojo {
Configuration configuration = new Configuration();
configuration.setLogging(logging);
+ configuration.setOnError(onError);
configuration.setJdbc(jdbc);
configuration.setGenerator(generator);
@@ -224,6 +233,7 @@ public class Plugin extends AbstractMojo {
in = new FileInputStream(f);
Configuration configuration = GenerationTool.load(in);
logging = MiniJAXB.append(logging, configuration.getLogging());
+ onError = MiniJAXB.append(onError, configuration.getOnError());
jdbc = MiniJAXB.append(jdbc, configuration.getJdbc());
generator = MiniJAXB.append(generator, configuration.getGenerator());
}
diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
index b365fb1a17..5fc4e57a3f 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java
@@ -82,6 +82,7 @@ import org.jooq.meta.jaxb.Generate;
import org.jooq.meta.jaxb.Jdbc;
import org.jooq.meta.jaxb.Logging;
import org.jooq.meta.jaxb.Matchers;
+import org.jooq.meta.jaxb.OnError;
import org.jooq.meta.jaxb.Property;
import org.jooq.meta.jaxb.SchemaMappingType;
import org.jooq.meta.jaxb.Strategy;
@@ -224,8 +225,29 @@ public class GenerationTool {
new GenerationTool().run(configuration);
}
- @SuppressWarnings("unchecked")
public void run(Configuration configuration) throws Exception {
+ try {
+ run0(configuration);
+ }
+ catch (Exception e) {
+ OnError onError = configuration.getOnError();
+ if (onError == null) {
+ onError = OnError.FAIL;
+ }
+ switch (onError) {
+ case SILENT:
+ break;
+ case LOG:
+ log.warn("Code generation failed", e);
+ break;
+ case FAIL:
+ throw e;
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void run0(Configuration configuration) throws Exception {
if (Boolean.getBoolean("jooq.codegen.skip")) {
log.info("Skipping jOOQ code generation");
return;
diff --git a/jOOQ-meta/src/main/java/META-INF/sun-jaxb.episode b/jOOQ-meta/src/main/java/META-INF/sun-jaxb.episode
index bc0efcc928..de09bf2b15 100644
--- a/jOOQ-meta/src/main/java/META-INF/sun-jaxb.episode
+++ b/jOOQ-meta/src/main/java/META-INF/sun-jaxb.episode
@@ -239,6 +239,12 @@
+
+
+
+
+
+
diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java
index 47448120cd..8442739ede 100644
--- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java
+++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java
@@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlType;
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <all>
* <element name="logging" type="{http://www.jooq.org/xsd/jooq-codegen-3.12.0.xsd}Logging" minOccurs="0"/>
+ * <element name="onError" type="{http://www.jooq.org/xsd/jooq-codegen-3.12.0.xsd}OnError" minOccurs="0"/>
* <element name="jdbc" type="{http://www.jooq.org/xsd/jooq-codegen-3.12.0.xsd}Jdbc" minOccurs="0"/>
* <element name="generator" type="{http://www.jooq.org/xsd/jooq-codegen-3.12.0.xsd}Generator"/>
* </all>
@@ -52,6 +53,8 @@ public class Configuration implements Serializable
private final static long serialVersionUID = 31200L;
@XmlSchemaType(name = "string")
protected Logging logging;
+ @XmlSchemaType(name = "string")
+ protected OnError onError;
protected Jdbc jdbc;
@XmlElement(required = true)
protected Generator generator;
@@ -80,6 +83,30 @@ public class Configuration implements Serializable
this.logging = value;
}
+ /**
+ * The action to be taken by the generator as the consequence of an encountered exception.
+ *
+ * @return
+ * possible object is
+ * {@link OnError }
+ *
+ */
+ public OnError getOnError() {
+ return onError;
+ }
+
+ /**
+ * Sets the value of the onError property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OnError }
+ *
+ */
+ public void setOnError(OnError value) {
+ this.onError = value;
+ }
+
/**
* The JDBC configuration element contains information about how to set up the database connection used for source code generation.
*
@@ -133,6 +160,11 @@ public class Configuration implements Serializable
return this;
}
+ public Configuration withOnError(OnError value) {
+ setOnError(value);
+ return this;
+ }
+
public Configuration withJdbc(Jdbc value) {
setJdbc(value);
return this;
@@ -151,6 +183,11 @@ public class Configuration implements Serializable
sb.append(logging);
sb.append("");
}
+ if (onError!= null) {
+ sb.append("");
+ sb.append(onError);
+ sb.append("");
+ }
if (jdbc!= null) {
sb.append("");
sb.append(jdbc);
@@ -185,6 +222,15 @@ public class Configuration implements Serializable
return false;
}
}
+ if (onError == null) {
+ if (other.onError!= null) {
+ return false;
+ }
+ } else {
+ if (!onError.equals(other.onError)) {
+ return false;
+ }
+ }
if (jdbc == null) {
if (other.jdbc!= null) {
return false;
@@ -211,6 +257,7 @@ public class Configuration implements Serializable
final int prime = 31;
int result = 1;
result = ((prime*result)+((logging == null)? 0 :logging.hashCode()));
+ result = ((prime*result)+((onError == null)? 0 :onError.hashCode()));
result = ((prime*result)+((jdbc == null)? 0 :jdbc.hashCode()));
result = ((prime*result)+((generator == null)? 0 :generator.hashCode()));
return result;
diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd
index 1bea446068..5ee75fa2fd 100644
--- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd
+++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.12.0.xsd
@@ -13,6 +13,10 @@
+
+
+
+
@@ -35,6 +39,14 @@
+
+
+
+
+
+
+
+