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/11/04 14:58:08 UTC

[isis] branch v2 updated: ISIS-2158: remove ObjectAdapterService - obsolete layer of abstraction

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/v2 by this push:
     new 05c7804  ISIS-2158: remove ObjectAdapterService - obsolete layer of abstraction
05c7804 is described below

commit 05c7804143df095ad88acabb1fe1a7f088d54a16
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Nov 4 15:57:56 2019 +0100

    ISIS-2158: remove ObjectAdapterService - obsolete layer of abstraction
---
 .../persistsession/ObjectAdapterService.java       |  31 ----
 .../parseable/ParseableFacetUsingParserTest.java   |   4 +-
 .../ValueSemanticsProviderAbstractTestCase.java    |   5 +-
 .../SpecificationLoaderTestAbstract.java           |   6 -
 .../specimpl/ObjectAssociationAbstractTest.java    |  14 +-
 ...ObjectAssociationAbstractTest_alwaysHidden.java |  16 +-
 .../persist/ObjectAdapterServiceDefault.java       | 161 ---------------------
 .../viewer/services/DeepLinkServiceWicket.java     |   8 +-
 8 files changed, 13 insertions(+), 232 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/persistsession/ObjectAdapterService.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/persistsession/ObjectAdapterService.java
deleted file mode 100644
index 5dd9101..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/persistsession/ObjectAdapterService.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.metamodel.services.persistsession;
-
-import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-
-/**
- * Layer of abstraction to PersistenceSession
- * @since 2.0
- *
- */
-public interface ObjectAdapterService extends ObjectAdapterProvider {
-
-
-}
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
index 7456d6a..10afb11c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/object/parseable/ParseableFacetUsingParserTest.java
@@ -36,7 +36,6 @@ import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
 import org.apache.isis.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
 import org.apache.isis.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.metamodel.services.persistsession.ObjectAdapterService;
 import org.apache.isis.security.authentication.AuthenticationSessionProvider;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
@@ -50,7 +49,6 @@ public class ParseableFacetUsingParserTest {
     @Mock private AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock private ServiceInjector mockServicesInjector;
     @Mock private ServiceRegistry mockServiceRegistry;
-    @Mock private ObjectAdapterService mockAdapterManager;
 
     protected MetaModelContext metaModelContext;
     private ParseableFacetUsingParser parseableFacetUsingParser;
@@ -67,7 +65,7 @@ public class ParseableFacetUsingParserTest {
         context.checking(new Expectations() {
             {
                 never(mockAuthenticationSessionProvider);
-                never(mockAdapterManager);
+                //never(mockAdapterManager);
 
                 allowing(mockFacetHolder).getMetaModelContext();
                 will(returnValue(metaModelContext));
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index b7c14ab..2ae8a78 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -38,7 +38,6 @@ import org.apache.isis.metamodel.facets.object.encodeable.encoder.EncodableFacet
 import org.apache.isis.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
 import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
-import org.apache.isis.metamodel.services.persistsession.ObjectAdapterService;
 import org.apache.isis.security.authentication.AuthenticationSessionProvider;
 import org.apache.isis.unittestsupport.config.internal._Config;
 import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -57,8 +56,6 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
     @Mock protected FacetHolder mockFacetHolder;
-    @Mock protected ObjectAdapterService mockSessionServiceInternal;
-    //@Mock protected SpecificationLoader mockSpecificationLoader;
     @Mock protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
     @Mock protected ObjectAdapter mockAdapter;
     
@@ -82,7 +79,7 @@ public abstract class ValueSemanticsProviderAbstractTestCase {
             {
 
                 never(mockAuthenticationSessionProvider);
-                never(mockSessionServiceInternal);
+                //never(mockSessionServiceInternal);
                 
                 allowing(mockFacetHolder).getMetaModelContext();
                 will(returnValue(metaModelContext));
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
index f41830b..d865d58 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/SpecificationLoaderTestAbstract.java
@@ -45,7 +45,6 @@ import org.apache.isis.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.metamodel.progmodel.ProgrammingModelAbstract;
 import org.apache.isis.metamodel.progmodel.ProgrammingModelInitFilterDefault;
 import org.apache.isis.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
-import org.apache.isis.metamodel.services.persistsession.ObjectAdapterService;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.security.authentication.AuthenticationSessionProvider;
 
@@ -79,10 +78,6 @@ abstract class SpecificationLoaderTestAbstract {
             return Mockito.mock(GridService.class);
         }
 
-        ObjectAdapterService mockPersistenceSessionServiceInternal() {
-            return Mockito.mock(ObjectAdapterService.class);
-        }
-
         MessageService mockMessageService() {
             return Mockito.mock(MessageService.class);
         }
@@ -112,7 +107,6 @@ abstract class SpecificationLoaderTestAbstract {
     protected SpecificationLoader specificationLoader;
     protected AuthenticationSessionProvider mockAuthenticationSessionProvider;
     protected GridService mockGridService;
-    protected ObjectAdapterService mockPersistenceSessionServiceInternal;
     protected MessageService mockMessageService;
     protected MetaModelContext metaModelContext;
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
index 32f0e50..2ee42d6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest.java
@@ -36,7 +36,6 @@ import org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 import org.apache.isis.metamodel.facets.properties.choices.PropertyChoicesFacet;
 import org.apache.isis.metamodel.interactions.UsabilityContext;
 import org.apache.isis.metamodel.interactions.VisibilityContext;
-import org.apache.isis.metamodel.services.persistsession.ObjectAdapterService;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
@@ -51,21 +50,14 @@ public class ObjectAssociationAbstractTest {
     @Rule
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
+    @Mock private ObjectSpecification objectSpecification;
+    @Mock private ServiceInjector mockServicesInjector;
+    @Mock private SpecificationLoader mockSpecificationLoader;
 
     private ObjectAssociationAbstract objectAssociation;
     private FacetedMethod facetedMethod;
 
 
-    @Mock
-    private ObjectSpecification objectSpecification;
-    @Mock
-    private ServiceInjector mockServicesInjector;
-    @Mock
-    private SpecificationLoader mockSpecificationLoader;
-    @Mock
-    private ObjectAdapterService mockPersistenceSessionServiceInternal;
-
-
     public static class Customer {
         private String firstName;
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index 160a1b7..8d3d6b3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -37,7 +37,6 @@ import org.apache.isis.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract;
 import org.apache.isis.metamodel.interactions.UsabilityContext;
 import org.apache.isis.metamodel.interactions.VisibilityContext;
-import org.apache.isis.metamodel.services.persistsession.ObjectAdapterService;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
@@ -57,17 +56,10 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
     private ObjectAssociationAbstract objectAssociation;
     private FacetedMethod facetedMethod;
 
-    @Mock
-    private ObjectSpecification mockObjectSpecification;
-    @Mock
-    private ObjectSpecification mockOnType;
-
-    @Mock
-    private ServiceInjector mockServicesInjector;
-    @Mock
-    private SpecificationLoader mockSpecificationLoader;
-    @Mock
-    private ObjectAdapterService mockPersistenceSessionServiceInternal;
+    @Mock private ObjectSpecification mockObjectSpecification;
+    @Mock private ObjectSpecification mockOnType;
+    @Mock private ServiceInjector mockServicesInjector;
+    @Mock private SpecificationLoader mockSpecificationLoader;
 
     public static class Customer {
         public String getFirstName() {
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/persist/ObjectAdapterServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/persist/ObjectAdapterServiceDefault.java
deleted file mode 100644
index cfbf2d0..0000000
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/persist/ObjectAdapterServiceDefault.java
+++ /dev/null
@@ -1,161 +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.runtime.services.persist;
-
-import java.io.Serializable;
-import java.util.stream.Stream;
-
-import javax.inject.Inject;
-
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.NonRecoverableException;
-import org.apache.isis.applib.services.inject.ServiceInjector;
-import org.apache.isis.commons.internal.debug._Probe;
-import org.apache.isis.commons.internal.ioc.ManagedBeanAdapter;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.oid.Oid;
-import org.apache.isis.metamodel.adapter.oid.RootOid;
-import org.apache.isis.metamodel.services.persistsession.ObjectAdapterService;
-import org.apache.isis.metamodel.spec.ManagedObject;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
-import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.runtime.persistence.adapter.PojoAdapter;
-import org.apache.isis.runtime.system.context.IsisContext;
-import org.apache.isis.runtime.system.persistence.PersistenceSession;
-
-import static org.apache.isis.commons.internal.base._With.requires;
-
-import lombok.val;
-
-@Service @Primary
-public class ObjectAdapterServiceDefault implements ObjectAdapterService {
-
-
-    @Override
-    public ObjectAdapter adapterFor(Object pojo) {
-
-        if(pojo == null) {
-            return null;
-        }
-
-        val spec = specificationLoader.loadSpecification(pojo.getClass());
-        switch (spec.getBeanSort()) {
-        case VALUE:
-            return PojoAdapter.ofValue((Serializable) pojo);
-
-        case VIEW_MODEL:
-        case MANAGED_BEAN:
-        case ENTITY:
-        case MIXIN:
-            return ps().adapterFor(pojo);
-
-        case COLLECTION:
-            return PojoAdapter.ofTransient(pojo, spec.getSpecId());
-
-        case UNKNOWN:
-            break;
-
-        }
-
-        _Probe.errOut("UNKNOWN ManagedObject type: '%s'", pojo.getClass());
-
-        return null;
-        //throw _Exceptions.unmatchedCase("UNKNOWN ManagedObject type: " + pojo.getClass());
-    }
-
-    @Override
-    public ObjectAdapter adapterForBean(ManagedBeanAdapter bean) {
-        return ps().adapterForBean(bean);
-    }
-
-    @Override
-    public ObjectAdapter adapterForCollection(
-            Object collectionPojo, 
-            RootOid parentOid, 
-            OneToManyAssociation oneToMany) {
-
-        requires(parentOid, "parentOid");
-        requires(collectionPojo, "collectionPojo");
-
-        val collectionOid = Oid.Factory.parentedOfOneToMany(parentOid, oneToMany);
-
-        // the List, Set etc. instance gets wrapped in its own adapter
-        val newAdapter = PojoAdapter.of(collectionPojo, collectionOid); 
-        return newAdapter;
-    }
-
-    @Override
-    public ObjectAdapter adapterForViewModel(Object viewModelPojo, String mementoStr) {
-
-        val objectSpecification = specificationLoader.loadSpecification(viewModelPojo.getClass());
-        val objectSpecId = objectSpecification.getSpecId();
-        val newRootOid = Oid.Factory.viewmodelOf(objectSpecId, mementoStr);
-        val newAdapter = PojoAdapter.of(viewModelPojo, newRootOid); 
-        return newAdapter; 
-    }
-
-    @Override
-    public ObjectAdapter newTransientInstance(ObjectSpecification spec) {
-        val pojo = spec.instantiatePojo();
-        val newAdapter = PojoAdapter.ofTransient(pojo, spec.getSpecId());
-        newAdapter.injectServices(serviceInjector);
-        return newAdapter;
-    }
-
-    // -- HELPER
-
-    protected PersistenceSession ps() {
-        return IsisContext.getPersistenceSession()
-                .orElseThrow(()->new NonRecoverableException("No PersistenceSession on current thread."));
-    }
-
-    @Inject SpecificationLoader specificationLoader;
-    @Inject ServiceInjector serviceInjector;
-
-    @Override
-    public ManagedObject disposableAdapterForViewModel(Object viewModelPojo) {
-        return ps().disposableAdapterForViewModel(viewModelPojo);
-    }
-
-    @Override
-    public ObjectSpecification specificationForViewModel(Object viewModelPojo) {
-        return ps().specificationForViewModel(viewModelPojo);
-    }
-
-    //    @Override
-    //    public ObjectAdapter recreateViewModelInstance(ObjectSpecification objectSpec, String memento) {
-    //        return ps().recreateViewModelInstance(objectSpec, memento);
-    //    }
-
-    @Override
-    public Stream<ObjectAdapter> streamServices() {
-        return ps().streamServices();
-    }
-
-    @Override
-    public ObjectAdapter lookupService(String serviceId) {
-        return ps().lookupService(serviceId);
-
-    }
-
-
-}
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
index d280f2d..c46f571 100644
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
+++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/DeepLinkServiceWicket.java
@@ -30,8 +30,8 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.services.linking.DeepLinkService;
-import org.apache.isis.metamodel.services.persistsession.ObjectAdapterService;
 import org.apache.isis.metamodel.spec.ManagedObject;
+import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
@@ -44,15 +44,15 @@ import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 public class DeepLinkServiceWicket implements DeepLinkService {
 
     @Inject private PageClassRegistry pageClassRegistry;
-    @Inject private ObjectAdapterService objectAdapterProvider;
+    @Inject private SpecificationLoader specificationLoader;
 
     @Override
     public URI deepLinkFor(final Object domainObject) {
 
-        final ManagedObject objectAdapter = objectAdapterProvider.adapterFor(domainObject);
+        final ManagedObject objectAdapter = ManagedObject.of(specificationLoader::loadSpecification, domainObject); 
+                
         final PageParameters pageParameters = EntityModel.createPageParameters(objectAdapter);
 
-        //PageClassRegistry pageClassRegistry = guiceBeanProvider.lookup(PageClassRegistry.class);
         final Class<? extends Page> pageClass = pageClassRegistry.getPageClass(PageType.ENTITY);
 
         final RequestCycle requestCycle = RequestCycle.get();