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 2015/01/22 17:57:13 UTC
[45/50] [abbrv] isis git commit: ISIS-970: fixing integ test failures
resulting from the new hiddenFacet multi-valued type support.
ISIS-970: fixing integ test failures resulting from the new hiddenFacet multi-valued type support.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/4716513e
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/4716513e
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/4716513e
Branch: refs/heads/master
Commit: 4716513ec4f396e6a48b219e2d12e30e946f0d04
Parents: 432ec3f
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jan 22 12:40:22 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jan 22 16:32:46 2015 +0000
----------------------------------------------------------------------
.../core/metamodel/facetapi/FacetAbstract.java | 26 +++++++++++++++++++-
.../metamodel/facetapi/MultiTypedFacet.java | 2 ++
.../facets/MultiTypedFacetAbstract.java | 10 ++++++++
.../members/hidden/HiddenFacetAbstract.java | 11 +++++++++
.../facets/object/value/ValueFacetAbstract.java | 10 ++++++++
5 files changed, 58 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/4716513e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
index 5ac2575..54a5794 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FacetAbstract.java
@@ -89,11 +89,35 @@ public abstract class FacetAbstract implements Facet {
@Override
public void setUnderlyingFacet(final Facet underlyingFacet) {
if(underlyingFacet != null) {
- Ensure.ensureThatArg(underlyingFacet.facetType(), IsisMatchers.classEqualTo(facetType));
+ if(underlyingFacet instanceof MultiTypedFacet) {
+ final MultiTypedFacet multiTypedFacet = (MultiTypedFacet) underlyingFacet;
+ final boolean matches = compatible(multiTypedFacet);
+ if(!matches) {
+ throw new IllegalArgumentException("illegal argument, expected underlying facet (a multi-valued facet) to have equivalent to the facet type (or facet types) of this facet");
+ }
+ } else {
+ Ensure.ensureThatArg(underlyingFacet.facetType(), IsisMatchers.classEqualTo(facetType));
+ }
}
this.underlyingFacet = underlyingFacet;
}
+ private boolean compatible(final MultiTypedFacet multiTypedFacet) {
+
+ if (!(this instanceof MultiTypedFacet)) {
+ return multiTypedFacet.containsFacetTypeOf(this.facetType);
+ }
+
+ final MultiTypedFacet thisAsMultiTyped = (MultiTypedFacet) this;
+ final Class<? extends Facet>[] facetTypes = thisAsMultiTyped.facetTypes();
+ for (final Class<? extends Facet> facetType : facetTypes) {
+ if(multiTypedFacet.containsFacetTypeOf(facetType)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* Assume implementation is <i>not</i> a no-op.
*
http://git-wip-us.apache.org/repos/asf/isis/blob/4716513e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MultiTypedFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MultiTypedFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MultiTypedFacet.java
index 205deac..08aa514 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MultiTypedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/MultiTypedFacet.java
@@ -37,4 +37,6 @@ public interface MultiTypedFacet extends Facet {
public Class<? extends Facet>[] facetTypes();
public <T extends Facet> T getFacet(Class<T> facet);
+
+ boolean containsFacetTypeOf(Class<? extends Facet> facetType);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4716513e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MultiTypedFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MultiTypedFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MultiTypedFacetAbstract.java
index 8496597..642f161 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MultiTypedFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/MultiTypedFacetAbstract.java
@@ -44,4 +44,14 @@ public abstract class MultiTypedFacetAbstract extends FacetAbstract implements M
@Override
public abstract <T extends Facet> T getFacet(Class<T> facetType);
+ @Override
+ public boolean containsFacetTypeOf(final Class<? extends Facet> requiredFacetType) {
+ for (final Class<? extends Facet> facetType : facetTypes()) {
+ if(facetType == requiredFacetType) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4716513e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
index 4f64625..6986076 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/hidden/HiddenFacetAbstract.java
@@ -80,4 +80,15 @@ public abstract class HiddenFacetAbstract extends WhenAndWhereValueFacetAbstract
return (T) this;
}
+ @Override
+ public boolean containsFacetTypeOf(final Class<? extends Facet> requiredFacetType) {
+ for (final Class<? extends Facet> facetType : facetTypes()) {
+ if(facetType == requiredFacetType) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/4716513e/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index 8bbcad3..bc41a4c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -162,6 +162,16 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
return facetHolder.getFacet(facetType);
}
+ @Override
+ public boolean containsFacetTypeOf(final Class<? extends Facet> requiredFacetType) {
+ for (final Class<? extends Facet> facetType : facetTypes()) {
+ if(facetType == requiredFacetType) {
+ return true;
+ }
+ }
+ return false;
+ }
+
// /////////////////////////////////////////
// Dependencies (from constructor)
// /////////////////////////////////////////