You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/10/24 13:36:57 UTC
[isis] branch v2 updated: ISIS-2158: more simplifications ...
removing DecoratingFacet
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new 5e90244 ISIS-2158: more simplifications ... removing DecoratingFacet
5e90244 is described below
commit 5e902448b6c950e26b1679fa19e064fd611cc8af
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Oct 24 15:36:45 2019 +0200
ISIS-2158: more simplifications ... removing DecoratingFacet
---
.../commons/internal/functions/_Predicates.java | 3 +-
.../isis/metamodel/facetapi/DecoratingFacet.java | 35 ----------
.../isis/metamodel/facetapi/FacetHolder.java | 6 ++
.../isis/metamodel/facets/ImperativeFacet.java | 6 --
.../metamodel/interactions/InteractionUtils.java | 81 ++++++++++------------
.../interactions/InteractionUtils_isA_Test.java | 12 ++--
6 files changed, 50 insertions(+), 93 deletions(-)
diff --git a/core/commons/src/main/java/org/apache/isis/commons/internal/functions/_Predicates.java b/core/commons/src/main/java/org/apache/isis/commons/internal/functions/_Predicates.java
index 9a5a155..a708e02 100644
--- a/core/commons/src/main/java/org/apache/isis/commons/internal/functions/_Predicates.java
+++ b/core/commons/src/main/java/org/apache/isis/commons/internal/functions/_Predicates.java
@@ -79,9 +79,8 @@ public final class _Predicates {
/**
* @param cls
* @return a Predicate that tests for the operand to be an instance of {@code cls}
- * @deprecated use Class::isInstance instead
+ * @implNote equivalent to {@code Class::isInstance}
*/
- @Deprecated
public static Predicate<Object> instanceOf(Class<?> cls) {
return cls::isInstance;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/DecoratingFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/DecoratingFacet.java
deleted file mode 100644
index 6c3013b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/DecoratingFacet.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facetapi;
-
-/**
- * Provides access to underlying facet that has been decorated.
- *
- * <p>
- * Originally introduced as a means to allow filtering of facets to get at the
- * underlying facet (eg to locate those that are imperative, that is, abstract a
- * method call to an <tt>addToXxx</tt>).
- *
- * @param <T>
- */
-public interface DecoratingFacet<T extends Facet> {
-
- T getDecoratedFacet();
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java
index 02f56e1..d819bbe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java
@@ -67,6 +67,12 @@ public interface FacetHolder {
}
Stream<Facet> streamFacets();
+
+ default <F extends Facet> Stream<F> streamFacets(Class<F> requiredType) {
+ return streamFacets()
+ .filter(facet->requiredType.isAssignableFrom(facet.getClass()))
+ .map(requiredType::cast);
+ }
/**
* Adds the facet, extracting its {@link Facet#facetType() type} as the key.
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/ImperativeFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/ImperativeFacet.java
index 3e4160f..a8529a5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/ImperativeFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/ImperativeFacet.java
@@ -26,9 +26,7 @@ import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.metamodel.facetapi.DecoratingFacet;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.spec.feature.ObjectMember;
@@ -123,10 +121,6 @@ public interface ImperativeFacet extends Facet {
if (facet.getUnderlyingFacet() instanceof ImperativeFacet) {
return (ImperativeFacet) facet.getUnderlyingFacet();
}
- if (facet instanceof DecoratingFacet) {
- final DecoratingFacet<?> decoratingFacet = _Casts.uncheckedCast(facet);
- return getImperativeFacet(decoratingFacet.getDecoratedFacet());
- }
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/interactions/InteractionUtils.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/interactions/InteractionUtils.java
index 161040a..64901b2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/interactions/InteractionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/interactions/InteractionUtils.java
@@ -19,68 +19,61 @@
package org.apache.isis.metamodel.interactions;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
import org.apache.isis.metamodel.consent.InteractionResult;
import org.apache.isis.metamodel.consent.InteractionResultSet;
-import org.apache.isis.metamodel.facetapi.DecoratingFacet;
-import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import lombok.val;
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class InteractionUtils {
- private InteractionUtils() {
- }
-
- public static InteractionResult isVisibleResult(final FacetHolder facetHolder, final VisibilityContext<?> context) {
- final InteractionResult result = new InteractionResult(context.createInteractionEvent());
- final Stream<Facet> facets = facetHolder.streamFacets().filter(isA(HidingInteractionAdvisor.class));
- facets.forEach(facet->{
- final HidingInteractionAdvisor advisor = (HidingInteractionAdvisor) facet;
-
- result.advise(advisor.hides(context), advisor);
+ public static InteractionResult isVisibleResult(FacetHolder facetHolder, VisibilityContext<?> context) {
+
+ val iaResult = new InteractionResult(context.createInteractionEvent());
+
+ facetHolder.streamFacets(HidingInteractionAdvisor.class)
+ .forEach(advisor->{
+ iaResult.advise(advisor.hides(context), advisor);
});
- return result;
+
+ return iaResult;
}
- public static InteractionResult isUsableResult(final FacetHolder facetHolder, final UsabilityContext<?> context) {
- final InteractionResult result = new InteractionResult(context.createInteractionEvent());
- final Stream<Facet> facets = facetHolder.streamFacets().filter(isA(DisablingInteractionAdvisor.class));
- facets.forEach(facet->{
- final DisablingInteractionAdvisor advisor = (DisablingInteractionAdvisor) facet;
+ public static InteractionResult isUsableResult(FacetHolder facetHolder, UsabilityContext<?> context) {
+
+ val isResult = new InteractionResult(context.createInteractionEvent());
+
+ facetHolder.streamFacets(DisablingInteractionAdvisor.class)
+ .forEach(advisor->{
final String disables = advisor.disables(context);
- result.advise(disables, advisor);
+ isResult.advise(disables, advisor);
});
- return result;
+
+ return isResult;
}
- public static InteractionResult isValidResult(final FacetHolder facetHolder, final ValidityContext<?> context) {
- final InteractionResult result = new InteractionResult(context.createInteractionEvent());
- final Stream<Facet> facets = facetHolder.streamFacets().filter(isA(ValidatingInteractionAdvisor.class));
- facets.forEach(facet->{
- val advisor = (ValidatingInteractionAdvisor) facet;
- result.advise(advisor.invalidates(context), advisor);
+ public static InteractionResult isValidResult(FacetHolder facetHolder, ValidityContext<?> context) {
+
+ val iaResult = new InteractionResult(context.createInteractionEvent());
+
+ facetHolder.streamFacets(ValidatingInteractionAdvisor.class)
+ .forEach(advisor->{
+ iaResult.advise(advisor.invalidates(context), advisor);
});
- return result;
+
+ return iaResult;
}
- public static InteractionResultSet isValidResultSet(final FacetHolder facetHolder, final ValidityContext<?> context, final InteractionResultSet resultSet) {
+ public static InteractionResultSet isValidResultSet(
+ FacetHolder facetHolder,
+ ValidityContext<?> context,
+ InteractionResultSet resultSet) {
+
return resultSet.add(isValidResult(facetHolder, context));
}
-
- static Predicate<Facet> isA(final Class<?> superClass) {
- return new Predicate<Facet>() {
- @Override
- public boolean test(final Facet facet) {
- if (facet instanceof DecoratingFacet) {
- final DecoratingFacet<?> decoratingFacet = (DecoratingFacet<?>) facet;
- return test(decoratingFacet.getDecoratedFacet());
- }
- return superClass.isAssignableFrom(facet.getClass());
- }
- };
- }
+
+
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/interactions/InteractionUtils_isA_Test.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/interactions/InteractionUtils_isA_Test.java
index 462083c..2869ad9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/interactions/InteractionUtils_isA_Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/interactions/InteractionUtils_isA_Test.java
@@ -19,14 +19,14 @@
package org.apache.isis.metamodel.interactions;
-import java.util.function.Predicate;
-
+import org.apache.isis.commons.internal.functions._Predicates;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FacetHolderImpl;
import junit.framework.TestCase;
+import lombok.val;
public class InteractionUtils_isA_Test extends TestCase {
@@ -81,22 +81,22 @@ public class InteractionUtils_isA_Test extends TestCase {
}
public void testIsAWhenIs() {
- final Predicate<Facet> predicate = InteractionUtils.isA(FooFacet.class);
+ val predicate = _Predicates.instanceOf(FooFacet.class);
TestCase.assertTrue(predicate.test(fooFacet));
}
public void testIsAWhenIsNot() {
- final Predicate<Facet> predicate = InteractionUtils.isA(FooFacet.class);
+ val predicate = _Predicates.instanceOf(FooFacet.class);
TestCase.assertFalse(predicate.test(barFacet));
}
public void testIsAWhenIsSubclass() {
- final Predicate<Facet> predicate = InteractionUtils.isA(FooFacet.class);
+ val predicate = _Predicates.instanceOf(FooFacet.class);
TestCase.assertTrue(predicate.test(fooSubFacet));
}
public void testIsAWhenIsNotBecauseASuperclass() {
- final Predicate<Facet> predicate = InteractionUtils.isA(FooFacet.class);
+ val predicate = _Predicates.instanceOf(FooFacet.class);
TestCase.assertFalse(predicate.test(fooSuperFacet));
}