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/02/12 23:33:24 UTC

isis git commit: ISIS-1574: adds guard when iterating over PropertyGroup

Repository: isis
Updated Branches:
  refs/heads/maint-1.14.0 cd6cd6eba -> 5e247641e


ISIS-1574: adds guard when iterating over PropertyGroup


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/5e247641
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/5e247641
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/5e247641

Branch: refs/heads/maint-1.14.0
Commit: 5e247641ed45735d1e8bf20271737ff4bff5a7b8
Parents: cd6cd6e
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sun Feb 12 23:33:21 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sun Feb 12 23:33:21 2017 +0000

----------------------------------------------------------------------
 .../specimpl/ObjectSpecificationAbstract.java         |  3 ++-
 .../ui/components/entity/fieldset/PropertyGroup.java  | 14 +++++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5e247641/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 808c3f0..015e27c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -681,7 +681,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
                 return oa;
             }
         }
-        throw new ObjectSpecificationException("No association called '" + id + "' in '" + getSingularName() + "'");
+        throw new ObjectSpecificationException(
+                String.format("No association called '%s' in '%s'", id, getSingularName()));
     }
 
     private ObjectAssociation getAssociationWithId(final String id) {

http://git-wip-us.apache.org/repos/asf/isis/blob/5e247641/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index 67e4388..9dfe29b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -40,6 +40,8 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.ObjectSpecificationException;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -106,11 +108,21 @@ public class PropertyGroup extends PanelAbstract<EntityModel> implements HasDyna
                 .transform(new Function<PropertyLayoutData, ObjectAssociation>() {
                     @Override
                     public ObjectAssociation apply(final PropertyLayoutData propertyLayoutData) {
-                        return  adapter.getSpecification().getAssociation(propertyLayoutData.getId());
+                        ObjectSpecification adapterSpecification = adapter.getSpecification();
+                        try {
+                            // this shouldn't happen, but has been reported (https://issues.apache.org/jira/browse/ISIS-1574),
+                            // suggesting that in some cases the GridService can get it wrong.  This is therefore a hack...
+                            return adapterSpecification.getAssociation(propertyLayoutData.getId());
+                        } catch (ObjectSpecificationException e) {
+                            return null;
+                        }
                     }
                 })
                 .filter(new Predicate<ObjectAssociation>() {
                     @Override public boolean apply(@Nullable final ObjectAssociation objectAssociation) {
+                        if(objectAssociation == null) {
+                            return false;
+                        }
                         final Consent visibility =
                                 objectAssociation .isVisible(adapter, InteractionInitiatedBy.USER, Where.OBJECT_FORMS);
                         return visibility.isAllowed();