Author: aadamchik
Date: Sun May 22 22:52:57 2011
New Revision: 1126271

URL: http://svn.apache.org/viewvc?rev=1126271&view=rev
Log:
unit test refactoring

unmapping AccessStack

Added:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaHelper.java
      - copied, changed from r1126270, 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java
Removed:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/AccessStack.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java
Modified:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/spring-test-resources.xml

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java?rev=1126271&r1=1126270&r2=1126271&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/CayenneResourcesProvider.java
 Sun May 22 22:52:57 2011
@@ -24,13 +24,15 @@ import org.apache.cayenne.ConfigurationE
 import org.apache.cayenne.conn.DataSourceInfo;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.unit.AccessStack;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.MapLoader;
 import org.apache.cayenne.unit.CayenneResources;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.BeanFactory;
 import org.springframework.beans.factory.xml.XmlBeanFactory;
 import org.springframework.core.io.InputStreamResource;
+import org.xml.sax.InputSource;
 
 public class CayenneResourcesProvider implements Provider<CayenneResources> {
 
@@ -42,7 +44,14 @@ public class CayenneResourcesProvider im
     public static final String DEFAULT_CONNECTION_KEY = 
"internal_embedded_datasource";
 
     public static final String SKIP_SCHEMA_KEY = "cayenne.test.schema.skip";
-    public static final String SCHEMA_SETUP_STACK = "SchemaSetupStack";
+
+    private static String[] DATA_MAPS_REQUIREING_SCHEMA_SETUP = {
+            "testmap.map.xml", "people.map.xml", "locking.map.xml",
+            "relationships.map.xml", "multi-tier.map.xml", "generic.map.xml",
+            "map-db1.map.xml", "map-db2.map.xml", "embeddable.map.xml",
+            "qualified.map.xml", "quoted-identifiers.map.xml",
+            "inheritance-single-table1.map.xml", "inheritance-vertical.map.xml"
+    };
 
     @Inject
     private DataSourceInfo dataSourceInfo;
@@ -72,7 +81,7 @@ public class CayenneResourcesProvider im
         // possible initial failure we don't attempt rebuilding schema in 
subsequent
         // tests
         try {
-            rebuildSchema(factory);
+            rebuildSchema(resources);
         }
         catch (Exception ex) {
             logger.error("Error generating schema...", ex);
@@ -85,26 +94,32 @@ public class CayenneResourcesProvider im
     /**
      * Completely rebuilds test schema.
      */
-    private void rebuildSchema(BeanFactory beanFactory) throws Exception {
+    private void rebuildSchema(CayenneResources resources) throws Exception {
 
         if ("true".equalsIgnoreCase(System.getProperty(SKIP_SCHEMA_KEY))) {
             logger.info("skipping schema generation... ");
             return;
         }
 
-        // generate schema using a special AccessStack that
-        // combines all DataMaps that require schema support
-        // schema generation is done like that instead of
-        // per stack on demand, to avoid conflicts when
-        // dropping and generating PK objects.
-        AccessStack stack = (AccessStack) beanFactory.getBean(
-                SCHEMA_SETUP_STACK,
-                AccessStack.class);
-
-        stack.dropSchema();
-        stack.dropPKSupport();
-        stack.createSchema();
-        stack.createPKSupport();
-    }
+        // generate schema combining all DataMaps that require schema support.
+        // Schema generation is done like that instead of per DataMap on 
demand to avoid
+        // conflicts when dropping and generating PK objects.
+
+        DataMap[] maps = new DataMap[DATA_MAPS_REQUIREING_SCHEMA_SETUP.length];
+
+        for (int i = 0; i < maps.length; i++) {
+            InputStream stream = 
getClass().getClassLoader().getResourceAsStream(
+                    DATA_MAPS_REQUIREING_SCHEMA_SETUP[i]);
+            InputSource in = new InputSource(stream);
+            in.setSystemId(DATA_MAPS_REQUIREING_SCHEMA_SETUP[i]);
+            maps[i] = new MapLoader().loadDataMap(in);
+        }
 
+        SchemaHelper schemaHelper = new SchemaHelper(resources, maps);
+
+        schemaHelper.dropSchema();
+        schemaHelper.dropPKSupport();
+        schemaHelper.createSchema();
+        schemaHelper.createPKSupport();
+    }
 }

Copied: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaHelper.java
 (from r1126270, 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java)
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaHelper.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaHelper.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java&r1=1126270&r2=1126271&rev=1126271&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/SimpleAccessStack.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/unit/di/server/SchemaHelper.java
 Sun May 22 22:52:57 2011
@@ -17,7 +17,7 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.unit;
+package org.apache.cayenne.unit.di.server;
 
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
@@ -28,35 +28,33 @@ import java.sql.Types;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.ListIterator;
 
-import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.DbGenerator;
-import org.apache.cayenne.access.QueryLogger;
 import org.apache.cayenne.access.UnitTestDomain;
 import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy;
 import org.apache.cayenne.ashwood.AshwoodEntitySorter;
 import org.apache.cayenne.cache.MapQueryCache;
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.QuotingStrategy;
 import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.Procedure;
 import org.apache.cayenne.testdo.testmap.StringET1ExtendedType;
+import org.apache.cayenne.unit.AccessStackAdapter;
+import org.apache.cayenne.unit.CayenneResources;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
  * Default implementation of the AccessStack that has a single DataNode per 
DataMap.
  */
-public class SimpleAccessStack implements AccessStack {
+class SchemaHelper {
 
-    private static Log logger = LogFactory.getLog(SimpleAccessStack.class);
+    private static Log logger = LogFactory.getLog(SchemaHelper.class);
 
     // hardcoded dependent entities that should be excluded
     // if LOBs are not supported
@@ -67,7 +65,7 @@ public class SimpleAccessStack implement
     protected CayenneResources resources;
     protected UnitTestDomain domain;
 
-    public SimpleAccessStack(CayenneResources resources, DataMap[] maps) 
throws Exception {
+    public SchemaHelper(CayenneResources resources, DataMap[] maps) throws 
Exception {
 
         this.resources = resources;
         this.domain = new UnitTestDomain("domain");
@@ -211,63 +209,6 @@ public class SimpleAccessStack implement
         return entities;
     }
 
-    private void deleteTestData(DataNode node, DataMap map) throws Exception {
-
-        Connection conn = node.getDataSource().getConnection();
-        List<DbEntity> list = dbEntitiesInInsertOrder(node, map);
-        try {
-            if (conn.getAutoCommit()) {
-                conn.setAutoCommit(false);
-            }
-
-            Statement stmt = conn.createStatement();
-
-            ListIterator<DbEntity> it = list.listIterator(list.size());
-            while (it.hasPrevious()) {
-                DbEntity ent = it.previous();
-
-                boolean status;
-                if (ent.getDataMap() != null
-                        && ent.getDataMap().isQuotingSQLIdentifiers()) {
-                    status = true;
-                }
-                else {
-                    status = false;
-                }
-
-                QuotingStrategy strategy = 
getAdapter(node).getQuotingStrategy(status);
-
-                String deleteSql = "DELETE FROM " + 
strategy.quoteString(ent.getName());
-
-                try {
-                    stmt.executeUpdate(deleteSql);
-                }
-                catch (SQLException e) {
-                    try {
-                        Collection<String> deleteTableSql = node
-                                .getAdapter()
-                                .dropTableStatements(ent);
-                        stmt.executeUpdate(deleteTableSql.iterator().next());
-                        String createTableSql = 
node.getAdapter().createTable(ent);
-                        stmt.executeUpdate(createTableSql);
-                    }
-                    catch (SQLException e1) {
-                        throw new CayenneRuntimeException(
-                                "Error deleting test data for entity '"
-                                        + ent.getName()
-                                        + "': "
-                                        + e.getLocalizedMessage());
-                    }
-                }
-            }
-            conn.commit();
-            stmt.close();
-        }
-        finally {
-            conn.close();
-        }
-    }
-
     private void dropSchema(DataNode node, DataMap map) throws Exception {
         Connection conn = node.getDataSource().getConnection();
         List<DbEntity> list = dbEntitiesInInsertOrder(node, map);
@@ -338,7 +279,7 @@ public class SimpleAccessStack implement
             Statement stmt = conn.createStatement();
 
             for (String query : tableCreateQueries(node, map)) {
-                QueryLogger.logQuery(query, Collections.EMPTY_LIST);
+                logger.info(query);
                 stmt.execute(query);
             }
             getAdapter(node).createdTables(conn, map);

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/spring-test-resources.xml
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/spring-test-resources.xml?rev=1126271&r1=1126270&r2=1126271&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/spring-test-resources.xml
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/spring-test-resources.xml
 Sun May 22 22:52:57 2011
@@ -112,31 +112,6 @@
     <bean id="InheritanceVerticalMap" 
class="org.apache.cayenne.unit.DataMapFactory">
         
<constructor-arg><value>inheritance-vertical.map.xml</value></constructor-arg>
     </bean>
-    
-       <!-- ======================================= -->
-       <!-- Access Stacks -->
-       <!-- ======================================= -->
-       <!-- Used to create DB schema to avoid conflicts when schema for 
individual stacks is generated. -->
-       <bean id="SchemaSetupStack" 
class="org.apache.cayenne.unit.SimpleAccessStack">
-               <constructor-arg><ref bean="TestResources"/></constructor-arg>
-               <constructor-arg>
-                       <list>
-                               <ref bean="TestMap"/>
-                               <ref bean="PeopleMap"/>
-                               <ref bean="LockingMap"/>
-                               <ref bean="RelationshipMap"/>
-                               <ref bean="MultiTierMap"/>
-                               <ref bean="GenericMap"/>
-                               <ref bean="DB1Map"/>
-                               <ref bean="DB2Map"/>
-                               <ref bean="EmbeddingMap"/>
-                               <ref bean="QualifiedMap"/>
-                <ref bean="QuoteMap"/>
-                               <ref bean="InheritanceSingleTable1Map"/>
-                               <ref bean="InheritanceVerticalMap"/>
-                       </list>
-               </constructor-arg>
-       </bean>
        
        
        <!-- ======================================= -->


Reply via email to