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();