Author: aadamchik
Date: Thu Mar 13 11:04:36 2014
New Revision: 1577108

URL: http://svn.apache.org/r1577108
Log:
CAY-1908 Refactor all SQLActions to work with DataNode

(going deeper - refactoring SelectTranslator)

Modified:
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseActionBuilder.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseActionBuilder.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectAction.java
    
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java
    
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/OrderingTranslatorTest.java
    
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QualifierTranslatorTest.java
    
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QueryAssemblerTest.java
    
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
    
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java

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=1577108&r1=1577107&r2=1577108&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
 Thu Mar 13 11:04:36 2014
@@ -53,13 +53,7 @@ public class SelectAction extends BaseSQ
     }
 
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new SelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new SelectTranslator(query, dataNode, connection);
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
 Thu Mar 13 11:04:36 2014
@@ -25,9 +25,9 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.log.JdbcEventLogger;
-import org.apache.cayenne.log.NoopJdbcEventLogger;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbRelationship;
@@ -56,7 +56,8 @@ public abstract class QueryAssembler {
     protected List<Object> values = new ArrayList<Object>();
 
     /**
-     * PreparedStatement attributes matching entries in <code>values</code> 
list.
+     * PreparedStatement attributes matching entries in <code>values</code>
+     * list.
      */
     protected List<DbAttribute> attributes = new ArrayList<DbAttribute>();
 
@@ -64,9 +65,17 @@ public abstract class QueryAssembler {
      * The index parameter will be inserted at in parameter list
      */
     protected int parameterIndex;
-    
-    public QueryAssembler() {
-        this.logger = NoopJdbcEventLogger.getInstance();
+
+    /**
+     * @since 3.2
+     */
+    public QueryAssembler(Query query, DataNode dataNode, Connection 
connection) {
+        this.logger = dataNode.getJdbcEventLogger();
+        this.entityResolver = dataNode.getEntityResolver();
+        this.adapter = dataNode.getAdapter();
+        this.query = query;
+        this.connection = connection;
+        this.queryMetadata = query.getMetaData(entityResolver);
     }
 
     /**
@@ -97,26 +106,6 @@ public abstract class QueryAssembler {
         return queryMetadata;
     }
 
-    public void setQuery(Query query) {
-        this.query = query;
-        refreshMetadata();
-    }
-
-    public void setConnection(Connection connection) {
-        this.connection = connection;
-    }
-
-    public void setAdapter(DbAdapter adapter) {
-        this.adapter = adapter;
-    }
-    
-    /**
-     * @since 3.1
-     */
-    public void setJdbcEventLogger(JdbcEventLogger logger) {
-        this.logger = logger;
-    }
-    
     /**
      * @since 3.1
      */
@@ -124,21 +113,6 @@ public abstract class QueryAssembler {
         return logger;
     }
 
-    public void setEntityResolver(EntityResolver entityResolver) {
-        this.entityResolver = entityResolver;
-        refreshMetadata();
-    }
-
-    private void refreshMetadata() {
-        if (query != null && entityResolver != null) {
-            queryMetadata = query.getMetaData(entityResolver);
-        }
-        else {
-            queryMetadata = null;
-        }
-        cachedSqlString = null;
-    }
-
     public DbEntity getRootDbEntity() {
         return queryMetadata.getDbEntity();
     }
@@ -148,15 +122,16 @@ public abstract class QueryAssembler {
     }
 
     /**
-     * A callback invoked by a child qualifier or ordering processor allowing 
query
-     * assembler to reset its join stack.
+     * A callback invoked by a child qualifier or ordering processor allowing
+     * query assembler to reset its join stack.
      * 
      * @since 3.0
      */
     public abstract void resetJoinStack();
 
     /**
-     * Returns an alias of the table which is currently at the top of the join 
stack.
+     * Returns an alias of the table which is currently at the top of the join
+     * stack.
      * 
      * @since 3.0
      */
@@ -167,21 +142,18 @@ public abstract class QueryAssembler {
      * 
      * @since 3.0
      */
-    public abstract void dbRelationshipAdded(
-            DbRelationship relationship,
-            JoinType joinType,
-            String joinSplitAlias);
+    public abstract void dbRelationshipAdded(DbRelationship relationship, 
JoinType joinType, String joinSplitAlias);
 
     /**
-     * Translates query into sql string. This is a workhorse method of 
QueryAssembler. It
-     * is called internally from <code>createStatement</code>. Usually there 
is no need to
-     * invoke it explicitly.
+     * Translates query into sql string. This is a workhorse method of
+     * QueryAssembler. It is called internally from 
<code>createStatement</code>
+     * . Usually there is no need to invoke it explicitly.
      */
     public abstract String createSqlString() throws Exception;
 
     /**
-     * Returns <code>true</code> if table aliases are supported. Default 
implementation
-     * returns false.
+     * Returns <code>true</code> if table aliases are supported. Default
+     * implementation returns false.
      */
     public boolean supportsTableAliases() {
         return false;
@@ -190,8 +162,10 @@ public abstract class QueryAssembler {
     /**
      * Registers <code>anObject</code> as a PreparedStatement parameter.
      * 
-     * @param anObject object that represents a value of DbAttribute
-     * @param dbAttr DbAttribute being processed.
+     * @param anObject
+     *            object that represents a value of DbAttribute
+     * @param dbAttr
+     *            DbAttribute being processed.
      */
     public void addToParamList(DbAttribute dbAttr, Object anObject) {
         attributes.add(parameterIndex, dbAttr);
@@ -211,8 +185,9 @@ public abstract class QueryAssembler {
     }
 
     /**
-     * Initializes prepared statements with collected parameters. Called 
internally from
-     * "createStatement". Cayenne users shouldn't normally call it directly.
+     * Initializes prepared statements with collected parameters. Called
+     * internally from "createStatement". Cayenne users shouldn't normally call
+     * it directly.
      */
     protected void initStatement(PreparedStatement stmt) throws Exception {
         if (values != null && values.size() > 0) {
@@ -222,16 +197,15 @@ public abstract class QueryAssembler {
 
                 DbAttribute attr = attributes.get(i);
 
-                // null DbAttributes are a result of inferior qualifier 
processing
+                // null DbAttributes are a result of inferior qualifier
+                // processing
                 // (qualifier can't map parameters to DbAttributes and 
therefore
                 // only supports standard java types now)
                 // hence, a special moronic case here:
                 if (attr == null) {
                     stmt.setObject(i + 1, val);
-                }
-                else {
-                    adapter.bindParameter(stmt, val, i + 1, attr.getType(), 
attr
-                            .getScale());
+                } else {
+                    adapter.bindParameter(stmt, val, i + 1, attr.getType(), 
attr.getScale());
                 }
             }
         }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.access.trans;
 
+import java.sql.Connection;
 import java.sql.Types;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -30,6 +31,7 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.jdbc.ColumnDescriptor;
 import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.exp.Expression;
@@ -46,6 +48,7 @@ import org.apache.cayenne.map.ObjRelatio
 import org.apache.cayenne.map.PathComponent;
 import org.apache.cayenne.query.PrefetchSelectQuery;
 import org.apache.cayenne.query.PrefetchTreeNode;
+import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.reflect.ArcProperty;
 import org.apache.cayenne.reflect.AttributeProperty;
@@ -78,6 +81,13 @@ public class SelectTranslator extends Qu
     }
 
     JoinStack joinStack;
+    
+    /**
+     * @since 3.2
+     */
+    public SelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
 
     public JoinStack getJoinStack() {
         if (joinStack == null) {

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2QualifierTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -32,8 +32,6 @@ import org.apache.cayenne.exp.parser.AST
 import org.apache.cayenne.exp.parser.SimpleNode;
 import org.apache.cayenne.map.DbAttribute;
 
-/**
- */
 public class DB2QualifierTranslator extends TrimmingQualifierTranslator {
 
     public DB2QualifierTranslator(QueryAssembler queryAssembler, String 
trimFunction) {

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseActionBuilder.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseActionBuilder.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseActionBuilder.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseActionBuilder.java
 Thu Mar 13 11:04:36 2014
@@ -40,13 +40,7 @@ class FrontBaseActionBuilder extends Jdb
 
             @Override
             protected SelectTranslator createTranslator(Connection connection) 
{
-                SelectTranslator translator = new FrontBaseSelectTranslator();
-                translator.setQuery(query);
-                translator.setAdapter(dataNode.getAdapter());
-                translator.setEntityResolver(dataNode.getEntityResolver());
-                translator.setConnection(connection);
-                translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-                return translator;
+                return new FrontBaseSelectTranslator(query, dataNode, 
connection);
             }
         };
     }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -19,7 +19,11 @@
 
 package org.apache.cayenne.dba.frontbase;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 
 /**
  * @since 1.2
@@ -28,6 +32,13 @@ class FrontBaseSelectTranslator extends 
 
     static final String SELECT_PREFIX = "SELECT";
 
+    /**
+     * @since 3.2
+     */
+    public FrontBaseSelectTranslator(Query query, DataNode dataNode, 
Connection connection) {
+        super(query, dataNode, connection);
+    }
+
     @Override
     protected void appendLimitAndOffsetClauses(StringBuilder buffer) {
 

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectAction.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectAction.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectAction.java
 Thu Mar 13 11:04:36 2014
@@ -41,12 +41,6 @@ class HSQLSelectAction extends SelectAct
 
     @Override
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new HSQLSelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new HSQLSelectTranslator(query, dataNode, connection);
     }
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -19,12 +19,23 @@
 
 package org.apache.cayenne.dba.hsqldb;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 
 /**
  * @since 1.2
  */
 class HSQLSelectTranslator extends SelectTranslator {
+    
+    /**
+     * @since 3.2
+     */
+    public HSQLSelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
 
     @Override
     protected void appendLimitAndOffsetClauses(StringBuilder buffer) {

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectAction.java
 Thu Mar 13 11:04:36 2014
@@ -38,12 +38,6 @@ public class IngresSelectAction extends 
 
     @Override
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new IngresSelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new IngresSelectTranslator(query, dataNode, connection);
     }
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -18,9 +18,20 @@
  ****************************************************************/
 package org.apache.cayenne.dba.ingres;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 
 public class IngresSelectTranslator extends SelectTranslator {
+    
+    /**
+     * @since 3.2
+     */
+    public IngresSelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
 
     @Override
     protected void appendLimitAndOffsetClauses(StringBuilder buffer) {

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectAction.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectAction.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectAction.java
 Thu Mar 13 11:04:36 2014
@@ -41,12 +41,6 @@ class MySQLSelectAction extends SelectAc
 
     @Override
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new MySQLSelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new MySQLSelectTranslator(query, dataNode, connection);
     }
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -19,13 +19,24 @@
 
 package org.apache.cayenne.dba.mysql;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 
 /**
  * @since 1.2
  */
 class MySQLSelectTranslator extends SelectTranslator {
 
+    /**
+     * @since 3.2
+     */
+    public MySQLSelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
+
     @Override
     protected void appendLimitAndOffsetClauses(StringBuilder buffer) {
         int offset = queryMetadata.getFetchOffset();
@@ -34,7 +45,8 @@ class MySQLSelectTranslator extends Sele
         if (offset > 0 || limit > 0) {
             buffer.append(" LIMIT ");
 
-            // both OFFSET and LIMIT must be present, so come up with defaults 
if one of
+            // both OFFSET and LIMIT must be present, so come up with defaults
+            // if one of
             // them is not set by the user
             if (limit == 0) {
                 limit = Integer.MAX_VALUE;

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseActionBuilder.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseActionBuilder.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseActionBuilder.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseActionBuilder.java
 Thu Mar 13 11:04:36 2014
@@ -43,13 +43,7 @@ class OpenBaseActionBuilder extends Jdbc
 
             @Override
             protected SelectTranslator createTranslator(Connection connection) 
{
-                SelectTranslator translator = new OpenBaseSelectTranslator();
-                translator.setQuery(query);
-                translator.setAdapter(dataNode.getAdapter());
-                translator.setEntityResolver(dataNode.getEntityResolver());
-                translator.setConnection(connection);
-                translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-                return translator;
+                return new OpenBaseSelectTranslator(query, dataNode, 
connection);
             }
         };
     }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -19,14 +19,25 @@
 
 package org.apache.cayenne.dba.openbase;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.JoinStack;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 
 /**
  * @since 1.2
  */
 class OpenBaseSelectTranslator extends SelectTranslator {
 
+    /**
+     * @since 3.2
+     */
+    public OpenBaseSelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
+    
     @Override
     protected JoinStack createJoinStack() {
         return new OpenBaseJoinStack(getAdapter(), queryMetadata.getDataMap(), 
this);

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java
 Thu Mar 13 11:04:36 2014
@@ -35,12 +35,6 @@ class Oracle8SelectAction extends Oracle
 
     @Override
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new Oracle8SelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new Oracle8SelectTranslator(query, dataNode, connection);
     }
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -18,7 +18,11 @@
  ****************************************************************/
 package org.apache.cayenne.dba.oracle;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.JoinStack;
+import org.apache.cayenne.query.Query;
 
 /**
  * @since 3.0
@@ -26,6 +30,13 @@ import org.apache.cayenne.access.trans.J
 class Oracle8SelectTranslator extends OracleSelectTranslator {
 
     /**
+     * @since 3.2
+     */
+    public Oracle8SelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
+    
+    /**
      * Returns an old style joint stack for Oracle8 that does not support 
explicit join
      * syntax.
      */

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectAction.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectAction.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectAction.java
 Thu Mar 13 11:04:36 2014
@@ -37,13 +37,7 @@ class OracleSelectAction extends SelectA
 
     @Override
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new OracleSelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new OracleSelectTranslator(query, dataNode, connection);
     }
 
     @Override

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -19,16 +19,26 @@
 
 package org.apache.cayenne.dba.oracle;
 
+import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.util.List;
 
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 
 /**
  * Select translator that implements Oracle-specific optimizations.
  * 
  */
 class OracleSelectTranslator extends SelectTranslator {
+    
+    /**
+     * @since 3.2
+     */
+    public OracleSelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
 
     @Override
     protected void appendLimitAndOffsetClauses(StringBuilder buffer) {

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java
 Thu Mar 13 11:04:36 2014
@@ -41,12 +41,6 @@ class PostgresSelectAction extends Selec
 
     @Override
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new PostgresSelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new PostgresSelectTranslator(query, dataNode, connection);
     }
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -19,13 +19,24 @@
 
 package org.apache.cayenne.dba.postgres;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 
 /**
  * @since 1.2
  */
 class PostgresSelectTranslator extends SelectTranslator {
 
+    /**
+     * @since 3.2
+     */
+    public PostgresSelectTranslator(Query query, DataNode dataNode, Connection 
connection) {
+        super(query, dataNode, connection);
+    }
+    
     @Override
     protected void appendLimitAndOffsetClauses(StringBuilder buffer) {
 

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectAction.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectAction.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectAction.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectAction.java
 Thu Mar 13 11:04:36 2014
@@ -33,13 +33,7 @@ public class SQLServerSelectAction exten
 
     @Override
     protected SelectTranslator createTranslator(Connection connection) {
-        SelectTranslator translator = new SQLServerSelectTranslator();
-        translator.setQuery(query);
-        translator.setAdapter(dataNode.getAdapter());
-        translator.setEntityResolver(dataNode.getEntityResolver());
-        translator.setConnection(connection);
-        translator.setJdbcEventLogger(dataNode.getJdbcEventLogger());
-        return translator;
+        return new SQLServerSelectTranslator(query, dataNode, connection);
     }
 
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSelectTranslator.java
 Thu Mar 13 11:04:36 2014
@@ -18,11 +18,22 @@
  ****************************************************************/
 package org.apache.cayenne.dba.sqlserver;
 
+import java.sql.Connection;
+
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.QueryMetadata;
 
 public class SQLServerSelectTranslator extends SelectTranslator {
        
+    /**
+     * @since 3.2
+     */
+    public SQLServerSelectTranslator(Query query, DataNode dataNode, 
Connection connection) {
+        super(query, dataNode, connection);
+    }
+    
     @Override
     protected void appendLimitAndOffsetClauses(StringBuilder buffer) {
         QueryMetadata metadata = getQuery().getMetaData(getEntityResolver());

Modified: 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/OrderingTranslatorTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/OrderingTranslatorTest.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/OrderingTranslatorTest.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/OrderingTranslatorTest.java
 Thu Mar 13 11:04:36 2014
@@ -19,6 +19,8 @@
 
 package org.apache.cayenne.access.trans;
 
+import java.sql.Connection;
+
 import org.apache.cayenne.TranslationCase;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.di.Inject;
@@ -26,6 +28,7 @@ import org.apache.cayenne.query.SelectQu
 import org.apache.cayenne.query.SortOrder;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
@@ -34,6 +37,21 @@ public class OrderingTranslatorTest exte
     @Inject
     private DataNode node;
 
+    @Inject
+    private ServerCaseDataSourceFactory dataSourceFactory;
+
+    private Connection connection;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        this.connection = 
dataSourceFactory.getSharedDataSource().getConnection();
+    }
+
+    @Override
+    protected void tearDownBeforeInjection() throws Exception {
+        connection.close();
+    }
+
     /**
      * Tests ascending ordering on string attribute.
      */
@@ -41,23 +59,15 @@ public class OrderingTranslatorTest exte
         SelectQuery q = new SelectQuery(Artist.class);
         q.addOrdering("artistName", SortOrder.ASCENDING);
 
-        TstQueryAssembler qa = new TstQueryAssembler(node, q);
+        TstQueryAssembler qa = new TstQueryAssembler(q, node, connection);
+
+        TranslationCase tstCase = new TranslationCase("Artist", null, 
"ta.ARTIST_NAME");
+
+        StringBuilder out = new StringBuilder();
+        new OrderingTranslator(qa).appendPart(out);
 
-        try {
-            TranslationCase tstCase = new TranslationCase(
-                    "Artist",
-                    null,
-                    "ta.ARTIST_NAME");
-
-            StringBuilder out = new StringBuilder();
-            new OrderingTranslator(qa).appendPart(out);
-
-            assertTrue(out.length() > 0);
-            tstCase.assertTranslatedWell(out.toString());
-        }
-        finally {
-            qa.dispose();
-        }
+        assertTrue(out.length() > 0);
+        tstCase.assertTranslatedWell(out.toString());
     }
 
     /**
@@ -67,23 +77,15 @@ public class OrderingTranslatorTest exte
         SelectQuery q = new SelectQuery(Artist.class);
         q.addOrdering("artistName", SortOrder.DESCENDING);
 
-        TstQueryAssembler qa = new TstQueryAssembler(node, q);
+        TstQueryAssembler qa = new TstQueryAssembler(q, node, connection);
 
-        try {
-            TranslationCase tstCase = new TranslationCase(
-                    "Artist",
-                    null,
-                    "ta.ARTIST_NAME DESC");
-
-            StringBuilder out = new StringBuilder();
-            new OrderingTranslator(qa).appendPart(out);
-
-            assertTrue(out.length() > 0);
-            tstCase.assertTranslatedWell(out.toString());
-        }
-        finally {
-            qa.dispose();
-        }
+        TranslationCase tstCase = new TranslationCase("Artist", null, 
"ta.ARTIST_NAME DESC");
+
+        StringBuilder out = new StringBuilder();
+        new OrderingTranslator(qa).appendPart(out);
+
+        assertTrue(out.length() > 0);
+        tstCase.assertTranslatedWell(out.toString());
     }
 
     /**
@@ -93,25 +95,17 @@ public class OrderingTranslatorTest exte
         SelectQuery q = new SelectQuery(Artist.class);
         q.addOrdering("artistName", SortOrder.ASCENDING_INSENSITIVE);
 
-        TstQueryAssembler qa = new TstQueryAssembler(node, q);
+        TstQueryAssembler qa = new TstQueryAssembler(q, node, connection);
+
+        TranslationCase tstCase = new TranslationCase("Artist", null, 
"UPPER(ta.ARTIST_NAME)");
 
-        try {
-            TranslationCase tstCase = new TranslationCase(
-                    "Artist",
-                    null,
-                    "UPPER(ta.ARTIST_NAME)");
-
-            StringBuilder out = new StringBuilder();
-            new OrderingTranslator(qa).appendPart(out);
-
-            assertTrue(out.length() > 0);
-            String orderBySql = out.toString();
-            assertTrue(orderBySql.contains("UPPER("));
-            tstCase.assertTranslatedWell(orderBySql);
-        }
-        finally {
-            qa.dispose();
-        }
+        StringBuilder out = new StringBuilder();
+        new OrderingTranslator(qa).appendPart(out);
+
+        assertTrue(out.length() > 0);
+        String orderBySql = out.toString();
+        assertTrue(orderBySql.contains("UPPER("));
+        tstCase.assertTranslatedWell(orderBySql);
     }
 
     public void testDoTranslation5() throws Exception {
@@ -119,31 +113,23 @@ public class OrderingTranslatorTest exte
         q.addOrdering("artistName", SortOrder.DESCENDING_INSENSITIVE);
         q.addOrdering("paintingArray.estimatedPrice", SortOrder.ASCENDING);
 
-        TstQueryAssembler qa = new TstQueryAssembler(node, q);
+        TstQueryAssembler qa = new TstQueryAssembler(q, node, connection);
+
+        TranslationCase tstCase = new TranslationCase("Artist", null, 
"UPPER(ta.ARTIST_NAME) DESC, ta.ESTIMATED_PRICE");
+
+        StringBuilder out = new StringBuilder();
+        new OrderingTranslator(qa).appendPart(out);
 
-        try {
-            TranslationCase tstCase = new TranslationCase(
-                    "Artist",
-                    null,
-                    "UPPER(ta.ARTIST_NAME) DESC, ta.ESTIMATED_PRICE");
-
-            StringBuilder out = new StringBuilder();
-            new OrderingTranslator(qa).appendPart(out);
-
-            assertTrue(out.length() > 0);
-            String orderBySql = out.toString();
-
-            // Check there is an UPPER modifier
-            int indexOfUpper = orderBySql.indexOf("UPPER(");
-            assertTrue(indexOfUpper != -1);
-
-            // and ensure there is only ONE upper modifier
-            assertTrue(orderBySql.indexOf("UPPER(", indexOfUpper + 1) == -1);
-            tstCase.assertTranslatedWell(orderBySql);
-        }
-        finally {
-            qa.dispose();
-        }
+        assertTrue(out.length() > 0);
+        String orderBySql = out.toString();
+
+        // Check there is an UPPER modifier
+        int indexOfUpper = orderBySql.indexOf("UPPER(");
+        assertTrue(indexOfUpper != -1);
+
+        // and ensure there is only ONE upper modifier
+        assertTrue(orderBySql.indexOf("UPPER(", indexOfUpper + 1) == -1);
+        tstCase.assertTranslatedWell(orderBySql);
     }
 
     public void testDoTranslation6() throws Exception {
@@ -151,32 +137,25 @@ public class OrderingTranslatorTest exte
         q.addOrdering("artistName", SortOrder.ASCENDING_INSENSITIVE);
         q.addOrdering("paintingArray.estimatedPrice", 
SortOrder.ASCENDING_INSENSITIVE);
 
-        TstQueryAssembler qa = new TstQueryAssembler(node, q);
+        TstQueryAssembler qa = new TstQueryAssembler(q, node, connection);
+
+        TranslationCase tstCase = new TranslationCase("Artist", null,
+                "UPPER(ta.ARTIST_NAME), UPPER(ta.ESTIMATED_PRICE)");
 
-        try {
-            TranslationCase tstCase = new TranslationCase(
-                    "Artist",
-                    null,
-                    "UPPER(ta.ARTIST_NAME), UPPER(ta.ESTIMATED_PRICE)");
-
-            StringBuilder out = new StringBuilder();
-            new OrderingTranslator(qa).appendPart(out);
-
-            assertTrue(out.length() > 0);
-            String orderBySql = out.toString();
-
-            // Check there is at least one UPPER modifier
-            int indexOfUpper = orderBySql.indexOf("UPPER(");
-            assertTrue(indexOfUpper != -1);
-
-            // and ensure there is another after it
-            assertTrue(orderBySql.indexOf("UPPER(", indexOfUpper + 1) != -1);
-
-            tstCase.assertTranslatedWell(orderBySql);
-        }
-        finally {
-            qa.dispose();
-        }
+        StringBuilder out = new StringBuilder();
+        new OrderingTranslator(qa).appendPart(out);
+
+        assertTrue(out.length() > 0);
+        String orderBySql = out.toString();
+
+        // Check there is at least one UPPER modifier
+        int indexOfUpper = orderBySql.indexOf("UPPER(");
+        assertTrue(indexOfUpper != -1);
+
+        // and ensure there is another after it
+        assertTrue(orderBySql.indexOf("UPPER(", indexOfUpper + 1) != -1);
+
+        tstCase.assertTranslatedWell(orderBySql);
     }
 
     public void testDoTranslation3() throws Exception {
@@ -185,23 +164,15 @@ public class OrderingTranslatorTest exte
         q.addOrdering("artistName", SortOrder.DESCENDING);
         q.addOrdering("paintingArray.estimatedPrice", SortOrder.ASCENDING);
 
-        TstQueryAssembler qa = new TstQueryAssembler(node, q);
+        TstQueryAssembler qa = new TstQueryAssembler(q, node, connection);
+
+        TranslationCase tstCase = new TranslationCase("Artist", null, 
"ta.ARTIST_NAME DESC, ta.ESTIMATED_PRICE");
+
+        StringBuilder out = new StringBuilder();
+        new OrderingTranslator(qa).appendPart(out);
 
-        try {
-            TranslationCase tstCase = new TranslationCase(
-                    "Artist",
-                    null,
-                    "ta.ARTIST_NAME DESC, ta.ESTIMATED_PRICE");
-
-            StringBuilder out = new StringBuilder();
-            new OrderingTranslator(qa).appendPart(out);
-
-            assertTrue(out.length() > 0);
-            String orderBySql = out.toString();
-            tstCase.assertTranslatedWell(orderBySql);
-        }
-        finally {
-            qa.dispose();
-        }
+        assertTrue(out.length() > 0);
+        String orderBySql = out.toString();
+        tstCase.assertTranslatedWell(orderBySql);
     }
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QualifierTranslatorTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QualifierTranslatorTest.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QualifierTranslatorTest.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QualifierTranslatorTest.java
 Thu Mar 13 11:04:36 2014
@@ -19,6 +19,8 @@
 
 package org.apache.cayenne.access.trans;
 
+import java.sql.Connection;
+
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.access.DataNode;
@@ -35,6 +37,7 @@ import org.apache.cayenne.query.MockQuer
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.testdo.testmap.Gallery;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
@@ -43,32 +46,37 @@ public class QualifierTranslatorTest ext
     @Inject
     private DataNode node;
 
+    @Inject
+    private ServerCaseDataSourceFactory dataSourceFactory;
+
+    private Connection connection;
+
+    @Override
+    protected void setUpAfterInjection() throws Exception {
+        this.connection = 
dataSourceFactory.getSharedDataSource().getConnection();
+    }
+
+    @Override
+    protected void tearDownBeforeInjection() throws Exception {
+        connection.close();
+    }
+
     public void testNonQualifiedQuery() throws Exception {
-        TstQueryAssembler qa = new TstQueryAssembler(node, new MockQuery());
+        TstQueryAssembler qa = new TstQueryAssembler(new MockQuery(), node, 
connection);
 
         try {
             new QualifierTranslator(qa).appendPart(new StringBuilder());
             fail();
-        }
-        catch (ClassCastException ccex) {
+        } catch (ClassCastException ccex) {
             // exception expected
         }
-        finally {
-            qa.dispose();
-        }
     }
 
     public void testNullQualifier() throws Exception {
-        TstQueryAssembler qa = new TstQueryAssembler(node, new SelectQuery());
+        TstQueryAssembler qa = new TstQueryAssembler(new 
SelectQuery<Object>(), node, connection);
 
         StringBuilder out = new StringBuilder();
-        try {
-            new QualifierTranslator(qa).appendPart(out);
-        }
-        finally {
-            qa.dispose();
-        }
-
+        new QualifierTranslator(qa).appendPart(out);
         assertEquals(0, out.length());
     }
 
@@ -95,12 +103,8 @@ public class QualifierTranslatorTest ext
         Expression e1 = ExpressionFactory.matchExp("toGallery", g1);
         Expression e2 = e1.orExp(ExpressionFactory.matchExp("toGallery", g2));
 
-        TstExpressionCase extraCase = new TstExpressionCase(
-                "Exhibit",
-                e2,
-                "(ta.GALLERY_ID = ?) OR (ta.GALLERY_ID = ?)",
-                4,
-                4);
+        TstExpressionCase extraCase = new TstExpressionCase("Exhibit", e2,
+                "(ta.GALLERY_ID = ?) OR (ta.GALLERY_ID = ?)", 4, 4);
 
         TstExpressionSuite suite = new TstExpressionSuite() {
         };
@@ -110,36 +114,25 @@ public class QualifierTranslatorTest ext
 
     private void doExpressionTest(TstExpressionSuite suite) throws Exception {
 
-        TstQueryAssembler qa = new TstQueryAssembler(node, new MockQuery());
-
-        try {
-            TstExpressionCase[] cases = suite.cases();
+        TstExpressionCase[] cases = suite.cases();
 
-            int len = cases.length;
-            for (int i = 0; i < len; i++) {
-                try {
-
-                    ObjEntity entity = node.getEntityResolver().getObjEntity(
-                            cases[i].getRootEntity());
-                    assertNotNull(entity);
-                    SelectQuery q = new SelectQuery(entity);
-                    q.setQualifier(cases[i].getCayenneExp());
-                    qa.setQuery(q);
-
-                    StringBuilder out = new StringBuilder();
-                    new QualifierTranslator(qa).appendPart(out);
-                    cases[i].assertTranslatedWell(out.toString());
-                }
-                catch (Exception ex) {
-                    throw new CayenneRuntimeException("Failed case: ["
-                            + i
-                            + "]: "
-                            + cases[i], ex);
-                }
+        int len = cases.length;
+        for (int i = 0; i < len; i++) {
+            try {
+
+                ObjEntity entity = 
node.getEntityResolver().getObjEntity(cases[i].getRootEntity());
+                assertNotNull(entity);
+                SelectQuery q = new SelectQuery(entity);
+                q.setQualifier(cases[i].getCayenneExp());
+
+                TstQueryAssembler qa = new TstQueryAssembler(q, node, 
connection);
+
+                StringBuilder out = new StringBuilder();
+                new QualifierTranslator(qa).appendPart(out);
+                cases[i].assertTranslatedWell(out.toString());
+            } catch (Exception ex) {
+                throw new CayenneRuntimeException("Failed case: [" + i + "]: " 
+ cases[i], ex);
             }
         }
-        finally {
-            qa.dispose();
-        }
     }
 }

Modified: 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QueryAssemblerTest.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QueryAssemblerTest.java?rev=1577108&r1=1577107&r2=1577108&view=diff
==============================================================================
--- 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QueryAssemblerTest.java
 (original)
+++ 
cayenne/main/trunk/cayenne-server/src/test/java/org/apache/cayenne/access/trans/QueryAssemblerTest.java
 Thu Mar 13 11:04:36 2014
@@ -19,11 +19,14 @@
 
 package org.apache.cayenne.access.trans;
 
+import java.sql.Connection;
+
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.query.SelectQuery;
 import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
 
 @UseServerRuntime(ServerCase.TESTMAP_PROJECT)
@@ -32,42 +35,39 @@ public class QueryAssemblerTest extends 
     @Inject
     private DataNode dataNode;
 
-    protected TstQueryAssembler qa;
+    @Inject
+    private ServerCaseDataSourceFactory dataSourceFactory;
+
+    private Connection connection;
+
+    private TstQueryAssembler qa;
 
     @Override
     protected void setUpAfterInjection() throws Exception {
-        qa = new TstQueryAssembler(dataNode, new SelectQuery());
+        this.connection = 
dataSourceFactory.getSharedDataSource().getConnection();
+        this.qa = new TstQueryAssembler(new SelectQuery<Object>(), dataNode, 
connection);
+    }
+
+    @Override
+    protected void tearDownBeforeInjection() throws Exception {
+        connection.close();
     }
 
     public void testGetQuery() throws Exception {
-        try {
-            assertNotNull(qa.getQuery());
-        }
-        finally {
-            qa.dispose();
-        }
+        assertNotNull(qa.getQuery());
     }
 
     public void testAddToParamList() throws Exception {
-        try {
-            assertEquals(0, qa.getAttributes().size());
-            assertEquals(0, qa.getValues().size());
-
-            qa.addToParamList(new DbAttribute(), new Object());
-            assertEquals(1, qa.getAttributes().size());
-            assertEquals(1, qa.getValues().size());
-        }
-        finally {
-            qa.dispose();
-        }
+
+        assertEquals(0, qa.getAttributes().size());
+        assertEquals(0, qa.getValues().size());
+
+        qa.addToParamList(new DbAttribute(), new Object());
+        assertEquals(1, qa.getAttributes().size());
+        assertEquals(1, qa.getValues().size());
     }
 
     public void testCreateStatement() throws Exception {
-        try {
-            assertNotNull(qa.createStatement());
-        }
-        finally {
-            qa.dispose();
-        }
+        assertNotNull(qa.createStatement());
     }
 }


Reply via email to