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 2020/01/18 11:43:23 UTC

[isis] branch master updated: ISIS-2158: remove leftovers of FreeStandingList (temp type: Container)

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 c0696cc  ISIS-2158: remove leftovers of FreeStandingList (temp type: Container)
c0696cc is described below

commit c0696cc291cc858d76aaf8f43dc8f886119370ed
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat Jan 18 12:43:10 2020 +0100

    ISIS-2158: remove leftovers of FreeStandingList (temp type: Container)
---
 .../ClassSubstitutorForCollections.java            |   4 -
 .../apache/isis/core/metamodel/spec/Container.java |  36 ----
 .../specloader/SpecificationLoaderDefault.java     |  29 +---
 .../specimpl/ObjectSpecificationAbstract.java      |   1 -
 .../standalonelist/CollectionFacetOnContainer.java |  66 --------
 .../ObjectSpecificationOnContainer.java            | 185 ---------------------
 .../ValueTypeProviderForCollections.java           |   4 +-
 7 files changed, 10 insertions(+), 315 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
index 032c346..920e61d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
@@ -31,7 +31,6 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.core.metamodel.spec.Container;
 
 import lombok.NonNull;
 
@@ -42,9 +41,6 @@ public class ClassSubstitutorForCollections implements ClassSubstitutor {
 
     @Override
     public Substitution getSubstitution(@NonNull Class<?> cls) {
-        if(Container.class.isAssignableFrom(cls)) {
-            return Substitution.replaceClass(Container.class);
-        }
         if(Vector.class.isAssignableFrom(cls)) {
             return Substitution.replaceClass(Vector.class);
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Container.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Container.java
deleted file mode 100644
index b506f22..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Container.java
+++ /dev/null
@@ -1,36 +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.core.metamodel.spec;
-
-import java.util.stream.Stream;
-
-/**
- * Possibly just temporary for refactoring, as of FreeStandingList being removed.
- * 
- * @since 2.0
- */
-public interface Container {
-
-    ObjectSpecification getElementSpecification();
-
-    String titleString();
-
-    Stream<ManagedObject> stream(Object query);
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 8480b7a..b166bab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -56,15 +56,12 @@ import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutor
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorDefault;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorForCollections;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
-import org.apache.isis.core.metamodel.spec.Container;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.postprocessor.PostProcessor;
 import org.apache.isis.core.metamodel.specloader.specimpl.IntrospectionState;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
 import org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-import org.apache.isis.core.metamodel.specloader.specimpl.standalonelist.ObjectSpecificationOnContainer;
 import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorAbstract;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
 import org.apache.isis.core.metamodel.valuetypes.ValueTypeProviderDefault;
@@ -475,25 +472,17 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
         }
 
         // ... and create the specs
-        final ObjectSpecificationAbstract objectSpec;
-        if (Container.class.isAssignableFrom(cls)) {
 
-            objectSpec = new ObjectSpecificationOnContainer(facetProcessor, postProcessor);
-            objectSpec.setMetaModelContext(metaModelContext);
-
-        } else {
-            
-            val typeRegistry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
+        val typeRegistry = isisBeanTypeRegistryHolder.getIsisBeanTypeRegistry();
 
-            val managedBeanNameIfAny = typeRegistry.getManagedBeanNameForType(cls);
-            objectSpec = new ObjectSpecificationDefault(
-                            cls,
-                            metaModelContext,
-                            facetProcessor,
-                            managedBeanNameIfAny.orElse(null),
-                            postProcessor,
-                            classSubstitutorRegistry);
-        }
+        val managedBeanNameIfAny = typeRegistry.getManagedBeanNameForType(cls);
+        val objectSpec = new ObjectSpecificationDefault(
+                        cls,
+                        metaModelContext,
+                        facetProcessor,
+                        managedBeanNameIfAny.orElse(null),
+                        postProcessor,
+                        classSubstitutorRegistry);
 
         return objectSpec;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index fecdf8d..afdce5f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -88,7 +88,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
 import org.apache.isis.core.metamodel.specloader.postprocessor.PostProcessor;
-import org.apache.isis.core.metamodel.specloader.specimpl.standalonelist.ObjectSpecificationOnContainer;
 import org.apache.isis.core.security.authentication.AuthenticationSession;
 
 import static org.apache.isis.core.commons.internal.base._NullSafe.stream;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/CollectionFacetOnContainer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/CollectionFacetOnContainer.java
deleted file mode 100644
index c2f1607..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/CollectionFacetOnContainer.java
+++ /dev/null
@@ -1,66 +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.core.metamodel.specloader.specimpl.standalonelist;
-
-import java.util.function.Supplier;
-import java.util.stream.Stream;
-
-import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.collections.CollectionFacetAbstract;
-import org.apache.isis.core.metamodel.spec.Container;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public class CollectionFacetOnContainer extends CollectionFacetAbstract {
-
-    public CollectionFacetOnContainer(final FacetHolder holder) {
-        super(holder);
-    }
-
-    @Override
-    public Stream<ManagedObject> stream(ManagedObject wrappedContainer) {
-        // TODO instead create and subclass a ContainerFacet
-        return unwrap(wrappedContainer).stream(null);
-    }
-
-    @Override
-    public int size(final ManagedObject wrappedContainer) {
-        // TODO instead create and subclass a ContainerFacet
-        throw _Exceptions.unsupportedOperation(); 
-    }
-
-    @Override
-    public Object populatePojo(
-            Supplier<Object> emptyCollectionPojoFactory,
-            ObjectSpecification collectionSpec,
-            Stream<ManagedObject> elements, 
-            int elementCount) {
-
-        throw _Exceptions.unexpectedCodeReach();
-    }
-
-    // -- HELPER
-
-    private Container unwrap(final ManagedObject wrappedContainer) {
-        return (Container) wrappedContainer.getPojo();
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnContainer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnContainer.java
deleted file mode 100644
index 3d76697..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/standalonelist/ObjectSpecificationOnContainer.java
+++ /dev/null
@@ -1,185 +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.core.metamodel.specloader.specimpl.standalonelist;
-
-import org.apache.isis.core.commons.collections.Can;
-import org.apache.isis.core.commons.internal.base._Lazy;
-import org.apache.isis.core.commons.internal.ioc.BeanSort;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultToObject;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetOnStandaloneList;
-import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.Container;
-import org.apache.isis.core.metamodel.spec.ElementSpecificationProvider;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor;
-import org.apache.isis.core.metamodel.specloader.postprocessor.PostProcessor;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract;
-
-import static org.apache.isis.core.commons.internal.base._With.mapIfPresentElse;
-
-/**
- * A custom {@link ObjectSpecification} that is designed to treat the
- * {@link Container} class as a "standalone" collection.
- */
-public class ObjectSpecificationOnContainer extends ObjectSpecificationAbstract {
-
-    private static final String NAME = "Instances";
-    private static final String DESCRIBED_AS = "Typed instances";
-    private static final String ICON_NAME = "instances";
-
-    // -- constructor
-
-    public ObjectSpecificationOnContainer(
-            final FacetProcessor facetProcessor,
-            final PostProcessor postProcessor) {
-        super(Container.class, NAME, facetProcessor, postProcessor);
-        this.specId = ObjectSpecId.of(getCorrespondingClass().getName());
-
-        FacetUtil.addFacet(
-                new ObjectSpecIdFacetOnStandaloneList(specId, this));
-    }
-
-
-
-    // -- Introspection
-
-    @Override
-    protected void introspectTypeHierarchy() {
-        loadSpecOfSuperclass(Object.class);
-
-        addFacet(new CollectionFacetOnContainer(this));
-        addFacet(new TypeOfFacetDefaultToObject(this) {});
-
-        // ObjectList specific
-        FacetUtil.addFacet(new NamedFacetOnStandaloneList(NAME, this));
-        FacetUtil.addFacet(new PluralFacetOnStandaloneList(NAME, this));
-        FacetUtil.addFacet(new DescribedAsFacetOnStandaloneList(DESCRIBED_AS, this));
-        FacetUtil.addFacet(new ObjectSpecIdFacetOnStandaloneList(specId, this));
-        // don't install anything for NotPersistableFacet
-    }
-
-    @Override
-    protected void introspectMembers() {
-        // no-op.
-    }
-
-    @Override
-    public BeanSort getBeanSort() {
-        return BeanSort.COLLECTION;
-    }
-
-    // -- PREDICTATES
-
-    @Override
-    public boolean isViewModelCloneable(ManagedObject targetAdapter) {
-        return false;
-    }
-
-    @Override
-    public boolean isWizard() {
-        return false;
-    }
-
-
-
-    // -- Associations
-    /**
-     * Review: is this ever called for an instance of this class? If not, then
-     * no need to override.
-     */
-    @Override
-    public ObjectAssociation getAssociation(final String id) {
-        return null;
-    }
-
-    // -- Title and Icon
-
-    @Override
-    public String getTitle(ManagedObject contextAdapterIfAny, ManagedObject targetAdapter) {
-        return ((Container) targetAdapter.getPojo()).titleString();
-    }
-
-    @Override
-    public String getIconName(final ManagedObject object) {
-        return ICON_NAME;
-    }
-
-    // -- Object Actions
-    /**
-     * Review: is it necessary to override for this subclass?
-     */
-    @Override
-    public ObjectAction getObjectAction(
-            final ActionType type, 
-            final String id, 
-            final Can<ObjectSpecification> parameters) {
-        
-        return null;
-    }
-
-    /**
-     * Review: is it necessary to override for this subclass?
-     */
-    @Override
-    public ObjectAction getObjectAction(final ActionType type, final String id) {
-        return null;
-    }
-
-    /**
-     * Review: is it necessary to override for this subclass?
-     */
-    @Override
-    public ObjectAction getObjectAction(final String nameParmsIdentityString) {
-        return null;
-    }
-
-    // -- ELEMENT SPECIFICATION
-
-    private final _Lazy<ObjectSpecification> elementSpecification = _Lazy.of(this::lookupElementSpecification); 
-
-    @Override
-    public ObjectSpecification getElementSpecification() {
-        return elementSpecification.get();
-    }
-
-    private ObjectSpecification lookupElementSpecification() {
-        return mapIfPresentElse(
-                getFacet(TypeOfFacet.class), 
-                typeOfFacet -> ElementSpecificationProvider.of(typeOfFacet).getElementType(), 
-                null);
-    }
-
-
-
-    @Override
-    public String getManagedBeanName() {
-        return null; // not a managed-bean
-    }
-
-    // --
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueTypeProviderForCollections.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueTypeProviderForCollections.java
index 8939891..fe8b250 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueTypeProviderForCollections.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueTypeProviderForCollections.java
@@ -31,7 +31,6 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.core.metamodel.spec.Container;
 
 @Component
 @Named("isisMetaModel.ValueTypeProviderCollections")
@@ -43,8 +42,7 @@ public class ValueTypeProviderForCollections implements ValueTypeProvider {
         return Collections.unmodifiableList(Arrays.asList(
                     ValueTypeDefinition.collection(List.class),
                     ValueTypeDefinition.collection(Set.class),
-                    ValueTypeDefinition.collection(SortedSet.class),
-                    ValueTypeDefinition.collection(Container.class)
+                    ValueTypeDefinition.collection(SortedSet.class)
                 ));
     }