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 2018/10/19 12:52:13 UTC
[isis] 03/04: Revert "ISIS-1974: reverts skipping of introspection
of actions for domain services"
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2010
in repository https://gitbox.apache.org/repos/asf/isis.git
commit e82036bfe0b936f29f81e3fefa2bad4de09dc9c6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Oct 19 11:27:37 2018 +0200
Revert "ISIS-1974: reverts skipping of introspection of actions for domain services"
This reverts commit 5e592ac4920af1557bdae35bf67001aa68948db7.
---
.../specimpl/dflt/ObjectSpecificationDefault.java | 28 ++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index a708e79..22948ea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.specloader.specimpl.dflt;
+import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
+
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
@@ -30,10 +32,12 @@ import org.slf4j.LoggerFactory;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.fixturescripts.FixtureScript;
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.applib.annotation.HomePage;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
import org.apache.isis.core.commons.lang.StringExtensions;
import org.apache.isis.core.commons.util.ToString;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -45,6 +49,7 @@ import org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated;
import org.apache.isis.core.metamodel.facets.all.i18n.PluralFacetTranslated;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred;
+import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet;
import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
import org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred;
@@ -70,8 +75,6 @@ import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbs
import org.apache.isis.core.metamodel.specloader.specimpl.OneToManyAssociationDefault;
import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault;
-import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
-
public class ObjectSpecificationDefault extends ObjectSpecificationAbstract implements FacetHolder {
private final static Logger LOG = LoggerFactory.getLogger(ObjectSpecificationDefault.class);
@@ -256,7 +259,24 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
}
private boolean skipAssociationsAndActions() {
- return isFixtureScript();
+ return isFixtureScript() || isDomainServiceWithDomainNatureOfServiceNotHomePage();
+ }
+
+ // TODO: this is a bit horrible; maybe instead introduce a new NatureOfService for home page services (also for seed services?)
+ private boolean isDomainServiceWithDomainNatureOfServiceNotHomePage() {
+ final DomainServiceFacet domainServiceFacet = this.getFacet(DomainServiceFacet.class);
+ if (domainServiceFacet == null) {
+ return false;
+ }
+ if (domainServiceFacet.getNatureOfService() != NatureOfService.DOMAIN) {
+ return false;
+ }
+ // domain services that have a single method annotated with @HomePage ARE introspected.
+ final Method[] methods = getCorrespondingClass().getDeclaredMethods();
+ if (methods.length != 1) {
+ return true;
+ }
+ return methods[0].getAnnotation(HomePage.class) == null;
}
private boolean isFixtureScript() {