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/12 21:44:20 UTC

svn commit: r1169896 - in /incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql: sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ sql-tests-common/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/testsyst...

Author: kevin
Date: Mon Sep 12 19:44:19 2011
New Revision: 1169896

URL: http://svn.apache.org/viewvc?rev=1169896&view=rev
Log:
ISIS-118: Collections can now handle polymorphic types, including classes. For real, this time!

Modified:
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.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/ForeignKeyCollectionMapper.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ForeignKeyInChildCollectionMapper.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionMapper.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ReversedAutoAssociationMapper.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/PolyBaseClass.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/PolySubClassOne.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/PolySubClassThree.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/PolySubClassTwo.java
    incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-tests-common/src/test/java/org/apache/isis/runtimes/dflt/objectstores/sql/PolymorphismTest.java

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.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/AbstractAutoMapper.java?rev=1169896&r1=1169895&r2=1169896&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AbstractAutoMapper.java Mon Sep 12 19:44:19 2011
@@ -66,6 +66,17 @@ public abstract class AbstractAutoMapper
         this.objectMapperLookup = objectMapperLookup;
     }
 
+    protected AbstractAutoMapper(final FieldMappingLookup lookup, final AbstractAutoMapper abstractAutoMapper,
+        String className) {
+
+        this.className = className;
+        specification = IsisContext.getSpecificationLoader().loadSpecification(className);
+
+        this.parameterBase = null;
+        this.lookup = null;
+        this.objectMapperLookup = null;
+    }
+
     protected void setUpFieldMappers() {
         setUpFieldMappers(lookup, objectMapperLookup, className, parameterBase);
     }
@@ -98,7 +109,7 @@ public abstract class AbstractAutoMapper
             // setupSpecifiedMapping(specification, configParameters, parameterBase);
         }
 
-        LOG.info("table mapping: " + table + " (" + columnList() + ")");
+        LOG.info("table mapping: " + table + " (" + columnList(fieldMappings) + ")");
     }
 
     protected String getTableNameFromSpecification(ObjectSpecification objectSpecification) {
@@ -171,9 +182,11 @@ public abstract class AbstractAutoMapper
                                     oneToManyProperties[collectionFieldNo], parameterBase, lookup, objectMapperLookup,
                                     this, field);
                         } else {
-                            collectionMapper =
+                            ForeignKeyInChildCollectionMapper mapper =
                                 new ForeignKeyInChildCollectionMapper(oneToManyProperties[collectionFieldNo],
                                     parameterBase, lookup, objectMapperLookup, this, field);
+                            mapper.setUpFieldMappers();
+                            collectionMapper = mapper;
                         }
                     }
 
@@ -238,7 +251,7 @@ public abstract class AbstractAutoMapper
      * 
      * throw new NotYetImplementedException(); } } }
      */
-    protected String columnList() {
+    protected String columnList(List<FieldMapping> fieldMappings) {
         final StringBuffer sql = new StringBuffer();
         for (final FieldMapping mapping : fieldMappings) {
             if (sql.length() > 0) {

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=1169896&r1=1169895&r2=1169896&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 Mon Sep 12 19:44:19 2011
@@ -71,6 +71,14 @@ public class AutoMapper extends Abstract
         setUpFieldMappers();
     }
 
+    protected VersionMapping getVersionMapping() {
+        return versionMapping;
+    }
+
+    protected IdMapping getIdMapping() {
+        return idMapping;
+    }
+
     @Override
     public void createTables(final DatabaseConnector connection) {
         if (!connection.hasTable(table)) {
@@ -106,7 +114,7 @@ public class AutoMapper extends Abstract
         sql.append("insert into " + table + " (");
         idMapping.appendColumnNames(sql);
         sql.append(", ");
-        final String columnList = columnList();
+        final String columnList = columnList(fieldMappings);
         if (columnList.length() > 0) {
             sql.append(columnList);
             sql.append(", ");
@@ -257,7 +265,7 @@ public class AutoMapper extends Abstract
         sql.append("select ");
         idMapping.appendColumnNames(sql);
         sql.append(", ");
-        final String columnList = columnList();
+        final String columnList = columnList(fieldMappings);
         if (columnList.length() > 0) {
             sql.append(columnList);
             sql.append(", ");
@@ -334,7 +342,7 @@ public class AutoMapper extends Abstract
         LOG.debug("loading data from SQL " + table + " for " + object);
         final StringBuffer sql = new StringBuffer();
         sql.append("select ");
-        sql.append(columnList());
+        sql.append(columnList(fieldMappings));
         sql.append(",");
         sql.append(versionMapping.appendSelectColumns());
         sql.append(" from " + table + " WHERE ");

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ForeignKeyCollectionMapper.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/ForeignKeyCollectionMapper.java?rev=1169896&r1=1169895&r2=1169896&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ForeignKeyCollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ForeignKeyCollectionMapper.java Mon Sep 12 19:44:19 2011
@@ -81,6 +81,23 @@ public class ForeignKeyCollectionMapper 
         foreignKeyMapping = lookup.createMapping(columnName, specification);
     }
 
+    protected ForeignKeyCollectionMapper(final FieldMappingLookup lookup, final AbstractAutoMapper abstractAutoMapper,
+        final ObjectAssociation field) {
+        super(lookup, abstractAutoMapper, field.getSpecification().getFullIdentifier());
+
+        this.field = field;
+        objectMapperLookup2 = null;
+
+        idMapping = lookup.createIdMapping();
+        versionMapping = lookup.createVersionMapping();
+
+        setColumnName(determineColumnName(field));
+        foreignKeyName = Sql.sqlName("fk_" + getColumnName());
+
+        foreignKeyName = Sql.identifier(foreignKeyName);
+        foreignKeyMapping = lookup.createMapping(columnName, specification);
+    }
+
     protected String determineColumnName(final ObjectAssociation objectAssociation) {
         return objectAssociation.getSpecification().getShortIdentifier();
     }
@@ -150,7 +167,7 @@ public class ForeignKeyCollectionMapper 
 
             final List<ObjectAdapter> list = new ArrayList<ObjectAdapter>();
 
-            loadCollectionIntoList(connector, parent, makeResolved, list);
+            loadCollectionIntoList(connector, parent, makeResolved, idMapping, fieldMappings, versionMapping, list);
 
             final CollectionFacet collectionFacet = collection.getSpecification().getFacet(CollectionFacet.class);
             collectionFacet.init(collection, list.toArray(new ObjectAdapter[list.size()]));
@@ -170,13 +187,14 @@ public class ForeignKeyCollectionMapper 
     }
 
     protected void loadCollectionIntoList(final DatabaseConnector connector, final ObjectAdapter parent,
-        final boolean makeResolved, final List<ObjectAdapter> list) {
+        final boolean makeResolved, final IdMapping idMapping, final List<FieldMapping> fieldMappings,
+        final VersionMapping versionMapping, final List<ObjectAdapter> list) {
         final StringBuffer sql = new StringBuffer();
         sql.append("select ");
         idMapping.appendColumnNames(sql);
 
         sql.append(", ");
-        final String columnList = columnList();
+        final String columnList = columnList(fieldMappings);
         if (columnList.length() > 0) {
             sql.append(columnList);
             sql.append(", ");
@@ -191,14 +209,15 @@ public class ForeignKeyCollectionMapper 
         while (rs.next()) {
             final Oid oid = idMapping.recreateOid(rs, specification);
             final ObjectAdapter element = getAdapter(specification, oid);
-            loadFields(element, rs, makeResolved);
+            loadFields(element, rs, makeResolved, fieldMappings);
             LOG.debug("  element  " + element.getOid());
             list.add(element);
         }
         rs.close();
     }
 
-    protected void loadFields(final ObjectAdapter object, final Results rs, final boolean makeResolved) {
+    protected void loadFields(final ObjectAdapter object, final Results rs, final boolean makeResolved,
+        final List<FieldMapping> fieldMappings) {
         if (object.getResolveState().canChangeTo(ResolveState.RESOLVING)) {
             PersistorUtil.start(object, ResolveState.RESOLVING);
             for (final FieldMapping mapping : fieldMappings) {

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ForeignKeyInChildCollectionMapper.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/ForeignKeyInChildCollectionMapper.java?rev=1169896&r1=1169895&r2=1169896&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ForeignKeyInChildCollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ForeignKeyInChildCollectionMapper.java Mon Sep 12 19:44:19 2011
@@ -41,7 +41,8 @@ import org.apache.isis.runtimes.dflt.obj
 public class ForeignKeyInChildCollectionMapper extends ForeignKeyCollectionMapper {
     private static final Logger LOG = Logger.getLogger(ForeignKeyCollectionMapper.class);
 
-    // TODO: Needs to detect if field has subclasses, and to add FK_* column to *all* non-abstract subclasses.
+    protected final ObjectAssociation priorField; // prevents recursion
+    protected final List<ObjectAssociation> priorFields;
 
     public ForeignKeyInChildCollectionMapper(final ObjectAssociation objectAssociation, final String parameterBase,
         final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,
@@ -54,9 +55,12 @@ public class ForeignKeyInChildCollection
         setUpFieldMappers();
     }
 
-    protected final ObjectAssociation priorField; // prevents recursion
-
-    protected final List<ObjectAssociation> priorFields;
+    protected ForeignKeyInChildCollectionMapper(final FieldMappingLookup lookup,
+        final AbstractAutoMapper abstractAutoMapper, final ObjectAssociation field) {
+        super(lookup, abstractAutoMapper, field);
+        priorFields = null;
+        priorField = null;
+    }
 
     @Override
     protected void getExtraFields(List<ObjectAssociation> existingFields) {

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionMapper.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/PolymorphicForeignKeyInChildCollectionMapper.java?rev=1169896&r1=1169895&r2=1169896&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/PolymorphicForeignKeyInChildCollectionMapper.java Mon Sep 12 19:44:19 2011
@@ -33,7 +33,10 @@ import org.apache.isis.core.metamodel.sp
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.runtimes.dflt.objectstores.sql.DatabaseConnector;
 import org.apache.isis.runtimes.dflt.objectstores.sql.FieldMappingLookup;
+import org.apache.isis.runtimes.dflt.objectstores.sql.IdMapping;
 import org.apache.isis.runtimes.dflt.objectstores.sql.ObjectMappingLookup;
+import org.apache.isis.runtimes.dflt.objectstores.sql.VersionMapping;
+import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.FieldMapping;
 
 /**
  * Used to map 1-to-many collections by creating, in the child table, 1 column per parent collection. The column is
@@ -49,6 +52,7 @@ public class PolymorphicForeignKeyInChil
     private final ObjectAssociation baseField;
     private final List<String> tables;
     private final List<ObjectSpecification> tableSpecifications;
+    private final List<AutoMapper> subClassMappers;
     // private final String classColumnName;
 
     // For iterating through the subclasses
@@ -58,28 +62,53 @@ public class PolymorphicForeignKeyInChil
     private int currentIndexStart;
     private int currentIndex;
 
+    // Store for passing on to other mappers
+    final String parameterBase;
+    final FieldMappingLookup lookup;
+    final ObjectMappingLookup objectMapperLookup;
+    // final AbstractAutoMapper abstractAutoMapper;
+    // final ObjectAssociation field;
+    final String fieldClassName;
+
     public PolymorphicForeignKeyInChildCollectionMapper(final ObjectAssociation objectAssociation,
         final String parameterBase, final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,
-        AbstractAutoMapper abstractAutoMapper, ObjectAssociation field) {
-        super(objectAssociation, parameterBase, lookup, objectMapperLookup, abstractAutoMapper, field);
+        final AbstractAutoMapper abstractAutoMapper, final ObjectAssociation field) {
 
-        this.baseField = objectAssociation;
-        // classColumnName = Sql.identifier(getForeignKeyName() + "_cls");
+        super(lookup, abstractAutoMapper, field);
+
+        // super(objectAssociation, parameterBase, lookup, objectMapperLookup, abstractAutoMapper, field);
+        fieldClassName = className;
 
+        baseField = objectAssociation;
         tables = new ArrayList<String>();
         tableSpecifications = new ArrayList<ObjectSpecification>();
+        subClassMappers = new ArrayList<AutoMapper>();
+
+        // Capture for use in creating subclass mappers.
+        this.parameterBase = parameterBase;
+        this.lookup = lookup;
+        this.objectMapperLookup = objectMapperLookup;
+        // this.abstractAutoMapper = abstractAutoMapper;
+        // this.field = field;
+
         addSubSpecificationsToTable(specification);
 
+        // classColumnName = Sql.identifier(getForeignKeyName() + "_cls");
     }
 
     protected void addSubSpecificationsToTable(ObjectSpecification objectSpecification) {
-        for (ObjectSpecification subSpecification : objectSpecification.subclasses()) {
-            if (subSpecification.isAbstract() == false) {
-                final String tableNameFromSpecification = getTableNameFromSpecification(subSpecification);
-                tables.add(tableNameFromSpecification);
-                tableSpecifications.add(subSpecification);
-            }
-            if (subSpecification.hasSubclasses()) {
+        if (objectSpecification.isAbstract() == false) {
+            final String tableNameFromSpecification = getTableNameFromSpecification(objectSpecification);
+            tables.add(tableNameFromSpecification);
+            tableSpecifications.add(objectSpecification);
+
+            // setUpFieldMappers();
+            AutoMapper autoMapper =
+                new AutoMapper(objectSpecification.getFullIdentifier(), parameterBase, lookup, objectMapperLookup);
+            subClassMappers.add(autoMapper);
+        }
+        if (objectSpecification.hasSubclasses()) {
+            for (ObjectSpecification subSpecification : objectSpecification.subclasses()) {
                 addSubSpecificationsToTable(subSpecification);
             }
         }
@@ -199,15 +228,20 @@ public class PolymorphicForeignKeyInChil
 
     @Override
     protected void loadCollectionIntoList(final DatabaseConnector connector, final ObjectAdapter parent,
-        final boolean makeResolved, final List<ObjectAdapter> superList) {
+        final boolean makeResolved, final IdMapping idMapping, final List<FieldMapping> fieldMappings,
+        final VersionMapping versionMapping, final List<ObjectAdapter> superList) {
         // TODO: Polymorphism: save instances to appropriate subclass tables
         final List<ObjectAdapter> list = new ArrayList<ObjectAdapter>();
         for (int i = 0; i < tables.size(); i++) {
             currentTableSpecification = tableSpecifications.get(i);
+
+            AutoMapper mapper = subClassMappers.get(i);
+
             specification = currentTableSpecification;
 
             table = tables.get(i);
-            super.loadCollectionIntoList(connector, parent, makeResolved, list);
+            super.loadCollectionIntoList(connector, parent, makeResolved, mapper.getIdMapping(), mapper.fieldMappings,
+                mapper.getVersionMapping(), list);
 
             superList.addAll(list);
             list.clear();

Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ReversedAutoAssociationMapper.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/ReversedAutoAssociationMapper.java?rev=1169896&r1=1169895&r2=1169896&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ReversedAutoAssociationMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/ReversedAutoAssociationMapper.java Mon Sep 12 19:44:19 2011
@@ -96,7 +96,7 @@ public class ReversedAutoAssociationMapp
             sql.append("select ");
             idMapping.appendColumnNames(sql);
             sql.append(", ");
-            sql.append(columnList());
+            sql.append(columnList(fieldMappings));
             sql.append(" from ");
             sql.append(table);
             sql.append(" where ");
@@ -154,7 +154,7 @@ public class ReversedAutoAssociationMapp
         sql.append("insert into " + table + " (");
         idMapping.appendColumnNames(sql);
         sql.append(", ");
-        final String columnList = columnList();
+        final String columnList = columnList(fieldMappings);
         if (columnList.length() > 0) {
             sql.append(columnList);
             sql.append(", ");

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/PolyBaseClass.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/PolyBaseClass.java?rev=1169896&r1=1169895&r2=1169896&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/PolyBaseClass.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/PolyBaseClass.java Mon Sep 12 19:44:19 2011
@@ -30,18 +30,18 @@ import org.apache.isis.applib.AbstractDo
  */
 public abstract class PolyBaseClass extends AbstractDomainObject {
     public String title() {
-        return string;
+        return stringBase;
     }
 
     // {{ String type
-    private String string;
+    private String stringBase;
 
-    public String getString() {
-        return string;
+    public String getStringBase() {
+        return stringBase;
     }
 
-    public void setString(final String string) {
-        this.string = string;
+    public void setStringBase(final String string) {
+        this.stringBase = string;
     }
 
     // }}

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/PolySubClassOne.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/PolySubClassOne.java?rev=1169896&r1=1169895&r2=1169896&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/PolySubClassOne.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/PolySubClassOne.java Mon Sep 12 19:44:19 2011
@@ -22,7 +22,6 @@
  */
 package org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism;
 
-
 /**
  * @author Kevin
  * 
@@ -30,20 +29,18 @@ package org.apache.isis.runtimes.dflt.ob
 public class PolySubClassOne extends PolyBaseClass {
     @Override
     public String title() {
-        return string;
+        return stringOne;
     }
 
     // {{ String type
-    private String string;
+    private String stringOne;
 
-    @Override
-    public String getString() {
-        return string;
+    public String getStringClassOne() {
+        return stringOne;
     }
 
-    @Override
-    public void setString(final String string) {
-        this.string = string;
+    public void setStringClassOne(final String string) {
+        this.stringOne = string;
     }
 
     // }}

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/PolySubClassThree.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/PolySubClassThree.java?rev=1169896&r1=1169895&r2=1169896&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/PolySubClassThree.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/PolySubClassThree.java Mon Sep 12 19:44:19 2011
@@ -31,11 +31,11 @@ public class PolySubClassThree extends P
     // {{ String type
     private String string;
 
-    public String getAnotherString() {
+    public String getStringClassThree() {
         return string;
     }
 
-    public void setAnotherString(final String string) {
+    public void setStringClassThree(final String string) {
         this.string = string;
     }
 

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/PolySubClassTwo.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/PolySubClassTwo.java?rev=1169896&r1=1169895&r2=1169896&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/PolySubClassTwo.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/PolySubClassTwo.java Mon Sep 12 19:44:19 2011
@@ -29,22 +29,19 @@ package org.apache.isis.runtimes.dflt.ob
 public class PolySubClassTwo extends PolyBaseClass {
     @Override
     public String title() {
-        return string;
+        return stringClassTwo;
     }
 
     // {{ String type
-    private String string;
+    private String stringClassTwo;
 
-    @Override
-    public String getString() {
-        return string;
+    public String getStringClassTwo() {
+        return stringClassTwo;
     }
 
-    @Override
-    public void setString(final String string) {
-        this.string = string;
+    public void setStringClassTwo(final String string) {
+        this.stringClassTwo = string;
     }
-
     // }}
 
 }

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=1169896&r1=1169895&r2=1169896&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 Mon Sep 12 19:44:19 2011
@@ -126,14 +126,17 @@ public class PolymorphismTest extends Sq
 
         // setup the polyTestClass
         PolySubClassOne polySubClassOne = factory.newPolySubClassOne();
-        polySubClassOne.setString("PolySubClassOne 1");
+        polySubClassOne.setStringBase("PolySubClassOne 1");
+        polySubClassOne.setStringClassOne("Class 1");
 
         PolySubClassTwo polySubClassTwo = factory.newPolySubClassTwo();
-        polySubClassTwo.setString("PolySubClassTwo 1");
+        polySubClassTwo.setStringBase("PolySubClassTwo 1");
+        polySubClassTwo.setStringClassTwo("Class 2");
 
         PolySubClassThree polySubClassThree = factory.newPolySubClassThree();
-        polySubClassThree.setString("PolySubClassThree 1");
-        polySubClassThree.setAnotherString("Another String");
+        polySubClassThree.setStringBase("PolySubClassThree 1");
+        polySubClassThree.setStringClassThree("Another String");
+        polySubClassThree.setStringClassTwo("Class 3");
 
         polyTestClass.getPolyBaseClasses().add(polySubClassOne);
         polyTestClass.getPolyBaseClasses().add(polySubClassTwo);
@@ -169,15 +172,29 @@ public class PolymorphismTest extends Sq
         final PolyTestClass polyTestClass = SqlIntegrationTestSingleton.getStaticPolyTestClass();
 
         List<PolyBaseClass> polyBaseClasses = polyTestClass.getPolyBaseClasses();
-        // TODO Polymorphism test temporary disabled
         assertEquals(3, polyBaseClasses.size());
 
+        PolyBaseClass polyClassBase = polyBaseClasses.get(0);
+        assertTrue(polyClassBase instanceof PolySubClassOne);
+        assertEquals("PolySubClassOne 1", polyClassBase.getStringBase());
+        final PolySubClassOne polySubClassOne = (PolySubClassOne) polyClassBase;
+        assertEquals("Class 1", polySubClassOne.getStringClassOne());
+
+        polyClassBase = polyBaseClasses.get(1);
+        assertTrue(polyClassBase instanceof PolySubClassTwo);
+        final PolySubClassTwo polySubClassTwo = (PolySubClassTwo) polyClassBase;
+        assertEquals("Class 2", polySubClassTwo.getStringClassTwo());
+
+        polyClassBase = polyBaseClasses.get(2);
+        assertTrue(polyClassBase instanceof PolySubClassThree);
+        final PolySubClassThree polySubClassThree = (PolySubClassThree) polyClassBase;
+        assertEquals("Class 3", polySubClassThree.getStringClassTwo());
+        assertEquals("Another String", polySubClassThree.getStringClassThree());
     }
 
     public void testInterfaceLoad() {
         final SqlDataClassFactory factory = SqlIntegrationTestSingleton.getSqlDataClassFactory();
         final PolyTestClass polyTestClass = SqlIntegrationTestSingleton.getStaticPolyTestClass();
-        // assertEquals(polyTestClass.getClass(), polyTestClass.getPolyTestInterface().getClass());
 
         PolyInterface loaded = polyTestClass.getPolyInterfaceType();
         factory.resolve(loaded);