From 8abdc204657236c18ae8a73e292b2984cca5531f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 18 Mar 2013 21:08:11 +0100 Subject: [PATCH] [#2346] org.jooq.Meta's generated Schema and other objects are Serializable, but their enclosed Meta instance is not --- .../src/main/java/org/jooq/impl/MetaImpl.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java index b674045f70..08000ed678 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java @@ -38,6 +38,7 @@ package org.jooq.impl; import static org.jooq.SQLDialect.SQLITE; import static org.jooq.impl.Factory.fieldByName; +import java.io.Serializable; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.ArrayList; @@ -59,12 +60,22 @@ import org.jooq.exception.DataAccessException; import org.jooq.exception.SQLDialectNotSupportedException; /** + * An implementation of the public {@link Meta} type. + *

+ * This implementation implements {@link Serializable}, without taking care of + * properly deserialising the referenced executor. + * * @author Lukas Eder */ -class MetaImpl implements Meta { +class MetaImpl implements Meta, Serializable { - private final Executor executor; - private transient DatabaseMetaData meta; + /** + * Generated UID + */ + private static final long serialVersionUID = 3582980783173033809L; + + private final Executor executor; + private transient volatile DatabaseMetaData meta; MetaImpl(Executor executor) { this.executor = executor; @@ -166,10 +177,10 @@ class MetaImpl implements Meta { /** * Generated UID */ - private static final long serialVersionUID = -2621899850912554198L; + private static final long serialVersionUID = -2621899850912554198L; - private transient List> tableCache; - private transient Map> columnCache; + private transient volatile List> tableCache; + private transient volatile Map> columnCache; MetaSchema(String name) { super(name);