diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
index 451fd649e4..d6ee5cb0ac 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
@@ -189,15 +189,10 @@ public class GenerationTool {
// Initialise connection
// ---------------------
- if (connection == null) {
- errorIfNull(j, "The tag is mandatory.");
+ if (connection == null && j != null) {
Class extends Driver> driver = (Class extends Driver>) loadClass(driverClass(j));
- Properties properties = new Properties();
- for (Property p : j.getProperties()) {
- properties.put(p.getKey(), p.getValue());
- }
-
+ Properties properties = properties(j.getProperties());
if (!properties.containsKey("user"))
properties.put("user", defaultString(j.getUser()));
if (!properties.containsKey("password"))
@@ -246,6 +241,7 @@ public class GenerationTool {
? databaseClass(j)
: (Class extends Database>) loadClass(databaseName);
Database database = databaseClass.newInstance();
+ database.setProperties(properties(d.getProperties()));
List schemata = d.getSchemata();
@@ -384,6 +380,16 @@ public class GenerationTool {
}
}
+ private Properties properties(List properties) {
+ Properties result = new Properties();
+
+ for (Property p : properties) {
+ result.put(p.getKey(), p.getValue());
+ }
+
+ return result;
+ }
+
private String driverClass(Jdbc j) {
String result = j.getDriver();
diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
index d559e82f92..e13b349fae 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java
@@ -46,6 +46,7 @@ import static org.jooq.tools.StringUtils.defaultString;
import java.io.File;
import java.lang.reflect.TypeVariable;
+import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -141,9 +142,12 @@ public class JavaGenerator extends AbstractGenerator {
public final void generate(Database db) {
this.database = db;
- String url = null;
+ String url = "";
try {
- url = database.getConnection().getMetaData().getURL();
+ Connection connection = database.getConnection();
+
+ if (connection != null)
+ url = connection.getMetaData().getURL();
}
catch (SQLException ignore) {}
diff --git a/jOOQ-meta/pom.xml b/jOOQ-meta/pom.xml
index 41798b2e01..73257f4a81 100644
--- a/jOOQ-meta/pom.xml
+++ b/jOOQ-meta/pom.xml
@@ -37,7 +37,7 @@
0.8.1
- configuration
+ codegen
generate
@@ -46,9 +46,9 @@
true
false
src/main/resources/xsd
- src/main/resources/xjb
+ src/main/resources/xjb/codegen
- jooq-codegen-3.4.0.xsd
+ jooq-codegen-3.5.0.xsd
org.jooq.util.jaxb
@@ -79,7 +79,55 @@
org.jvnet.jaxb2_commons
jaxb2-basics-annotate
0.6.2
-
+
+
+
+
+
+
+ xml
+
+ generate
+
+
+ true
+ true
+ false
+ src/main/resources/xsd
+ src/main/resources/xjb/meta
+
+ jooq-meta-3.5.0.xsd
+
+ org.jooq.util.xml.jaxb
+
+ -Xxew
+ -Xxew:instantiate lazy
+ -Xxew:delete
+ -Xfluent-api
+ -Xdefault-value
+ -Xannotate
+
+
+
+ com.github.jaxb-xew-plugin
+ jaxb-xew-plugin
+ 1.0
+
+
+ org.jvnet.jaxb2_commons
+ jaxb2-fluent-api
+ 3.0
+
+
+ org.jvnet.jaxb2_commons
+ jaxb2-default-value
+ 1.1
+
+
+ org.jvnet.jaxb2_commons
+ jaxb2-basics-annotate
+ 0.6.2
+
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java
index 967dbd98f2..81b323b9f9 100644
--- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java
+++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java
@@ -55,6 +55,7 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.regex.Pattern;
import javax.xml.bind.JAXB;
@@ -86,6 +87,7 @@ public abstract class AbstractDatabase implements Database {
// Configuration elements
// -------------------------------------------------------------------------
+ private Properties properties;
private SQLDialect dialect;
private Connection connection;
private DSLContext create;
@@ -283,6 +285,15 @@ public abstract class AbstractDatabase implements Database {
this.configuredSchemata = schemata;
}
+ @Override
+ public final void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ public final Properties getProperties() {
+ return properties;
+ }
+
@Override
public final void setExcludes(String[] excludes) {
this.excludes = excludes;
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/Database.java b/jOOQ-meta/src/main/java/org/jooq/util/Database.java
index 973a70ec32..d345ca8400 100644
--- a/jOOQ-meta/src/main/java/org/jooq/util/Database.java
+++ b/jOOQ-meta/src/main/java/org/jooq/util/Database.java
@@ -43,6 +43,7 @@ package org.jooq.util;
import java.sql.Connection;
import java.util.List;
+import java.util.Properties;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
@@ -375,4 +376,9 @@ public interface Database {
* Check for the existence of a table in the dictionary views.
*/
boolean exists(Table> table);
+
+ /**
+ * Database properties.
+ */
+ void setProperties(Properties properties);
}
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/xml/XMLDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/xml/XMLDatabase.java
new file mode 100644
index 0000000000..865cee1978
--- /dev/null
+++ b/jOOQ-meta/src/main/java/org/jooq/util/xml/XMLDatabase.java
@@ -0,0 +1,210 @@
+/**
+ * Copyright (c) 2009-2014, Data Geekery GmbH (http://www.datageekery.com)
+ * All rights reserved.
+ *
+ * This work is dual-licensed
+ * - under the Apache Software License 2.0 (the "ASL")
+ * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
+ * =============================================================================
+ * You may choose which license applies to you:
+ *
+ * - If you're using this work with Open Source databases, you may choose
+ * either ASL or jOOQ License.
+ * - If you're using this work with at least one commercial database, you must
+ * choose jOOQ License
+ *
+ * For more information, please visit http://www.jooq.org/licenses
+ *
+ * Apache Software License 2.0:
+ * -----------------------------------------------------------------------------
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ * jOOQ License and Maintenance Agreement:
+ * -----------------------------------------------------------------------------
+ * Data Geekery grants the Customer the non-exclusive, timely limited and
+ * non-transferable license to install and use the Software under the terms of
+ * the jOOQ License and Maintenance Agreement.
+ *
+ * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
+ * and Maintenance Agreement for more details: http://www.jooq.org/licensing
+ */
+
+package org.jooq.util.xml;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXB;
+
+import org.jooq.DSLContext;
+import org.jooq.SQLDialect;
+import org.jooq.impl.DSL;
+import org.jooq.util.AbstractDatabase;
+import org.jooq.util.ArrayDefinition;
+import org.jooq.util.DataTypeDefinition;
+import org.jooq.util.DefaultDataTypeDefinition;
+import org.jooq.util.DefaultRelations;
+import org.jooq.util.DefaultSequenceDefinition;
+import org.jooq.util.EnumDefinition;
+import org.jooq.util.PackageDefinition;
+import org.jooq.util.RoutineDefinition;
+import org.jooq.util.SchemaDefinition;
+import org.jooq.util.SequenceDefinition;
+import org.jooq.util.TableDefinition;
+import org.jooq.util.UDTDefinition;
+import org.jooq.util.xml.jaxb.InformationSchema;
+import org.jooq.util.xml.jaxb.Schema;
+import org.jooq.util.xml.jaxb.Sequence;
+import org.jooq.util.xml.jaxb.Table;
+
+/**
+ * The XML Database.
+ *
+ * @author Lukas Eder
+ */
+public class XMLDatabase extends AbstractDatabase {
+
+ InformationSchema info;
+
+ private InformationSchema info() {
+ if (info == null) {
+ info = JAXB.unmarshal(new File(getProperties().getProperty("xml-file")), InformationSchema.class);
+ }
+
+ return info;
+ }
+
+ @Override
+ protected DSLContext create0() {
+
+ @SuppressWarnings("deprecation")
+ SQLDialect dialect = SQLDialect.SQL99;
+
+ try {
+ dialect = SQLDialect.valueOf(getProperties().getProperty("dialect"));
+ }
+ catch (Exception ignore) {}
+
+ return DSL.using(dialect);
+ }
+
+ @Override
+ protected void loadPrimaryKeys(DefaultRelations relations) throws SQLException {
+ }
+
+ @Override
+ protected void loadUniqueKeys(DefaultRelations relations) throws SQLException {
+ }
+
+ @Override
+ protected void loadForeignKeys(DefaultRelations relations) throws SQLException {
+ }
+
+ @Override
+ protected void loadCheckConstraints(DefaultRelations r) throws SQLException {
+ }
+
+ @Override
+ protected List getSchemata0() throws SQLException {
+ List result = new ArrayList();
+
+ for (Schema schema : info().getSchemata()) {
+ if (getInputSchemata().contains(schema.getSchemaName())) {
+ result.add(new SchemaDefinition(this, schema.getSchemaName(), null));
+ }
+ }
+
+ return result;
+ }
+
+
+ @Override
+ protected List getSequences0() throws SQLException {
+ List result = new ArrayList();
+
+ for (Sequence sequence : info().getSequences()) {
+ if (getInputSchemata().contains(sequence.getSequenceSchema())) {
+ SchemaDefinition schema = getSchema(sequence.getSequenceSchema());
+ DataTypeDefinition type = new DefaultDataTypeDefinition(
+ this,
+ schema,
+ sequence.getDataType(),
+ sequence.getCharacterMaximumLength(),
+ sequence.getNumericPrecision(),
+ sequence.getNumericScale(),
+ false,
+ false
+ );
+
+ result.add(new DefaultSequenceDefinition(schema, sequence.getSequenceName(), type));
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ protected List getTables0() throws SQLException {
+ List result = new ArrayList();
+
+ for (Table table : info().getTables()) {
+ if (getInputSchemata().contains(table.getTableSchema())) {
+ SchemaDefinition schema = getSchema(table.getTableSchema());
+
+ result.add(new XMLTableDefinition(schema, info(), table));
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ protected List getEnums0() throws SQLException {
+ List result = new ArrayList();
+ return result;
+ }
+
+ @Override
+ protected List getUDTs0() throws SQLException {
+ List result = new ArrayList();
+ return result;
+ }
+
+ @Override
+ protected List getArrays0() throws SQLException {
+ List result = new ArrayList();
+ return result;
+ }
+
+ @Override
+ protected List getRoutines0() throws SQLException {
+ List result = new ArrayList();
+ return result;
+ }
+
+ @Override
+ protected List getPackages0() throws SQLException {
+ List result = new ArrayList();
+ return result;
+ }
+
+ static int unbox(Integer i) {
+ return i == null ? 0 : i.intValue();
+ }
+
+ static long unbox(Long l) {
+ return l == null ? 0L : l.longValue();
+ }
+}
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/xml/XMLTableDefinition.java b/jOOQ-meta/src/main/java/org/jooq/util/xml/XMLTableDefinition.java
new file mode 100644
index 0000000000..67d7033370
--- /dev/null
+++ b/jOOQ-meta/src/main/java/org/jooq/util/xml/XMLTableDefinition.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2009-2014, Data Geekery GmbH (http://www.datageekery.com)
+ * All rights reserved.
+ *
+ * This work is dual-licensed
+ * - under the Apache Software License 2.0 (the "ASL")
+ * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
+ * =============================================================================
+ * You may choose which license applies to you:
+ *
+ * - If you're using this work with Open Source databases, you may choose
+ * either ASL or jOOQ License.
+ * - If you're using this work with at least one commercial database, you must
+ * choose jOOQ License
+ *
+ * For more information, please visit http://www.jooq.org/licenses
+ *
+ * Apache Software License 2.0:
+ * -----------------------------------------------------------------------------
+ * 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
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *
+ * jOOQ License and Maintenance Agreement:
+ * -----------------------------------------------------------------------------
+ * Data Geekery grants the Customer the non-exclusive, timely limited and
+ * non-transferable license to install and use the Software under the terms of
+ * the jOOQ License and Maintenance Agreement.
+ *
+ * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
+ * and Maintenance Agreement for more details: http://www.jooq.org/licensing
+ */
+package org.jooq.util.xml;
+
+import static org.jooq.util.xml.XMLDatabase.unbox;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jooq.tools.StringUtils;
+import org.jooq.util.AbstractTableDefinition;
+import org.jooq.util.ColumnDefinition;
+import org.jooq.util.DataTypeDefinition;
+import org.jooq.util.DefaultColumnDefinition;
+import org.jooq.util.DefaultDataTypeDefinition;
+import org.jooq.util.SchemaDefinition;
+import org.jooq.util.xml.jaxb.Column;
+import org.jooq.util.xml.jaxb.InformationSchema;
+import org.jooq.util.xml.jaxb.Table;
+
+/**
+ * @author Lukas Eder
+ */
+public class XMLTableDefinition extends AbstractTableDefinition {
+
+ private final InformationSchema info;
+ private final Table table;
+
+ public XMLTableDefinition(SchemaDefinition schema, InformationSchema info, Table table) {
+ super(schema, table.getTableName(), "");
+
+ this.info = info;
+ this.table = table;
+ }
+
+ @Override
+ protected List getElements0() throws SQLException {
+ List result = new ArrayList();
+
+ for (Column column : info.getColumns()) {
+ if (StringUtils.equals(table.getTableCatalog(), column.getTableCatalog()) &&
+ StringUtils.equals(table.getTableSchema(), column.getTableSchema()) &&
+ StringUtils.equals(table.getTableName(), column.getTableName())) {
+
+ SchemaDefinition schema = getDatabase().getSchema(column.getTableSchema());
+
+ DataTypeDefinition type = new DefaultDataTypeDefinition(
+ getDatabase(),
+ schema,
+ column.getDataType(),
+ unbox(column.getCharacterMaximumLength()),
+ unbox(column.getNumericPrecision()),
+ unbox(column.getNumericScale()),
+ column.isIsNullable(),
+ column.getColumnDefault() != null
+ );
+
+ result.add(new DefaultColumnDefinition(
+ this,
+ column.getColumnName(),
+ unbox(column.getOrdinalPosition()),
+ type,
+ column.getIdentityGeneration() != null,
+ ""
+ ));
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/jOOQ-meta/src/main/resources/xjb/codegen/binding.xjb b/jOOQ-meta/src/main/resources/xjb/codegen/binding.xjb
new file mode 100644
index 0000000000..25be9e704b
--- /dev/null
+++ b/jOOQ-meta/src/main/resources/xjb/codegen/binding.xjb
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jOOQ-meta/src/main/resources/xjb/meta/binding.xjb b/jOOQ-meta/src/main/resources/xjb/meta/binding.xjb
new file mode 100644
index 0000000000..20c62cfc6e
--- /dev/null
+++ b/jOOQ-meta/src/main/resources/xjb/meta/binding.xjb
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.5.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.5.0.xsd
new file mode 100644
index 0000000000..ff802fc2c5
--- /dev/null
+++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.5.0.xsd
@@ -0,0 +1,692 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-meta-3.5.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-meta-3.5.0.xsd
new file mode 100644
index 0000000000..52a32300ee
--- /dev/null
+++ b/jOOQ-meta/src/main/resources/xsd/jooq-meta-3.5.0.xsd
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jOOQ-test/pom.xml b/jOOQ-test/pom.xml
index 741e821399..370b556f8c 100644
--- a/jOOQ-test/pom.xml
+++ b/jOOQ-test/pom.xml
@@ -4237,6 +4237,166 @@
xxxxxxxxxx
+ xxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxx
+ xxxxxxxxx
+ xxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+ xxxxxxxxxxxx
+ xxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxx
+ xxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxx
+
+ xxxxxxxxxxxxxxx
+ xxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxx
+ xxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxx
+ xxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxx
+ xxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxx
+ xxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxx
+ xxxxxxxxxxx
+
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxxxx
+
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+
+ xxxx xxxxxxx xxxxx xx xxxxxxxx xxxxx xxxx xxxxxxxxx xxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxxxxxxx
+ xxxxxxxxxxx
+ xxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxx
+ xxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxxxxx
+ xxxxxxxxxxxx
+ xxxxxxxxxxxxx
+ xxxxxxxxx
+ xxxxxxxxxx
+ xxxxxxxx
+ xxxxxxxxxx
+
+
xxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxx
diff --git a/jOOQ-test/src/main/resources/database.xml b/jOOQ-test/src/main/resources/database.xml
new file mode 100644
index 0000000000..126d9a98b5
--- /dev/null
+++ b/jOOQ-test/src/main/resources/database.xml
@@ -0,0 +1,36 @@
+
+
+
+
+ TEST
+
+
+
+
+
+
+
+
+
+ TEST
+ T_AUTHOR
+ ID
+ NUMBER
+ 7
+ 1
+ false
+
+
+
+
+
+ TEST
+ S_AUTHOR_ID
+ NUMBER
+ 7
+
+
+
diff --git a/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Keys.java b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Keys.java
new file mode 100644
index 0000000000..65b4ed6b15
--- /dev/null
+++ b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Keys.java
@@ -0,0 +1,33 @@
+/**
+ * This class is generated by jOOQ
+ */
+package org.jooq.test.oracle4.generatedclasses;
+
+/**
+ * This class is generated by jOOQ.
+ *
+ * A class modelling foreign key relationships between tables of the TEST
+ * schema
+ */
+@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Keys {
+
+ // -------------------------------------------------------------------------
+ // IDENTITY definitions
+ // -------------------------------------------------------------------------
+
+
+ // -------------------------------------------------------------------------
+ // UNIQUE and PRIMARY KEY definitions
+ // -------------------------------------------------------------------------
+
+
+ // -------------------------------------------------------------------------
+ // FOREIGN KEY definitions
+ // -------------------------------------------------------------------------
+
+
+ // -------------------------------------------------------------------------
+ // [#1459] distribute members to avoid static initialisers > 64kb
+ // -------------------------------------------------------------------------
+}
diff --git a/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Sequences.java b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Sequences.java
new file mode 100644
index 0000000000..25f3398101
--- /dev/null
+++ b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Sequences.java
@@ -0,0 +1,18 @@
+/**
+ * This class is generated by jOOQ
+ */
+package org.jooq.test.oracle4.generatedclasses;
+
+/**
+ * This class is generated by jOOQ.
+ *
+ * Convenience access to all sequences in TEST
+ */
+@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Sequences {
+
+ /**
+ * The sequence TEST.S_AUTHOR_ID
+ */
+ public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", org.jooq.test.oracle4.generatedclasses.Test.TEST, org.jooq.impl.SQLDataType.INTEGER.nullable(false));
+}
diff --git a/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Tables.java b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Tables.java
new file mode 100644
index 0000000000..eac895fc48
--- /dev/null
+++ b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Tables.java
@@ -0,0 +1,18 @@
+/**
+ * This class is generated by jOOQ
+ */
+package org.jooq.test.oracle4.generatedclasses;
+
+/**
+ * This class is generated by jOOQ.
+ *
+ * Convenience access to all tables in TEST
+ */
+@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Tables {
+
+ /**
+ * The table TEST.T_AUTHOR
+ */
+ public static final org.jooq.test.oracle4.generatedclasses.tables.TAuthor T_AUTHOR = org.jooq.test.oracle4.generatedclasses.tables.TAuthor.T_AUTHOR;
+}
diff --git a/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Test.java b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Test.java
new file mode 100644
index 0000000000..3508780069
--- /dev/null
+++ b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/Test.java
@@ -0,0 +1,49 @@
+/**
+ * This class is generated by jOOQ
+ */
+package org.jooq.test.oracle4.generatedclasses;
+
+/**
+ * This class is generated by jOOQ.
+ */
+@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class Test extends org.jooq.impl.SchemaImpl {
+
+ private static final long serialVersionUID = 1552778377;
+
+ /**
+ * The singleton instance of TEST
+ */
+ public static final Test TEST = new Test();
+
+ /**
+ * No further instances allowed
+ */
+ private Test() {
+ super("TEST");
+ }
+
+ @Override
+ public final java.util.List> getSequences() {
+ java.util.List result = new java.util.ArrayList();
+ result.addAll(getSequences0());
+ return result;
+ }
+
+ private final java.util.List> getSequences0() {
+ return java.util.Arrays.>asList(
+ org.jooq.test.oracle4.generatedclasses.Sequences.S_AUTHOR_ID);
+ }
+
+ @Override
+ public final java.util.List> getTables() {
+ java.util.List result = new java.util.ArrayList();
+ result.addAll(getTables0());
+ return result;
+ }
+
+ private final java.util.List> getTables0() {
+ return java.util.Arrays.>asList(
+ org.jooq.test.oracle4.generatedclasses.tables.TAuthor.T_AUTHOR);
+ }
+}
diff --git a/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/TAuthor.java b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/TAuthor.java
new file mode 100644
index 0000000000..db2b234f98
--- /dev/null
+++ b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/TAuthor.java
@@ -0,0 +1,68 @@
+/**
+ * This class is generated by jOOQ
+ */
+package org.jooq.test.oracle4.generatedclasses.tables;
+
+/**
+ * This class is generated by jOOQ.
+ */
+@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
+public class TAuthor extends org.jooq.impl.TableImpl {
+
+ private static final long serialVersionUID = 799437775;
+
+ /**
+ * The singleton instance of TEST.T_AUTHOR
+ */
+ public static final org.jooq.test.oracle4.generatedclasses.tables.TAuthor T_AUTHOR = new org.jooq.test.oracle4.generatedclasses.tables.TAuthor();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public java.lang.Class getRecordType() {
+ return org.jooq.test.oracle4.generatedclasses.tables.records.TAuthorRecord.class;
+ }
+
+ /**
+ * The column TEST.T_AUTHOR.ID.
+ */
+ public final org.jooq.TableField ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * Create a TEST.T_AUTHOR table reference
+ */
+ public TAuthor() {
+ this("T_AUTHOR", null);
+ }
+
+ /**
+ * Create an aliased TEST.T_AUTHOR table reference
+ */
+ public TAuthor(java.lang.String alias) {
+ this(alias, org.jooq.test.oracle4.generatedclasses.tables.TAuthor.T_AUTHOR);
+ }
+
+ private TAuthor(java.lang.String alias, org.jooq.Table aliased) {
+ this(alias, aliased, null);
+ }
+
+ private TAuthor(java.lang.String alias, org.jooq.Table aliased, org.jooq.Field>[] parameters) {
+ super(alias, org.jooq.test.oracle4.generatedclasses.Test.TEST, aliased, parameters, "");
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public org.jooq.test.oracle4.generatedclasses.tables.TAuthor as(java.lang.String alias) {
+ return new org.jooq.test.oracle4.generatedclasses.tables.TAuthor(alias, this);
+ }
+
+ /**
+ * Rename this table
+ */
+ public org.jooq.test.oracle4.generatedclasses.tables.TAuthor rename(java.lang.String name) {
+ return new org.jooq.test.oracle4.generatedclasses.tables.TAuthor(name, null);
+ }
+}
diff --git a/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/pojos/TAuthor.java b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/pojos/TAuthor.java
new file mode 100644
index 0000000000..cb92384a1b
--- /dev/null
+++ b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/pojos/TAuthor.java
@@ -0,0 +1,35 @@
+/**
+ * This class is generated by jOOQ
+ */
+package org.jooq.test.oracle4.generatedclasses.tables.pojos;
+
+/**
+ * This class is generated by jOOQ.
+ */
+@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
+@javax.persistence.Entity
+@javax.persistence.Table(name = "T_AUTHOR", schema = "TEST")
+public class TAuthor implements java.io.Serializable {
+
+ private static final long serialVersionUID = -2112424480;
+
+ private java.lang.Integer id;
+
+ public TAuthor() {}
+
+ public TAuthor(
+ java.lang.Integer id
+ ) {
+ this.id = id;
+ }
+
+ @javax.persistence.Column(name = "ID", nullable = false, precision = 7)
+ @javax.validation.constraints.NotNull
+ public java.lang.Integer getId() {
+ return this.id;
+ }
+
+ public void setId(java.lang.Integer id) {
+ this.id = id;
+ }
+}
diff --git a/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/records/TAuthorRecord.java b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/records/TAuthorRecord.java
new file mode 100644
index 0000000000..027331e7ae
--- /dev/null
+++ b/jOOQ-test/src/test/java/org/jooq/test/oracle4/generatedclasses/tables/records/TAuthorRecord.java
@@ -0,0 +1,104 @@
+/**
+ * This class is generated by jOOQ
+ */
+package org.jooq.test.oracle4.generatedclasses.tables.records;
+
+/**
+ * This class is generated by jOOQ.
+ */
+@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
+@javax.persistence.Entity
+@javax.persistence.Table(name = "T_AUTHOR", schema = "TEST")
+public class TAuthorRecord extends org.jooq.impl.TableRecordImpl implements org.jooq.Record1 {
+
+ private static final long serialVersionUID = -115873836;
+
+ /**
+ * Setter for TEST.T_AUTHOR.ID.
+ */
+ public void setId(java.lang.Integer value) {
+ setValue(0, value);
+ }
+
+ /**
+ * Getter for TEST.T_AUTHOR.ID.
+ */
+ @javax.persistence.Column(name = "ID", nullable = false, precision = 7)
+ @javax.validation.constraints.NotNull
+ public java.lang.Integer getId() {
+ return (java.lang.Integer) getValue(0);
+ }
+
+ // -------------------------------------------------------------------------
+ // Record1 type implementation
+ // -------------------------------------------------------------------------
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public org.jooq.Row1 fieldsRow() {
+ return (org.jooq.Row1) super.fieldsRow();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public org.jooq.Row1 valuesRow() {
+ return (org.jooq.Row1) super.valuesRow();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public org.jooq.Field field1() {
+ return org.jooq.test.oracle4.generatedclasses.tables.TAuthor.T_AUTHOR.ID;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public java.lang.Integer value1() {
+ return getId();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public TAuthorRecord value1(java.lang.Integer value) {
+ setId(value);
+ return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public TAuthorRecord values(java.lang.Integer value1) {
+ return this;
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached TAuthorRecord
+ */
+ public TAuthorRecord() {
+ super(org.jooq.test.oracle4.generatedclasses.tables.TAuthor.T_AUTHOR);
+ }
+
+ /**
+ * Create a detached, initialised TAuthorRecord
+ */
+ public TAuthorRecord(java.lang.Integer id) {
+ super(org.jooq.test.oracle4.generatedclasses.tables.TAuthor.T_AUTHOR);
+
+ setValue(0, id);
+ }
+}