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/12/14 11:33:48 UTC
[isis] branch master updated: ISIS-2226: fixes incubator:model not
considering action-parameter facets
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new d0a24e0 ISIS-2226: fixes incubator:model not considering action-parameter facets
d0a24e0 is described below
commit d0a24e0a622f43379bbee86ee0371dc6575069ca
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Dec 14 12:33:39 2019 +0100
ISIS-2226: fixes incubator:model not considering action-parameter facets
also reverts annotation @Supporting -> @Model, because for the moment,
using the more generic idea of @Model being the opposite of
@Programmatic is much simpler to implement when it comes to meta-model
validation
---
.../ActionParameterChoicesFacetAbstract.java | 4 +-
.../ActionParameterChoicesFacetViaMethod.java | 7 +++-
.../metamodel/interactions/InteractionUtils.java | 10 +++--
.../services/grid/GridSystemServiceAbstract.java | 7 ++--
.../grid/bootstrap3/GridSystemServiceBS3.java | 10 ++---
.../isis/metamodel/spec/ObjectSpecification.java | 16 +++-----
.../isis/metamodel/spec/feature/ObjectMember.java | 45 ++++++++-------------
.../specimpl/dflt/ObjectSpecificationDefault.java | 41 +++++++++++--------
.../metamodel/JdoProgrammingModelPlugin.java | 2 +-
...actoryDefault_wrappedObject_transient_Test.java | 6 ---
.../handlers/DomainObjectInvocationHandler.java | 9 +++--
.../viewer/integration/WebRequestCycleForIsis.java | 4 +-
.../actions/depargs/DependentArgsActionDemo.java | 46 ++++++++++++++++++++++
.../DependentArgsActionDemo_useAutoComplete.java | 2 +-
.../DependentArgsActionDemo_useChoices.java | 2 +-
.../DependentArgsActionDemo_useDefault.java | 2 +-
.../DependentArgsActionDemo_useDisable.java | 2 +-
.../depargs/DependentArgsActionDemo_useHide.java | 2 +-
.../main/java/demoapp/dom/tooltip/TooltipDemo.java | 6 +--
.../bad/Configuration_usingInvalidDomain.java | 6 +++
.../model/bad/InvalidOrphanedActionSupport.java | 4 +-
.../bad/InvalidOrphanedCollectionSupport.java | 4 +-
.../model/bad/InvalidOrphanedPropertySupport.java | 4 +-
.../model/good/Configuration_usingValidDomain.java | 6 +++
.../testdomain/model/good/ProperActionSupport.java | 6 +--
.../model/good/ProperActionSupport_action.java | 6 +--
.../model/good/ProperActionSupport_collection.java | 6 +--
.../good/ProperActionSupport_collection2.java | 4 +-
.../model/good/ProperActionSupport_mixin.java | 4 +-
.../model/good/ProperActionSupport_property.java | 6 +--
.../model/good/ProperActionSupport_property2.java | 4 +-
.../model/good/ProperCollectionSupport.java | 4 +-
.../model/good/ProperPrefixedMember.java | 4 +-
.../model/good/ProperPropertySupport.java | 4 +-
.../DomainModelTest_usingGoodDomain.java | 2 +-
.../annotation/{Supporting.java => Model.java} | 4 +-
.../SupportingMethodValidatorRefinerFactory.java | 30 ++++++++++----
37 files changed, 197 insertions(+), 134 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
index a03b3ed..ac99551 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/ActionParameterChoicesFacetAbstract.java
@@ -23,7 +23,9 @@ import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-public abstract class ActionParameterChoicesFacetAbstract extends FacetAbstract implements ActionParameterChoicesFacet {
+public abstract class ActionParameterChoicesFacetAbstract
+extends FacetAbstract
+implements ActionParameterChoicesFacet {
public static Class<? extends Facet> type() {
return ActionParameterChoicesFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index bde1327..9bf1958 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -35,7 +35,9 @@ import org.apache.isis.metamodel.facets.param.choices.ActionParameterChoicesFace
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecification;
-public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoicesFacetAbstract implements ImperativeFacet {
+public class ActionParameterChoicesFacetViaMethod
+extends ActionParameterChoicesFacetAbstract
+implements ImperativeFacet {
private final Method method;
private final Class<?> choicesType;
@@ -95,7 +97,8 @@ public class ActionParameterChoicesFacetViaMethod extends ActionParameterChoices
return "method=" + method + ",type=" + choicesType;
}
- @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
+ @Override
+ public void appendAttributesTo(final Map<String, Object> attributeMap) {
super.appendAttributesTo(attributeMap);
ImperativeFacet.Util.appendAttributesTo(this, attributeMap);
attributeMap.put("choicesType", choicesType);
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 64901b2..65bedd5 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
@@ -36,7 +36,8 @@ public final class InteractionUtils {
facetHolder.streamFacets(HidingInteractionAdvisor.class)
.forEach(advisor->{
- iaResult.advise(advisor.hides(context), advisor);
+ val hidingReason = advisor.hides(context);
+ iaResult.advise(hidingReason, advisor);
});
return iaResult;
@@ -48,8 +49,8 @@ public final class InteractionUtils {
facetHolder.streamFacets(DisablingInteractionAdvisor.class)
.forEach(advisor->{
- final String disables = advisor.disables(context);
- isResult.advise(disables, advisor);
+ val disablingReason = advisor.disables(context);
+ isResult.advise(disablingReason, advisor);
});
return isResult;
@@ -61,7 +62,8 @@ public final class InteractionUtils {
facetHolder.streamFacets(ValidatingInteractionAdvisor.class)
.forEach(advisor->{
- iaResult.advise(advisor.invalidates(context), advisor);
+ val invalidatingReason = advisor.invalidates(context);
+ iaResult.advise(invalidatingReason, advisor);
});
return iaResult;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridSystemServiceAbstract.java
index 2b71d7c..d4a9a34 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -54,7 +54,6 @@ import org.apache.isis.applib.services.message.MessageService;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.environment.IsisSystemEnvironment;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -205,11 +204,11 @@ implements GridSystemService<G> {
final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
final Map<String, OneToOneAssociation> oneToOneAssociationById =
- ObjectMember.Util.mapById(getOneToOneAssociations(objectSpec));
+ ObjectMember.mapById(getOneToOneAssociations(objectSpec));
final Map<String, OneToManyAssociation> oneToManyAssociationById =
- ObjectMember.Util.mapById(getOneToManyAssociations(objectSpec));
+ ObjectMember.mapById(getOneToManyAssociations(objectSpec));
final Map<String, ObjectAction> objectActionById =
- ObjectMember.Util.mapById(objectSpec.streamObjectActions(Contributed.INCLUDED));
+ ObjectMember.mapById(objectSpec.streamObjectActions(Contributed.INCLUDED));
final AtomicInteger propertySequence = new AtomicInteger(0);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
index cb1f1d1..adbc039 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
@@ -29,13 +29,13 @@ import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Named;
-import org.apache.isis.applib.annotation.OrderPrecedence;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Primary;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.OrderPrecedence;
import org.apache.isis.applib.layout.component.ActionLayoutData;
import org.apache.isis.applib.layout.component.ActionLayoutDataOwner;
import org.apache.isis.applib.layout.component.CollectionLayoutData;
@@ -71,7 +71,6 @@ import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
import static org.apache.isis.commons.internal.base._NullSafe.stream;
-import lombok.extern.log4j.Log4j2;
import lombok.val;
@Service
@@ -79,7 +78,6 @@ import lombok.val;
@Order(OrderPrecedence.MIDPOINT)
@Primary
@Qualifier("BS3")
-@Log4j2
public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
public static final String TNS = "http://isis.apache.org/applib/layout/grid/bootstrap3";
@@ -185,11 +183,11 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
final Map<String, OneToOneAssociation> oneToOneAssociationById =
- ObjectMember.Util.mapById(getOneToOneAssociations(objectSpec));
+ ObjectMember.mapById(getOneToOneAssociations(objectSpec));
final Map<String, OneToManyAssociation> oneToManyAssociationById =
- ObjectMember.Util.mapById(getOneToManyAssociations(objectSpec));
+ ObjectMember.mapById(getOneToManyAssociations(objectSpec));
final Map<String, ObjectAction> objectActionById =
- ObjectMember.Util.mapById(
+ ObjectMember.mapById(
objectSpec.streamObjectActions(Contributed.INCLUDED));
final BS3Grid bs3Grid = (BS3Grid) grid;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecification.java
index 5d58c63..3bb1afc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ObjectSpecification.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Array;
import java.lang.reflect.Modifier;
import java.util.Comparator;
import java.util.Optional;
-import java.util.function.Function;
import java.util.stream.Stream;
import org.apache.isis.applib.annotation.DomainObject;
@@ -51,12 +50,12 @@ import org.apache.isis.metamodel.facets.object.value.ValueFacet;
import org.apache.isis.metamodel.interactions.InteractionContext;
import org.apache.isis.metamodel.interactions.ObjectTitleContext;
import org.apache.isis.metamodel.interactions.ObjectValidityContext;
+import org.apache.isis.metamodel.services.classsubstitutor.ClassSubstitutor;
import org.apache.isis.metamodel.spec.feature.Contributed;
import org.apache.isis.metamodel.spec.feature.ObjectActionContainer;
import org.apache.isis.metamodel.spec.feature.ObjectAssociationContainer;
import org.apache.isis.metamodel.spec.feature.ObjectMember;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.metamodel.services.classsubstitutor.ClassSubstitutor;
import org.apache.isis.metamodel.specloader.specimpl.IntrospectionState;
import org.apache.isis.metamodel.specloader.specimpl.MixedInMember;
import org.apache.isis.security.api.authentication.AuthenticationSession;
@@ -88,13 +87,6 @@ ObjectAssociationContainer, Hierarchical, DefaultProvider {
s1.getShortIdentifier().compareToIgnoreCase(s2.getShortIdentifier());
}
- final class Functions {
- private Functions(){}
-
- public static final Function<ObjectSpecification, String> FULL_IDENTIFIER =
- ObjectSpecification::getFullIdentifier;
- }
-
ObjectMember getMember(String memberId);
/**
@@ -428,10 +420,14 @@ ObjectAssociationContainer, Hierarchical, DefaultProvider {
val self = Stream.of(this);
val actions = streamObjectActions(Contributed.EXCLUDED);
+ val actionParameters = streamObjectActions(Contributed.EXCLUDED)
+ .flatMap(action->action.getParameterCount()>0
+ ? action.getParameters().stream()
+ : Stream.empty());
val properties = streamProperties(Contributed.EXCLUDED);
val collections = streamCollections(Contributed.EXCLUDED);
- return _Streams.concat(self, actions, properties, collections);
+ return _Streams.concat(self, actions, actionParameters, properties, collections);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectMember.java
index c2f08ad..71bccbd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/ObjectMember.java
@@ -71,7 +71,7 @@ public interface ObjectMember extends ObjectFeature {
/**
- * Determines if this member is visible, represented as a {@link Consent}.
+ * Determines if this member is visible (not hidden), represented as a {@link Consent}.
* @param target
* may be <tt>null</tt> if just checking for authorization.
* @param interactionInitiatedBy
@@ -87,7 +87,7 @@ public interface ObjectMember extends ObjectFeature {
// /////////////////////////////////////////////////////////////
/**
- * Determines whether this member is usable, represented as a
+ * Determines whether this member is usable (not disabled), represented as a
* {@link Consent}.
* @param target
* may be <tt>null</tt> if just checking for authorization.
@@ -176,15 +176,11 @@ public interface ObjectMember extends ObjectFeature {
public HiddenException() {
super(null);
}
-
- public static Predicate<Throwable> isInstanceOf() {
- return new Predicate<Throwable>() {
- @Override
- public boolean test(@Nullable final Throwable throwable) {
- return throwable instanceof HiddenException;
- }
- };
+
+ public static boolean isInstanceOf(Throwable throwable) {
+ return throwable instanceof HiddenException;
}
+
}
class DisabledException extends AuthorizationException {
@@ -194,31 +190,22 @@ public interface ObjectMember extends ObjectFeature {
super(message, null);
}
- public static Predicate<Throwable> isInstanceOf() {
- return new Predicate<Throwable>() {
- @Override
- public boolean test(@Nullable final Throwable throwable) {
- return throwable instanceof DisabledException;
- }
- };
+ public static boolean isInstanceOf(Throwable throwable) {
+ return throwable instanceof DisabledException;
}
}
- class Util {
-
- private Util(){}
-
- public static <T extends ObjectMember> Map<String, T> mapById(final Stream<T> members) {
+ public static <T extends ObjectMember> Map<String, T> mapById(final Stream<T> members) {
- val memberById = _Maps.<String, T>newLinkedHashMap();
- members.forEach(member->{
- // if there are multiple members with same id, just disregard
- memberById.put(member.getId(), member);
- });
- return memberById;
- }
+ val memberById = _Maps.<String, T>newLinkedHashMap();
+ members.forEach(member->{
+ // if there are multiple members with same id, just disregard
+ memberById.put(member.getId(), member);
+ });
+ return memberById;
}
+
// //////////////////////////////////////////////////////
// Comparators
// //////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index f19762b..e0ff358 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -20,19 +20,21 @@
package org.apache.isis.metamodel.specloader.specimpl.dflt;
import java.lang.reflect.Method;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.BiConsumer;
import java.util.stream.Stream;
+import javax.annotation.Nullable;
+
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.metamodel.context.MetaModelContext;
import org.apache.isis.metamodel.commons.StringExtensions;
import org.apache.isis.metamodel.commons.ToString;
+import org.apache.isis.metamodel.context.MetaModelContext;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facets.FacetedMethod;
@@ -48,6 +50,7 @@ import org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferr
import org.apache.isis.metamodel.facets.object.value.ValueFacet;
import org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.metamodel.facets.object.wizard.WizardFacet;
+import org.apache.isis.metamodel.services.classsubstitutor.ClassSubstitutor;
import org.apache.isis.metamodel.spec.ActionType;
import org.apache.isis.metamodel.spec.ElementSpecificationProvider;
import org.apache.isis.metamodel.spec.ManagedObject;
@@ -57,7 +60,6 @@ import org.apache.isis.metamodel.spec.feature.ObjectAction;
import org.apache.isis.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.metamodel.services.classsubstitutor.ClassSubstitutor;
import org.apache.isis.metamodel.specloader.facetprocessor.FacetProcessor;
import org.apache.isis.metamodel.specloader.postprocessor.PostProcessor;
import org.apache.isis.metamodel.specloader.specimpl.FacetedMethodsBuilder;
@@ -363,8 +365,13 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
.orElse(null);
}
- // -- getMember, catalog... (not API)
-
+ /**
+ * @param method
+ * @return ObjectMember associated with given {@code method}, or else {@code null}
+ * @apiNote not API; refactoring result type to Optional<ObjectMember> would be desired,
+ * but did not work with JMock tests on first attempt
+ */
+ @Nullable
public ObjectMember getMember(final Method method) {
introspectUpTo(IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
@@ -374,34 +381,34 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
return membersByMethod.get(method);
}
- private HashMap<Method, ObjectMember> catalogueMembers() {
- final HashMap<Method, ObjectMember> membersByMethod = _Maps.newHashMap();
- cataloguePropertiesAndCollections(membersByMethod);
- catalogueActions(membersByMethod);
+ private Map<Method, ObjectMember> catalogueMembers() {
+ val membersByMethod = _Maps.<Method, ObjectMember>newHashMap();
+ cataloguePropertiesAndCollections(membersByMethod::put);
+ catalogueActions(membersByMethod::put);
return membersByMethod;
}
- private void cataloguePropertiesAndCollections(final Map<Method, ObjectMember> membersByMethod) {
- final Stream<ObjectAssociation> fields = streamAssociations(Contributed.EXCLUDED);
- fields.forEach(field->{
+ private void cataloguePropertiesAndCollections(BiConsumer<Method, ObjectMember> onMember) {
+ streamAssociations(Contributed.EXCLUDED)
+ .forEach(field->{
final Stream<Facet> facets = field.streamFacets().filter(ImperativeFacet.PREDICATE);
facets.forEach(facet->{
final ImperativeFacet imperativeFacet = ImperativeFacet.Util.getImperativeFacet(facet);
for (final Method imperativeFacetMethod : imperativeFacet.getMethods()) {
- membersByMethod.put(imperativeFacetMethod, field);
+ onMember.accept(imperativeFacetMethod, field);
}
});
});
}
- private void catalogueActions(final Map<Method, ObjectMember> membersByMethod) {
- final Stream<ObjectAction> userActions = streamObjectActions(Contributed.INCLUDED);
- userActions.forEach(userAction->{
+ private void catalogueActions(BiConsumer<Method, ObjectMember> onMember) {
+ streamObjectActions(Contributed.INCLUDED)
+ .forEach(userAction->{
final Stream<Facet> facets = userAction.streamFacets().filter(ImperativeFacet.PREDICATE);
facets.forEach(facet->{
final ImperativeFacet imperativeFacet = ImperativeFacet.Util.getImperativeFacet(facet);
for (final Method imperativeFacetMethod : imperativeFacet.getMethods()) {
- membersByMethod.put(imperativeFacetMethod, userAction);
+ onMember.accept(imperativeFacetMethod, userAction);
}
});
});
diff --git a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/JdoProgrammingModelPlugin.java b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/JdoProgrammingModelPlugin.java
index a57b146..f867f1a 100644
--- a/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/JdoProgrammingModelPlugin.java
+++ b/core/persistence/jdo/datanucleus-5/src/main/java/org/apache/isis/persistence/jdo/datanucleus5/metamodel/JdoProgrammingModelPlugin.java
@@ -209,7 +209,7 @@ public class JdoProgrammingModelPlugin implements MetaModelRefiner {
private String asCsv(final List<ObjectSpecification> specList) {
return stream(specList)
- .map(ObjectSpecification.Functions.FULL_IDENTIFIER)
+ .map(ObjectSpecification::getFullIdentifier)
.collect(Collectors.joining(","));
}
diff --git a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault_wrappedObject_transient_Test.java b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault_wrappedObject_transient_Test.java
index 85c96f7..756198a 100644
--- a/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault_wrappedObject_transient_Test.java
+++ b/core/persistence/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/services/wrapper/WrapperFactoryDefault_wrappedObject_transient_Test.java
@@ -135,12 +135,6 @@ public class WrapperFactoryDefault_wrappedObject_transient_Test {
context.checking(new Expectations() {
{
-// allowing(mockPersistenceSessionServiceInternal).adapterFor(employeeDO);
-// will(returnValue(mockEmployeeAdapter));
-//
-// allowing(mockPersistenceSessionServiceInternal).adapterFor(passwordValue);
-// will(returnValue(mockPasswordAdapter));
-
allowing(mockObjectManager).adapt(employeeDO);
will(returnValue(mockEmployeeAdapter));
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
index 73a5561..347df6b 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -753,10 +753,13 @@ public class DomainObjectInvocationHandler<T> extends DelegatingInvocationHandle
val objectSpecificationDefault = getJavaSpecificationOfOwningClass(method);
val member = objectSpecificationDefault.getMember(method);
- if (member == null) {
- final String methodName = method.getName();
- throw new UnsupportedOperationException("Method '" + methodName + "' being invoked does not correspond to any of the object's fields or actions.");
+ if(member == null) {
+ val methodName = method.getName();
+ val msg = "Method '" + methodName + "' being invoked does not correspond "
+ + "to any of the object's fields or actions.";
+ throw new UnsupportedOperationException(msg);
}
+
return member;
}
diff --git a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
index 1f72290..6ead0fd 100644
--- a/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
+++ b/core/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
@@ -239,13 +239,13 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
final List<Throwable> causalChain = _Exceptions.getCausalChain(ex);
final Optional<Throwable> hiddenIfAny = causalChain.stream()
- .filter(ObjectMember.HiddenException.isInstanceOf()).findFirst();
+ .filter(ObjectMember.HiddenException::isInstanceOf).findFirst();
if(hiddenIfAny.isPresent()) {
addMessage("hidden");
return respondGracefully(cycle);
}
final Optional<Throwable> disabledIfAny = causalChain.stream()
- .filter(ObjectMember.DisabledException.isInstanceOf()).findFirst();
+ .filter(ObjectMember.DisabledException::isInstanceOf).findFirst();
if(disabledIfAny.isPresent()) {
addTranslatedMessage(disabledIfAny.get().getMessage());
return respondGracefully(cycle);
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java
index 938714e..7d3fba8 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo.java
@@ -18,20 +18,29 @@
*/
package demoapp.dom.actions.depargs;
+import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
+import java.util.stream.Collectors;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.value.Markup;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import demoapp.utils.DemoStub;
import lombok.Getter;
@@ -59,6 +68,43 @@ public class DependentArgsActionDemo extends DemoStub {
items.add(DemoItem.of("third", Parity.ODD));
items.add(DemoItem.of("last", Parity.EVEN));
}
+
+ // -- DEBUG
+
+// @ActionLayout(named="Choices", promptStyle = PromptStyle.DIALOG_MODAL)
+// @Action(semantics = SemanticsOf.SAFE)
+// public DependentArgsActionDemo useChoices(
+//
+// // PARAM 0
+// @Parameter(optionality = Optionality.MANDATORY)
+// Parity parity,
+//
+// // PARAM 1
+// @Parameter(optionality = Optionality.MANDATORY)
+// DemoItem item
+//
+// ) {
+//
+// return this;
+// }
+//
+// // -- PARAM 1 (DemoItem)
+//
+//
+// public Collection<DemoItem> choices1useChoices(
+//
+// Parity parity // <-- the refining parameter from the dialog above
+//
+// ) {
+//
+// if(parity == null) {
+// return this.getItems();
+// }
+// return this.getItems()
+// .stream()
+// .filter(item->parity == item.getParity())
+// .collect(Collectors.toList());
+// }
}
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useAutoComplete.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useAutoComplete.java
index ec1e977..a0a2523 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useAutoComplete.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useAutoComplete.java
@@ -32,7 +32,7 @@ import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useChoices.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useChoices.java
index 033094a..b9ee525 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useChoices.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useChoices.java
@@ -31,7 +31,7 @@ import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefault.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefault.java
index 2994588..d9de12c 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefault.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefault.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java
index 7a3677e..5626209 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDisable.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java
index e29618c..f6f7e7a 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useHide.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
diff --git a/examples/demo/src/main/java/demoapp/dom/tooltip/TooltipDemo.java b/examples/demo/src/main/java/demoapp/dom/tooltip/TooltipDemo.java
index 7aa693f..9fc0d2b 100644
--- a/examples/demo/src/main/java/demoapp/dom/tooltip/TooltipDemo.java
+++ b/examples/demo/src/main/java/demoapp/dom/tooltip/TooltipDemo.java
@@ -42,7 +42,7 @@ import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.value.Markup;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import demoapp.dom.actions.assoc.DemoItem;
import demoapp.utils.DemoStub;
@@ -110,7 +110,7 @@ public class TooltipDemo extends DemoStub {
return this;
}
- @Supporting
+ @Model
public String disableDisabledAction() {
return "Disabled for demonstration.";
}
@@ -125,7 +125,7 @@ public class TooltipDemo extends DemoStub {
return this;
}
- @Supporting
+ @Model
public String disableDisabledActionWithConfirmation() {
return "Disabled for demonstration.";
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/Configuration_usingInvalidDomain.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/Configuration_usingInvalidDomain.java
index ab6c45e..9c5ec5e 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/Configuration_usingInvalidDomain.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/Configuration_usingInvalidDomain.java
@@ -20,8 +20,14 @@ package org.apache.isis.testdomain.model.bad;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.incubator.model.metamodel.IsisModuleIncModelMetaModel;
@Configuration
+@Import({
+ IsisModuleIncModelMetaModel.class
+})
@ComponentScan(
basePackageClasses= {
Configuration_usingInvalidDomain.class
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedActionSupport.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedActionSupport.java
index ddb94e5..a5b88da 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedActionSupport.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedActionSupport.java
@@ -19,14 +19,14 @@
package org.apache.isis.testdomain.model.bad;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Nature;
@DomainObject(nature = Nature.VIEW_MODEL)
public class InvalidOrphanedActionSupport {
// should fail
- @Supporting
+ @Model
public boolean hideOrphaned() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedCollectionSupport.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedCollectionSupport.java
index 62f93b8..6a15f99 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedCollectionSupport.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedCollectionSupport.java
@@ -19,14 +19,14 @@
package org.apache.isis.testdomain.model.bad;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Nature;
@DomainObject(nature = Nature.VIEW_MODEL)
public class InvalidOrphanedCollectionSupport {
// should fail
- @Supporting
+ @Model
public boolean hideMyCollection() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedPropertySupport.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedPropertySupport.java
index 96eb8c9..3f29a80 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedPropertySupport.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/bad/InvalidOrphanedPropertySupport.java
@@ -19,14 +19,14 @@
package org.apache.isis.testdomain.model.bad;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Nature;
@DomainObject(nature = Nature.VIEW_MODEL)
public class InvalidOrphanedPropertySupport {
// should fail
- @Supporting
+ @Model
public boolean hideMyProperty() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/Configuration_usingValidDomain.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/Configuration_usingValidDomain.java
index 3917cf9..a839557 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/Configuration_usingValidDomain.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/Configuration_usingValidDomain.java
@@ -20,8 +20,14 @@ package org.apache.isis.testdomain.model.good;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.incubator.model.metamodel.IsisModuleIncModelMetaModel;
@Configuration
+@Import({
+ IsisModuleIncModelMetaModel.class
+})
@ComponentScan(
basePackageClasses= {
Configuration_usingValidDomain.class
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport.java
index cf8899a..12ab5d9 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport.java
@@ -21,19 +21,19 @@ package org.apache.isis.testdomain.model.good;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
@DomainObject(nature = Nature.VIEW_MODEL)
public class ProperActionSupport {
// proper action
@Action
- public void myAction() {
+ public void myAction(String param) {
}
// proper support
- @Supporting
+ @Model
public boolean hideMyAction() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_action.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_action.java
index 2d7b542..08eb5b5 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_action.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_action.java
@@ -20,7 +20,7 @@ package org.apache.isis.testdomain.model.good;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
@@ -38,8 +38,8 @@ public class ProperActionSupport_action {
}
// proper support
- @Supporting
- public boolean hide$$() {
+ @Model
+ public boolean hideAct() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection.java
index 77b6f45..11d4251 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection.java
@@ -23,7 +23,7 @@ import java.util.List;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.CollectionLayout;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
@@ -41,8 +41,8 @@ public class ProperActionSupport_collection {
}
// proper support
- @Supporting
- public boolean hide$$() {
+ @Model
+ public boolean hideColl() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection2.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection2.java
index a276ba85..6344cdf 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection2.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_collection2.java
@@ -24,7 +24,7 @@ import java.util.List;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.Mixin;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
@@ -42,7 +42,7 @@ public class ProperActionSupport_collection2 {
}
// proper support
- @Supporting
+ @Model
public boolean hide$$() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_mixin.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_mixin.java
index 581c564..cac6cf8 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_mixin.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_mixin.java
@@ -20,7 +20,7 @@ package org.apache.isis.testdomain.model.good;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.Mixin;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import lombok.RequiredArgsConstructor;
@@ -36,7 +36,7 @@ public class ProperActionSupport_mixin {
}
// proper support
- @Supporting
+ @Model
public boolean hide$$() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property.java
index 1e90ebe..88fdcf0 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property.java
@@ -18,7 +18,7 @@
*/
package org.apache.isis.testdomain.model.good;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
@@ -38,8 +38,8 @@ public class ProperActionSupport_property {
}
// proper support
- @Supporting
- public boolean hide$$() {
+ @Model
+ public boolean hideProp() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property2.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property2.java
index b28ba7a..09f4296 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property2.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperActionSupport_property2.java
@@ -19,7 +19,7 @@
package org.apache.isis.testdomain.model.good;
import org.apache.isis.applib.annotation.Mixin;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
@@ -39,7 +39,7 @@ public class ProperActionSupport_property2 {
}
// proper support
- @Supporting
+ @Model
public boolean hide$$() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperCollectionSupport.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperCollectionSupport.java
index b78d581..7a93cd2 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperCollectionSupport.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperCollectionSupport.java
@@ -22,7 +22,7 @@ import java.util.List;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Nature;
import lombok.Getter;
@@ -36,7 +36,7 @@ public class ProperCollectionSupport {
private List<String> myCollection;
// proper support
- @Supporting
+ @Model
public boolean hideMyCollection() {
return false;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPrefixedMember.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPrefixedMember.java
index 345fa61..2f5e01b 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPrefixedMember.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPrefixedMember.java
@@ -2,7 +2,7 @@ package org.apache.isis.testdomain.model.good;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.Property;
@@ -19,7 +19,7 @@ public class ProperPrefixedMember {
}
// should be identified as support
- @Supporting
+ @Model
public String disableDisableSomething() {
return null;
}
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPropertySupport.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPropertySupport.java
index 8e97ba6..5f592a3 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPropertySupport.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/model/good/ProperPropertySupport.java
@@ -19,7 +19,7 @@
package org.apache.isis.testdomain.model.good;
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.applib.annotation.Property;
@@ -34,7 +34,7 @@ public class ProperPropertySupport {
private String myProperty;
// proper support
- @Supporting
+ @Model
public boolean hideMyProperty() {
return false;
}
diff --git a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
index 9086d53..d4d04b2 100644
--- a/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
+++ b/examples/smoketests/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
@@ -100,7 +100,7 @@ class DomainModelTest_usingGoodDomain {
void typeLevelAnnotations_shouldBeHonored_onMixins() {
val holderSpec = specificationLoader.loadSpecification(ProperActionSupport.class,
- IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
+ IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
val mx_mixin = holderSpec.getObjectAction("mixin"); // proper mix-in support
assertNotNull(mx_mixin);
diff --git a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/applib/annotation/Supporting.java b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/applib/annotation/Model.java
similarity index 91%
rename from incubator/core/model/src/main/java/org/apache/isis/incubator/model/applib/annotation/Supporting.java
rename to incubator/core/model/src/main/java/org/apache/isis/incubator/model/applib/annotation/Model.java
index 5d7d74a..e0443d4 100644
--- a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/applib/annotation/Supporting.java
+++ b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/applib/annotation/Model.java
@@ -29,7 +29,7 @@ import java.lang.annotation.Target;
* Indicates that a method is a supporting-method, one that contributes (hide, validate, ...)
* to an <em>Action/</em>.
* <p>
- * By placing the {@link Supporting} annotation on a method, a contract with the meta-model is enforced,
+ * By placing the {@link Model} annotation on a method, a contract with the meta-model is enforced,
* such that this method must be recognized and cannot be ignored.
*
* @since 2.0
@@ -37,6 +37,6 @@ import java.lang.annotation.Target;
@Inherited
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
-public @interface Supporting {
+public @interface Model {
}
diff --git a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
index b903d2b..e587302 100644
--- a/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
+++ b/incubator/core/model/src/main/java/org/apache/isis/incubator/model/metamodel/facets/SupportingMethodValidatorRefinerFactory.java
@@ -24,7 +24,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
-import org.apache.isis.incubator.model.applib.annotation.Supporting;
+import org.apache.isis.incubator.model.applib.annotation.Model;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.metamodel.commons.MethodUtil;
@@ -61,7 +61,21 @@ implements MetaModelRefiner {
val type = spec.getCorrespondingClass();
- // methods known to the metamodel
+//XXX for debugging ...
+// if(spec.getSpecId().asString().contains("ProperActionSupport")) {
+//
+// val sb = new StringBuffer();
+//
+// sb.append("\n### debug " + spec.getSpecId().asString()).append("\n");
+//
+// spec.streamFacetHolders()
+// .flatMap(FacetHolder::streamFacets)
+// .forEach(facet->sb.append("facet: " + facet).append("\n"));
+//
+// System.out.println(sb);
+// }
+
+ // methods known to the meta-model
val recognizedMethods = spec.streamFacetHolders()
.flatMap(FacetHolder::streamFacets)
.filter(ImperativeFacet.class::isInstance)
@@ -69,16 +83,16 @@ implements MetaModelRefiner {
.map(ImperativeFacet::getMethods)
.flatMap(List::stream)
.collect(Collectors.toCollection(HashSet::new));
-
- // methods intended by the coder to be known to the metamodel
+
+ // methods intended to be included with the meta-model
val intendedMethods = _Sets.<Method>newHashSet();
for(val method: type.getDeclaredMethods()) {
- if(method.getDeclaredAnnotation(Supporting.class)!=null) {
+ if(method.getDeclaredAnnotation(Model.class)!=null) {
intendedMethods.add(method);
}
}
- // methods intended by the coder but not known to the metamodel
+ // methods intended to be included with the meta-model but missing
val notRecognizedMethods =
_Sets.minus(intendedMethods, recognizedMethods);
@@ -86,7 +100,7 @@ implements MetaModelRefiner {
notRecognizedMethods.forEach(notRecognizedMethod->{
val unmetContraints = unmetContraints(spec, notRecognizedMethod);
- val messageFormat = "%s#%s: has annotion %s, is assumed to support "
+ val messageFormat = "%s#%s: has annotation @%s, is assumed to support "
+ "a property, collection or action. Unmet constraint(s): %s";
validationFailures.onFailure(
spec,
@@ -94,7 +108,7 @@ implements MetaModelRefiner {
messageFormat,
spec.getIdentifier().getClassName(),
notRecognizedMethod.getName(),
- Supporting.class.getSimpleName(),
+ Model.class.getSimpleName(),
unmetContraints.stream()
.collect(Collectors.joining("; ")));
});