[#6879] Add javax.xml.bind:jaxb-api dependency and avoid using the implementation

This commit is contained in:
lukaseder 2018-02-22 11:04:17 +01:00
parent 7c80289e35
commit fd0aee60aa
15 changed files with 81 additions and 95 deletions

View File

@ -19,7 +19,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<kotlin.version>1.1.2-4</kotlin.version>
<kotlin.version>1.2.21</kotlin.version>
<org.jooq.version>3.11.0-SNAPSHOT</org.jooq.version>
<org.h2.version>1.4.195</org.h2.version>
<java.version>1.8</java.version>

View File

@ -12,7 +12,7 @@ import org.jooq.example.db.h2.tables.Author;
import org.jooq.example.db.h2.tables.Book;
import org.jooq.example.db.h2.tables.BookStore;
import org.jooq.example.db.h2.tables.BookToBookStore;
import org.jooq.impl.AbstractKeys;
import org.jooq.impl.Internal;
/**
@ -44,13 +44,13 @@ public class Indexes {
// [#1459] distribute members to avoid static initialisers > 64kb
// -------------------------------------------------------------------------
private static class Indexes0 extends AbstractKeys {
public static Index PRIMARY_KEY_7 = createIndex("PRIMARY_KEY_7", Author.AUTHOR, new OrderField[] { Author.AUTHOR.ID }, true);
public static Index FK_T_BOOK_AUTHOR_ID_INDEX_1 = createIndex("FK_T_BOOK_AUTHOR_ID_INDEX_1", Book.BOOK, new OrderField[] { Book.BOOK.AUTHOR_ID }, false);
public static Index FK_T_BOOK_CO_AUTHOR_ID_INDEX_1 = createIndex("FK_T_BOOK_CO_AUTHOR_ID_INDEX_1", Book.BOOK, new OrderField[] { Book.BOOK.CO_AUTHOR_ID }, false);
public static Index PRIMARY_KEY_1 = createIndex("PRIMARY_KEY_1", Book.BOOK, new OrderField[] { Book.BOOK.ID }, true);
public static Index PRIMARY_KEY_F = createIndex("PRIMARY_KEY_F", BookStore.BOOK_STORE, new OrderField[] { BookStore.BOOK_STORE.NAME }, true);
public static Index FK_B2BS_B_ID_INDEX_2 = createIndex("FK_B2BS_B_ID_INDEX_2", BookToBookStore.BOOK_TO_BOOK_STORE, new OrderField[] { BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID }, false);
public static Index PRIMARY_KEY_2 = createIndex("PRIMARY_KEY_2", BookToBookStore.BOOK_TO_BOOK_STORE, new OrderField[] { BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_STORE_NAME, BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID }, true);
private static class Indexes0 {
public static Index PRIMARY_KEY_7 = Internal.createIndex("PRIMARY_KEY_7", Author.AUTHOR, new OrderField[] { Author.AUTHOR.ID }, true);
public static Index FK_T_BOOK_AUTHOR_ID_INDEX_1 = Internal.createIndex("FK_T_BOOK_AUTHOR_ID_INDEX_1", Book.BOOK, new OrderField[] { Book.BOOK.AUTHOR_ID }, false);
public static Index FK_T_BOOK_CO_AUTHOR_ID_INDEX_1 = Internal.createIndex("FK_T_BOOK_CO_AUTHOR_ID_INDEX_1", Book.BOOK, new OrderField[] { Book.BOOK.CO_AUTHOR_ID }, false);
public static Index PRIMARY_KEY_1 = Internal.createIndex("PRIMARY_KEY_1", Book.BOOK, new OrderField[] { Book.BOOK.ID }, true);
public static Index PRIMARY_KEY_F = Internal.createIndex("PRIMARY_KEY_F", BookStore.BOOK_STORE, new OrderField[] { BookStore.BOOK_STORE.NAME }, true);
public static Index FK_B2BS_B_ID_INDEX_2 = Internal.createIndex("FK_B2BS_B_ID_INDEX_2", BookToBookStore.BOOK_TO_BOOK_STORE, new OrderField[] { BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID }, false);
public static Index PRIMARY_KEY_2 = Internal.createIndex("PRIMARY_KEY_2", BookToBookStore.BOOK_TO_BOOK_STORE, new OrderField[] { BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_STORE_NAME, BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID }, true);
}
}

View File

@ -17,7 +17,7 @@ import org.jooq.example.db.h2.tables.records.AuthorRecord;
import org.jooq.example.db.h2.tables.records.BookRecord;
import org.jooq.example.db.h2.tables.records.BookStoreRecord;
import org.jooq.example.db.h2.tables.records.BookToBookStoreRecord;
import org.jooq.impl.AbstractKeys;
import org.jooq.impl.Internal;
/**
@ -63,22 +63,22 @@ public class Keys {
// [#1459] distribute members to avoid static initialisers > 64kb
// -------------------------------------------------------------------------
private static class Identities0 extends AbstractKeys {
public static Identity<AuthorRecord, Integer> IDENTITY_AUTHOR = createIdentity(Author.AUTHOR, Author.AUTHOR.ID);
public static Identity<BookRecord, Integer> IDENTITY_BOOK = createIdentity(Book.BOOK, Book.BOOK.ID);
private static class Identities0 {
public static Identity<AuthorRecord, Integer> IDENTITY_AUTHOR = Internal.createIdentity(Author.AUTHOR, Author.AUTHOR.ID);
public static Identity<BookRecord, Integer> IDENTITY_BOOK = Internal.createIdentity(Book.BOOK, Book.BOOK.ID);
}
private static class UniqueKeys0 extends AbstractKeys {
public static final UniqueKey<AuthorRecord> PK_T_AUTHOR = createUniqueKey(Author.AUTHOR, "PK_T_AUTHOR", Author.AUTHOR.ID);
public static final UniqueKey<BookRecord> PK_T_BOOK = createUniqueKey(Book.BOOK, "PK_T_BOOK", Book.BOOK.ID);
public static final UniqueKey<BookStoreRecord> UK_T_BOOK_STORE_NAME = createUniqueKey(BookStore.BOOK_STORE, "UK_T_BOOK_STORE_NAME", BookStore.BOOK_STORE.NAME);
public static final UniqueKey<BookToBookStoreRecord> PK_B2BS = createUniqueKey(BookToBookStore.BOOK_TO_BOOK_STORE, "PK_B2BS", BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_STORE_NAME, BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID);
private static class UniqueKeys0 {
public static final UniqueKey<AuthorRecord> PK_T_AUTHOR = Internal.createUniqueKey(Author.AUTHOR, "PK_T_AUTHOR", Author.AUTHOR.ID);
public static final UniqueKey<BookRecord> PK_T_BOOK = Internal.createUniqueKey(Book.BOOK, "PK_T_BOOK", Book.BOOK.ID);
public static final UniqueKey<BookStoreRecord> UK_T_BOOK_STORE_NAME = Internal.createUniqueKey(BookStore.BOOK_STORE, "UK_T_BOOK_STORE_NAME", BookStore.BOOK_STORE.NAME);
public static final UniqueKey<BookToBookStoreRecord> PK_B2BS = Internal.createUniqueKey(BookToBookStore.BOOK_TO_BOOK_STORE, "PK_B2BS", BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_STORE_NAME, BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID);
}
private static class ForeignKeys0 extends AbstractKeys {
public static final ForeignKey<BookRecord, AuthorRecord> FK_T_BOOK_AUTHOR_ID = createForeignKey(org.jooq.example.db.h2.Keys.PK_T_AUTHOR, Book.BOOK, "FK_T_BOOK_AUTHOR_ID", Book.BOOK.AUTHOR_ID);
public static final ForeignKey<BookRecord, AuthorRecord> FK_T_BOOK_CO_AUTHOR_ID = createForeignKey(org.jooq.example.db.h2.Keys.PK_T_AUTHOR, Book.BOOK, "FK_T_BOOK_CO_AUTHOR_ID", Book.BOOK.CO_AUTHOR_ID);
public static final ForeignKey<BookToBookStoreRecord, BookStoreRecord> FK_B2BS_BS_NAME = createForeignKey(org.jooq.example.db.h2.Keys.UK_T_BOOK_STORE_NAME, BookToBookStore.BOOK_TO_BOOK_STORE, "FK_B2BS_BS_NAME", BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_STORE_NAME);
public static final ForeignKey<BookToBookStoreRecord, BookRecord> FK_B2BS_B_ID = createForeignKey(org.jooq.example.db.h2.Keys.PK_T_BOOK, BookToBookStore.BOOK_TO_BOOK_STORE, "FK_B2BS_B_ID", BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID);
private static class ForeignKeys0 {
public static final ForeignKey<BookRecord, AuthorRecord> FK_T_BOOK_AUTHOR_ID = Internal.createForeignKey(org.jooq.example.db.h2.Keys.PK_T_AUTHOR, Book.BOOK, "FK_T_BOOK_AUTHOR_ID", Book.BOOK.AUTHOR_ID);
public static final ForeignKey<BookRecord, AuthorRecord> FK_T_BOOK_CO_AUTHOR_ID = Internal.createForeignKey(org.jooq.example.db.h2.Keys.PK_T_AUTHOR, Book.BOOK, "FK_T_BOOK_CO_AUTHOR_ID", Book.BOOK.CO_AUTHOR_ID);
public static final ForeignKey<BookToBookStoreRecord, BookStoreRecord> FK_B2BS_BS_NAME = Internal.createForeignKey(org.jooq.example.db.h2.Keys.UK_T_BOOK_STORE_NAME, BookToBookStore.BOOK_TO_BOOK_STORE, "FK_B2BS_BS_NAME", BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_STORE_NAME);
public static final ForeignKey<BookToBookStoreRecord, BookRecord> FK_B2BS_B_ID = Internal.createForeignKey(org.jooq.example.db.h2.Keys.PK_T_BOOK, BookToBookStore.BOOK_TO_BOOK_STORE, "FK_B2BS_B_ID", BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID);
}
}

View File

@ -11,7 +11,6 @@ import java.util.List;
import javax.annotation.Generated;
import org.jooq.Catalog;
import org.jooq.Sequence;
import org.jooq.Table;
import org.jooq.example.db.h2.tables.Author;
import org.jooq.example.db.h2.tables.Book;
@ -33,7 +32,7 @@ import org.jooq.impl.SchemaImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Public extends SchemaImpl {
private static final long serialVersionUID = 176668304;
private static final long serialVersionUID = 1733511408;
/**
* The reference instance of <code>PUBLIC</code>
@ -76,18 +75,6 @@ public class Public extends SchemaImpl {
return DefaultCatalog.DEFAULT_CATALOG;
}
@Override
public final List<Sequence<?>> getSequences() {
List result = new ArrayList();
result.addAll(getSequences0());
return result;
}
private final List<Sequence<?>> getSequences0() {
return Arrays.<Sequence<?>>asList(
Sequences.S_AUTHOR_ID);
}
@Override
public final List<Table<?>> getTables() {
List result = new ArrayList();

View File

@ -11,9 +11,11 @@ import java.util.List;
import javax.annotation.Generated;
import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Identity;
import org.jooq.Index;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@ -39,7 +41,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Author extends TableImpl<AuthorRecord> {
private static final long serialVersionUID = -1556820779;
private static final long serialVersionUID = -33303089;
/**
* The reference instance of <code>PUBLIC.AUTHOR</code>
@ -113,6 +115,10 @@ public class Author extends TableImpl<AuthorRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> Author(Table<O> child, ForeignKey<O, AuthorRecord> key) {
super(child, key, AUTHOR);
}
/**
* {@inheritDoc}
*/

View File

@ -15,6 +15,7 @@ import org.jooq.ForeignKey;
import org.jooq.Identity;
import org.jooq.Index;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@ -40,7 +41,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Book extends TableImpl<BookRecord> {
private static final long serialVersionUID = 478921322;
private static final long serialVersionUID = 412161267;
/**
* The reference instance of <code>PUBLIC.BOOK</code>
@ -108,7 +109,7 @@ public class Book extends TableImpl<BookRecord> {
/**
* The column <code>PUBLIC.BOOK.REC_TIMESTAMP</code>.
*/
public final TableField<BookRecord, Timestamp> REC_TIMESTAMP = createField("REC_TIMESTAMP", org.jooq.impl.SQLDataType.TIMESTAMP, this, "");
public final TableField<BookRecord, Timestamp> REC_TIMESTAMP = createField("REC_TIMESTAMP", org.jooq.impl.SQLDataType.TIMESTAMP.precision(23), this, "");
/**
* Create a <code>PUBLIC.BOOK</code> table reference
@ -139,6 +140,10 @@ public class Book extends TableImpl<BookRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> Book(Table<O> child, ForeignKey<O, BookRecord> key) {
super(child, key, BOOK);
}
/**
* {@inheritDoc}
*/
@ -187,6 +192,14 @@ public class Book extends TableImpl<BookRecord> {
return Arrays.<ForeignKey<BookRecord, ?>>asList(Keys.FK_T_BOOK_AUTHOR_ID, Keys.FK_T_BOOK_CO_AUTHOR_ID);
}
public Author fkTBookAuthorId() {
return new Author(this, Keys.FK_T_BOOK_AUTHOR_ID);
}
public Author fkTBookCoAuthorId() {
return new Author(this, Keys.FK_T_BOOK_CO_AUTHOR_ID);
}
/**
* {@inheritDoc}
*/

View File

@ -10,8 +10,10 @@ import java.util.List;
import javax.annotation.Generated;
import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Index;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@ -37,7 +39,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class BookStore extends TableImpl<BookStoreRecord> {
private static final long serialVersionUID = 143732572;
private static final long serialVersionUID = -15217694;
/**
* The reference instance of <code>PUBLIC.BOOK_STORE</code>
@ -86,6 +88,10 @@ public class BookStore extends TableImpl<BookStoreRecord> {
super(alias, null, aliased, parameters, DSL.comment(""));
}
<O extends Record> BookStore(Table<O> child, ForeignKey<O, BookStoreRecord> key) {
super(child, key, BOOK_STORE);
}
/**
* {@inheritDoc}
*/

View File

@ -38,7 +38,7 @@ import org.jooq.impl.TableImpl;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class BookToBookStore extends TableImpl<BookToBookStoreRecord> {
private static final long serialVersionUID = 417443386;
private static final long serialVersionUID = -1246988824;
/**
* The reference instance of <code>PUBLIC.BOOK_TO_BOOK_STORE</code>
@ -137,6 +137,14 @@ public class BookToBookStore extends TableImpl<BookToBookStoreRecord> {
return Arrays.<ForeignKey<BookToBookStoreRecord, ?>>asList(Keys.FK_B2BS_BS_NAME, Keys.FK_B2BS_B_ID);
}
public BookStore bookStore() {
return new BookStore(this, Keys.FK_B2BS_BS_NAME);
}
public Book book() {
return new Book(this, Keys.FK_B2BS_B_ID);
}
/**
* {@inheritDoc}
*/

View File

@ -49,11 +49,5 @@
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
</dependency>
<!-- From JDK 9 onwards, the JAXB dependency needs to be made explicit -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -43,7 +43,6 @@ import static org.jooq.util.AbstractTypedElementDefinition.customType;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.math.BigInteger;
import java.sql.Connection;
import java.sql.SQLException;
@ -59,8 +58,6 @@ import java.util.Properties;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import javax.xml.bind.JAXB;
import org.jooq.Configuration;
import org.jooq.DSLContext;
import org.jooq.ExecuteContext;
@ -940,15 +937,7 @@ public abstract class AbstractDatabase implements Database {
CustomType type = it1.next();
if (type == null || (type.getName() == null && type.getType() == null)) {
try {
StringWriter writer = new StringWriter();
JAXB.marshal(type, writer);
log.warn("Invalid custom type encountered: " + writer.toString());
}
catch (Exception e) {
log.warn("Invalid custom type encountered: " + type);
}
log.warn("Invalid custom type encountered: " + type);
it1.remove();
continue;
}

View File

@ -102,6 +102,12 @@
<optional>true</optional>
</dependency>
<!-- From JDK 9 onwards, the JAXB dependency needs to be made explicit -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>

View File

@ -40,13 +40,10 @@ package org.jooq;
import static org.jooq.tools.StringUtils.isBlank;
import java.io.Serializable;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.xml.bind.JAXB;
import org.jooq.conf.MappedSchema;
import org.jooq.conf.MappedTable;
import org.jooq.conf.RenderMapping;
@ -471,8 +468,6 @@ public class SchemaMapping implements Serializable {
@Override
public String toString() {
StringWriter writer = new StringWriter();
JAXB.marshal(mapping(), writer);
return writer.toString();
return "" + mapping();
}
}

View File

@ -67,25 +67,21 @@ public final class SettingsTools {
// Check classpath first
InputStream in = SettingsTools.class.getResourceAsStream(property);
if (in != null) {
if (in != null)
settings = JAXB.unmarshal(in, Settings.class);
}
else {
else
settings = JAXB.unmarshal(new File(property), Settings.class);
}
}
if (settings == null) {
InputStream in = SettingsTools.class.getResourceAsStream("/jooq-settings.xml");
if (in != null) {
if (in != null)
settings = JAXB.unmarshal(in, Settings.class);
}
}
if (settings == null) {
if (settings == null)
settings = new Settings();
}
DEFAULT_SETTINGS = settings;
}
@ -104,9 +100,8 @@ public final class SettingsTools {
else if (settings != null) {
ParamType result = settings.getParamType();
if (result != null) {
if (result != null)
return result;
}
}
return INDEXED;
@ -119,9 +114,8 @@ public final class SettingsTools {
if (settings != null) {
StatementType result = settings.getStatementType();
if (result != null) {
if (result != null)
return result;
}
}
return PREPARED_STATEMENT;
@ -134,9 +128,8 @@ public final class SettingsTools {
if (settings != null) {
BackslashEscaping result = settings.getBackslashEscaping();
if (result != null) {
if (result != null)
return result;
}
}
return BackslashEscaping.DEFAULT;
@ -174,9 +167,8 @@ public final class SettingsTools {
* Lazy access to {@link RenderMapping}.
*/
public static final RenderMapping getRenderMapping(Settings settings) {
if (settings.getRenderMapping() == null) {
if (settings.getRenderMapping() == null)
settings.setRenderMapping(new RenderMapping());
}
return settings.getRenderMapping();
}

View File

@ -44,7 +44,6 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.io.StringWriter;
import java.sql.Connection;
import java.time.Clock;
import java.util.Map;
@ -53,7 +52,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
import javax.sql.DataSource;
import javax.xml.bind.JAXB;
import org.jooq.Configuration;
import org.jooq.ConnectionProvider;
@ -1439,15 +1437,12 @@ public class DefaultConfiguration implements Configuration {
@Override
public String toString() {
StringWriter writer = new StringWriter();
JAXB.marshal(settings, writer);
return "DefaultConfiguration " +
"[\n\tconnected=" + (connectionProvider != null && !(connectionProvider instanceof NoConnectionProvider)) +
",\n\ttransactional=" + (transactionProvider != null && !(transactionProvider instanceof NoTransactionProvider)) +
",\n\tdialect=" + dialect +
",\n\tdata=" + data +
",\n\tsettings=\n\t\t" + writer.toString().trim().replace("\n", "\n\t\t") +
",\n\tsettings=\n\t\t" + settings +
"\n]";
}

View File

@ -42,7 +42,6 @@ import static org.jooq.impl.DSL.name;
import static org.jooq.impl.Tools.EMPTY_SORTFIELD;
import static org.jooq.util.xml.jaxb.TableConstraintType.PRIMARY_KEY;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@ -50,8 +49,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.JAXB;
import org.jooq.Catalog;
import org.jooq.Configuration;
import org.jooq.DataType;
@ -611,8 +608,6 @@ final class InformationSchemaMetaImpl extends AbstractMeta {
@Override
public String toString() {
StringWriter writer = new StringWriter();
JAXB.marshal(source, writer);
return writer.toString();
return "" + source;
}
}