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 2013/01/27 14:35:15 UTC
[2/2] git commit: ISIS-268: Fixed tests to run with-out errors. -
Added @FixMethodOrder(MethodSorters.NAME_ASCENDING) annotation to force tests
to run in alphabetical order - Tests need to run in a specific order to test
full life-cycle of nothing, cre
Updated Branches:
refs/heads/master a23e6e73b -> ed19fe9b7
ISIS-268: Fixed tests to run with-out errors.
- Added @FixMethodOrder(MethodSorters.NAME_ASCENDING) annotation to force tests to run in alphabetical order
- Tests need to run in a specific order to test full life-cycle of nothing, create, test - with the database being closed and re-opened between tests.
- added @BeforeClass on deleteHsqlDbFiles to remove hsqldb files before test suite (clears all residual database files)
- added JdbcImageValueMapper to handle images as a test of blob support.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/ed19fe9b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/ed19fe9b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/ed19fe9b
Branch: refs/heads/master
Commit: ed19fe9b7238c39380ddd04797c915d75a87723a
Parents: bac67aa
Author: Kevin Meyer <ke...@apache.org>
Authored: Sat Jan 26 21:16:18 2013 +0100
Committer: Kevin Meyer <ke...@apache.org>
Committed: Sat Jan 26 21:16:18 2013 +0100
----------------------------------------------------------------------
.../objectstore/sql/auto/AbstractAutoMapper.java | 126 +++++++--------
.../objectstore/sql/auto/AutoCollectionMapper.java | 22 ++--
.../sql/auto/ForeignKeyCollectionMapper.java | 54 ++++---
...rphicForeignKeyInChildCollectionBaseMapper.java | 37 +++--
.../sql/common/SqlIntegrationTestCommonBase.java | 2 +
.../org/apache/isis/objectstore/sql/HsqlTest.java | 5 +-
.../isis/objectstore/sql/PolymorphismTest.java | 7 +-
7 files changed, 131 insertions(+), 122 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/ed19fe9b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
----------------------------------------------------------------------
diff --git a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
index fc7f3a0..c4884e7 100644
--- a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
+++ b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AbstractAutoMapper.java
@@ -38,7 +38,6 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi;
import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.objectstore.sql.AbstractMapper;
import org.apache.isis.objectstore.sql.CollectionMapper;
@@ -51,11 +50,11 @@ import org.apache.isis.objectstore.sql.SqlObjectStoreException;
import org.apache.isis.objectstore.sql.mapping.FieldMapping;
public abstract class AbstractAutoMapper extends AbstractMapper {
-
+
private static final Logger LOG = Logger.getLogger(AbstractAutoMapper.class);
protected final Map<ObjectAssociation, FieldMapping> fieldMappingByField = Maps.newLinkedHashMap();
-
+
protected CollectionMapper collectionMappers[];
protected String collectionMapperFields[];
protected boolean dbCreatesId;
@@ -68,15 +67,17 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
final FieldMappingLookup lookup;
final ObjectMappingLookup objectMappingLookup;
- protected AbstractAutoMapper(final String className, final String parameterBase, final FieldMappingLookup lookup, final ObjectMappingLookup objectMappingLookup) {
- this.specification = specificationFor(className);
+ protected AbstractAutoMapper(final String className, final String parameterBase, final FieldMappingLookup lookup,
+ final ObjectMappingLookup objectMappingLookup) {
+ this.specification = specificationFor(className);
this.className = className;
this.parameterBase = parameterBase;
this.lookup = lookup;
this.objectMappingLookup = objectMappingLookup;
}
- protected AbstractAutoMapper(final FieldMappingLookup lookup, final AbstractAutoMapper abstractAutoMapper, final String className) {
+ protected AbstractAutoMapper(final FieldMappingLookup lookup, final AbstractAutoMapper abstractAutoMapper,
+ final String className) {
this.specification = getSpecificationLoader().loadSpecification(className);
this.className = className;
@@ -86,21 +87,21 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
this.objectMappingLookup = null;
}
- private static ObjectSpecification specificationFor(final String className) {
- ObjectSpecification specification = IsisContext.getSpecificationLoader().loadSpecification(className);
+ private static ObjectSpecification specificationFor(final String className) {
+ ObjectSpecification specification = IsisContext.getSpecificationLoader().loadSpecification(className);
List<OneToOneAssociation> properties = specification.getProperties();
- if (isNullOrEmpty(properties) && !specification.isAbstract()) {
+ if (isNullOrEmpty(properties) && !specification.isAbstract()) {
throw new SqlObjectStoreException(specification.getFullIdentifier() + " has no fields: " + specification);
}
- return specification;
- }
-
+ return specification;
+ }
protected void setUpFieldMappers() {
setUpFieldMappers(lookup, objectMappingLookup, className, parameterBase);
}
- private void setUpFieldMappers(final FieldMappingLookup lookup, final ObjectMappingLookup objectMappingLookup, final String className, final String parameterBase) {
+ private void setUpFieldMappers(final FieldMappingLookup lookup, final ObjectMappingLookup objectMappingLookup,
+ final String className, final String parameterBase) {
final IsisConfiguration configParameters = getConfiguration();
table = configParameters.getString(parameterBase + ".table." + className);
if (table == null) {
@@ -130,7 +131,8 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
protected void getExtraFields(final List<ObjectAssociation> fields) {
}
- private void setupFullMapping(final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup, final String className, final IsisConfiguration configParameters, final String parameterBase) {
+ private void setupFullMapping(final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,
+ final String className, final IsisConfiguration configParameters, final String parameterBase) {
fields.addAll(specification.getAssociations());
@@ -198,9 +200,14 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
if (fieldSpecification.hasSubclasses() || fieldSpecification.isAbstract()) {
// PolymorphicForeignKeyInChildCollectionBaseMapper
// Or PolymorphicForeignKeyInChildCollectionMapper
- collectionMapper = new PolymorphicForeignKeyInChildCollectionBaseMapper(oneToManyProperties[collectionFieldNo], parameterBase, lookup, objectMapperLookup, this, field);
+ collectionMapper =
+ new PolymorphicForeignKeyInChildCollectionBaseMapper(
+ oneToManyProperties[collectionFieldNo], parameterBase, lookup, objectMapperLookup,
+ this, field);
} else {
- final ForeignKeyInChildCollectionMapper mapper = new ForeignKeyInChildCollectionMapper(oneToManyProperties[collectionFieldNo], parameterBase, lookup, objectMapperLookup, this, field);
+ final ForeignKeyInChildCollectionMapper mapper =
+ new ForeignKeyInChildCollectionMapper(oneToManyProperties[collectionFieldNo],
+ parameterBase, lookup, objectMapperLookup, this, field);
mapper.setUpFieldMappers();
collectionMapper = mapper;
}
@@ -216,10 +223,8 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
throw new SqlObjectStoreException("Expected property " + property);
}
/*
- * collectionMappers[collectionFieldNo] = new
- * ForeignKeyCollectionMapper(elementType,
- * oneToManyProperties[collectionFieldNo], parameterBase,
- * lookup, objectMapperLookup);
+ * collectionMappers[collectionFieldNo] = new ForeignKeyCollectionMapper(elementType,
+ * oneToManyProperties[collectionFieldNo], parameterBase, lookup, objectMapperLookup);
*/
} else {
// TODO use other mappers where necessary
@@ -236,53 +241,40 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
}
}
-
for (final ObjectAssociation field : oneToOneProperties) {
- if(fieldMappingByField.containsKey(field)) {
- continue;
- }
- final FieldMapping mapping = lookup.createMapping(specification, field);
+ if (fieldMappingByField.containsKey(field)) {
+ continue;
+ }
+ final FieldMapping mapping = lookup.createMapping(specification, field);
fieldMappingByField.put(field, mapping);
}
}
protected String columnList(final Map<ObjectAssociation, FieldMapping> fieldMappingByField) {
- return columnList(fieldMappingByField.values());
+ return columnList(fieldMappingByField.values());
}
/*
- * private void setupSpecifiedMapping( final ObjectSpecification
- * specification, final IsisConfiguration configParameters, final String
- * parameterBase) { IsisConfiguration columnMappings =
- * IsisContext.getConfiguration().createSubset(parameterBase + "column");
- * int columnsSize = columnMappings.size(); // columnNames = new
- * String[columnsSize]; oneToOneProperties = new
- * ObjectAssociation[columnsSize];
+ * private void setupSpecifiedMapping( final ObjectSpecification specification, final IsisConfiguration
+ * configParameters, final String parameterBase) { IsisConfiguration columnMappings =
+ * IsisContext.getConfiguration().createSubset(parameterBase + "column"); int columnsSize = columnMappings.size();
+ * // columnNames = new String[columnsSize]; oneToOneProperties = new ObjectAssociation[columnsSize];
*
- * int i = 0; for (Enumeration names = columnMappings.propertyNames();
- * names.hasMoreElements(); i++) { String columnName = (String)
- * names.nextElement(); String fieldName =
- * columnMappings.getString(columnName); oneToOneProperties[i] =
- * specification.getAssociation(fieldName); // columnNames[i] = columnName;
- * }
+ * int i = 0; for (Enumeration names = columnMappings.propertyNames(); names.hasMoreElements(); i++) { String
+ * columnName = (String) names.nextElement(); String fieldName = columnMappings.getString(columnName);
+ * oneToOneProperties[i] = specification.getAssociation(fieldName); // columnNames[i] = columnName; }
*
- * IsisConfiguration collectionMappings =
- * IsisContext.getConfiguration().createSubset( parameterBase +
- * "collection"); int collectionsSize = collectionMappings.size();
- * collectionMappers = new AutoCollectionMapper[collectionsSize];
- * oneToManyProperties = new ObjectAssociation[collectionsSize];
+ * IsisConfiguration collectionMappings = IsisContext.getConfiguration().createSubset( parameterBase +
+ * "collection"); int collectionsSize = collectionMappings.size(); collectionMappers = new
+ * AutoCollectionMapper[collectionsSize]; oneToManyProperties = new ObjectAssociation[collectionsSize];
*
- * int j = 0; for (Enumeration names = collectionMappings.propertyNames();
- * names.hasMoreElements(); j++) { String propertyName = (String)
- * names.nextElement(); String collectionName =
- * collectionMappings.getString(propertyName); String type =
- * collectionMappings.getString(collectionName);
+ * int j = 0; for (Enumeration names = collectionMappings.propertyNames(); names.hasMoreElements(); j++) { String
+ * propertyName = (String) names.nextElement(); String collectionName = collectionMappings.getString(propertyName);
+ * String type = collectionMappings.getString(collectionName);
*
- * oneToManyProperties[j] = specification.getAssociation(collectionName); if
- * (type.equals("auto")) { collectionMappers[j] = new
- * AutoCollectionMapper(this, specification, oneToManyProperties[j],
- * getLookup()); } else { // TODO use other mappers where necessary // new
- * ReversedAutoAssociationMapper(specification, collectionName,
+ * oneToManyProperties[j] = specification.getAssociation(collectionName); if (type.equals("auto")) {
+ * collectionMappers[j] = new AutoCollectionMapper(this, specification, oneToManyProperties[j], getLookup()); } else
+ * { // TODO use other mappers where necessary // new ReversedAutoAssociationMapper(specification, collectionName,
* parameterBase);
*
* throw new NotYetImplementedException(); } } }
@@ -303,8 +295,9 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
if (adapter != null) {
return adapter;
}
-
- // REVIEW: where the oid is a TypedOid, the following two lines could be replaced by getPersistenceSession().recreatePersistentAdapter(oid)
+
+ // REVIEW: where the oid is a TypedOid, the following two lines could be replaced by
+ // getPersistenceSession().recreatePersistentAdapter(oid)
// is preferable, since then reuses the PojoRecreator impl defined within SqlPersistorInstaller
final Object recreatedPojo = spec.createObject();
return getPersistenceSession().mapRecreatedPojo(oid, recreatedPojo);
@@ -333,25 +326,23 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
return sql.toString();
}
-
private static boolean isNullOrEmpty(List<?> list) {
- return list == null || list.size() == 0;
+ return list == null || list.size() == 0;
}
-
-
@Override
public String toString() {
- return "AbstractAutoMapper [table=" + table + ",noColumns=" + fieldMappingByField.size() + ",specification=" + specification.getFullIdentifier() + "]";
+ return "AbstractAutoMapper [table=" + table + ",noColumns=" + fieldMappingByField.size() + ",specification="
+ + specification.getFullIdentifier() + "]";
}
- protected SpecificationLoaderSpi getSpecificationLoader() {
- return IsisContext.getSpecificationLoader();
- }
+ protected SpecificationLoaderSpi getSpecificationLoader() {
+ return IsisContext.getSpecificationLoader();
+ }
- protected IsisConfiguration getConfiguration() {
- return IsisContext.getConfiguration();
- }
+ protected IsisConfiguration getConfiguration() {
+ return IsisContext.getConfiguration();
+ }
protected PersistenceSession getPersistenceSession() {
return IsisContext.getPersistenceSession();
@@ -361,5 +352,4 @@ public abstract class AbstractAutoMapper extends AbstractMapper {
return getPersistenceSession().getAdapterManager();
}
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/ed19fe9b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AutoCollectionMapper.java
----------------------------------------------------------------------
diff --git a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AutoCollectionMapper.java b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AutoCollectionMapper.java
index f6a2f08..8e867e6 100644
--- a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AutoCollectionMapper.java
+++ b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/AutoCollectionMapper.java
@@ -26,8 +26,6 @@ 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;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.typeof.TypeOfFacet;
@@ -51,7 +49,8 @@ public class AutoCollectionMapper extends AbstractMapper implements CollectionMa
private final ObjectReferenceMapping elementMapping;
private final IdMapping idMapping;
- public AutoCollectionMapper(final ObjectSpecification specification, final ObjectAssociation field, final FieldMappingLookup lookup) {
+ public AutoCollectionMapper(final ObjectSpecification specification, final ObjectAssociation field,
+ final FieldMappingLookup lookup) {
this.field = field;
final ObjectSpecification spec = field.getFacet(TypeOfFacet.class).valueSpec();
@@ -87,15 +86,15 @@ public class AutoCollectionMapper extends AbstractMapper implements CollectionMa
final ObjectAdapter collectionAdapter = field.get(parentAdapter);
if (!collectionAdapter.canTransitionToResolving()) {
return;
- }
-
- if(LOG.isDebugEnabled()) {
+ }
+
+ if (LOG.isDebugEnabled()) {
LOG.debug("loading internal collection " + field);
}
-
+
try {
PersistorUtil.startResolving(collectionAdapter);
-
+
final StringBuffer sql = new StringBuffer();
sql.append("select ");
idMapping.appendColumnNames(sql);
@@ -103,17 +102,18 @@ public class AutoCollectionMapper extends AbstractMapper implements CollectionMa
elementMapping.appendColumnNames(sql);
sql.append(" from ");
sql.append(tableName);
-
+
final Results rs = connector.select(sql.toString());
final List<ObjectAdapter> list = new ArrayList<ObjectAdapter>();
while (rs.next()) {
final ObjectAdapter element = ((JdbcObjectReferenceMapping) elementMapping).initializeField(rs);
- if(LOG.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
LOG.debug(" element " + element.getOid());
}
list.add(element);
}
- final CollectionFacet collectionFacet = collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
+ final CollectionFacet collectionFacet =
+ collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
collectionFacet.init(collectionAdapter, list.toArray(new ObjectAdapter[list.size()]));
rs.close();
} finally {
http://git-wip-us.apache.org/repos/asf/isis/blob/ed19fe9b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/ForeignKeyCollectionMapper.java
----------------------------------------------------------------------
diff --git a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/ForeignKeyCollectionMapper.java b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/ForeignKeyCollectionMapper.java
index d8cb221..2e498f1 100644
--- a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/ForeignKeyCollectionMapper.java
+++ b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/ForeignKeyCollectionMapper.java
@@ -33,7 +33,6 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.runtime.persistence.PersistorUtil;
import org.apache.isis.objectstore.sql.CollectionMapper;
import org.apache.isis.objectstore.sql.DatabaseConnector;
@@ -49,9 +48,8 @@ import org.apache.isis.objectstore.sql.mapping.FieldMapping;
import org.apache.isis.objectstore.sql.mapping.ObjectReferenceMapping;
/**
- * Stores 1-to-many collections by creating a foreign-key column in the table
- * for the incoming objectAssociation class. This assumes this the class is only
- * ever in 1 collection parent.
+ * Stores 1-to-many collections by creating a foreign-key column in the table for the incoming objectAssociation class.
+ * This assumes this the class is only ever in 1 collection parent.
*
* @version $Rev$ $Date$
*/
@@ -67,7 +65,8 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
private ObjectMapping originalMapping = null;
- public ForeignKeyCollectionMapper(final ObjectAssociation objectAssociation, final String parameterBase, final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup) {
+ public ForeignKeyCollectionMapper(final ObjectAssociation objectAssociation, final String parameterBase,
+ final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup) {
super(objectAssociation.getSpecification().getFullIdentifier(), parameterBase, lookup, objectMapperLookup);
this.field = objectAssociation;
@@ -84,7 +83,8 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
foreignKeyMapping = lookup.createMapping(columnName, specification);
}
- protected ForeignKeyCollectionMapper(final FieldMappingLookup lookup, final AbstractAutoMapper abstractAutoMapper, final ObjectAssociation field) {
+ protected ForeignKeyCollectionMapper(final FieldMappingLookup lookup, final AbstractAutoMapper abstractAutoMapper,
+ final ObjectAssociation field) {
super(lookup, abstractAutoMapper, field.getSpecification().getFullIdentifier());
this.field = field;
@@ -175,11 +175,13 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
sql.append(foreignKeyName + "=NULL ");
}
- protected void appendCollectionWhereValues(final DatabaseConnector connector, final ObjectAdapter parent, final StringBuffer sql) {
+ protected void appendCollectionWhereValues(final DatabaseConnector connector, final ObjectAdapter parent,
+ final StringBuffer sql) {
foreignKeyMapping.appendUpdateValues(connector, sql, parent);
}
- protected void appendCollectionUpdateValues(final DatabaseConnector connector, final ObjectAdapter parent, final StringBuffer sql) {
+ protected void appendCollectionUpdateValues(final DatabaseConnector connector, final ObjectAdapter parent,
+ final StringBuffer sql) {
appendCollectionWhereValues(connector, parent, sql);
}
@@ -193,20 +195,22 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
final ObjectAdapter collectionAdapter = field.get(parentAdapter);
if (!collectionAdapter.canTransitionToResolving()) {
return;
- }
-
- if(LOG.isDebugEnabled()) {
+ }
+
+ if (LOG.isDebugEnabled()) {
LOG.debug("loading internal collection " + field);
}
final List<ObjectAdapter> list = new ArrayList<ObjectAdapter>();
try {
PersistorUtil.startResolving(collectionAdapter);
-
- loadCollectionIntoList(connector, parentAdapter, table, specification, getIdMapping(), fieldMappingByField, versionMapping, list);
-
- final CollectionFacet collectionFacet = collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
+
+ loadCollectionIntoList(connector, parentAdapter, table, specification, getIdMapping(), fieldMappingByField,
+ versionMapping, list);
+
+ final CollectionFacet collectionFacet =
+ collectionAdapter.getSpecification().getFacet(CollectionFacet.class);
collectionFacet.init(collectionAdapter, list.toArray(new ObjectAdapter[list.size()]));
-
+
} finally {
PersistorUtil.toEndState(collectionAdapter);
}
@@ -223,8 +227,10 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
}
}
- protected void loadCollectionIntoList(final DatabaseConnector connector, final ObjectAdapter parent, final String table, final ObjectSpecification specification, final IdMappingAbstract idMappingAbstract, final Map<ObjectAssociation, FieldMapping> fieldMappingByField, final VersionMapping versionMapping,
- final List<ObjectAdapter> list) {
+ protected void loadCollectionIntoList(final DatabaseConnector connector, final ObjectAdapter parent,
+ final String table, final ObjectSpecification specification, final IdMappingAbstract idMappingAbstract,
+ final Map<ObjectAssociation, FieldMapping> fieldMappingByField, final VersionMapping versionMapping,
+ final List<ObjectAdapter> list) {
final StringBuffer sql = new StringBuffer();
sql.append("select ");
@@ -253,7 +259,8 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
rs.close();
}
- protected void loadFields(final ObjectAdapter adapter, final Results rs, final Map<ObjectAssociation, FieldMapping> fieldMappingByField) {
+ protected void loadFields(final ObjectAdapter adapter, final Results rs,
+ final Map<ObjectAssociation, FieldMapping> fieldMappingByField) {
if (!adapter.canTransitionToResolving()) {
return;
}
@@ -270,8 +277,8 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
}
/**
- * Override this in the Polymorphic case to return just the elements that
- * are appropriate for the subclass currently being handled.
+ * Override this in the Polymorphic case to return just the elements that are appropriate for the subclass currently
+ * being handled.
*
* @param collection
* @return those elements that ought to be used.
@@ -285,7 +292,7 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
@Override
public void saveInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent) {
final ObjectAdapter collection = field.get(parent);
- if(LOG.isDebugEnabled()) {
+ if (LOG.isDebugEnabled()) {
LOG.debug("Saving internal collection " + collection);
}
@@ -316,7 +323,8 @@ public class ForeignKeyCollectionMapper extends AbstractAutoMapper implements Co
connector.update(sql.toString());
}
- protected void resetCollectionParent(final DatabaseConnector connector, final ObjectAdapter parent, final Iterator<ObjectAdapter> elements) {
+ protected void resetCollectionParent(final DatabaseConnector connector, final ObjectAdapter parent,
+ final Iterator<ObjectAdapter> elements) {
// Reinstall collection parent
final StringBuffer update = new StringBuffer();
update.append("update ");
http://git-wip-us.apache.org/repos/asf/isis/blob/ed19fe9b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
----------------------------------------------------------------------
diff --git a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
index 47ad947..7c66b2f 100755
--- a/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
+++ b/component/objectstore/sql/sql-impl/src/main/java/org/apache/isis/objectstore/sql/auto/PolymorphicForeignKeyInChildCollectionBaseMapper.java
@@ -29,7 +29,6 @@ import java.util.Map;
import org.apache.log4j.Logger;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.adapter.oid.TypedOid;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -50,14 +49,11 @@ import org.apache.isis.objectstore.sql.jdbc.JdbcPolymorphicObjectReferenceMappin
import org.apache.isis.objectstore.sql.mapping.FieldMapping;
/**
- * Used to map 1-to-many collections by creating, in the collection child table
- * (which may be an interface or abstract class), 2 columns per parent
- * collection. The first column is the class type, the second is the entity ID.
- * The columns are named by combining the final part of the parent class name
- * and the collection variable name.
+ * Used to map 1-to-many collections by creating, in the collection child table (which may be an interface or abstract
+ * class), 2 columns per parent collection. The first column is the class type, the second is the entity ID. The columns
+ * are named by combining the final part of the parent class name and the collection variable name.
*
- * You have a choice between this class and
- * {@link PolymorphicForeignKeyInChildCollectionMapper}
+ * You have a choice between this class and {@link PolymorphicForeignKeyInChildCollectionMapper}
*
* @author Kevin
*/
@@ -71,7 +67,9 @@ public class PolymorphicForeignKeyInChildCollectionBaseMapper extends ForeignKey
private final OidGenerator oidGenerator;
- public PolymorphicForeignKeyInChildCollectionBaseMapper(final ObjectAssociation objectAssociation, final String parameterBase, final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup, final AbstractAutoMapper abstractAutoMapper, final ObjectAssociation field) {
+ public PolymorphicForeignKeyInChildCollectionBaseMapper(final ObjectAssociation objectAssociation,
+ final String parameterBase, final FieldMappingLookup lookup, final ObjectMappingLookup objectMapperLookup,
+ final AbstractAutoMapper abstractAutoMapper, final ObjectAssociation field) {
super(objectAssociation, parameterBase, lookup, objectMapperLookup, abstractAutoMapper, field);
@@ -117,7 +115,8 @@ public class PolymorphicForeignKeyInChildCollectionBaseMapper extends ForeignKey
}
@Override
- protected void appendCollectionUpdateValues(final DatabaseConnector connector, final ObjectAdapter parent, final StringBuffer sql) {
+ protected void appendCollectionUpdateValues(final DatabaseConnector connector, final ObjectAdapter parent,
+ final StringBuffer sql) {
super.appendCollectionUpdateValues(connector, parent, sql);
}
@@ -138,7 +137,8 @@ public class PolymorphicForeignKeyInChildCollectionBaseMapper extends ForeignKey
}
@Override
- protected void resetCollectionParent(final DatabaseConnector connector, final ObjectAdapter parent, final Iterator<ObjectAdapter> elements) {
+ protected void resetCollectionParent(final DatabaseConnector connector, final ObjectAdapter parent,
+ final Iterator<ObjectAdapter> elements) {
LOG.debug("Saving polymorphic list");
ObjectSpecification elementSpecification;
@@ -161,11 +161,11 @@ public class PolymorphicForeignKeyInChildCollectionBaseMapper extends ForeignKey
// Row ID column
final Object pojo = thisAdapter.getObject();
final RootOid transientRootOid = oidGenerator.createTransientOid(pojo);
-
+
final RootOid persistentRootOid = oidGenerator.createPersistent(pojo, transientRootOid);
-
+
polyIdMapper.appendObjectId(connector, update, persistentRootOid);
-
+
// polyIdMapper.appendObjectId(connector, update,
// thisAdapter.getOid());
update.append(",");
@@ -192,8 +192,10 @@ public class PolymorphicForeignKeyInChildCollectionBaseMapper extends ForeignKey
}
@Override
- protected void loadCollectionIntoList(final DatabaseConnector connector, final ObjectAdapter parent, final String table, final ObjectSpecification specification, final IdMappingAbstract idMappingAbstract, final Map<ObjectAssociation, FieldMapping> fieldMappingByField, final VersionMapping versionMapping,
- final List<ObjectAdapter> list) {
+ protected void loadCollectionIntoList(final DatabaseConnector connector, final ObjectAdapter parent,
+ final String table, final ObjectSpecification specification, final IdMappingAbstract idMappingAbstract,
+ final Map<ObjectAssociation, FieldMapping> fieldMappingByField, final VersionMapping versionMapping,
+ final List<ObjectAdapter> list) {
LOG.debug("Loading polymorphic list");
final StringBuffer sql = new StringBuffer();
@@ -212,7 +214,8 @@ public class PolymorphicForeignKeyInChildCollectionBaseMapper extends ForeignKey
final Results rs = connector.select(sql.toString());
final SpecificationLoaderSpi reflector = IsisContext.getSpecificationLoader();
- final JdbcPolymorphicObjectReferenceMapping idMapping = (JdbcPolymorphicObjectReferenceMapping) idMappingAbstract;
+ final JdbcPolymorphicObjectReferenceMapping idMapping =
+ (JdbcPolymorphicObjectReferenceMapping) idMappingAbstract;
while (rs.next()) {
final ObjectSpecification itemSpecification = reflector.loadSpecification(rs.getString(classColumnName));
http://git-wip-us.apache.org/repos/asf/isis/blob/ed19fe9b/component/objectstore/sql/sql-tests-common/src/main/java/org/apache/isis/objectstore/sql/common/SqlIntegrationTestCommonBase.java
----------------------------------------------------------------------
diff --git a/component/objectstore/sql/sql-tests-common/src/main/java/org/apache/isis/objectstore/sql/common/SqlIntegrationTestCommonBase.java b/component/objectstore/sql/sql-tests-common/src/main/java/org/apache/isis/objectstore/sql/common/SqlIntegrationTestCommonBase.java
index 883304e..f6c5e92 100755
--- a/component/objectstore/sql/sql-tests-common/src/main/java/org/apache/isis/objectstore/sql/common/SqlIntegrationTestCommonBase.java
+++ b/component/objectstore/sql/sql-tests-common/src/main/java/org/apache/isis/objectstore/sql/common/SqlIntegrationTestCommonBase.java
@@ -99,6 +99,8 @@ public abstract class SqlIntegrationTestCommonBase {
/**
* This method can be used to do any DB specific actions the first time the test framework is setup. e.g. In the XML
* test, it must delete all XML files in the data store directory.
+ *
+ * You can also use @BeforeClass to perform pre-connection cleanup, such as deleting hsql-db data directories.
*/
public void resetPersistenceStoreDirectlyIfRequired() {
}
http://git-wip-us.apache.org/repos/asf/isis/blob/ed19fe9b/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/HsqlTest.java
----------------------------------------------------------------------
diff --git a/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/HsqlTest.java b/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/HsqlTest.java
index 857fb81..17b9bfc 100644
--- a/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/HsqlTest.java
+++ b/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/HsqlTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.objectstore.sql;
+import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
@@ -39,8 +40,8 @@ import org.apache.isis.objectstore.sql.common.SqlIntegrationTestFixtures;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class HsqlTest extends SqlIntegrationTestData {
- @Override
- public void resetPersistenceStoreDirectlyIfRequired() {
+ @BeforeClass
+ public static void deleteHsqlDbFiles() {
Files.deleteFilesWithPrefix("hsql-db", "tests", Recursion.DONT_RECURSE);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/ed19fe9b/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/PolymorphismTest.java
----------------------------------------------------------------------
diff --git a/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/PolymorphismTest.java b/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/PolymorphismTest.java
index 5837637..7f79e44 100755
--- a/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/PolymorphismTest.java
+++ b/component/objectstore/sql/sql-tests-common/src/test/java/org/apache/isis/objectstore/sql/PolymorphismTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue;
import java.util.List;
+import org.junit.BeforeClass;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
@@ -74,9 +75,13 @@ public class PolymorphismTest extends SqlIntegrationTestCommonBase {
return "hsql-poly.properties";
}
+ @BeforeClass
+ public static void deleteHsqlDbFiles() {
+ Files.deleteFilesWithPrefix("hsql-db", "poly", Recursion.DONT_RECURSE);
+ }
+
@Override
public void resetPersistenceStoreDirectlyIfRequired() {
- Files.deleteFilesWithPrefix("hsql-db", "poly", Recursion.DONT_RECURSE);
getSqlIntegrationTestFixtures();
}