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/03 21:20:32 UTC
svn commit: r1164915 - in
/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql:
sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/
sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/
sql-tests-...
Author: kevin
Date: Sat Sep 3 19:20:31 2011
New Revision: 1164915
URL: http://svn.apache.org/viewvc?rev=1164915&view=rev
Log:
ISIS-118 and ISIS-117: Implemented some support for collections and sub-classes. Recursive collections has been added (the collection of a class can be of the same type as the class).
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/CombinedCollectionMapper.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/MultiColumnCombinedCollectionMapper.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-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcAbstractReferenceFieldMapping.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/PolyTestClass.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=1164915&r1=1164914&r2=1164915&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 Sat Sep 3 19:20:31 2011
@@ -45,13 +45,11 @@ import org.apache.isis.runtimes.dflt.run
public abstract class AbstractAutoMapper extends AbstractMapper {
private static final Logger LOG = Logger.getLogger(AbstractAutoMapper.class);
- protected CollectionMapper collectionMappers[];
- protected boolean dbCreatesId;
- protected ObjectSpecification specification;
- protected String table;
- protected List<FieldMapping> fieldMappings = new ArrayList<FieldMapping>();
- protected Map<ObjectAssociation, FieldMapping> fieldMappingLookup = new HashMap<ObjectAssociation, FieldMapping>();
+ final String className;
+ final String parameterBase;
+ final FieldMappingLookup lookup;
+ final ObjectMappingLookup objectMapperLookup;
protected AbstractAutoMapper(final String className, final String parameterBase, final FieldMappingLookup lookup,
final ObjectMappingLookup objectMapperLookup) {
@@ -62,9 +60,24 @@ public abstract class AbstractAutoMapper
+ specification);
}
}
+ this.className = className;
+ this.parameterBase = parameterBase;
+ this.lookup = lookup;
+ this.objectMapperLookup = objectMapperLookup;
+ }
+
+ protected void setUpFieldMappers() {
setUpFieldMappers(lookup, objectMapperLookup, className, parameterBase);
}
+ protected CollectionMapper collectionMappers[];
+ protected boolean dbCreatesId;
+
+ protected ObjectSpecification specification;
+ protected String table;
+ protected List<FieldMapping> fieldMappings = new ArrayList<FieldMapping>();
+ protected Map<ObjectAssociation, FieldMapping> fieldMappingLookup = new HashMap<ObjectAssociation, FieldMapping>();
+
private void setUpFieldMappers(final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,
final String className, final String parameterBase) {
final IsisConfiguration configParameters = IsisContext.getConfiguration();
@@ -86,9 +99,30 @@ public abstract class AbstractAutoMapper
LOG.info("table mapping: " + table + " (" + columnList() + ")");
}
+ protected List<ObjectAssociation> fields = new ArrayList<ObjectAssociation>();
+
+ protected void getExtraFields(List<ObjectAssociation> fields) {
+ }
+
private void setupFullMapping(final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,
final String className, final IsisConfiguration configParameters, final String parameterBase) {
- final List<? extends ObjectAssociation> fields = specification.getAssociations();
+
+ fields.addAll(specification.getAssociations());
+
+ if (specification.hasSubclasses()) {
+ getExtraFields(fields);
+
+ final List<ObjectSpecification> subclasses = specification.subclasses();
+
+ for (ObjectSpecification subclass : subclasses) {
+ final List<? extends ObjectAssociation> subAssociations = subclass.getAssociations();
+ for (ObjectAssociation subA : subAssociations) {
+ if (fields.contains(subA) == false) {
+ fields.add(subA);
+ }
+ }
+ }
+ }
int simpleFieldCount = 0;
int collectionFieldCount = 0;
@@ -125,9 +159,31 @@ public abstract class AbstractAutoMapper
// collectionMappers[collectionFieldNo] = new
// CombinedCollectionMapper(oneToManyProperties[collectionFieldNo], parameterBase, lookup,
// objectMapperLookup);
- collectionMappers[collectionFieldNo] =
- new MultiColumnCombinedCollectionMapper(oneToManyProperties[collectionFieldNo], parameterBase,
- lookup, objectMapperLookup);
+
+ CollectionMapper collectionMapper = null;
+
+ // Trying to detect recursion, here.
+ // Let MultiColumnCombinedCollectionMapper find itself when a field is a collection of the current
+ // field type.
+ if (this instanceof MultiColumnCombinedCollectionMapper) {
+ MultiColumnCombinedCollectionMapper mc = (MultiColumnCombinedCollectionMapper) this;
+
+ if (mc.priorField == field) {
+ collectionMapper = mc;
+ } else {
+ collectionMapper =
+ new MultiColumnCombinedCollectionMapper(oneToManyProperties[collectionFieldNo],
+ parameterBase, lookup, objectMapperLookup, this, field);
+ }
+ }
+
+ if (collectionMapper == null) {
+ collectionMapper =
+ new MultiColumnCombinedCollectionMapper(oneToManyProperties[collectionFieldNo],
+ parameterBase, lookup, objectMapperLookup, this, field);
+ }
+
+ collectionMappers[collectionFieldNo] = collectionMapper;
} else if (type.equals("fk-table")) {
final String property = parameterBase + field.getId() + ".element-type";
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=1164915&r1=1164914&r2=1164915&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 Sat Sep 3 19:20:31 2011
@@ -60,6 +60,8 @@ public class AutoMapper extends Abstract
idMapping = lookup.createIdMapping();
versionMapping = lookup.createVersionMapping();
titleMapping = lookup.createTitleMapping();
+
+ setUpFieldMappers();
}
@Override
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.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/CombinedCollectionMapper.java?rev=1164915&r1=1164914&r2=1164915&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/CombinedCollectionMapper.java Sat Sep 3 19:20:31 2011
@@ -51,12 +51,14 @@ public class CombinedCollectionMapper ex
private final ObjectReferenceMapping foreignKeyMapping;
private String foreignKeyName;
private String columnName;
- private final ObjectMapping originalMapping;
private final ObjectMappingLookup objectMapperLookup2;
+ private ObjectMapping originalMapping = null;
+
public CombinedCollectionMapper(final ObjectAssociation objectAssociation, final String parameterBase,
final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup) {
super(objectAssociation.getSpecification().getFullIdentifier(), parameterBase, lookup, objectMapperLookup);
+
this.field = objectAssociation;
objectMapperLookup2 = objectMapperLookup;
@@ -64,8 +66,6 @@ public class CombinedCollectionMapper ex
idMapping = lookup.createIdMapping();
versionMapping = lookup.createVersionMapping();
- originalMapping = objectMapperLookup.getMapping(objectAssociation.getSpecification(), null);
-
setColumnName(determineColumnName(objectAssociation));
foreignKeyName = Sql.sqlName("fk_" + getColumnName());
@@ -92,6 +92,9 @@ public class CombinedCollectionMapper ex
@Override
public void startup(final DatabaseConnector connector, final FieldMappingLookup lookup) {
+ if (originalMapping == null) {
+ originalMapping = objectMapperLookup.getMapping(field.getSpecification(), null);
+ }
originalMapping.startup(connector, objectMapperLookup2);
super.startup(connector, lookup);
}
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/MultiColumnCombinedCollectionMapper.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/MultiColumnCombinedCollectionMapper.java?rev=1164915&r1=1164914&r2=1164915&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/MultiColumnCombinedCollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/MultiColumnCombinedCollectionMapper.java Sat Sep 3 19:20:31 2011
@@ -22,6 +22,10 @@
*/
package org.apache.isis.runtimes.dflt.objectstores.sql.auto;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationImpl;
@@ -35,10 +39,34 @@ import org.apache.isis.runtimes.dflt.obj
* @author Kevin
*/
public class MultiColumnCombinedCollectionMapper extends CombinedCollectionMapper {
+ private static final Logger LOG = Logger.getLogger(CombinedCollectionMapper.class);
public MultiColumnCombinedCollectionMapper(final ObjectAssociation objectAssociation, final String parameterBase,
- final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup) {
+ final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,
+ AbstractAutoMapper abstractAutoMapper, ObjectAssociation field) {
super(objectAssociation, parameterBase, lookup, objectMapperLookup);
+
+ priorFields = abstractAutoMapper.fields;
+ priorField = field;
+
+ setUpFieldMappers();
+ }
+
+ protected final ObjectAssociation priorField; // prevents recursion
+
+ protected final List<ObjectAssociation> priorFields;
+
+ @Override
+ protected void getExtraFields(List<ObjectAssociation> existingFields) {
+ if (priorFields != null) {
+ for (ObjectAssociation priorField1 : priorFields) {
+ if (existingFields.contains(priorField1) == false) {
+ existingFields.add(priorField1);
+ } else {
+ LOG.debug("Skipping prior field: " + priorField1.getName());
+ }
+ }
+ }
}
@Override
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=1164915&r1=1164914&r2=1164915&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 Sat Sep 3 19:20:31 2011
@@ -23,6 +23,8 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import org.apache.log4j.Logger;
+
import org.apache.isis.core.commons.debug.DebugBuilder;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.ResolveState;
@@ -39,7 +41,6 @@ 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.ObjectReferenceMapping;
import org.apache.isis.runtimes.dflt.runtime.persistence.PersistorUtil;
-import org.apache.log4j.Logger;
/** used where there is a one to many association, and the elements are only known to parent */
public class ReversedAutoAssociationMapper extends AbstractAutoMapper implements CollectionMapper {
@@ -56,6 +57,8 @@ public class ReversedAutoAssociationMapp
idMapping = lookup.createMapping(field.getSpecification());
versionMapping = lookup.createVersionMapping();
+
+ setUpFieldMappers();
}
@Override
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcAbstractReferenceFieldMapping.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/JdbcAbstractReferenceFieldMapping.java?rev=1164915&r1=1164914&r2=1164915&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcAbstractReferenceFieldMapping.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/jdbc/JdbcAbstractReferenceFieldMapping.java Sat Sep 3 19:20:31 2011
@@ -71,7 +71,6 @@ public class JdbcAbstractReferenceFieldM
@Override
public void appendCreateColumnDefinitions(final StringBuffer sql) {
super.appendCreateColumnDefinitions(sql);
- // add the class instance name preserver
sql.append(classnameColumn);
sql.append(" ");
sql.append(JdbcConnector.TYPE_STRING());
@@ -93,8 +92,13 @@ public class JdbcAbstractReferenceFieldM
public void appendInsertValues(final DatabaseConnector connector, final StringBuffer sql, final ObjectAdapter object) {
super.appendInsertValues(connector, sql, object);
sql.append(",?");
+
ObjectAdapter objectAdapter = field.get(object);
- connector.addToQueryValues(objectAdapter.getSpecification().getFullIdentifier());
+ if (objectAdapter != null) {
+ connector.addToQueryValues(objectAdapter.getSpecification().getFullIdentifier());
+ } else {
+ connector.addToQueryValues(null);
+ }
}
@Override
@@ -106,19 +110,24 @@ public class JdbcAbstractReferenceFieldM
sql.append(" = ?");
ObjectAdapter objectAdapter = field.get(object);
- connector.addToQueryValues(objectAdapter.getSpecification().getFullIdentifier());
+ if (objectAdapter != null) {
+ connector.addToQueryValues(objectAdapter.getSpecification().getFullIdentifier());
+ } else {
+ connector.addToQueryValues(null);
+ }
}
@Override
public void initializeField(final ObjectAdapter object, final Results rs) {
- // TODO: find the specification for the field name
String className = rs.getString(classnameColumn);
- final ObjectSpecification specification = getReflector().loadSpecification(className);
+ if (className != null) {
+ final ObjectSpecification specification = getReflector().loadSpecification(className);
- final Oid oid = recreateOid(rs, specification);
+ final Oid oid = recreateOid(rs, specification);
- final ObjectAdapter reference = getAdapter(specification, oid);
- ((OneToOneAssociation) field).initAssociation(object, reference);
+ final ObjectAdapter reference = getAdapter(specification, oid);
+ ((OneToOneAssociation) field).initAssociation(object, reference);
+ }
}
@Override
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/PolyTestClass.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/PolyTestClass.java?rev=1164915&r1=1164914&r2=1164915&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/PolyTestClass.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/PolyTestClass.java Sat Sep 3 19:20:31 2011
@@ -22,6 +22,9 @@
*/
package org.apache.isis.runtimes.dflt.objectstores.sql.testsystem.dataclasses.polymorphism;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.isis.applib.AbstractDomainObject;
/**
@@ -60,17 +63,17 @@ public class PolyTestClass extends Abstr
// }}
- // {{ PolyBaseClass collection
- // private List<PolyTestInterface> polyTestClasses = new ArrayList<PolyTestInterface>();
+ // {{ PolyTestClass collection
+ private List<PolyTestClass> polyTestClasses = new ArrayList<PolyTestClass>();
- // @MemberOrder(sequence = "2")
- // public List<PolyTestInterface> getPolyTestClasses() {
- // return polyTestClasses;
- // }
+ public List<PolyTestClass> getPolyTestClasses() {
+ return polyTestClasses;
+ }
+
+ public void setPolyTestClasses(final List<PolyTestClass> polyTestClasses) {
+ this.polyTestClasses = polyTestClasses;
+ }
- // public void setPolyTestClasses(final List<PolyTestInterface> polyTestClasses) {
- // this.polyTestClasses = polyTestClasses;
- // }
// }}
// {{ PolyTestClass property
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=1164915&r1=1164914&r2=1164915&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 Sat Sep 3 19:20:31 2011
@@ -61,8 +61,9 @@ public class PolymorphismTest extends Sq
final PolyTestClass polyTestClass = factory.newPolyTestClass();
polyTestClass.setString("polyTestClassString");
- // polyTestClass.getPolyTestClasses().add(polyTestClass);
- polyTestClass.setPolyTestInterface(polyTestClass);
+ polyTestClass.getPolyTestClasses().add(polyTestClass);
+
+ // polyTestClass.setPolyTestInterface(polyTestClass);
polyIntImpA = factory.newPolyInterfaceImplA();
polyIntImpA.setString("Impl A String");
@@ -108,11 +109,21 @@ public class PolymorphismTest extends Sq
public void testInterfaceLoad() {
final SqlDataClassFactory factory = SqlIntegrationTestSingleton.getSqlDataClassFactory();
final PolyTestClass polyTestClass = SqlIntegrationTestSingleton.getStaticPolyTestClass();
- assertEquals(polyTestClass.getClass(), polyTestClass.getPolyTestInterface().getClass());
+ // assertEquals(polyTestClass.getClass(), polyTestClass.getPolyTestInterface().getClass());
+
PolyInterface loaded = polyTestClass.getPolyInterfaceType();
factory.resolve(loaded);
assertEquals(polyIntImpA.getString(), loaded.getString());
+ }
+
+ public void testInterfaceLoadCollection() {
+ final PolyTestClass polyTestClass = SqlIntegrationTestSingleton.getStaticPolyTestClass();
+
+ List<PolyTestClass> list = polyTestClass.getPolyTestClasses();
+ assertEquals(1, list.size());
+ PolyInterface loaded = polyTestClass.getPolyInterfaceType();
+ assertEquals(polyIntImpA.getString(), loaded.getString());
}
public void testInterfaceEditSave() {