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/06 21:05:23 UTC
svn commit: r1165786 - in
/incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql:
./ auto/
Author: kevin
Date: Tue Sep 6 19:05:23 2011
New Revision: 1165786
URL: http://svn.apache.org/viewvc?rev=1165786&view=rev
Log:
ISIS-118 and ISIS-119: Working on getting collections to load and resolve properly.
Modified:
incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/CollectionMapper.java
incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoCollectionMapper.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/ReversedAutoAssociationMapper.java
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/CollectionMapper.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/CollectionMapper.java?rev=1165786&r1=1165785&r2=1165786&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/CollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/CollectionMapper.java Tue Sep 6 19:05:23 2011
@@ -24,7 +24,8 @@ import org.apache.isis.core.metamodel.ad
public interface CollectionMapper {
- public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent);
+ public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent,
+ final boolean makeResolved);
public void saveInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent);
Modified: incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoCollectionMapper.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/AutoCollectionMapper.java?rev=1165786&r1=1165785&r2=1165786&view=diff
==============================================================================
--- incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoCollectionMapper.java (original)
+++ incubator/isis/trunk/framework/runtimes/dflt/objectstores/sql/sql-impl/src/main/java/org/apache/isis/runtimes/dflt/objectstores/sql/auto/AutoCollectionMapper.java Tue Sep 6 19:05:23 2011
@@ -22,6 +22,8 @@ package org.apache.isis.runtimes.dflt.ob
import java.util.ArrayList;
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.jdbc.JdbcObjectReferenceMapping;
import org.apache.isis.runtimes.dflt.objectstores.sql.mapping.ObjectReferenceMapping;
import org.apache.isis.runtimes.dflt.runtime.persistence.PersistorUtil;
-import org.apache.log4j.Logger;
public class AutoCollectionMapper extends AbstractMapper implements CollectionMapper {
private static final Logger LOG = Logger.getLogger(AutoCollectionMapper.class);
@@ -81,7 +82,8 @@ public class AutoCollectionMapper extend
}
@Override
- public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent) {
+ public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent,
+ final boolean makeResolved) {
final ObjectAdapter collection = field.get(parent);
if (collection.getResolveState().canChangeTo(ResolveState.RESOLVING)) {
LOG.debug("loading internal collection " + field);
@@ -105,7 +107,9 @@ public class AutoCollectionMapper extend
final CollectionFacet collectionFacet = collection.getSpecification().getFacet(CollectionFacet.class);
collectionFacet.init(collection, list.toArray(new ObjectAdapter[list.size()]));
rs.close();
- PersistorUtil.end(collection);
+ if (makeResolved) {
+ PersistorUtil.end(collection);
+ }
}
}
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=1165786&r1=1165785&r2=1165786&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 Tue Sep 6 19:05:23 2011
@@ -241,7 +241,7 @@ public class AutoMapper extends Abstract
private void loadCollections(final DatabaseConnector connector, final ObjectAdapter instance) {
for (final CollectionMapper mapper : collectionMappers) {
- mapper.loadInternalCollection(connector, instance);
+ mapper.loadInternalCollection(connector, instance, true);
}
}
@@ -291,7 +291,7 @@ public class AutoMapper extends Abstract
rs.close();
for (final CollectionMapper collectionMapper : collectionMappers) {
- collectionMapper.loadInternalCollection(connector, object);
+ collectionMapper.loadInternalCollection(connector, object, true);
}
} else {
rs.close();
@@ -306,7 +306,7 @@ public class AutoMapper extends Abstract
if (collectionMappers.length > 0) {
final DatabaseConnector secondConnector = connector.getConnectionPool().acquire();
for (final CollectionMapper collectionMapper : collectionMappers) {
- collectionMapper.loadInternalCollection(secondConnector, object);
+ collectionMapper.loadInternalCollection(secondConnector, object, true);
}
connector.getConnectionPool().release(secondConnector);
}
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=1165786&r1=1165785&r2=1165786&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 Tue Sep 6 19:05:23 2011
@@ -110,7 +110,8 @@ public class CombinedCollectionMapper ex
}
@Override
- public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent) {
+ public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent,
+ final boolean makeResolved) {
if (collectionMappers == null) {
// for abstract classes and interfaces
return;
@@ -142,7 +143,7 @@ public class CombinedCollectionMapper ex
while (rs.next()) {
final Oid oid = idMapping.recreateOid(rs, specification);
final ObjectAdapter element = getAdapter(specification, oid);
- loadFields(element, rs);
+ loadFields(element, rs, makeResolved);
LOG.debug(" element " + element.getOid());
list.add(element);
}
@@ -150,17 +151,30 @@ public class CombinedCollectionMapper ex
collectionFacet.init(collection, list.toArray(new ObjectAdapter[list.size()]));
rs.close();
PersistorUtil.end(collection);
+
+ // TODO: Need to finalise this behaviour. At the moment, all collections will get infinitely resolved. I
+ // don't think this is desirable. Sub-collections should be left "Partially Resolved".
+ if (makeResolved) {
+ for (ObjectAdapter field : list) {
+ // final ObjectMapping mapping = objectMappingLookup.getMapping(field, connector);
+ if (field.getSpecification().isOfType(parent.getSpecification())) {
+ loadInternalCollection(connector, field, false);
+ }
+ }
+ }
}
}
- protected void loadFields(final ObjectAdapter object, final Results rs) {
+ protected void loadFields(final ObjectAdapter object, final Results rs, final boolean makeResolved) {
if (object.getResolveState().canChangeTo(ResolveState.RESOLVING)) {
PersistorUtil.start(object, ResolveState.RESOLVING);
for (final FieldMapping mapping : fieldMappings) {
mapping.initializeField(object, rs);
}
object.setOptimisticLock(versionMapping.getLock(rs));
- PersistorUtil.end(object);
+ if (makeResolved) {
+ PersistorUtil.end(object);
+ }
}
}
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=1165786&r1=1165785&r2=1165786&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 Tue Sep 6 19:05:23 2011
@@ -86,7 +86,8 @@ public class ReversedAutoAssociationMapp
}
@Override
- public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent) {
+ public void loadInternalCollection(final DatabaseConnector connector, final ObjectAdapter parent,
+ final boolean makeResolved) {
final ObjectAdapter collection = field.get(parent);
if (collection.getResolveState().canChangeTo(ResolveState.RESOLVING)) {
LOG.debug("loading internal collection " + field);
@@ -106,7 +107,7 @@ public class ReversedAutoAssociationMapp
while (rs.next()) {
final Oid oid = idMapping.recreateOid(rs, specification);
final ObjectAdapter element = getAdapter(specification, oid);
- loadFields(element, rs);
+ loadFields(element, rs, makeResolved);
LOG.debug(" element " + element.getOid());
list.add(element);
}
@@ -117,7 +118,7 @@ public class ReversedAutoAssociationMapp
}
}
- protected void loadFields(final ObjectAdapter object, final Results rs) {
+ protected void loadFields(final ObjectAdapter object, final Results rs, final boolean makeResolved) {
PersistorUtil.start(object, ResolveState.RESOLVING);
for (final FieldMapping mapping : fieldMappings) {
mapping.initializeField(object, rs);
@@ -132,7 +133,9 @@ public class ReversedAutoAssociationMapp
*/
object.setOptimisticLock(versionMapping.getLock(rs));
- PersistorUtil.end(object);
+ if (makeResolved) {
+ PersistorUtil.end(object);
+ }
}