You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2014/03/12 16:13:52 UTC
svn commit: r1576779 - in /cayenne/main/trunk/cayenne-server/src:
main/java/org/apache/cayenne/access/jdbc/
test/java/org/apache/cayenne/access/jdbc/
Author: aadamchik
Date: Wed Mar 12 15:13:51 2014
New Revision: 1576779
URL: http://svn.apache.org/r1576779
Log:
CAY-1907 RowReaderFactory
hiding DataRowPostProcessor in the reader factory
Modified:
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BaseSQLAction.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/DefaultRowReaderFactory.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowReaderFactory.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BaseSQLAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BaseSQLAction.java?rev=1576779&r1=1576778&r2=1576779&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BaseSQLAction.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BaseSQLAction.java Wed Mar 12 15:13:51 2014
@@ -21,11 +21,13 @@ package org.apache.cayenne.access.jdbc;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.Collections;
import java.util.List;
import org.apache.cayenne.access.OperationObserver;
import org.apache.cayenne.dba.JdbcAdapter;
import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.QueryMetadata;
import org.apache.cayenne.query.SQLAction;
@@ -69,7 +71,8 @@ public abstract class BaseSQLAction impl
QueryMetadata metadata = query.getMetaData(getEntityResolver());
- RowReader<?> rowReader = rowReaderFactory.createRowReader(descriptor, metadata, null);
+ RowReader<?> rowReader = rowReaderFactory.createRowReader(descriptor, metadata, adapter,
+ Collections.<ObjAttribute, ColumnDescriptor> emptyMap());
JDBCResultIterator resultReader = new JDBCResultIterator(null, resultSet, rowReader);
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java?rev=1576779&r1=1576778&r2=1576779&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java Wed Mar 12 15:13:51 2014
@@ -38,6 +38,7 @@ import org.apache.cayenne.dba.TypesMappi
import org.apache.cayenne.log.JdbcEventLogger;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.query.BatchQuery;
import org.apache.cayenne.query.DeleteBatchQuery;
import org.apache.cayenne.query.InsertBatchQuery;
@@ -286,7 +287,8 @@ public class BatchAction extends BaseSQL
}
RowReader<?> rowReader = rowReaderFactory.createRowReader(keyRowDescriptor,
- query.getMetaData(getEntityResolver()), null);
+ query.getMetaData(getEntityResolver()), adapter,
+ Collections.<ObjAttribute, ColumnDescriptor> emptyMap());
ResultIterator iterator = new JDBCResultIterator(null, keysRS, rowReader);
observer.nextGeneratedRows(query, iterator);
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/DefaultRowReaderFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/DefaultRowReaderFactory.java?rev=1576779&r1=1576778&r2=1576779&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/DefaultRowReaderFactory.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/DefaultRowReaderFactory.java Wed Mar 12 15:13:51 2014
@@ -27,8 +27,8 @@ import java.util.Map.Entry;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.jdbc.DataRowPostProcessor.ColumnOverride;
-import org.apache.cayenne.access.trans.SelectTranslator;
import org.apache.cayenne.access.types.ExtendedType;
+import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.ObjAttribute;
@@ -43,10 +43,11 @@ import org.apache.cayenne.reflect.ClassD
public class DefaultRowReaderFactory implements RowReaderFactory {
@Override
- public RowReader<?> createRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata,
- SelectTranslator translator) {
+ public RowReader<?> createRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter,
+ Map<ObjAttribute, ColumnDescriptor> attributeOverrides) {
- PostprocessorFactory postProcessorFactory = new PostprocessorFactory(translator, descriptor, queryMetadata);
+ PostprocessorFactory postProcessorFactory = new PostprocessorFactory(descriptor, queryMetadata, adapter,
+ attributeOverrides);
List<Object> rsMapping = queryMetadata.getResultSetMapping();
if (rsMapping == null) {
@@ -113,15 +114,18 @@ public class DefaultRowReaderFactory imp
private class PostprocessorFactory {
private QueryMetadata queryMetadata;
- private SelectTranslator translator;
+ private DbAdapter adapter;
+ private Map<ObjAttribute, ColumnDescriptor> attributeOverrides;
private RowDescriptor rowDescriptor;
private boolean created;
private DataRowPostProcessor postProcessor;
- PostprocessorFactory(SelectTranslator translator, RowDescriptor rowDescriptor, QueryMetadata queryMetadata) {
+ PostprocessorFactory(RowDescriptor rowDescriptor, QueryMetadata queryMetadata, DbAdapter adapter,
+ Map<ObjAttribute, ColumnDescriptor> attributeOverrides) {
this.rowDescriptor = rowDescriptor;
- this.translator = translator;
+ this.adapter = adapter;
+ this.attributeOverrides = attributeOverrides;
this.queryMetadata = queryMetadata;
}
@@ -137,13 +141,6 @@ public class DefaultRowReaderFactory imp
private DataRowPostProcessor create() {
- // TODO: ugly... ideally we should care not about the translator...
-
- if (translator == null) {
- return null;
- }
-
- Map<ObjAttribute, ColumnDescriptor> attributeOverrides = translator.getAttributeOverrides();
if (attributeOverrides.isEmpty()) {
return null;
}
@@ -180,8 +177,7 @@ public class DefaultRowReaderFactory imp
continue;
}
- ExtendedType converter = translator.getAdapter().getExtendedTypes()
- .getRegisteredType(attribute.getType());
+ ExtendedType converter = adapter.getExtendedTypes().getRegisteredType(attribute.getType());
Collection<ColumnOverride> overrides = columnOverrides.get(entity.getName());
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowReaderFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowReaderFactory.java?rev=1576779&r1=1576778&r2=1576779&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowReaderFactory.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/RowReaderFactory.java Wed Mar 12 15:13:51 2014
@@ -18,7 +18,10 @@
****************************************************************/
package org.apache.cayenne.access.jdbc;
-import org.apache.cayenne.access.trans.SelectTranslator;
+import java.util.Map;
+
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.query.QueryMetadata;
/**
@@ -28,5 +31,6 @@ import org.apache.cayenne.query.QueryMet
*/
public interface RowReaderFactory {
- RowReader<?> createRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, SelectTranslator translator);
+ RowReader<?> createRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter,
+ Map<ObjAttribute, ColumnDescriptor> attributeOverrides);
}
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java?rev=1576779&r1=1576778&r2=1576779&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java Wed Mar 12 15:13:51 2014
@@ -199,7 +199,8 @@ public class SQLTemplateAction implement
ExtendedTypeMap types = getAdapter().getExtendedTypes();
RowDescriptorBuilder builder = configureRowDescriptorBuilder(compiled, resultSet);
- RowReader<?> rowReader = rowReaderFactory.createRowReader(builder.getDescriptor(types), queryMetadata, null);
+ RowReader<?> rowReader = rowReaderFactory.createRowReader(builder.getDescriptor(types), queryMetadata, adapter,
+ Collections.<ObjAttribute, ColumnDescriptor> emptyMap());
JDBCResultIterator result = new JDBCResultIterator(statement, resultSet, rowReader);
Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java?rev=1576779&r1=1576778&r2=1576779&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java Wed Mar 12 15:13:51 2014
@@ -92,7 +92,7 @@ public class SelectAction extends BaseSQ
RowDescriptor descriptor = new RowDescriptorBuilder().setColumns(translator.getResultColumns()).getDescriptor(
getAdapter().getExtendedTypes());
- RowReader<?> rowReader = rowReaderFactory.createRowReader(descriptor, md, translator);
+ RowReader<?> rowReader = rowReaderFactory.createRowReader(descriptor, md, adapter, translator.getAttributeOverrides());
JDBCResultIterator workerIterator = new JDBCResultIterator(prepStmt, rs, rowReader);
Modified: cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java?rev=1576779&r1=1576778&r2=1576779&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java (original)
+++ cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java Wed Mar 12 15:13:51 2014
@@ -23,11 +23,14 @@ import static org.mockito.Mockito.mock;
import java.sql.Connection;
import java.sql.Statement;
+import java.util.Collections;
import junit.framework.TestCase;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.access.types.ExtendedTypeMap;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.query.MockQueryMetadata;
import com.mockrunner.mock.jdbc.MockConnection;
@@ -41,9 +44,10 @@ public class JDBCResultIteratorTest exte
Statement s = new MockStatement(c);
MockResultSet rs = new MockResultSet("rs");
rs.addColumn("a", new Object[] { "1", "2", "3" });
-
+
RowDescriptor descriptor = new RowDescriptorBuilder().setResultSet(rs).getDescriptor(new ExtendedTypeMap());
- RowReader<?> rowReader = new DefaultRowReaderFactory().createRowReader(descriptor, new MockQueryMetadata(), null);
+ RowReader<?> rowReader = new DefaultRowReaderFactory().createRowReader(descriptor, new MockQueryMetadata(),
+ mock(DbAdapter.class), Collections.<ObjAttribute, ColumnDescriptor> emptyMap());
JDBCResultIterator it = new JDBCResultIterator(s, rs, rowReader);