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"));