From bd5154e6609979e70bfed59b2a55cdef19b95e62 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 6 Sep 2013 15:53:40 +0200 Subject: [PATCH] [#2726] Add Attachable.detach() --- jOOQ/src/main/java/org/jooq/Attachable.java | 19 ++-- .../jooq/impl/AbstractDelegatingQuery.java | 29 +++--- .../java/org/jooq/impl/AbstractQuery.java | 5 + .../java/org/jooq/impl/AbstractRoutine.java | 89 +++++++++-------- .../java/org/jooq/impl/AbstractStore.java | 23 +++-- .../main/java/org/jooq/impl/ResultImpl.java | 99 ++++++++++--------- 6 files changed, 148 insertions(+), 116 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Attachable.java b/jOOQ/src/main/java/org/jooq/Attachable.java index c9fc414f45..5236019baf 100644 --- a/jOOQ/src/main/java/org/jooq/Attachable.java +++ b/jOOQ/src/main/java/org/jooq/Attachable.java @@ -53,10 +53,10 @@ */ package org.jooq; -import java.io.Serializable; -import java.sql.Connection; - -import javax.sql.DataSource; +import java.io.Serializable; +import java.sql.Connection; + +import javax.sql.DataSource; /** * An object in jOOQ that can have an underlying {@link Configuration} attached @@ -80,11 +80,18 @@ import javax.sql.DataSource; public interface Attachable extends Serializable { /** - * Attach this object to a new {@link Configuration} + * Attach this object to a new {@link Configuration}. * * @param configuration A configuration or null, if you wish to * detach this Attachable from its previous * configuration. */ - void attach(Configuration configuration); + void attach(Configuration configuration); + + /** + * Detach this object from its current {@link Configuration}. + *

+ * This is the same as calling attach(null). + */ + void detach(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java index 6329ac8971..dca9e042ab 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDelegatingQuery.java @@ -53,18 +53,18 @@ */ package org.jooq.impl; -import java.util.List; -import java.util.Map; - -import org.jooq.AttachableInternal; -import org.jooq.BindContext; -import org.jooq.Clause; -import org.jooq.Configuration; -import org.jooq.Context; -import org.jooq.Param; -import org.jooq.Query; -import org.jooq.RenderContext; -import org.jooq.conf.ParamType; +import java.util.List; +import java.util.Map; + +import org.jooq.AttachableInternal; +import org.jooq.BindContext; +import org.jooq.Clause; +import org.jooq.Configuration; +import org.jooq.Context; +import org.jooq.Param; +import org.jooq.Query; +import org.jooq.RenderContext; +import org.jooq.conf.ParamType; /** * @author Lukas Eder @@ -143,6 +143,11 @@ abstract class AbstractDelegatingQuery extends AbstractQueryPar delegate.attach(configuration); } + @Override + public final void detach() { + delegate.detach(); + } + @Override public final int execute() { return delegate.execute(); diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java index ecb4bae165..741896a173 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java @@ -107,6 +107,11 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query, Attacha configuration = c; } + @Override + public final void detach() { + attach(null); + } + @Override public final Configuration configuration() { return configuration; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java index fc27c81217..e622f76a8a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java @@ -53,48 +53,48 @@ */ package org.jooq.impl; -import static org.jooq.Clause.FIELD; -import static org.jooq.Clause.FIELD_FUNCTION; -import static org.jooq.SQLDialect.POSTGRES; -import static org.jooq.SQLDialect.SQLSERVER; -import static org.jooq.impl.DSL.function; -import static org.jooq.impl.DSL.table; -import static org.jooq.impl.DSL.using; -import static org.jooq.impl.DSL.val; - -import java.sql.CallableStatement; -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Types; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.jooq.AggregateFunction; -import org.jooq.ArrayRecord; -import org.jooq.AttachableInternal; -import org.jooq.BindContext; -import org.jooq.Clause; -import org.jooq.Configuration; -import org.jooq.Context; -import org.jooq.DSLContext; -import org.jooq.DataType; -import org.jooq.ExecuteContext; -import org.jooq.ExecuteListener; -import org.jooq.Field; -import org.jooq.Package; -import org.jooq.Parameter; -import org.jooq.RenderContext; -import org.jooq.Result; -import org.jooq.Routine; -import org.jooq.Schema; -import org.jooq.UDTField; -import org.jooq.UDTRecord; -import org.jooq.tools.Convert; +import static org.jooq.Clause.FIELD; +import static org.jooq.Clause.FIELD_FUNCTION; +import static org.jooq.SQLDialect.POSTGRES; +import static org.jooq.SQLDialect.SQLSERVER; +import static org.jooq.impl.DSL.function; +import static org.jooq.impl.DSL.table; +import static org.jooq.impl.DSL.using; +import static org.jooq.impl.DSL.val; + +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.Types; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.jooq.AggregateFunction; +import org.jooq.ArrayRecord; +import org.jooq.AttachableInternal; +import org.jooq.BindContext; +import org.jooq.Clause; +import org.jooq.Configuration; +import org.jooq.Context; +import org.jooq.DSLContext; +import org.jooq.DataType; +import org.jooq.ExecuteContext; +import org.jooq.ExecuteListener; +import org.jooq.Field; +import org.jooq.Package; +import org.jooq.Parameter; +import org.jooq.RenderContext; +import org.jooq.Result; +import org.jooq.Routine; +import org.jooq.Schema; +import org.jooq.UDTField; +import org.jooq.UDTRecord; +import org.jooq.tools.Convert; /** * A common base class for stored procedures @@ -208,6 +208,11 @@ public abstract class AbstractRoutine extends AbstractQueryPart implements Ro public final void attach(Configuration c) { configuration = c; } + + @Override + public final void detach() { + attach(null); + } @Override public final Configuration configuration() { diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java b/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java index 0df08584a7..6b4a8b08ef 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractStore.java @@ -53,15 +53,15 @@ */ package org.jooq.impl; -import java.util.Arrays; -import java.util.List; - -import org.jooq.ArrayRecord; -import org.jooq.Attachable; -import org.jooq.AttachableInternal; -import org.jooq.Configuration; -import org.jooq.DSLContext; -import org.jooq.Record; +import java.util.Arrays; +import java.util.List; + +import org.jooq.ArrayRecord; +import org.jooq.Attachable; +import org.jooq.AttachableInternal; +import org.jooq.Configuration; +import org.jooq.DSLContext; +import org.jooq.Record; /** * A common base class for {@link Record} and {@link ArrayRecord} @@ -102,6 +102,11 @@ abstract class AbstractStore implements AttachableInternal { attachable.attach(c); } } + + @Override + public final void detach() { + attach(null); + } @Override public final Configuration configuration() { diff --git a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java index f345a39a0e..074fed76bf 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java @@ -54,53 +54,53 @@ package org.jooq.impl; -import static java.lang.Math.max; -import static java.lang.Math.min; -import static org.jooq.tools.StringUtils.abbreviate; -import static org.jooq.tools.StringUtils.leftPad; -import static org.jooq.tools.StringUtils.rightPad; - -import java.lang.reflect.Array; -import java.sql.ResultSet; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.ListIterator; -import java.util.Map; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.jooq.AttachableInternal; -import org.jooq.Configuration; -import org.jooq.Converter; -import org.jooq.EnumType; -import org.jooq.Field; -import org.jooq.Record; -import org.jooq.RecordHandler; -import org.jooq.RecordMapper; -import org.jooq.RecordType; -import org.jooq.Result; -import org.jooq.Row; -import org.jooq.Table; -import org.jooq.exception.InvalidResultException; -import org.jooq.tools.Convert; -import org.jooq.tools.StringUtils; -import org.jooq.tools.jdbc.MockResultSet; -import org.jooq.tools.json.JSONObject; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.xml.sax.Attributes; -import org.xml.sax.ContentHandler; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.AttributesImpl; +import static java.lang.Math.max; +import static java.lang.Math.min; +import static org.jooq.tools.StringUtils.abbreviate; +import static org.jooq.tools.StringUtils.leftPad; +import static org.jooq.tools.StringUtils.rightPad; + +import java.lang.reflect.Array; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.jooq.AttachableInternal; +import org.jooq.Configuration; +import org.jooq.Converter; +import org.jooq.EnumType; +import org.jooq.Field; +import org.jooq.Record; +import org.jooq.RecordHandler; +import org.jooq.RecordMapper; +import org.jooq.RecordType; +import org.jooq.Result; +import org.jooq.Row; +import org.jooq.Table; +import org.jooq.exception.InvalidResultException; +import org.jooq.tools.Convert; +import org.jooq.tools.StringUtils; +import org.jooq.tools.jdbc.MockResultSet; +import org.jooq.tools.json.JSONObject; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.Attributes; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.AttributesImpl; /** * @author Lukas Eder @@ -145,6 +145,11 @@ class ResultImpl implements Result, AttachableInternal { } } } + + @Override + public final void detach() { + attach(null); + } @Override public final Configuration configuration() {