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 2015/09/11 00:08:27 UTC

[03/50] isis git commit: ISIS-1194: pass dependencies to AdapterManager through constructor, rather than using IsisContext. Also remove PojoAdapterFactory, inlining its functionality into AdapterManagerDefault.

ISIS-1194: pass dependencies to AdapterManager through constructor, rather than using IsisContext.  Also remove PojoAdapterFactory, inlining its functionality into AdapterManagerDefault.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/52eb2ab0
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/52eb2ab0
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/52eb2ab0

Branch: refs/heads/master
Commit: 52eb2ab04c74505bf88de460156782ec0c7166ff
Parents: 74c75e4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 10:59:16 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 11:01:37 2015 +0100

----------------------------------------------------------------------
 .../persistence/adapter/PojoAdapterFactory.java | 58 ---------------
 .../adaptermanager/AdapterManagerDefault.java   | 74 ++++++++++++++------
 .../runtime/system/context/IsisContext.java     |  2 +-
 .../system/persistence/PersistenceSession.java  | 16 +----
 .../persistence/PersistenceSessionTest.java     | 17 +++--
 5 files changed, 64 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
deleted file mode 100644
index 3e4fe7e..0000000
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adapter/PojoAdapterFactory.java
+++ /dev/null
@@ -1,58 +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.runtime.persistence.adapter;
-
-import org.apache.isis.applib.profiles.Localization;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-public class PojoAdapterFactory  {
-
-    private final AdapterManagerDefault adapterManager;
-    private final SpecificationLoaderSpi specificationLoader;
-    private final AuthenticationSession authenticationSession;
-
-    public PojoAdapterFactory(
-            final AdapterManagerDefault adapterManager,
-            final SpecificationLoaderSpi specificationLoader,
-            final AuthenticationSession authenticationSession) {
-
-        this.adapterManager = adapterManager;
-        this.specificationLoader = specificationLoader;
-        this.authenticationSession = authenticationSession;
-    }
-
-    public PojoAdapter createAdapter(
-            final Object pojo,
-            final Oid oid) {
-        return new PojoAdapter(
-                pojo, oid,
-                authenticationSession, getLocalization(),
-                specificationLoader, adapterManager);
-    }
-
-    protected Localization getLocalization() {
-        return IsisContext.getLocalization();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
index f772674..13f821f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterManagerDefault.java
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.isis.applib.profiles.Localization;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.components.Resettable;
 import org.apache.isis.core.commons.components.SessionScopedComponent;
@@ -55,7 +56,7 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.PojoRecreationException;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
+import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.OidGenerator;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -90,8 +91,14 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
     protected final PojoAdapterHashMap pojoAdapterMap = new PojoAdapterHashMap();
     protected final OidAdapterHashMap oidAdapterMap = new OidAdapterHashMap();
 
+    private final PersistenceSession persistenceSession;
+    private final SpecificationLoaderSpi specificationLoader;
     private final PojoRecreator pojoRecreator;
-
+    private final OidMarshaller oidMarshaller;
+    private final OidGenerator oidGenerator;
+    private final AuthenticationSession authenticationSession;
+    private final ServicesInjector servicesInjector;
+    private final IsisConfiguration configuration;
 
     // //////////////////////////////////////////////////////////////////
     // constructor
@@ -104,8 +111,23 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      * 
      * @see <a href="http://www.datanucleus.org/servlet/forum/viewthread_thread,7238_lastpage,yes#35976">this thread</a>
      */
-    public AdapterManagerDefault(PojoRecreator pojoRecreator) {
+    public AdapterManagerDefault(
+            final PersistenceSession persistenceSession,
+            final SpecificationLoaderSpi specificationLoader,
+            final PojoRecreator pojoRecreator,
+            final OidMarshaller oidMarshaller,
+            final OidGenerator oidGenerator,
+            final AuthenticationSession authenticationSession,
+            final ServicesInjector servicesInjector,
+            final IsisConfiguration configuration) {
+        this.persistenceSession = persistenceSession;
+        this.specificationLoader = specificationLoader;
         this.pojoRecreator = pojoRecreator;
+        this.oidMarshaller = oidMarshaller;
+        this.oidGenerator = oidGenerator;
+        this.authenticationSession = authenticationSession;
+        this.servicesInjector = servicesInjector;
+        this.configuration = configuration;
     }
 
     // //////////////////////////////////////////////////////////////////
@@ -606,9 +628,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      * referenced.
      */
     private ObjectAdapter createStandaloneAdapterAndSetResolveState(final Object pojo) {
-        final ObjectAdapter adapter = getObjectAdapterFactory().createAdapter(pojo, null
-        );
-        return adapter;
+        return createAdapter(pojo, null);
     }
 
     /**
@@ -620,7 +640,7 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
      */
     private ObjectAdapter createRootAdapter(final Object pojo, RootOid rootOid) {
         Ensure.ensureThatArg(rootOid, is(not(nullValue())));
-        final ObjectAdapter rootAdapter = getObjectAdapterFactory().createAdapter(pojo, rootOid
+        final ObjectAdapter rootAdapter = createAdapter(pojo, rootOid
         );
         return rootAdapter;
     }
@@ -628,11 +648,25 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
 
     private ObjectAdapter createCollectionAdapter(final Object pojo, ParentedCollectionOid collectionOid) {
         Ensure.ensureThatArg(collectionOid, is(not(nullValue())));
-        final ObjectAdapter collectionAdapter = getObjectAdapterFactory().createAdapter(pojo, collectionOid
+        final ObjectAdapter collectionAdapter = createAdapter(pojo, collectionOid
         );
         return collectionAdapter;
     }
 
+    private PojoAdapter createAdapter(
+            final Object pojo,
+            final Oid oid) {
+        return new PojoAdapter(
+                pojo, oid,
+                authenticationSession, getLocalization(),
+                specificationLoader, this);
+    }
+
+    protected Localization getLocalization() {
+        return IsisContext.getLocalization();
+    }
+
+
 
     // //////////////////////////////////////////////////////////////////////////
     // Helpers: map & unmap
@@ -771,43 +805,37 @@ public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAda
         }
     }
 
-    
-    // /////////////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // /////////////////////////////////////////////////////////////////
 
+    //region > Dependencies (from constructor)
     protected OidMarshaller getOidMarshaller() {
-		return IsisContext.getOidMarshaller();
+		return oidMarshaller;
 	}
 
     public OidGenerator getOidGenerator() {
-        return IsisContext.getPersistenceSession().getOidGenerator();
+        return oidGenerator;
     }
 
     protected SpecificationLoaderSpi getSpecificationLoader() {
-        return IsisContext.getSpecificationLoader();
-    }
-
-    protected PojoAdapterFactory getObjectAdapterFactory() {
-        return getPersistenceSession().getObjectAdapterFactory();
+        return specificationLoader;
     }
 
     protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
+        return persistenceSession;
     }
 
     protected ServicesInjector getServicesInjector() {
-        return IsisContext.getPersistenceSession().getServicesInjector();
+        return servicesInjector;
     }
 
     protected AuthenticationSession getAuthenticationSession() {
-        return IsisContext.getAuthenticationSession();
+        return authenticationSession;
     }
     
     protected IsisConfiguration getConfiguration() {
-        return IsisContext.getConfiguration();
+        return configuration;
     }
 
+    //endregion
 
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
index 287c282..7414c0d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/context/IsisContext.java
@@ -500,6 +500,7 @@ public abstract class IsisContext implements DebuggableWithTitle {
         return debugList.debug();
     }
 
+    // TODO: looks to be unused..
     public static DebuggableWithTitle[] debugSession() {
         final DebugList debugList = new DebugList("Apache Isis Session");
         debugList.add("Apache Isis session", getSession());
@@ -509,7 +510,6 @@ public abstract class IsisContext implements DebuggableWithTitle {
         debugList.add("Transaction Manager", getTransactionManager());
 
         debugList.add("Service injector", getPersistenceSession().getServicesInjector());
-        debugList.add("Adapter factory", getPersistenceSession().getObjectAdapterFactory());
         debugList.add("Object factory", getPersistenceSession().getObjectFactory());
         debugList.add("OID generator", getPersistenceSession().getOidGenerator());
         debugList.add("Adapter manager", getPersistenceSession().getAdapterManager());

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index e3bc7f4..4cbd135 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -63,7 +63,6 @@ import org.apache.isis.core.runtime.persistence.NotPersistableException;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
 import org.apache.isis.core.runtime.persistence.PojoRefreshException;
 import org.apache.isis.core.runtime.persistence.UnsupportedFindException;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
 import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
 import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreator;
 import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm;
@@ -116,7 +115,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     private final ObjectFactory objectFactory;
 
     private final PersistenceSessionFactory persistenceSessionFactory;
-    private final PojoAdapterFactory objectAdapterFactory;
     private final OidGenerator oidGenerator;
     private final AdapterManagerDefault adapterManager;
 
@@ -178,9 +176,9 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         this.oidGenerator = new OidGenerator(this, specificationLoader);
 
         final PojoRecreator pojoRecreator = new PojoRecreator(this, specificationLoader);
-        this.adapterManager = new AdapterManagerDefault(pojoRecreator);
+        this.adapterManager = new AdapterManagerDefault(this, specificationLoader, pojoRecreator, oidMarshaller,
+                oidGenerator, authenticationSession, servicesInjector, configuration);
         this.persistAlgorithm = new PersistAlgorithm();
-        this.objectAdapterFactory = new PojoAdapterFactory(adapterManager, specificationLoader, authenticationSession);
 
         this.persistenceQueryFactory = new PersistenceQueryFactory(getSpecificationLoader(), adapterManager);
         this.transactionManager = new IsisTransactionManager(this, servicesInjector);
@@ -1020,16 +1018,6 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
     }
 
     /**
-     * The configured {@link PojoAdapterFactory}.
-     * 
-     * <p>
-     * Injected in constructor.
-     */
-    public final PojoAdapterFactory getObjectAdapterFactory() {
-        return objectAdapterFactory;
-    }
-
-    /**
      * The configured {@link OidGenerator}.
      * 
      * <p>

http://git-wip-us.apache.org/repos/asf/isis/blob/52eb2ab0/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
index 1419013..daf9997 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/system/persistence/PersistenceSessionTest.java
@@ -34,6 +34,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.app.IsisMetaModel;
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
@@ -42,7 +43,6 @@ import org.apache.isis.core.metamodel.services.container.DomainObjectContainerDe
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
 import org.apache.isis.core.metamodel.specloader.InjectorMethodEvaluatorDefault;
 import org.apache.isis.core.runtime.persistence.adapter.PojoAdapter;
-import org.apache.isis.core.runtime.persistence.adapter.PojoAdapterFactory;
 import org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault;
 import org.apache.isis.core.runtime.persistence.adaptermanager.PojoRecreator;
 import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession;
@@ -63,8 +63,7 @@ public class PersistenceSessionTest {
 
     private ServicesInjectorDefault servicesInjector;
     private AdapterManagerDefault adapterManager;
-    private PojoAdapterFactory adapterFactory;
-    
+
     
     private PersistenceSession persistenceSession;
     private IsisTransactionManager transactionManager;
@@ -102,7 +101,10 @@ public class PersistenceSessionTest {
     @Mock
     private MessageBroker mockMessageBroker;
     
-    
+    @Mock
+    private OidGenerator mockOidGenerator;
+
+
     private IsisMetaModel isisMetaModel;
 
 
@@ -146,8 +148,6 @@ public class PersistenceSessionTest {
         servicesInjector = new ServicesInjectorDefault(
                 Collections.<Object>singletonList(container),new InjectorMethodEvaluatorDefault());
 
-        adapterManager = new AdapterManagerDefault(new PojoRecreator(persistenceSession, mockSpecificationLoader));
-        adapterFactory = new PojoAdapterFactory(adapterManager, mockSpecificationLoader, mockAuthenticationSession);
         persistenceSession = new PersistenceSession(mockPersistenceSessionFactory, mockConfiguration,
                 mockSpecificationLoader, mockAuthenticationSession) {
             @Override
@@ -156,7 +156,10 @@ public class PersistenceSessionTest {
             }
             
         };
-        
+        adapterManager = new AdapterManagerDefault(persistenceSession, mockSpecificationLoader, new PojoRecreator(persistenceSession, mockSpecificationLoader),
+                new OidMarshaller(), mockOidGenerator, mockAuthenticationSession, servicesInjector,
+                mockConfiguration);
+
         context.checking(new Expectations(){{
             allowing(mockAuthenticationSession).getUserName();
             will(returnValue("sven"));