You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/04/19 07:48:23 UTC
[2/2] isis git commit: ISIS-1601: fixes the type of Oid used to map
parented collection pojos.
ISIS-1601: fixes the type of Oid used to map parented collection pojos.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/29d1f766
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/29d1f766
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/29d1f766
Branch: refs/heads/master
Commit: 29d1f766d3a81e2312b5d05a28685f9fcbcc25e1
Parents: 0ff91f9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Apr 19 09:46:48 2017 +0200
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Apr 19 09:46:48 2017 +0200
----------------------------------------------------------------------
.../accessor/CollectionAccessorFacetViaAccessor.java | 10 +++++++++-
.../runtime/system/persistence/PersistenceSession.java | 6 ++++++
2 files changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/29d1f766/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 63f87f6..6faa784 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -35,6 +35,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.CollectionUtils;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
public class CollectionAccessorFacetViaAccessor
@@ -77,7 +78,14 @@ public class CollectionAccessorFacetViaAccessor
final InteractionInitiatedBy interactionInitiatedBy) {
final Object collectionOrArray = ObjectAdapter.InvokeUtils.invoke(method, owningAdapter);
- final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
+ // previously implementation adds the collection with a RootOid rather than a ParentedCollectionOid:
+ // final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray);
+
+ // instead, should use this API:
+ OneToManyAssociation oneToManyAssociation = (OneToManyAssociation) owningAdapter.getSpecification()
+ .getAssociation(getIdentified().getIdentifier().getMemberName());
+ final ObjectAdapter collectionAdapter = getAdapterManager().adapterFor(collectionOrArray, owningAdapter, oneToManyAssociation);
+
boolean filterForVisibility = getConfiguration().getBoolean("isis.reflector.facet.filterVisibility", true);
if(filterForVisibility) {
http://git-wip-us.apache.org/repos/asf/isis/blob/29d1f766/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index a4e6981..ac718e1 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -1714,6 +1714,12 @@ public class PersistenceSession implements
// persistence of collection follows the parent
final ParentedCollectionOid collectionOid = new ParentedCollectionOid((RootOid) parentOid, otma);
+
+ ObjectAdapter existingAdapter = getAdapterFor(collectionOid);
+ if(existingAdapter != null) {
+ return existingAdapter;
+ }
+
final ObjectAdapter collectionAdapter = createCollectionAdapter(pojo, collectionOid);
// we copy over the type onto the adapter itself