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 @@ + + + + + + + +