You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ke...@apache.org on 2011/09/14 16:01:28 UTC

svn commit: r1170630 - in /incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql: sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/ sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ sql-impl/src/ma...

Author: kevin
Date: Wed Sep 14 14:01:27 2011
New Revision: 1170630

URL: http://svn.apache.org/viewvc?rev=1170630&view=rev
Log:
ISIS-118: Test code cleanup and other test improvements.

Added:
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/EmptyInterface.java   (with props)
Modified:
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/Defaults.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMapping.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/VersionMapping.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/singleton/SqlIntegrationTestSingleton.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/SqlDataClassFactory.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/PolyInterfaceImplB.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/MySqlTest.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/Defaults.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/Defaults.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/Defaults.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/Defaults.java Wed Sep 14 14:01:27 2011
@@ -23,6 +23,9 @@ import java.util.Calendar;
 
 import org.joda.time.DateTimeZone;
 
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
+
 /**
  * Provides objectstore defaults. Most significantly, maintains the object store default TimeZone, and maintains
  * Calendar.
@@ -31,16 +34,29 @@ import org.joda.time.DateTimeZone;
  * @version $Rev$ $Date$
  */
 public class Defaults {
-    public static void initialise() {
+    public static void initialise(String propertiesBase) {
         setTimeZone(DateTimeZone.UTC);
+
+        final IsisConfiguration configParameters = IsisContext.getConfiguration();
+
+        setPkIdLabel(getProperty(propertiesBase, configParameters, "pk_id"));
+        setIdColumn(getProperty(propertiesBase, configParameters, "id"));
+    }
+
+    protected static String getProperty(String propertiesBase, final IsisConfiguration configParameters, String property) {
+        return configParameters.getString(propertiesBase + ".default." + property, property);
     }
 
+    // {{ Calendar
     private static Calendar calendar;
 
     public static Calendar getCalendar() {
         return calendar;
     }
 
+    // }}
+
+    // {{ DateTimeZone
     private static DateTimeZone dateTimeZone;
 
     public static DateTimeZone getTimeZone() {
@@ -52,4 +68,31 @@ public class Defaults {
         calendar = Calendar.getInstance(timezone.toTimeZone());
     }
 
+    // }}
+
+    // {{ Primary Key label, defaults to "pk_id"
+    private static String pkIdLabel;
+
+    public static void setPkIdLabel(String pkIdLabel) {
+        Defaults.pkIdLabel = pkIdLabel;
+    }
+
+    public static String getPkIdLabel() {
+        return pkIdLabel;
+    }
+
+    // }}
+
+    // {{ Id Column, defaults to "id"
+    private static String idColumn;
+
+    public static void setIdColumn(String idColumn) {
+        Defaults.idColumn = idColumn;
+    }
+
+    public static String getIdColumn() {
+        return idColumn;
+    }
+    // }}
+
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMapping.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMapping.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMapping.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/IdMapping.java Wed Sep 14 14:01:27 2011
@@ -27,7 +27,7 @@ public class IdMapping extends IdMapping
         String idColumn = null;
         // idColumn = configParameters.getString(parameterBase + "id");
         if (idColumn == null) {
-            idColumn = "pk_id";
+            idColumn = Defaults.getPkIdLabel();
         }
         setColumn(idColumn);
     }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/SqlObjectStore.java Wed Sep 14 14:01:27 2011
@@ -49,9 +49,10 @@ import org.apache.isis.runtimes.dflt.run
 import org.apache.isis.runtimes.dflt.runtime.system.transaction.UpdateNotifier;
 
 public final class SqlObjectStore implements ObjectStore {
+
     private static final String TABLE_NAME = "isis_admin_services";
-    private static final String ID_COLUMN = "id";
-    private static final String PRIMARYKEY_COLUMN = "pk_id";
+    // private static final String ID_COLUMN = "id";
+    // private static final String PRIMARYKEY_COLUMN = "pk_id";
     public static final String BASE_NAME = "isis.persistor.sql";
     private static final Logger LOG = Logger.getLogger(SqlObjectStore.class);
     private DatabaseConnectorPool connectionPool;
@@ -59,6 +60,84 @@ public final class SqlObjectStore implem
     private boolean isInitialized;
 
     @Override
+    public String name() {
+        return "SQL Object Store";
+    }
+
+    @Override
+    public void open() {
+        Sql.setMetaData(connectionPool.acquire().getMetaData());
+
+        if (!isInitialized) {
+            Defaults.initialise(BASE_NAME);
+            Defaults.setPkIdLabel(Sql.identifier(Defaults.getPkIdLabel()));
+            Defaults.setIdColumn(Sql.identifier(Defaults.getIdColumn()));
+        }
+
+        final DebugBuilder debug = new DebugString();
+        connectionPool.debug(debug);
+        LOG.info("Database: " + debug);
+
+        objectMappingLookup.init();
+
+        final DatabaseConnector connector = connectionPool.acquire();
+        isInitialized = connector.hasColumn(Sql.tableIdentifier(TABLE_NAME), Defaults.getPkIdLabel());
+        if (!isInitialized) {
+            if (connector.hasTable(Sql.tableIdentifier(TABLE_NAME))) {
+                final StringBuffer sql = new StringBuffer();
+                sql.append("drop table ");
+                sql.append(Sql.tableIdentifier(TABLE_NAME));
+                connector.update(sql.toString());
+            }
+            final StringBuffer sql = new StringBuffer();
+            sql.append("create table ");
+            sql.append(Sql.tableIdentifier(TABLE_NAME));
+            sql.append(" (");
+            sql.append(Defaults.getPkIdLabel());
+            sql.append(" int, ");
+            sql.append(Defaults.getIdColumn());
+            sql.append(" varchar(255)");
+            sql.append(")");
+            connector.update(sql.toString());
+        }
+    }
+
+    @Override
+    public boolean isFixturesInstalled() {
+        return isInitialized;
+    }
+
+    @Override
+    public void registerService(final String name, final Oid oid) {
+        final DatabaseConnector connector = connectionPool.acquire();
+
+        final StringBuffer sql = new StringBuffer();
+        sql.append("insert into ");
+        sql.append(Sql.tableIdentifier(TABLE_NAME));
+        sql.append(" (");
+        sql.append(Defaults.getPkIdLabel());
+        sql.append(", ");
+        sql.append(Defaults.getIdColumn());
+        sql.append(") values (?,?)");
+
+        connector.addToQueryValues(((SqlOid) oid).getPrimaryKey().naturalValue());
+        connector.addToQueryValues(name);
+
+        connector.insert(sql.toString());
+        connectionPool.release(connector);
+    }
+
+    @Override
+    public void reset() {
+    }
+
+    @Override
+    public void close() {
+        objectMappingLookup.shutdown();
+        connectionPool.shutdown();
+    }
+
+    @Override
     public void abortTransaction() {
     }
 
@@ -246,11 +325,9 @@ public final class SqlObjectStore implem
         if (specification.hasSubclasses()) {
             final List<ObjectSpecification> subclasses = specification.subclasses();
             for (ObjectSpecification subclassSpec : subclasses) {
-                // if (subclassSpec.equals(specification)) {
                 if (!subclassSpec.isAbstract()) {
                     addSpecQueryInstances(subclassSpec, connector, query, matchingInstances);
                 }
-                // }
             }
         }
 
@@ -329,17 +406,17 @@ public final class SqlObjectStore implem
 
         final StringBuffer sql = new StringBuffer();
         sql.append("select ");
-        sql.append(Sql.identifier(PRIMARYKEY_COLUMN));
+        sql.append(Defaults.getPkIdLabel());
         sql.append(" from ");
         sql.append(Sql.tableIdentifier(TABLE_NAME));
         sql.append(" where ");
-        sql.append(Sql.identifier(ID_COLUMN));
+        sql.append(Defaults.getIdColumn());
         sql.append(" = ?");
         connector.addToQueryValues(name);
 
         final Results results = connector.select(sql.toString());
         if (results.next()) {
-            final int key = results.getInt(PRIMARYKEY_COLUMN);
+            final int key = results.getInt(Defaults.getPkIdLabel());
             connectionPool.release(connector);
             return SqlOid.createPersistent(name, new IntegerPrimaryKey(key));
         } else {
@@ -358,69 +435,6 @@ public final class SqlObjectStore implem
     }
 
     @Override
-    public boolean isFixturesInstalled() {
-        return isInitialized;
-    }
-
-    @Override
-    public void open() {
-        Sql.setMetaData(connectionPool.acquire().getMetaData());
-
-        final DebugBuilder debug = new DebugString();
-        connectionPool.debug(debug);
-        LOG.info("Database: " + debug);
-
-        objectMappingLookup.init();
-
-        final DatabaseConnector connector = connectionPool.acquire();
-        isInitialized = connector.hasTable(Sql.tableIdentifier(TABLE_NAME));
-        if (!isInitialized) {
-
-            Defaults.initialise();
-
-            final StringBuffer sql = new StringBuffer();
-            sql.append("create table ");
-            sql.append(Sql.tableIdentifier(TABLE_NAME));
-            sql.append(" (");
-            sql.append(Sql.identifier(PRIMARYKEY_COLUMN));
-            sql.append(" int, ");
-            sql.append(Sql.identifier(ID_COLUMN));
-            sql.append(" varchar(255)");
-            sql.append(")");
-            connector.update(sql.toString());
-        }
-    }
-
-    @Override
-    public String name() {
-        return "SQL Object Store";
-    }
-
-    @Override
-    public void registerService(final String name, final Oid oid) {
-        final DatabaseConnector connector = connectionPool.acquire();
-
-        final StringBuffer sql = new StringBuffer();
-        sql.append("insert into ");
-        sql.append(Sql.tableIdentifier(TABLE_NAME));
-        sql.append(" (");
-        sql.append(Sql.identifier(PRIMARYKEY_COLUMN));
-        sql.append(", ");
-        sql.append(Sql.identifier(ID_COLUMN));
-        sql.append(") values (?,?)");
-
-        connector.addToQueryValues(((SqlOid) oid).getPrimaryKey().naturalValue());
-        connector.addToQueryValues(name);
-
-        connector.insert(sql.toString());
-        connectionPool.release(connector);
-    }
-
-    @Override
-    public void reset() {
-    }
-
-    @Override
     public void resolveField(final ObjectAdapter object, final ObjectAssociation field) {
         if (field.isOneToManyAssociation()) {
             final DatabaseConnector connection = connectionPool.acquire();
@@ -450,12 +464,6 @@ public final class SqlObjectStore implem
     }
 
     @Override
-    public void close() {
-        objectMappingLookup.shutdown();
-        connectionPool.shutdown();
-    }
-
-    @Override
     public void startTransaction() {
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/VersionMapping.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/VersionMapping.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/VersionMapping.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/VersionMapping.java Wed Sep 14 14:01:27 2011
@@ -25,6 +25,7 @@ import java.util.Date;
 import org.apache.isis.core.metamodel.adapter.version.SerialNumberVersion;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.runtimes.dflt.objectstores.sql.jdbc.JdbcConnector;
+import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
 
 public class VersionMapping {
     private String lastActivityDateColumn;
@@ -43,7 +44,8 @@ public class VersionMapping {
 
     public String insertValues(final DatabaseConnector connector, final SerialNumberVersion version) {
         connector.addToQueryValues(version.getSequence());
-        String user = version.getUser();
+        IsisContext.getSession().getAuthenticationSession().getUserName();
+        String user = IsisContext.getSession().getAuthenticationSession().getUserName();// version.getUser();
         if (user == "") {
             user = "unknown";
         }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoMapper.java Wed Sep 14 14:01:27 2011
@@ -60,6 +60,7 @@ public class AutoMapper extends Abstract
     private final IdMapping idMapping;
     private final VersionMapping versionMapping;
     private final TitleMapping titleMapping;
+    final AdapterManager adapterManager;
 
     public AutoMapper(final String className, final String parameterBase, final FieldMappingLookup lookup,
         final ObjectMappingLookup objectMapperLookup) {
@@ -68,6 +69,8 @@ public class AutoMapper extends Abstract
         versionMapping = lookup.createVersionMapping();
         titleMapping = lookup.createTitleMapping();
 
+        adapterManager = IsisContext.getPersistenceSession().getAdapterManager();
+
         setUpFieldMappers();
     }
 
@@ -167,9 +170,8 @@ public class AutoMapper extends Abstract
         final Vector<ObjectAdapter> instances = new Vector<ObjectAdapter>();
 
         final StringBuffer sql = createSelectStatement();
-        sql.append(" WHERE ");
+        int initialLength = 0;
 
-        final int initialLength = sql.length();
         int foundFields = 0;
         final ObjectAdapter pattern = query.getPattern();
 
@@ -184,10 +186,17 @@ public class AutoMapper extends Abstract
             final String methodName = memberName.substring(0, 1).toUpperCase() + memberName.substring(1);
 
             try {
+                // TODO: replace this back to the original method that uses Facets, instead of directly invoking
+                // "getXXX"
                 method = o.getClass().getMethod("get" + methodName, (Class<?>[]) null);
                 final Object res = InvokeUtils.invoke(method, o);
                 if (res != null) {
 
+                    if (foundFields == 0) {
+                        sql.append(" WHERE ");
+                        initialLength = sql.length();
+                    }
+
                     if (sql.length() > initialLength) {
                         sql.append(" AND ");
                     }
@@ -206,7 +215,7 @@ public class AutoMapper extends Abstract
                         fieldMapping.appendColumnNames(sql);
                         sql.append("=?");
 
-                        final AdapterManager adapterManager = IsisContext.getPersistenceSession().getAdapterManager();
+                        // If you get errors here, bring the definition of adapterManager from above, back to here.
                         final ObjectAdapter restoredValue = adapterManager.adapterFor(res);
                         Oid oid = restoredValue.getOid();
                         Object oidObject = idMapping.primaryKeyAsObject(oid);
@@ -222,9 +231,9 @@ public class AutoMapper extends Abstract
                 LOG.debug(e.getMessage());
             }
         }
-        if (foundFields > 0) {
-            loadInstancesToVector(connector, spec, completeSelectStatement(sql), instances);
-        }
+        // if (foundFields > 0) {
+        loadInstancesToVector(connector, spec, completeSelectStatement(sql), instances);
+        // }
         return instances;
     }
 

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java Wed Sep 14 14:01:27 2011
@@ -160,6 +160,7 @@ public class PolymorphicForeignKeyInChil
             final Oid transientOid = oidGenerator.createTransientOid(thisAdapter.getObject());
             oidGenerator.convertTransientToPersistentOid(transientOid);
             polyIdMapper.appendObjectId(connector, update, transientOid);
+            // polyIdMapper.appendObjectId(connector, update, thisAdapter.getOid());
             update.append(",");
 
             // Foreign key ID column

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcDateMapper.java Wed Sep 14 14:01:27 2011
@@ -19,6 +19,8 @@
 
 package org.apache.isis.runtimes.dflt.objectstores.sql.jdbc;
 
+import org.joda.time.LocalDate;
+
 import org.apache.isis.applib.PersistFailedException;
 import org.apache.isis.applib.value.Date;
 import org.apache.isis.core.commons.exceptions.IsisApplicationException;
@@ -28,7 +30,7 @@ import org.apache.isis.runtimes.dflt.obj
 import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
 import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMappingFactory;
 import org.apache.isis.runtimes.dflt.runtime.system.context.IsisContext;
-import org.joda.time.LocalDate;
+import org.apache.isis.runtimes.dflt.runtime.system.persistence.AdapterManager;
 
 /**
  * Handles reading and writing java.sql.Date and org.apache.isis.applib.value.Date values to and from the data store.
@@ -38,6 +40,8 @@ import org.joda.time.LocalDate;
  */
 public class JdbcDateMapper extends AbstractJdbcFieldMapping {
 
+    private final AdapterManager adapterManager;
+
     public static class Factory implements FieldMappingFactory {
         @Override
         public FieldMapping createFieldMapping(final ObjectAssociation field) {
@@ -47,6 +51,7 @@ public class JdbcDateMapper extends Abst
 
     protected JdbcDateMapper(final ObjectAssociation field) {
         super(field);
+        adapterManager = IsisContext.getPersistenceSession().getAdapterManager();
     }
 
     @Override
@@ -72,12 +77,12 @@ public class JdbcDateMapper extends Abst
         final Class<?> correspondingClass = field.getSpecification().getCorrespondingClass();
         if (correspondingClass == java.util.Date.class || correspondingClass == java.sql.Date.class) {
             // 2011-04-08 = 1270684800000
-            restoredValue = IsisContext.getPersistenceSession().getAdapterManager().adapterFor(javaDateValue);
+            restoredValue = adapterManager.adapterFor(javaDateValue);
         } else if (correspondingClass == Date.class) {
             // 2010-03-05 = 1267747200000
             Date dateValue;
             dateValue = new Date(javaDateValue);
-            restoredValue = IsisContext.getPersistenceSession().getAdapterManager().adapterFor(dateValue);
+            restoredValue = adapterManager.adapterFor(dateValue);
         } else {
             throw new PersistFailedException("Unhandled date type: " + correspondingClass.getCanonicalName());
         }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/common/SqlIntegrationTestCommon.java Wed Sep 14 14:01:27 2011
@@ -63,7 +63,7 @@ public abstract class SqlIntegrationTest
     // private static final TimeZone GMTm2_TIME_ZONE;
 
     // Helper values
-    private static final java.sql.Date sqlDate;// = java.sql.Date.valueOf("2010-03-05");
+    private static final java.sql.Date sqlDate;
 
     static {
         /*
@@ -125,16 +125,8 @@ public abstract class SqlIntegrationTest
     private static NumericTestClass numericTestClassMax;
     private static NumericTestClass numericTestClassMin;
 
-    public String getPersonTableName() {
-        return "sqldataclass";
-    }
-
-    public String getSimpleClassTableName() {
-        return "simpleclass";
-    }
-
-    public String getSimpleClassTwoTableName() {
-        return "simpleclasstwo";
+    public List<String> getTableNames() {
+        return Arrays.asList("sqldataclass", "simpleclass", "simpleclasstwo", "numerictestclass");
     }
 
     public void testSetup() {
@@ -148,9 +140,9 @@ public abstract class SqlIntegrationTest
      * @throws Exception
      */
     public void testCreate() throws Exception {
-        SqlIntegrationTestSingleton.drop(getPersonTableName());
-        SqlIntegrationTestSingleton.drop(getSimpleClassTableName());
-        SqlIntegrationTestSingleton.drop(getSimpleClassTwoTableName());
+        for (String tableName : getTableNames()) {
+            SqlIntegrationTestSingleton.drop(tableName);
+        }
 
         final SqlDataClassFactory factory = SqlIntegrationTestSingleton.getSqlDataClassFactory();
         final SqlDataClass sqlDataClass = factory.newDataClass();
@@ -250,13 +242,6 @@ public abstract class SqlIntegrationTest
         getSingletonInstance().setState(1);
     }
 
-    public void testSimpleClassCollection1Lazy() {
-        final SqlDataClass sqlDataClass = SqlIntegrationTestSingleton.getDataClass();
-        final List<SimpleClass> collection = sqlDataClass.simpleClasses1;
-
-        assertEquals("collection size is not equal!", collection.size(), simpleClassList1.size());
-    }
-
     /**
      * Test {@link SqlDataClass} {@link String} field.
      * 
@@ -267,6 +252,18 @@ public abstract class SqlIntegrationTest
         assertEquals("Test String", sqlDataClass.getString());
     }
 
+    public void testSave() {
+        final SqlDataClass sqlDataClass = SqlIntegrationTestSingleton.getDataClass();
+        sqlDataClass.setString("String 2");
+    }
+
+    public void testSimpleClassCollection1Lazy() {
+        final SqlDataClass sqlDataClass = SqlIntegrationTestSingleton.getDataClass();
+        final List<SimpleClass> collection = sqlDataClass.simpleClasses1;
+
+        assertEquals("collection size is not equal!", collection.size(), simpleClassList1.size());
+    }
+
     /**
      * Test {@link SqlDataClass} {@link Date} field.
      * 
@@ -634,7 +631,6 @@ public abstract class SqlIntegrationTest
         } else {
             assertEquals(stringList1.size() + 2, classes.size());
         }
-
     }
 
     // Last "test" - Set the Singleton state to 0 to invoke a clean shutdown.

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/singleton/SqlIntegrationTestSingleton.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/singleton/SqlIntegrationTestSingleton.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/singleton/SqlIntegrationTestSingleton.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/singleton/SqlIntegrationTestSingleton.java Wed Sep 14 14:01:27 2011
@@ -34,9 +34,12 @@ import java.util.List;
 import java.util.Properties;
 
 import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.commons.exceptions.IsisException;
+import org.apache.isis.runtimes.dflt.objectstores.sql.Sql;
 import org.apache.isis.runtimes.dflt.objectstores.sql.SqlObjectStore;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.SqlDataClassFactory;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.TestProxySystemIII;
+import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.NumericTestClass;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.SimpleClass;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.SimpleClassTwo;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.SqlDataClass;
@@ -85,8 +88,6 @@ public class SqlIntegrationTestSingleton
         configuration.add(properties);
         persistorName = configuration.getString("isis.persistor");
 
-        resetPersistorState(configuration);
-
         sqlDataClassFactory = new SqlDataClassFactory();
         if (system != null) {
             system.shutDown();
@@ -94,6 +95,9 @@ public class SqlIntegrationTestSingleton
         system = new TestProxySystemIII();
         system.setConfiguration(configuration);
         system.init(sqlDataClassFactory);
+
+        resetPersistorState(configuration);
+
     }
 
     // JDBC
@@ -123,7 +127,7 @@ public class SqlIntegrationTestSingleton
                 IsisConfigurationDefault.getString(SqlObjectStore.BASE_NAME + ".jdbc.password"));
         s = c.createStatement();
 
-        dropTable(SqlObjectStore.getTableName());
+        // dropTable(SqlObjectStore.getTableName());
     }
 
     private void dropTable(final String tableName) {
@@ -138,26 +142,37 @@ public class SqlIntegrationTestSingleton
                     sqlDataClassFactory.delete(sqlDataClass);
                 }
                 return;
-            }
-            if (tableName.equalsIgnoreCase("simpleclass")) {
+            } else if (tableName.equalsIgnoreCase("simpleclass")) {
                 final List<SimpleClass> list = sqlDataClassFactory.allSimpleClasses();
                 for (final SimpleClass sqlClass : list) {
                     sqlDataClassFactory.delete(sqlClass);
                 }
                 return;
-            }
-            if (tableName.equalsIgnoreCase("simpleclasstwo")) {
+            } else if (tableName.equalsIgnoreCase("simpleclasstwo")) {
                 final List<SimpleClassTwo> list = sqlDataClassFactory.allSimpleClassTwos();
                 for (final SimpleClassTwo sqlClass : list) {
                     sqlDataClassFactory.delete(sqlClass);
                 }
                 return;
+            } else if (tableName.equalsIgnoreCase("numerictestclass")) {
+                final List<NumericTestClass> list = sqlDataClassFactory.allNumericTestClasses();
+                for (final NumericTestClass sqlClass : list) {
+                    sqlDataClassFactory.delete(sqlClass);
+                }
+                return;
+            } else {
+                throw new IsisException("Unknown table: " + tableName);
             }
-            return;
         }
         /**/
         try {
-            s.executeUpdate("DROP TABLE " + tableName + "");
+            String tableIdentifier;
+            if (tableName.substring(0, 4).toUpperCase().equals("ISIS")) {
+                tableIdentifier = Sql.tableIdentifier(tableName);
+            } else {
+                tableIdentifier = Sql.tableIdentifier("isis_" + tableName);
+            }
+            s.executeUpdate("DROP TABLE " + tableIdentifier);
         } catch (final SQLException e) {
             e.printStackTrace();
         }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/SqlDataClassFactory.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/SqlDataClassFactory.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/SqlDataClassFactory.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/SqlDataClassFactory.java Wed Sep 14 14:01:27 2011
@@ -29,6 +29,7 @@ import org.apache.isis.runtimes.dflt.obj
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.SimpleClass;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.SimpleClassTwo;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.SqlDataClass;
+import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.EmptyInterface;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.PolyInterface;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.PolyInterfaceImplA;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.PolyInterfaceImplB;
@@ -73,13 +74,17 @@ public class SqlDataClassFactory extends
     }
 
     // SimpleClass
+    public SimpleClass newSimpleClass() {
+        final SimpleClass object = newTransientInstance(SimpleClass.class);
+        return object;
+    }
+
     public List<SimpleClass> allSimpleClasses() {
         return allInstances(SimpleClass.class);
     }
 
-    public SimpleClass newSimpleClass() {
-        final SimpleClass object = newTransientInstance(SimpleClass.class);
-        return object;
+    public List<SimpleClass> allSimpleClassesThatMatch(SimpleClass simpleClassMatch) {
+        return allMatches(SimpleClass.class, simpleClassMatch);
     }
 
     // SimpleClassTwo
@@ -92,13 +97,18 @@ public class SqlDataClassFactory extends
         return object;
     }
 
+    // NumericTestClass
+    public List<NumericTestClass> allNumericTestClasses() {
+        return allInstances(NumericTestClass.class);
+    }
+
     public NumericTestClass newNumericTestClass() {
         final NumericTestClass object = newTransientInstance(NumericTestClass.class);
         return object;
     }
 
-    public List<SimpleClass> allSimpleClassesThatMatch(SimpleClass simpleClassMatch) {
-        return allMatches(SimpleClass.class, simpleClassMatch);
+    public List<NumericTestClass> allNumericTestClassesThatMatch(NumericTestClass match) {
+        return allMatches(NumericTestClass.class, match);
     }
 
     // }}
@@ -151,6 +161,10 @@ public class SqlDataClassFactory extends
         return allMatches(PolyInterface.class, query);
     }
 
+    public List<EmptyInterface> allEmptyInterfacesThatMatch(EmptyInterface match) {
+        return allMatches(EmptyInterface.class, match);
+    }
+
     // }}
 
 }

Added: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/EmptyInterface.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/EmptyInterface.java?rev=1170630&view=auto
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/EmptyInterface.java (added)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/EmptyInterface.java Wed Sep 14 14:01:27 2011
@@ -0,0 +1,23 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism;
+
+public interface EmptyInterface {
+}

Propchange: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/EmptyInterface.java
------------------------------------------------------------------------------
    svn:executable = *

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/PolyInterfaceImplB.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/PolyInterfaceImplB.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/PolyInterfaceImplB.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsystem/dataclasses/polymorphism/PolyInterfaceImplB.java Wed Sep 14 14:01:27 2011
@@ -20,8 +20,9 @@
 package org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism;
 
 import org.apache.isis.applib.AbstractDomainObject;
+import org.apache.isis.applib.annotation.MemberOrder;
 
-public class PolyInterfaceImplB extends AbstractDomainObject implements PolyInterface {
+public class PolyInterfaceImplB extends AbstractDomainObject implements PolyInterface, EmptyInterface {
     public String title() {
         return string;
     }
@@ -50,5 +51,20 @@ public class PolyInterfaceImplB extends 
     public void setSpecial(final String special) {
         this.special = special;
     }
+
+    // }}
+
+    // {{ Integer
+    private Integer integerValue;
+
+    @MemberOrder(sequence = "1")
+    public Integer getInteger() {
+        return integerValue;
+    }
+
+    public void setInteger(final Integer integerValue) {
+        this.integerValue = integerValue;
+    }
     // }}
+
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/HsqlTest.java Wed Sep 14 14:01:27 2011
@@ -53,19 +53,4 @@ public class HsqlTest extends SqlIntegra
         return "SHUTDOWN;";
     }
 
-    @Override
-    public String getPersonTableName() {
-        return "ISIS_SQLDATACLASS";
-    }
-
-    @Override
-    public String getSimpleClassTableName() {
-        return "ISIS_SIMPLECLASS";
-    }
-
-    @Override
-    public String getSimpleClassTwoTableName() {
-        return "ISIS_SIMPLECLASSTWO";
-    }
-
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java Wed Sep 14 14:01:27 2011
@@ -6,6 +6,7 @@ import java.util.Properties;
 import org.apache.isis.runtimes.dflt.objectstores.sql.common.SqlIntegrationTestCommonBase;
 import org.apache.isis.runtimes.dflt.objectstores.sql.singleton.SqlIntegrationTestSingleton;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.SqlDataClassFactory;
+import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.EmptyInterface;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.PolyBaseClass;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.PolyInterface;
 import org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism.PolyInterfaceImplA;
@@ -18,6 +19,8 @@ import org.apache.isis.runtimes.dflt.obj
 
 public class PolymorphismTest extends SqlIntegrationTestCommonBase {
 
+    private static final String IMPL_B_STRING = "Impl B String";
+
     public class PolyInterfaceEx implements PolyInterface {
         // {{ String
         private String string;
@@ -39,6 +42,21 @@ public class PolymorphismTest extends Sq
 
     };
 
+    public class EmptyInterfaceEx implements EmptyInterface {
+        // {{ Special
+        private String special;
+
+        public String getSpecial() {
+            return special;
+        }
+
+        public void setSpecial(final String special) {
+            this.special = special;
+        }
+
+        // }}
+    }
+
     private static final String IMPL_A_STRING = "Impl A String";
     private static final String CHILD_1 = "Child 1";
     private static PolyInterfaceImplA polyIntImpA;
@@ -75,7 +93,7 @@ public class PolymorphismTest extends Sq
     public void testSetup() {
         initialiseTests();
         getSingletonInstance().setState(0);
-        SqlIntegrationTestSingleton.drop("%");
+        // SqlIntegrationTestSingleton.drop("%");
     }
 
     public void testCreate() throws Exception {
@@ -248,8 +266,9 @@ public class PolymorphismTest extends Sq
     public void testInterfaceEditSave() {
         final SqlDataClassFactory factory = SqlIntegrationTestSingleton.getSqlDataClassFactory();
         polyIntImpB = factory.newPolyInterfaceImplB();
-        polyIntImpB.setString("Impl B String");
+        polyIntImpB.setString(IMPL_B_STRING);
         polyIntImpB.setSpecial("special");
+        polyIntImpB.setInteger(1);
 
         factory.save(polyIntImpB);
 
@@ -293,6 +312,25 @@ public class PolymorphismTest extends Sq
         assertEquals(2, list.size());
     }
 
+    public void testFindByMatchPartialEntity() {
+        final SqlDataClassFactory factory = SqlIntegrationTestSingleton.getSqlDataClassFactory();
+        final EmptyInterface match = new EmptyInterfaceEx();
+        final List<EmptyInterface> matches = factory.allEmptyInterfacesThatMatch(match);
+        assertEquals(1, matches.size());
+
+        EmptyInterface emptyInterface = matches.get(0);
+        PolyInterfaceImplB imp = (PolyInterfaceImplB) emptyInterface;
+        assertEquals(IMPL_B_STRING, imp.getString());
+    }
+
+    public void testCannotFindByMatchWithWrongValue() {
+        final SqlDataClassFactory factory = SqlIntegrationTestSingleton.getSqlDataClassFactory();
+        final PolyInterfaceImplB match = new PolyInterfaceImplB();
+        match.setInteger(0);
+        final List<EmptyInterface> matches = factory.allEmptyInterfacesThatMatch(match);
+        assertEquals(0, matches.size());
+    }
+
     // Last "test" - Set the Singleton state to 0 to invoke a clean shutdown.
     public void testZSetStateZero() {
         getSingletonInstance().setState(0);

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/MySqlTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/MySqlTest.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/MySqlTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/MySqlTest.java Wed Sep 14 14:01:27 2011
@@ -53,19 +53,4 @@ public class MySqlTest extends SqlIntegr
         return "mysql.properties";
     }
 
-    @Override
-    public String getPersonTableName() {
-        return "isis_sqldataclass";
-    }
-
-    @Override
-    public String getSimpleClassTableName() {
-        return "isis_simpleclass";
-    }
-
-    @Override
-    public String getSimpleClassTwoTableName() {
-        return "isis_simpleclasstwo";
-    }
-
 }

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java?rev=1170630&r1=1170629&r2=1170630&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-served/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PostgreSqlTest.java Wed Sep 14 14:01:27 2011
@@ -50,19 +50,4 @@ public class PostgreSqlTest extends SqlI
         return "postgresql.properties";
     }
 
-    @Override
-    public String getPersonTableName() {
-        return "isis_sqldataclass";
-    }
-
-    @Override
-    public String getSimpleClassTableName() {
-        return "isis_simpleclass";
-    }
-
-    @Override
-    public String getSimpleClassTwoTableName() {
-        return "isis_simpleclasstwo";
-    }
-
 }