diff --git a/jOOQ/src/main/java/org/jooq/RecordMapper.java b/jOOQ/src/main/java/org/jooq/RecordMapper.java index babfdfca29..e45b7c1b9d 100644 --- a/jOOQ/src/main/java/org/jooq/RecordMapper.java +++ b/jOOQ/src/main/java/org/jooq/RecordMapper.java @@ -37,7 +37,19 @@ package org.jooq; /** * A RecordMapper is a mapper that can receive {@link Record} * objects, when fetching data from the database, transforming them into a - * custom type <E> + * custom type <E>. + *

+ * RecordMapper is used behind the scenes in methods like + * {@link ResultQuery#fetchInto(Class)}, {@link Result#into(Class)}, + * {@link Record#into(Class)} and other methods called into(Class), + * where the argument class is a Class of type E. + *

+ * The default RecordMapper behaviour in the context of a + * {@link Configuration} can be overridden through that + * configuration's {@link Configuration#recordMapperProvider()} + * SPI. + *

+ * The inverse operation is modelled by {@link RecordUnmapper}. * * @author Lukas Eder */ diff --git a/jOOQ/src/main/java/org/jooq/RecordUnmapper.java b/jOOQ/src/main/java/org/jooq/RecordUnmapper.java new file mode 100644 index 0000000000..46ddf4a4cb --- /dev/null +++ b/jOOQ/src/main/java/org/jooq/RecordUnmapper.java @@ -0,0 +1,70 @@ +/* + * 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. + * + * Other licenses: + * ----------------------------------------------------------------------------- + * Commercial licenses for this work are available. These replace the above + * ASL 2.0 and offer limited warranties, support, maintenance, and commercial + * database integrations. + * + * For more information, please visit: http://www.jooq.org/licenses + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +package org.jooq; + +import org.jooq.exception.MappingException; + +/** + * A RecordUnmapper is a mapper that can receive user objects and + * convert them back to {@link Record}. + *

+ * RecordUnmapper is used behind the scenes in methods like + * {@link DSLContext#newRecord(Table, Object)}, {@link Record#from(Object)} and + * other methods called from(Object), where the argument object is + * an object of type E. + *

+ * The default RecordUnmapper behaviour in the context of a + * {@link Configuration} can be overridden through that + * configuration's {@link Configuration#recordUnmapperProvider()} + * SPI. + *

+ * The inverse operation is modelled by {@link RecordMapper}. + * + * @author Lukas Eder + */ + +@FunctionalInterface + +public interface RecordUnmapper { + + /** + * A callback method indicating that the next record has been fetched. + * + * @param source The source object to copy data from. This is never null. + * @throws MappingException wrapping any reflection exception that might + * have occurred while mapping records. + */ + R map(E source) throws MappingException; +}