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 2021/05/05 08:32:57 UTC

[isis] branch master updated: ISIS-2645: GridSystemService: a bit of housekeeping

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 e3109d7  ISIS-2645: GridSystemService: a bit of housekeeping
e3109d7 is described below

commit e3109d75bf371160eba6f1432befdcc860e19d54
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 5 10:32:40 2021 +0200

    ISIS-2645: GridSystemService: a bit of housekeeping
---
 .../core/metamodel/IsisModuleCoreMetamodel.java    |  4 +--
 .../services/grid/GridSystemServiceAbstract.java   | 29 ++++++----------------
 ...iceBS3.java => GridSystemServiceBootstrap.java} | 18 +++++++-------
 .../bootstrap3/{GridModel.java => _GridModel.java} |  6 ++---
 .../core/metamodel/spec/feature/ObjectMember.java  | 29 ++++++++++------------
 .../core/metamodel/services/grid/BS3GridTest.java  |  6 ++---
 6 files changed, 38 insertions(+), 54 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 808c6f6..9a5e4c2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -41,7 +41,7 @@ import org.apache.isis.core.metamodel.services.exceprecog.ExceptionRecognizerFor
 import org.apache.isis.core.metamodel.services.grid.GridLoaderServiceDefault;
 import org.apache.isis.core.metamodel.services.grid.GridReaderUsingJaxb;
 import org.apache.isis.core.metamodel.services.grid.GridServiceDefault;
-import org.apache.isis.core.metamodel.services.grid.bootstrap3.GridSystemServiceBS3;
+import org.apache.isis.core.metamodel.services.grid.bootstrap3.GridSystemServiceBootstrap;
 import org.apache.isis.core.metamodel.services.layout.LayoutServiceDefault;
 import org.apache.isis.core.metamodel.services.metamodel.MetaModelServiceDefault;
 import org.apache.isis.core.metamodel.services.registry.ServiceRegistryDefault;
@@ -85,7 +85,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
         GridLoaderServiceDefault.class,
         GridReaderUsingJaxb.class,
         GridServiceDefault.class,
-        GridSystemServiceBS3.class,
+        GridSystemServiceBootstrap.class,
         LayoutServiceDefault.class,
         MetaModelServiceDefault.class,
         ProgrammingModelServiceDefault.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
index d103359..4024dd1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -21,7 +21,6 @@ package org.apache.isis.core.metamodel.services.grid;
 import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Stream;
 
 import javax.inject.Inject;
 
@@ -78,11 +77,8 @@ import org.apache.isis.core.metamodel.facets.properties.propertylayout.RenderedA
 import org.apache.isis.core.metamodel.facets.properties.propertylayout.TypicalLengthFacetForPropertyXml;
 import org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetForPropertyXml;
 import org.apache.isis.core.metamodel.layout.LayoutFacetUtil.MetamodelToGridOverridingVisitor;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 import static org.apache.isis.core.metamodel.facetapi.FacetUtil.addOrReplaceFacet;
@@ -100,7 +96,7 @@ implements GridSystemService<G> {
     @Inject protected JaxbService jaxbService;
     @Inject protected MessageService messageService;
     @Inject IsisSystemEnvironment isisSystemEnvironment;
-    
+
     private final Class<G> gridImplementation;
     private final String tns;
     private final String schemaLocation;
@@ -109,7 +105,7 @@ implements GridSystemService<G> {
             final Class<G> gridImplementation,
             final String tns,
             final String schemaLocation) {
-        
+
         this.gridImplementation = gridImplementation;
         this.tns = tns;
         this.schemaLocation = schemaLocation;
@@ -170,7 +166,7 @@ implements GridSystemService<G> {
     /**
      * Overwrites (replaces) any existing facets in the metamodel with info taken from the grid.
      *
-     * @implNote This code uses {@link FacetUtil#addOrReplaceFacet(Facet)} 
+     * @implNote This code uses {@link FacetUtil#addOrReplaceFacet(Facet)}
      * because the layout might be changed multiple times.
      */
     private void overwriteFacets(
@@ -179,8 +175,8 @@ implements GridSystemService<G> {
 
         val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
 
-        val oneToOneAssociationById = ObjectMember.mapById(getOneToOneAssociations(objectSpec));
-        val oneToManyAssociationById = ObjectMember.mapById(getOneToManyAssociations(objectSpec));
+        val oneToOneAssociationById = ObjectMember.mapById(objectSpec.streamProperties(MixedIn.INCLUDED));
+        val oneToManyAssociationById = ObjectMember.mapById(objectSpec.streamCollections(MixedIn.INCLUDED));
         val objectActionById = ObjectMember.mapById(objectSpec.streamActions(MixedIn.INCLUDED));
 
         final AtomicInteger propertySequence = new AtomicInteger(0);
@@ -241,7 +237,7 @@ implements GridSystemService<G> {
                 }
                 addOrReplaceFacet(LayoutOrderFacetFromXml.create(memberOrderSequence, objectAction));
                 addOrReplaceFacet(LayoutGroupFacetFromXml.create(groupIdAndName, objectAction));
-                
+
 
                 // fix up the action position if required
                 if(actionLayoutDataOwner instanceof FieldSet) {
@@ -302,7 +298,7 @@ implements GridSystemService<G> {
                 // nb for any given field set the sequence won't reset to zero; however this is what we want so that
                 // table columns are shown correctly (by fieldset, then property order within that fieldset).
                 final FieldSet fieldSet = propertyLayoutData.getOwner();
-                
+
                 addOrReplaceFacet(LayoutOrderFacetFromXml.create(propertySequence.incrementAndGet(), oneToOneAssociation));
                 addOrReplaceFacet(LayoutGroupFacetFromXml.create(fieldSet, oneToOneAssociation));
             }
@@ -317,7 +313,7 @@ implements GridSystemService<G> {
                 addOrReplaceFacet(CssClassFacetForCollectionXml.create(collectionLayoutData, oneToManyAssociation));
                 addOrReplaceFacet(DefaultViewFacetForCollectionXml.create(collectionLayoutData, oneToManyAssociation));
                 addOrReplaceFacet(DescribedAsFacetForCollectionXml.create(collectionLayoutData, oneToManyAssociation));
-                addOrReplaceFacet(HiddenFacetForCollectionXml.create(collectionLayoutData, oneToManyAssociation));                
+                addOrReplaceFacet(HiddenFacetForCollectionXml.create(collectionLayoutData, oneToManyAssociation));
                 // preserve translations
                 NamedFacet existingNamedFacet = oneToManyAssociation.getFacet(NamedFacet.class);
                 if(existingNamedFacet == null) {
@@ -331,15 +327,6 @@ implements GridSystemService<G> {
         });
     }
 
-    protected static Stream<OneToOneAssociation> getOneToOneAssociations(final ObjectSpecification objectSpec) {
-        return objectSpec.streamProperties(MixedIn.INCLUDED);
-    }
-
-    protected static Stream<OneToManyAssociation> getOneToManyAssociations(final ObjectSpecification objectSpec) {
-        return objectSpec.streamCollections(MixedIn.INCLUDED);
-    }
-
-
     @Value(staticConstructor = "of")
     protected static class SurplusAndMissing {
         public final Set<String> surplus;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBootstrap.java
similarity index 97%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBootstrap.java
index f3ca834..555b49c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBootstrap.java
@@ -75,19 +75,19 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 @Service
-@Named("isis.metamodel.GridSystemServiceBS3")
+@Named("isis.metamodel.GridSystemServiceBootstrap")
 @Order(OrderPrecedence.MIDPOINT)
 @Primary
-@Qualifier("BS3")
+@Qualifier("Bootstrap")
 @Log4j2
-public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
+public class GridSystemServiceBootstrap extends GridSystemServiceAbstract<BS3Grid> {
 
     public static final String TNS = "http://isis.apache.org/applib/layout/grid/bootstrap3";
     public static final String SCHEMA_LOCATION = "http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd";
 
     @Inject private GridReaderUsingJaxb gridReader;
 
-    public GridSystemServiceBS3() {
+    public GridSystemServiceBootstrap() {
         super(BS3Grid.class, TNS, SCHEMA_LOCATION);
     }
 
@@ -174,15 +174,15 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
         val bs3Grid = (BS3Grid) grid;
         val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
 
-        val oneToOneAssociationById = ObjectMember.mapById(getOneToOneAssociations(objectSpec));
-        val oneToManyAssociationById = ObjectMember.mapById(getOneToManyAssociations(objectSpec));
+        val oneToOneAssociationById = ObjectMember.mapById(objectSpec.streamProperties(MixedIn.INCLUDED));
+        val oneToManyAssociationById = ObjectMember.mapById(objectSpec.streamCollections(MixedIn.INCLUDED));
         val objectActionById = ObjectMember.mapById(objectSpec.streamActions(MixedIn.INCLUDED));
 
         val propertyLayoutDataById = bs3Grid.getAllPropertiesById();
         val collectionLayoutDataById = bs3Grid.getAllCollectionsById();
         val actionLayoutDataById = bs3Grid.getAllActionsById();
 
-        val gridModelIfValid = GridModel.createFrom(bs3Grid);
+        val gridModelIfValid = _GridModel.createFrom(bs3Grid);
         if(!gridModelIfValid.isPresent()) { // only present if valid
             return false;
         }
@@ -336,7 +336,7 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
 
         for (final String actionId : sortedPossiblyMissingActionIds) {
             val objectAction = objectActionById.get(actionId);
-            
+
             val layoutGroupFacet = objectAction.getFacet(LayoutGroupFacet.class);
             if(layoutGroupFacet == null) {
                 continue;
@@ -401,7 +401,7 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
             }
         }
 
-        // ... the missing actions are those in the second tuple, excluding those associated 
+        // ... the missing actions are those in the second tuple, excluding those associated
         // (via @Action#associateWith) to a property or collection. (XXX comment might be outdated)
         final List<String> missingActionIds = _Lists.newArrayList(sortedPossiblyMissingActionIds);
         missingActionIds.removeAll(associatedActionIds);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/_GridModel.java
similarity index 98%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridModel.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/_GridModel.java
index 28be252..95163eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/_GridModel.java
@@ -41,7 +41,7 @@ import lombok.val;
  * @since 2.0
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-final class GridModel {
+final class _GridModel {
         private final LinkedHashSet<String> allIds = _Sets.newLinkedHashSet();
         private final LinkedHashMap<String, BS3Row> rows = _Maps.newLinkedHashMap();
         private final LinkedHashMap<String, BS3Col> cols = _Maps.newLinkedHashMap();
@@ -77,9 +77,9 @@ final class GridModel {
          * @param bs3Grid
          * @return empty if not valid
          */
-        public static Optional<GridModel> createFrom(BS3Grid bs3Grid) {
+        public static Optional<_GridModel> createFrom(BS3Grid bs3Grid) {
             
-            val gridModel = new GridModel();
+            val gridModel = new _GridModel();
 
             bs3Grid.visit(new BS3Grid.VisitorAdapter(){
                 @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index 74052a4..89263e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -24,8 +24,6 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Stream;
 
-import javax.annotation.meta.When;
-
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Maps;
@@ -67,7 +65,6 @@ public interface ObjectMember extends ObjectFeature {
      *
      * <p>
      * Determined as per the {@link HiddenFacet} being present and
-     * {@link HiddenFacet#when()} returning {@link When#ALWAYS}, and
      * {@link HiddenFacet#where()} returning {@link Where#ANYWHERE}.
      */
     boolean isAlwaysHidden();
@@ -179,11 +176,11 @@ public interface ObjectMember extends ObjectFeature {
         public HiddenException() {
             super(null);
         }
-        
+
         public static boolean isInstanceOf(Throwable throwable) {
             return throwable instanceof HiddenException;
         }
-        
+
     }
 
     class DisabledException extends AuthorizationException {
@@ -212,18 +209,18 @@ public interface ObjectMember extends ObjectFeature {
     // -- COMPARATORS
 
     public static class Comparators {
-        
+
         public static <T extends IdentifiedHolder> Comparator<T> byMemberOrderSequence(
                 final boolean ensureInSameGroup) {
-            
+
             return new Comparator<T>() {
 
                 @Override
                 public int compare(final T m1, final T m2) {
-                    
+
                     val orderFacet1 = m1==null ? null : m1.getFacet(LayoutOrderFacet.class);
                     val orderFacet2 = m2==null ? null : m2.getFacet(LayoutOrderFacet.class);
-                    
+
                     if (orderFacet1 == null && orderFacet2 == null) {
                         return 0;
                     }
@@ -234,24 +231,24 @@ public interface ObjectMember extends ObjectFeature {
                         return -1; // annotated before non-annotated
                     }
 
-                    if (ensureInSameGroup) { 
-                        
+                    if (ensureInSameGroup) {
+
                         val groupFacet1 = m1.getFacet(LayoutGroupFacet.class);
                         val groupFacet2 = m2.getFacet(LayoutGroupFacet.class);
                         val groupId1 = _Strings.nullToEmpty(groupFacet1==null ? null : groupFacet1.getGroupId());
                         val groupId2 = _Strings.nullToEmpty(groupFacet2==null ? null : groupFacet2.getGroupId());
-                        
+
                         if(!Objects.equals(groupId1, groupId2)) {
                             throw _Exceptions.illegalArgument(
-                                    "Not in same fieldSetId1 when comparing: '%s', '%s'", 
-                                    groupId1, 
+                                    "Not in same fieldSetId1 when comparing: '%s', '%s'",
+                                    groupId1,
                                     groupId2);
                         }
                     }
 
                     return _Comparators.deweyOrderCompare(
-                            orderFacet1.getSequence(), 
-                            orderFacet2.getSequence());    
+                            orderFacet1.getSequence(),
+                            orderFacet2.getSequence());
                 }
             };
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java
index fa98a29..0db59c6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/grid/BS3GridTest.java
@@ -40,7 +40,7 @@ import org.apache.isis.applib.services.jaxb.IsisSchemas;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.core.metamodel.services.grid.bootstrap3.GridSystemServiceBS3;
+import org.apache.isis.core.metamodel.services.grid.bootstrap3.GridSystemServiceBootstrap;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
@@ -50,13 +50,13 @@ public class BS3GridTest {
 
     private JaxbService jaxbService;
     private GridServiceDefault gridServiceDefault;
-    private GridSystemServiceBS3 gridSystemServiceBS3;
+    private GridSystemServiceBootstrap gridSystemServiceBS3;
 
     @Before
     public void setUp() throws Exception {
         jaxbService = new JaxbService.Simple() {};
         gridServiceDefault = new GridServiceDefault();
-        gridSystemServiceBS3 = new GridSystemServiceBS3();
+        gridSystemServiceBS3 = new GridSystemServiceBootstrap();
         gridServiceDefault.gridSystemServicesForTest = _Lists.of(gridSystemServiceBS3);
     }