ISIS-939: more simplified of persistence sessions and object stores. - deleted ObjectStoreSpi, just use ObjectStore (impl) directly; - deleted AdapterManagerAbstract, not used - deleted AdapterMapDelegator, not used - for in-memory objectstore, renamed ObjectStorePersistedObjectsDefault (impl) to ObjectStorePersistedObjects (unextracted interface) - renamed PersistenceSessionFactoryDelegate to ObjectStoreFactory - renamed PersistenceSessionFactoryDelegating to PersistenceSessionFactory (unextracted interface) - removed AdapterManagerSpi interface, just use AdapterManagerDefault directly instead. - deleted AdpaterUtils, not used
Project: http://git-wip-us.apache.org/repos/asf/isis/repo Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/fab4f479 Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/fab4f479 Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/fab4f479 Branch: refs/heads/master Commit: fab4f4797ee276f32896bc711bb1ca70a033501f Parents: 46dc3a4 Author: Dan Haywood <[email protected]> Authored: Mon Nov 3 19:27:18 2014 +0000 Committer: Dan Haywood <[email protected]> Committed: Thu Nov 6 16:18:55 2014 +0000 ---------------------------------------------------------------------- .../integtestsupport/IsisSystemDefault.java | 2 +- .../integtestsupport/IsisSystemForTest.java | 4 +- .../adapter/mgr/AdapterManagerAbstract.java | 31 --- .../adapter/mgr/AdapterMapDelegator.java | 50 ---- .../noruntime/RuntimeContextNoRuntime.java | 12 +- .../core/objectstore/InMemoryObjectStore.java | 22 +- .../InMemoryPersistenceMechanismInstaller.java | 6 +- .../InMemoryPersistenceSessionFactory.java | 13 +- .../AbstractInMemoryPersistenceCommand.java | 1 - .../commands/InMemoryCreateObjectCommand.java | 1 - .../commands/InMemoryDestroyObjectCommand.java | 1 - .../commands/InMemorySaveObjectCommand.java | 1 - .../internal/ObjectStoreInstances.java | 7 +- .../internal/ObjectStorePersistedObjects.java | 62 ++++- .../ObjectStorePersistedObjectsDefault.java | 102 -------- .../PersistenceMechanismInstaller.java | 6 +- .../PersistenceMechanismInstallerAbstract.java | 5 +- .../persistence/FixturesInstalledFlag.java | 3 +- .../runtime/persistence/ObjectStoreFactory.java | 35 +++ .../persistence/PersistenceConstants.java | 2 - .../PersistenceSessionFactoryDelegate.java | 36 --- .../PersistenceSessionFactoryDelegating.java | 237 ------------------- .../adaptermanager/AdapterManagerDefault.java | 62 +++-- .../adaptermanager/AdapterUtils.java | 58 ----- .../persistence/objectstore/ObjectStoreSpi.java | 27 --- .../transaction/TransactionalResource.java | 18 +- .../system/IsisSystemFixturesHookAbstract.java | 2 +- .../core/runtime/system/SystemConstants.java | 3 +- .../system/persistence/AdapterManagerSpi.java | 51 ---- .../runtime/system/persistence/ObjectStore.java | 7 +- .../system/persistence/PersistenceSession.java | 13 +- .../persistence/PersistenceSessionFactory.java | 199 ++++++++++++++-- .../runtime/system/persistence/Persistor.java | 2 +- .../system/session/IsisSessionFactory.java | 6 +- .../session/IsisSessionFactoryDefault.java | 3 +- .../IsisSystemAbstract.java | 4 +- .../IsisSystemUsingInstallers.java | 2 +- .../jdo/datanucleus/DataNucleusObjectStore.java | 8 +- ...ataNucleusPersistenceMechanismInstaller.java | 4 +- ...bjectStoreInstances_findInstancesAndAdd.java | 16 +- ...tStorePersistedObjectsDefault_instances.java | 5 +- ...jectsDefault_savesOidGeneratorAsMemento.java | 4 +- ...ctStorePersistedObjectsDefault_services.java | 4 +- .../core/runtime/context/IsisContextTest.java | 10 +- .../persistence/PersistenceSessionTest.java | 5 +- ...onFactoryAbstractTest_init_and_shutdown.java | 2 +- .../system/transaction/IsisTransactionTest.java | 18 +- .../IsisSystemWithFixtures.java | 4 +- .../tck/ObjectStoreContractTest_persist.java | 6 +- .../InMemoryObjectStoreTest_openAndClose.java | 7 +- 50 files changed, 407 insertions(+), 782 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java ---------------------------------------------------------------------- diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java index 8f8a05c..65d0ac9 100644 --- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java +++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemDefault.java @@ -42,10 +42,10 @@ import org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerS import org.apache.isis.core.runtime.fixtures.FixturesInstaller; import org.apache.isis.core.runtime.fixtures.FixturesInstallerFromConfiguration; import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller; +import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; import org.apache.isis.core.runtime.services.ServicesInstallerFromConfiguration; import org.apache.isis.core.runtime.system.DeploymentType; import org.apache.isis.core.runtime.system.IsisSystemException; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; import org.apache.isis.core.runtime.systemusinginstallers.IsisSystemAbstract; import org.apache.isis.core.runtime.transaction.facetdecorator.standard.StandardTransactionFacetDecorator; import org.apache.isis.core.security.authentication.AuthenticatorBypass; http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java ---------------------------------------------------------------------- diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java index b4976ff..66ac70c 100644 --- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java +++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IsisSystemForTest.java @@ -47,10 +47,10 @@ import org.apache.isis.core.runtime.authentication.AuthenticationRequest; import org.apache.isis.core.runtime.fixtures.FixturesInstallerDelegate; import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller; import org.apache.isis.core.runtime.logging.IsisLoggingConfigurer; -import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi; import org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation; import org.apache.isis.core.runtime.system.DeploymentType; import org.apache.isis.core.runtime.system.context.IsisContext; +import org.apache.isis.core.runtime.system.persistence.ObjectStore; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; import org.apache.isis.core.runtime.system.persistence.Persistor; import org.apache.isis.core.runtime.system.transaction.IsisTransaction; @@ -565,7 +565,7 @@ public class IsisSystemForTest implements org.junit.rules.TestRule, DomainServic } @SuppressWarnings("unchecked") - public <T extends ObjectStoreSpi> T getObjectStore(Class<T> cls) { + public <T extends ObjectStore> T getObjectStore(Class<T> cls) { final PersistenceSession persistenceSession = getPersistenceSession(); return (T) persistenceSession.getObjectStore(); } http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.java deleted file mode 100644 index a3ee9ad..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterManagerAbstract.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.core.metamodel.adapter.mgr; - -import org.apache.isis.core.commons.components.Injectable; - -public abstract class AdapterManagerAbstract implements AdapterManager, Injectable { - - @Override - public void injectInto(final Object candidate) { - if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) { - final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate); - cast.setAdapterManager(this); - } - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java deleted file mode 100644 index 51ab391..0000000 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/mgr/AdapterMapDelegator.java +++ /dev/null @@ -1,50 +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.adapter.mgr; - -import org.apache.isis.core.metamodel.adapter.ObjectAdapter; -import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation; - -/** - * Just delegates to an underlying {@link AdapterManager}. - * - * <p> - * Provided to allow subclasses to override specific methods if required. - */ -public abstract class AdapterMapDelegator extends AdapterManagerAbstract { - - private final AdapterManager underlying; - - public AdapterMapDelegator(final AdapterManager underlying) { - this.underlying = underlying; - } - - @Override - public ObjectAdapter getAdapterFor(final Object pojo) { - return underlying.getAdapterFor(pojo); - } - - @Override - public ObjectAdapter adapterFor(final Object domainObject) { - return underlying.adapterFor(domainObject); - } - - @Override - public ObjectAdapter adapterFor(final Object pojo, final ObjectAdapter ownerAdapter, final OneToManyAssociation collection) { - return underlying.adapterFor(pojo, ownerAdapter, collection); - } -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java ---------------------------------------------------------------------- diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java index 33c0419..8e19839 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/runtimecontext/noruntime/RuntimeContextNoRuntime.java @@ -29,7 +29,7 @@ import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAbstract; import org.apache.isis.core.metamodel.adapter.*; import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager; -import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAbstract; +import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware; import org.apache.isis.core.metamodel.adapter.oid.Oid; import org.apache.isis.core.metamodel.adapter.oid.TypedOid; import org.apache.isis.core.metamodel.deployment.DeploymentCategory; @@ -96,7 +96,15 @@ public class RuntimeContextNoRuntime extends RuntimeContextAbstract { throw new UnsupportedOperationException("Not supported by this implementation of RuntimeContext"); } }; - adapterManager = new AdapterManagerAbstract() { + adapterManager = new AdapterManager() { + + @Override + public void injectInto(final Object candidate) { + if (AdapterManagerAware.class.isAssignableFrom(candidate.getClass())) { + final AdapterManagerAware cast = AdapterManagerAware.class.cast(candidate); + cast.setAdapterManager(this); + } + } @Override public ObjectAdapter getAdapterFor(final Object pojo) { http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java index 5ae36cf..58a426c 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryObjectStore.java @@ -23,14 +23,9 @@ import java.text.MessageFormat; import java.util.Iterator; import java.util.List; import java.util.Vector; - import com.google.common.collect.Lists; - -import org.apache.isis.core.runtime.persistence.ObjectNotFoundException; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.isis.core.commons.debug.DebugBuilder; import org.apache.isis.core.commons.debug.DebugUtils; import org.apache.isis.core.commons.exceptions.IsisException; @@ -52,21 +47,21 @@ import org.apache.isis.core.objectstore.commands.InMemoryDestroyObjectCommand; import org.apache.isis.core.objectstore.commands.InMemorySaveObjectCommand; import org.apache.isis.core.objectstore.internal.ObjectStoreInstances; import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects; -import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjectsDefault; +import org.apache.isis.core.runtime.persistence.ObjectNotFoundException; import org.apache.isis.core.runtime.persistence.ObjectPersistenceException; import org.apache.isis.core.runtime.persistence.UnsupportedFindException; -import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi; import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand; import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand; import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand; import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand; import org.apache.isis.core.runtime.persistence.query.PersistenceQueryBuiltIn; import org.apache.isis.core.runtime.system.context.IsisContext; +import org.apache.isis.core.runtime.system.persistence.ObjectStore; import org.apache.isis.core.runtime.system.persistence.PersistenceQuery; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; -public class InMemoryObjectStore implements ObjectStoreSpi { +public class InMemoryObjectStore implements ObjectStore { private final static Logger LOG = LoggerFactory.getLogger(InMemoryObjectStore.class); @@ -99,7 +94,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi { if (inMemoryPersistenceSessionFactory != null) { persistedObjects = inMemoryPersistenceSessionFactory.createPersistedObjects(); } else { - persistedObjects = new ObjectStorePersistedObjectsDefault(); + persistedObjects = new ObjectStorePersistedObjects(); } } else { recreateAdapters(); @@ -465,8 +460,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi { /** * Must use {@link IsisContext context}, because although this object is * recreated with each {@link PersistenceSession session}, the persisted - * objects that get - * {@link #attachPersistedObjects(ObjectStorePersistedObjects) attached} to + * objects that get attached to * it span multiple sessions. * * <p> @@ -481,9 +475,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi { /** * Must use {@link IsisContext context}, because although this object is * recreated with each {@link PersistenceSession session}, the persisted - * objects that get - * {@link #attachPersistedObjects(ObjectStorePersistedObjects) attached} to - * it span multiple sessions. + * objects that get attached to it span multiple sessions. * * <p> * The alternative design would be to laboriously inject the session into @@ -500,7 +492,7 @@ public class InMemoryObjectStore implements ObjectStoreSpi { /** - * Downcasts the {@link PersistenceSessionFactory} to + * Downcasts the {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory} to * {@link InMemoryPersistenceSessionFactory}. */ protected InMemoryPersistenceSessionFactory getInMemoryPersistenceSessionFactory() { http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java index 293d557..cc48c06 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceMechanismInstaller.java @@ -21,8 +21,8 @@ package org.apache.isis.core.objectstore; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstallerAbstract; -import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi; import org.apache.isis.core.runtime.system.DeploymentType; +import org.apache.isis.core.runtime.system.persistence.ObjectStore; import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; /** @@ -50,10 +50,10 @@ public class InMemoryPersistenceMechanismInstaller extends PersistenceMechanismI // /////////////////////////////////////////////////////////////// /** - * Hook method to return {@link ObjectStoreSpi}. + * Hook method to return {@link ObjectStore}. */ @Override - public ObjectStoreSpi createObjectStore( + public ObjectStore createObjectStore( final IsisConfiguration configuration) { return new InMemoryObjectStore(); } http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java index 3dc4ed1..455ca6a 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/InMemoryPersistenceSessionFactory.java @@ -22,21 +22,20 @@ package org.apache.isis.core.objectstore; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.objectstore.internal.ObjectStoreInstances; import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects; -import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjectsDefault; -import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate; -import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegating; +import org.apache.isis.core.runtime.persistence.ObjectStoreFactory; +import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; import org.apache.isis.core.runtime.system.DeploymentType; import org.apache.isis.core.runtime.system.persistence.IdentifierGenerator; import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefault; import org.apache.isis.core.runtime.system.persistence.OidGenerator; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; -public class InMemoryPersistenceSessionFactory extends PersistenceSessionFactoryDelegating { +public class InMemoryPersistenceSessionFactory extends PersistenceSessionFactory { private ObjectStorePersistedObjects persistedObjects; - public InMemoryPersistenceSessionFactory(final DeploymentType deploymentType, final IsisConfiguration configuration, final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate) { - super(deploymentType, configuration, persistenceSessionFactoryDelegate); + public InMemoryPersistenceSessionFactory(final DeploymentType deploymentType, final IsisConfiguration configuration, final ObjectStoreFactory objectStoreFactory) { + super(deploymentType, configuration, objectStoreFactory); } ObjectStorePersistedObjects getPersistedObjects() { @@ -63,7 +62,7 @@ public class InMemoryPersistenceSessionFactory extends PersistenceSessionFactory * {@link InMemoryObjectStore#open() open}ed. */ public ObjectStorePersistedObjects createPersistedObjects() { - return new ObjectStorePersistedObjectsDefault(); + return new ObjectStorePersistedObjects(); } /** http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java index 6937cf6..9c5602c 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/AbstractInMemoryPersistenceCommand.java @@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.spec.ObjectSpecId; import org.apache.isis.core.metamodel.spec.ObjectSpecification; http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java index efab9de..af2d363 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryCreateObjectCommand.java @@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects; import org.apache.isis.core.runtime.persistence.ObjectPersistenceException; http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java index 18d6b0c..16093ab 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemoryDestroyObjectCommand.java @@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects; import org.apache.isis.core.runtime.persistence.ObjectPersistenceException; http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java index 789b86f..4b48f61 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/commands/InMemorySaveObjectCommand.java @@ -21,7 +21,6 @@ package org.apache.isis.core.objectstore.commands; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects; import org.apache.isis.core.runtime.persistence.ObjectPersistenceException; http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java index 3a6ea23..028dffb 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStoreInstances.java @@ -40,7 +40,6 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification; import org.apache.isis.core.objectstore.InMemoryObjectStore; import org.apache.isis.core.runtime.persistence.query.PersistenceQueryBuiltIn; import org.apache.isis.core.runtime.system.context.IsisContext; -import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; /* @@ -125,10 +124,8 @@ public class ObjectStoreInstances { /** * If the pojo exists in the object store, then looks up the - * {@link ObjectAdapter adapter} from the {@link AdapterManagerSpi}, and only - * if none found does it - * {@link PersistenceSessionHydrator#mapRecreatedPojo(Object, Object) recreate} - * a new {@link ObjectAdapter adapter}. + * {@link ObjectAdapter adapter} from the {@link org.apache.isis.core.runtime.persistence.adaptermanager.AdapterManagerDefault}, and only + * if none found does it recreates a new {@link ObjectAdapter adapter}. */ public ObjectAdapter getObjectAndMapIfRequired(final Oid oid) { final Object pojo = getObjectInstances().get(oid); http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java index 85dffcb..4e3cf35 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java +++ b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjects.java @@ -19,6 +19,12 @@ package org.apache.isis.core.objectstore.internal; +import java.util.Map; +import java.util.Set; + +import com.google.common.collect.Maps; + +import org.apache.isis.core.commons.exceptions.IsisException; import org.apache.isis.core.metamodel.adapter.oid.Oid; import org.apache.isis.core.metamodel.spec.ObjectSpecId; import org.apache.isis.core.metamodel.spec.ObjectSpecification; @@ -29,22 +35,60 @@ import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefaul * * Attached and detached to each session. */ -public interface ObjectStorePersistedObjects { +public class ObjectStorePersistedObjects { + + private final Map<ObjectSpecId, ObjectStoreInstances> instancesBySpecMap = Maps.newHashMap(); + private final Map<ObjectSpecId, Oid> serviceOidByIdMap = Maps.newHashMap(); + + private IdentifierGeneratorDefault.Memento oidGeneratorMemento; + - public IdentifierGeneratorDefault.Memento getOidGeneratorMemento(); + public IdentifierGeneratorDefault.Memento getOidGeneratorMemento() { + return oidGeneratorMemento; + } - public void saveOidGeneratorMemento(IdentifierGeneratorDefault.Memento memento); + public void saveOidGeneratorMemento(final IdentifierGeneratorDefault.Memento memento) { + this.oidGeneratorMemento = memento; + } - public void registerService(ObjectSpecId objectSpecId, Oid oid); + public Oid getService(final ObjectSpecId objectSpecId) { + return serviceOidByIdMap.get(objectSpecId); + } - public Oid getService(ObjectSpecId objectSpecId); + public void registerService(final ObjectSpecId objectSpecId, final Oid oid) { + final Oid oidLookedUpByName = serviceOidByIdMap.get(objectSpecId); + if (oidLookedUpByName != null) { + if (oidLookedUpByName.equals(oid)) { + throw new IsisException("Already another service registered as name: " + objectSpecId + " (existing Oid: " + oidLookedUpByName + ", " + "intended: " + oid + ")"); + } + } else { + serviceOidByIdMap.put(objectSpecId, oid); + } + } - public Iterable<ObjectSpecId> specifications(); + // TODO: this is where the clever logic needs to go to determine how to save + // into our custom Map. + // also think we shouldn't surface the entire Map, just the API we require + // (keySet, values etc). + public ObjectStoreInstances instancesFor(final ObjectSpecId specId) { + ObjectStoreInstances ins = instancesBySpecMap.get(specId); + if (ins == null) { + ins = new ObjectStoreInstances(specId); + instancesBySpecMap.put(specId, ins); + } + return ins; + } - public ObjectStoreInstances instancesFor(ObjectSpecId spec); + public Iterable<ObjectSpecId> specifications() { + return instancesBySpecMap.keySet(); + } - public Iterable<ObjectStoreInstances> instances(); + public void clear() { + instancesBySpecMap.clear(); + } - public void clear(); + public Iterable<ObjectStoreInstances> instances() { + return instancesBySpecMap.values(); + } } http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java b/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java deleted file mode 100644 index 33d06a0..0000000 --- a/core/runtime/src/main/java/org/apache/isis/core/objectstore/internal/ObjectStorePersistedObjectsDefault.java +++ /dev/null @@ -1,102 +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.objectstore.internal; - -import java.util.Map; -import java.util.Set; - -import com.google.common.collect.Maps; - -import org.apache.isis.core.commons.exceptions.IsisException; -import org.apache.isis.core.metamodel.adapter.oid.Oid; -import org.apache.isis.core.metamodel.spec.ObjectSpecId; -import org.apache.isis.core.metamodel.spec.ObjectSpecification; -import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefault; - -/** - * Represents the persisted objects. - * - * Attached and detached to each session. - */ -public class ObjectStorePersistedObjectsDefault implements ObjectStorePersistedObjects { - - private final Map<ObjectSpecId, ObjectStoreInstances> instancesBySpecMap = Maps.newHashMap(); - private final Map<ObjectSpecId, Oid> serviceOidByIdMap = Maps.newHashMap(); - - private IdentifierGeneratorDefault.Memento oidGeneratorMemento; - - - @Override - public IdentifierGeneratorDefault.Memento getOidGeneratorMemento() { - return oidGeneratorMemento; - } - - @Override - public void saveOidGeneratorMemento(final IdentifierGeneratorDefault.Memento memento) { - this.oidGeneratorMemento = memento; - } - - @Override - public Oid getService(final ObjectSpecId objectSpecId) { - return serviceOidByIdMap.get(objectSpecId); - } - - @Override - public void registerService(final ObjectSpecId objectSpecId, final Oid oid) { - final Oid oidLookedUpByName = serviceOidByIdMap.get(objectSpecId); - if (oidLookedUpByName != null) { - if (oidLookedUpByName.equals(oid)) { - throw new IsisException("Already another service registered as name: " + objectSpecId + " (existing Oid: " + oidLookedUpByName + ", " + "intended: " + oid + ")"); - } - } else { - serviceOidByIdMap.put(objectSpecId, oid); - } - } - - // TODO: this is where the clever logic needs to go to determine how to save - // into our custom Map. - // also think we shouldn't surface the entire Map, just the API we require - // (keySet, values etc). - @Override - public ObjectStoreInstances instancesFor(final ObjectSpecId specId) { - ObjectStoreInstances ins = instancesBySpecMap.get(specId); - if (ins == null) { - ins = new ObjectStoreInstances(specId); - instancesBySpecMap.put(specId, ins); - } - return ins; - } - - @Override - public Iterable<ObjectSpecId> specifications() { - return instancesBySpecMap.keySet(); - } - - @Override - public void clear() { - instancesBySpecMap.clear(); - } - - @Override - public Iterable<ObjectStoreInstances> instances() { - return instancesBySpecMap.values(); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java index 3376c02..f7594cc 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstaller.java @@ -20,15 +20,15 @@ package org.apache.isis.core.runtime.installerregistry.installerapi; import org.apache.isis.core.commons.components.Installer; -import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate; +import org.apache.isis.core.runtime.persistence.ObjectStoreFactory; +import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; import org.apache.isis.core.runtime.system.DeploymentType; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; /** * Installs a {@link PersistenceSession} during system start up. */ -public interface PersistenceMechanismInstaller extends Installer, PersistenceSessionFactoryDelegate { +public interface PersistenceMechanismInstaller extends Installer, ObjectStoreFactory { static String TYPE = "persistor"; http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java index 75e6fc4..58e04ae 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/installerregistry/installerapi/PersistenceMechanismInstallerAbstract.java @@ -27,11 +27,10 @@ import org.apache.isis.core.metamodel.progmodel.ProgrammingModel; import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi; import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidator; import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; -import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegating; +import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; import org.apache.isis.core.runtime.system.DeploymentType; import org.apache.isis.core.runtime.system.context.IsisContext; import org.apache.isis.core.runtime.system.persistence.ObjectFactory; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; /** * An abstract implementation of {@link PersistenceMechanismInstaller} that will @@ -52,7 +51,7 @@ public abstract class PersistenceMechanismInstallerAbstract extends InstallerAbs @Override public PersistenceSessionFactory createPersistenceSessionFactory(final DeploymentType deploymentType) { - return new PersistenceSessionFactoryDelegating(deploymentType, getConfiguration(), this); + return new PersistenceSessionFactory(deploymentType, getConfiguration(), this); } //endregion http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java index 44ded4d..8eacc26 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/FixturesInstalledFlag.java @@ -20,10 +20,9 @@ package org.apache.isis.core.runtime.persistence; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; /** - * For {@link PersistenceSessionFactory} implementations that can cache the + * For {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory} implementations that can cache the * {@link PersistenceSession#isFixturesInstalled()} so is only called once per * application scope. */ http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java new file mode 100644 index 0000000..fb0fdec --- /dev/null +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/ObjectStoreFactory.java @@ -0,0 +1,35 @@ +/* + * 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; + +import org.apache.isis.core.commons.config.IsisConfiguration; +import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware; +import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner; +import org.apache.isis.core.runtime.system.persistence.ObjectStore; + +/** + * Creates an {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} on behalf of a + * {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory}. + */ +public interface ObjectStoreFactory extends IsisConfigurationBuilderAware, MetaModelRefiner { + + ObjectStore createObjectStore(final IsisConfiguration configuration); + +} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java index cdeaaec..0d97653 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceConstants.java @@ -19,8 +19,6 @@ package org.apache.isis.core.runtime.persistence; -import org.apache.isis.core.runtime.system.persistence.ObjectFactory; - public final class PersistenceConstants { http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.java deleted file mode 100644 index 59a6010..0000000 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegate.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.runtime.persistence; - -import org.apache.isis.core.commons.config.IsisConfiguration; -import org.apache.isis.core.commons.config.IsisConfigurationBuilderAware; -import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner; -import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; - -/** - * Creates an {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} on behalf of a - * {@link PersistenceSessionFactory}. - */ -public interface PersistenceSessionFactoryDelegate extends IsisConfigurationBuilderAware, MetaModelRefiner { - - ObjectStoreSpi createObjectStore(final IsisConfiguration configuration); - -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java deleted file mode 100644 index 69153f2..0000000 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/PersistenceSessionFactoryDelegating.java +++ /dev/null @@ -1,237 +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; - -import java.util.List; -import java.util.Properties; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.apache.isis.applib.clock.Clock; -import org.apache.isis.applib.fixtures.FixtureClock; -import org.apache.isis.core.commons.config.IsisConfiguration; -import org.apache.isis.core.metamodel.progmodel.ProgrammingModel; -import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext; -import org.apache.isis.core.metamodel.services.ServicesInjectorDefault; -import org.apache.isis.core.metamodel.services.ServicesInjectorSpi; -import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi; -import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite; -import org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession; -import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi; -import org.apache.isis.core.runtime.system.DeploymentType; -import org.apache.isis.core.runtime.system.context.IsisContext; -import org.apache.isis.core.runtime.system.persistence.PersistenceSession; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; -import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager; - -import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg; -import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState; -import static org.hamcrest.CoreMatchers.*; - -/** - * Implementation that just delegates to a supplied - * {@link PersistenceSessionFactoryDelegate}. - */ -public class PersistenceSessionFactoryDelegating implements PersistenceSessionFactory, FixturesInstalledFlag { - - private static final Logger LOG = LoggerFactory.getLogger(PersistenceSessionFactoryDelegating.class); - - private final DeploymentType deploymentType; - private final IsisConfiguration configuration; - private final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate; - - /** - * @see #setServices(List) - */ - private List<Object> serviceList; - - private Boolean fixturesInstalled; - - private final ServicesInjectorSpi servicesInjector = new ServicesInjectorDefault(); - private RuntimeContext runtimeContext; - - public PersistenceSessionFactoryDelegating( - final DeploymentType deploymentType, - final IsisConfiguration isisConfiguration, - final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate) { - this.deploymentType = deploymentType; - this.configuration = isisConfiguration; - this.persistenceSessionFactoryDelegate = persistenceSessionFactoryDelegate; - } - - @Override - public DeploymentType getDeploymentType() { - return deploymentType; - } - - public PersistenceSessionFactoryDelegate getDelegate() { - return persistenceSessionFactoryDelegate; - } - - @Override - public PersistenceSession createPersistenceSession() { - - if (LOG.isDebugEnabled()) { - LOG.debug("installing " + this.getClass().getName()); - } - - ServicesInjectorSpi servicesInjector = getServicesInjector(); - - final ObjectStoreSpi objectStore = persistenceSessionFactoryDelegate.createObjectStore(getConfiguration()); - - ensureThatArg(objectStore, is(not(nullValue()))); - - final PersistenceSession persistenceSession =new PersistenceSession(this, servicesInjector, objectStore, getConfiguration()); - - final IsisTransactionManager transactionManager = new IsisTransactionManager(persistenceSession, objectStore, servicesInjector); - - persistenceSession.setDirtiableSupport(true); - persistenceSession.setTransactionManager(transactionManager); - - return persistenceSession; - } - - @Override - public final void init() { - - // check prereq dependencies injected - ensureThatState(serviceList, is(notNullValue())); - - // a bit of a workaround, but required if anything in the metamodel (for - // example, a - // ValueSemanticsProvider for a date value type) needs to use the Clock - // singleton - // we do this after loading the services to allow a service to prime a - // different clock - // implementation (eg to use an NTP time service). - if (!deploymentType.isProduction() && !Clock.isInitialized()) { - FixtureClock.initialize(); - } - - runtimeContext = createRuntimeContext(getConfiguration()); - ensureThatState(runtimeContext, is(not(nullValue()))); - - // inject the specification loader etc. - runtimeContext.injectInto(servicesInjector); - - // wire up components - - getSpecificationLoader().injectInto(runtimeContext); - for (Object service : serviceList) { - runtimeContext.injectInto(service); - } - - servicesInjector.setServices(serviceList); - servicesInjector.init(); - } - - private RuntimeContext createRuntimeContext(final IsisConfiguration configuration) { - final RuntimeContextFromSession runtimeContext = new RuntimeContextFromSession(); - final Properties properties = applicationPropertiesFrom(configuration); - runtimeContext.setProperties(properties); - return runtimeContext; - } - - private static Properties applicationPropertiesFrom(final IsisConfiguration configuration) { - final Properties properties = new Properties(); - final IsisConfiguration applicationConfiguration = configuration.getProperties("application"); - for (final String key : applicationConfiguration) { - final String value = applicationConfiguration.getString(key); - final String newKey = key.substring("application.".length()); - properties.setProperty(newKey, value); - } - return properties; - } - - - - @Override - public final void shutdown() { - doShutdown(); - } - - /** - * Optional hook method for implementation-specific shutdown. - */ - protected void doShutdown() { - } - - - // ////////////////////////////////////////////////////// - // Components (setup during init...) - // ////////////////////////////////////////////////////// - - public ServicesInjectorSpi getServicesInjector() { - return servicesInjector; - } - - // ////////////////////////////////////////////////////// - // MetaModelAdjuster impl - // ////////////////////////////////////////////////////// - - @Override - public void refineMetaModelValidator(MetaModelValidatorComposite metaModelValidator, IsisConfiguration configuration) { - persistenceSessionFactoryDelegate.refineMetaModelValidator(metaModelValidator, configuration); - } - - @Override - public void refineProgrammingModel(ProgrammingModel baseProgrammingModel, IsisConfiguration configuration) { - persistenceSessionFactoryDelegate.refineProgrammingModel(baseProgrammingModel, configuration); - } - - // ////////////////////////////////////////////////////// - // FixturesInstalledFlag impl - // ////////////////////////////////////////////////////// - - @Override - public Boolean isFixturesInstalled() { - return fixturesInstalled; - } - - @Override - public void setFixturesInstalled(final Boolean fixturesInstalled) { - this.fixturesInstalled = fixturesInstalled; - } - - // ////////////////////////////////////////////////////// - // Dependencies (injected from constructor) - // ////////////////////////////////////////////////////// - - public IsisConfiguration getConfiguration() { - return configuration; - } - - // ////////////////////////////////////////////////////// - // Dependencies (injected via setters) - // ////////////////////////////////////////////////////// - - @Override - public void setServices(final List<Object> serviceList) { - this.serviceList = serviceList; - } - - // ////////////////////////////////////////////////////// - // Dependencies (from context) - // ////////////////////////////////////////////////////// - - protected SpecificationLoaderSpi getSpecificationLoader() { - return IsisContext.getSpecificationLoader(); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/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 9d67051..8de9088 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 @@ -19,43 +19,33 @@ package org.apache.isis.core.runtime.persistence.adaptermanager; -import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.notNullValue; -import static org.hamcrest.CoreMatchers.nullValue; - import java.util.Iterator; - -import org.apache.isis.core.runtime.persistence.PojoRecreationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.isis.core.commons.authentication.AuthenticationSession; +import org.apache.isis.core.commons.components.Resettable; +import org.apache.isis.core.commons.components.SessionScopedComponent; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.commons.debug.DebugBuilder; +import org.apache.isis.core.commons.debug.DebuggableWithTitle; import org.apache.isis.core.commons.ensure.Assert; import org.apache.isis.core.commons.ensure.Ensure; import org.apache.isis.core.commons.ensure.IsisAssertException; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.adapter.ObjectAdapterFactory; import org.apache.isis.core.metamodel.adapter.ResolveState; +import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager; import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware; -import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid; -import org.apache.isis.core.metamodel.adapter.oid.CollectionOid; -import org.apache.isis.core.metamodel.adapter.oid.Oid; -import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller; -import org.apache.isis.core.metamodel.adapter.oid.RootOid; -import org.apache.isis.core.metamodel.adapter.oid.TypedOid; +import org.apache.isis.core.metamodel.adapter.oid.*; import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException; import org.apache.isis.core.metamodel.adapter.version.Version; -import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet; +import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet; +import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet; import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet; import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils; import org.apache.isis.core.metamodel.facets.object.parented.ParentedFacet; import org.apache.isis.core.metamodel.facets.object.value.ValueFacet; -import org.apache.isis.core.metamodel.facets.actcoll.typeof.ElementSpecificationProviderFromTypeOfFacet; -import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet; +import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet; import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector; import org.apache.isis.core.metamodel.spec.ObjectSpecId; import org.apache.isis.core.metamodel.spec.ObjectSpecification; @@ -63,12 +53,36 @@ import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi; import org.apache.isis.core.metamodel.spec.feature.Contributed; import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation; import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation; +import org.apache.isis.core.runtime.persistence.PojoRecreationException; import org.apache.isis.core.runtime.system.context.IsisContext; -import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi; +import org.apache.isis.core.runtime.system.persistence.AdapterLifecycleTransitioner; import org.apache.isis.core.runtime.system.persistence.OidGenerator; import org.apache.isis.core.runtime.system.persistence.PersistenceSession; +import org.apache.isis.core.runtime.system.persistence.RecreatedPojoRemapper; + +import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg; +import static org.hamcrest.CoreMatchers.*; -public class AdapterManagerDefault implements AdapterManagerSpi { +/** + * Responsible for managing the {@link ObjectAdapter adapter}s and {@link Oid + * identities} for each and every POJO that is being used by the framework. + * + * <p> + * It provides a consistent set of adapters in memory, providing an + * {@link ObjectAdapter adapter} for the POJOs that are in use ensuring that the + * same object is not loaded twice into memory. + * + * <p> + * Each POJO is given an {@link ObjectAdapter adapter} so that the framework can + * work with the POJOs even though it does not understand their types. Each POJO + * maps to an {@link ObjectAdapter adapter} and these are reused. + */ +public class AdapterManagerDefault implements AdapterManager, Iterable<ObjectAdapter>, + RecreatedPojoRemapper, + AdapterLifecycleTransitioner, + SessionScopedComponent, + DebuggableWithTitle, + Resettable { private static final Logger LOG = LoggerFactory.getLogger(AdapterManagerDefault.class); @@ -87,7 +101,7 @@ public class AdapterManagerDefault implements AdapterManagerSpi { * to allow transient objects to be reattached; can instead provide a * {@link PojoRecreator} implementation that is injected into the Adapter Manager. * - * @see http://www.datanucleus.org/servlet/forum/viewthread_thread,7238_lastpage,yes#35976 + * @see <a href="http://www.datanucleus.org/servlet/forum/viewthread_thread,7238_lastpage,yes#35976">this thread</a> */ public AdapterManagerDefault(PojoRecreator pojoRecreator) { this.pojoRecreator = pojoRecreator; @@ -292,12 +306,12 @@ public class AdapterManagerDefault implements AdapterManagerSpi { @Override public ObjectAdapter adapterFor(final TypedOid typedOid) { - return adapterFor(typedOid, ConcurrencyChecking.NO_CHECK); + return adapterFor(typedOid, AdapterManager.ConcurrencyChecking.NO_CHECK); } @Override - public ObjectAdapter adapterFor(final TypedOid typedOid, final ConcurrencyChecking concurrencyChecking) { + public ObjectAdapter adapterFor(final TypedOid typedOid, final AdapterManager.ConcurrencyChecking concurrencyChecking) { // attempt to locate adapter for the Oid ObjectAdapter adapter = getAdapterFor(typedOid); @@ -327,7 +341,7 @@ public class AdapterManagerDefault implements AdapterManagerSpi { otherVersion != null && thisVersion.different(otherVersion)) { - if(isConcurrencyCheckingGloballyEnabled() && ConcurrencyChecking.isCurrentlyEnabled()) { + if(isConcurrencyCheckingGloballyEnabled() && AdapterManager.ConcurrencyChecking.isCurrentlyEnabled()) { LOG.info("concurrency conflict detected on " + recreatedOid + " (" + otherVersion + ")"); final String currentUser = getAuthenticationSession().getUserName(); throw new ConcurrencyException(currentUser, recreatedOid, thisVersion, otherVersion); http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.java deleted file mode 100644 index b610802..0000000 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/AdapterUtils.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.adaptermanager; - -import org.apache.isis.core.commons.exceptions.UnknownTypeException; -import org.apache.isis.core.metamodel.adapter.ObjectAdapter; -import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet; -import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils; -import org.apache.isis.core.metamodel.spec.ObjectSpecification; -import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi; -import org.apache.isis.core.runtime.system.persistence.AdapterManagerSpi; - -public final class AdapterUtils { - private AdapterUtils() { - } - - public static ObjectAdapter createAdapter(final Class<?> type, final Object object, final AdapterManagerSpi adapterManager, final SpecificationLoaderSpi specificationLoader) { - final ObjectSpecification specification = specificationLoader.loadSpecification(type); - if (specification.isNotCollection()) { - return adapterManager.adapterFor(object); - } else { - throw new UnknownTypeException("not an object, is this a collection?"); - } - } - - public static Object[] getCollectionAsObjectArray(final Object option, final ObjectSpecification spec, final AdapterManagerSpi adapterManager) { - final ObjectAdapter collection = adapterManager.adapterFor(option); - final CollectionFacet facet = CollectionFacetUtils.getCollectionFacetFromSpec(collection); - final Object[] optionArray = new Object[facet.size(collection)]; - int j = 0; - for (final ObjectAdapter adapter : facet.iterable(collection)) { - optionArray[j++] = adapter.getObject(); - } - return optionArray; - } - - public static Object domainObject(final ObjectAdapter inObject) { - return inObject == null ? null : inObject.getObject(); - } - -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java deleted file mode 100644 index 82ce9f1..0000000 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/ObjectStoreSpi.java +++ /dev/null @@ -1,27 +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.objectstore; - -import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource; -import org.apache.isis.core.runtime.system.persistence.ObjectStore; - -public interface ObjectStoreSpi extends ObjectStore, TransactionalResource { - -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java index 8e8ad1b..1e012d8 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/objectstore/transaction/TransactionalResource.java @@ -20,40 +20,38 @@ package org.apache.isis.core.runtime.persistence.objectstore.transaction; import java.util.List; - -import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi; import org.apache.isis.core.runtime.system.transaction.IsisTransaction; import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager; /** * Interface for the {@link IsisTransactionManager} to interact with some - * transactional resource (ie a {@link ObjectStoreSpi}). + * transactional resource (ie a {@link org.apache.isis.core.runtime.system.persistence.ObjectStore}). */ public interface TransactionalResource { /** - * Used by the {@link ObjectStoreTransactionManager} to tell the underlying - * {@link ObjectStoreSpi} to start a transaction. + * Used by the {@link IsisTransactionManager} to tell the underlying + * {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} to start a transaction. */ void startTransaction(); /** * Used by the current {@link IsisTransaction} to flush changes to - * the {@link ObjectStoreSpi} (either via a + * the {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} (either via a * {@link IsisTransactionManager#flushTransaction()} or a * {@link IsisTransactionManager#endTransaction()}). */ void execute(List<PersistenceCommand> unmodifiableList); /** - * Used by the {@link ObjectStoreTransactionManager} to tell the underlying - * {@link ObjectStoreSpi} to commit a transaction. + * Used by the {@link IsisTransactionManager} to tell the underlying + * {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} to commit a transaction. */ void endTransaction(); /** - * Used by the {@link ObjectStoreTransactionManager} to tell the underlying - * {@link ObjectStoreSpi} to abort a transaction. + * Used by the {@link IsisTransactionManager} to tell the underlying + * {@link org.apache.isis.core.runtime.system.persistence.ObjectStore} to abort a transaction. */ void abortTransaction(); http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java index 7f4aa22..7f4d207 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/IsisSystemFixturesHookAbstract.java @@ -37,11 +37,11 @@ import org.apache.isis.core.runtime.authentication.AuthenticationManager; import org.apache.isis.core.runtime.authentication.exploration.ExplorationSession; import org.apache.isis.core.runtime.authorization.AuthorizationManager; import org.apache.isis.core.runtime.installerregistry.InstallerLookup; +import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; import org.apache.isis.core.runtime.system.context.IsisContext; import org.apache.isis.core.runtime.system.internal.InitialisationSession; import org.apache.isis.core.runtime.system.internal.IsisLocaleInitializer; import org.apache.isis.core.runtime.system.internal.IsisTimeZoneInitializer; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; import org.apache.isis.core.runtime.system.session.IsisSession; import org.apache.isis.core.runtime.system.session.IsisSessionFactory; import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager; http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java index 62a2bee..5d82d26 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/SystemConstants.java @@ -30,7 +30,6 @@ import org.apache.isis.core.runtime.authorization.AuthorizationManagerInstaller; import org.apache.isis.core.runtime.fixtures.FixturesInstaller; import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller; import org.apache.isis.core.runtime.services.ServicesInstaller; -import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory; public final class SystemConstants { @@ -57,7 +56,7 @@ public final class SystemConstants { /** - * Key used to lookup {@link PersistenceSessionFactory persistor} in + * Key used to lookup {@link org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory persistor} in * {@link IsisConfiguration}, and root for any * {@link PersistenceMechanismInstaller persistor}-specific configuration * keys. http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java deleted file mode 100644 index 9d11937..0000000 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/AdapterManagerSpi.java +++ /dev/null @@ -1,51 +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.system.persistence; - -import org.apache.isis.core.commons.components.Resettable; -import org.apache.isis.core.commons.components.SessionScopedComponent; -import org.apache.isis.core.commons.debug.DebuggableWithTitle; -import org.apache.isis.core.metamodel.adapter.ObjectAdapter; -import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager; -import org.apache.isis.core.metamodel.adapter.oid.Oid; - -/** - * Responsible for managing the {@link ObjectAdapter adapter}s and {@link Oid - * identities} for each and every POJO that is being used by the framework. - * - * <p> - * It provides a consistent set of adapters in memory, providing an - * {@link ObjectAdapter adapter} for the POJOs that are in use ensuring that the - * same object is not loaded twice into memory. - * - * <p> - * Each POJO is given an {@link ObjectAdapter adapter} so that the framework can - * work with the POJOs even though it does not understand their types. Each POJO - * maps to an {@link ObjectAdapter adapter} and these are reused. - */ -public interface AdapterManagerSpi extends AdapterManager, Iterable<ObjectAdapter>, - RecreatedPojoRemapper, - AdapterLifecycleTransitioner, - SessionScopedComponent, - DebuggableWithTitle, - Resettable { - - -} http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java index 539b393..a5b8005 100644 --- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java +++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java @@ -29,12 +29,9 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid; import org.apache.isis.core.metamodel.adapter.oid.TypedOid; import org.apache.isis.core.metamodel.spec.ObjectSpecification; import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation; -import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand; -import org.apache.isis.core.runtime.persistence.objectstore.transaction.DestroyObjectCommand; -import org.apache.isis.core.runtime.persistence.objectstore.transaction.PersistenceCommand; -import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand; +import org.apache.isis.core.runtime.persistence.objectstore.transaction.*; -public interface ObjectStore extends DebuggableWithTitle, SessionScopedComponent { +public interface ObjectStore extends TransactionalResource, DebuggableWithTitle, SessionScopedComponent { /** * The name of this component. http://git-wip-us.apache.org/repos/asf/isis/blob/fab4f479/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 cdd3a10..294ef30 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 @@ -57,7 +57,6 @@ import org.apache.isis.core.runtime.persistence.NotPersistableException; 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.PojoRecreatorUnified; -import org.apache.isis.core.runtime.persistence.objectstore.ObjectStoreSpi; import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithm; import org.apache.isis.core.runtime.persistence.objectstore.algorithm.PersistAlgorithmUnified; import org.apache.isis.core.runtime.persistence.objectstore.algorithm.ToPersistObjectSet; @@ -82,7 +81,7 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To private final ObjectAdapterFactory objectAdapterFactory; private final ServicesInjectorSpi servicesInjector; private final OidGenerator oidGenerator; - private final AdapterManagerSpi adapterManager; + private final AdapterManagerDefault adapterManager; private final PersistAlgorithm persistAlgorithm ; private final ObjectStore objectStore; @@ -574,10 +573,10 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To * initialise the persistor. * * <p> - * Returns the cached value of {@link ObjectStoreSpi#isFixturesInstalled() + * Returns the cached value of {@link ObjectStore#isFixturesInstalled() * whether fixtures are installed} from the * {@link PersistenceSessionFactory} (provided it implements - * {@link FixturesInstalledFlag}), otherwise queries {@link ObjectStoreSpi} + * {@link FixturesInstalledFlag}), otherwise queries {@link ObjectStore} * directly. * <p> * This caching is important because if we've determined, for a given run, @@ -979,8 +978,8 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To } /** - * Uses the {@link ObjectStoreSpi} to - * {@link ObjectStoreSpi#createCreateObjectCommand(ObjectAdapter) create} a + * Uses the {@link ObjectStore} to + * {@link ObjectStore#createCreateObjectCommand(ObjectAdapter) create} a * {@link CreateObjectCommand}, and adds to the * {@link IsisTransactionManager}. */ @@ -1104,7 +1103,7 @@ public class PersistenceSession implements Persistor, EnlistedObjectDirtying, To } /** - * The configured {@link AdapterManagerSpi}. + * The configured {@link AdapterManager}. * * <p> * Injected in constructor.
