/** * 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.services.persistsession; import java.util.List; import org.apache.isis.applib.annotation.Programmatic; import org.apache.isis.applib.query.Query; import org.apache.isis.applib.services.bookmark.Bookmark; import org.apache.isis.applib.services.bookmark.BookmarkService2; import org.apache.isis.applib.services.xactn.Transaction; import org.apache.isis.applib.services.xactn.TransactionState; import org.apache.isis.core.metamodel.adapter.ObjectAdapter; import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager; import org.apache.isis.core.metamodel.spec.ObjectSpecification; import org.apache.isis.core.runtime.system.transaction.TransactionalClosure; public interface PersistenceSessionServiceInternal extends AdapterManager { //region > instantiate /** * Provided by the <tt>PersistenceSession</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt>. */ @Programmatic ObjectAdapter createTransientInstance(ObjectSpecification spec); @Programmatic ObjectAdapter createViewModelInstance(ObjectSpecification spec, String memento); //endregion //region > retrieve /** * Provided by <tt>PersistenceSession</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt>. */ @Programmatic void resolve(Object parent); /** * Provided by <tt>PersistenceSession</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt>. * * @deprecated - left over from manual object resolving. */ @Deprecated @Programmatic void resolve(Object parent, Object field); /** * Provided by <tt>PersistenceSession</tt> when used by framework. * * <p> * Called by <tt>BookmarkServicesDefault</tt>. * @return */ @Programmatic Object lookup(Bookmark bookmark, final BookmarkService2.FieldResetPolicy fieldResetPolicy); @Programmatic Bookmark bookmarkFor(Object domainObject); @Programmatic Bookmark bookmarkFor(Class<?> cls, String identifier); //endregion //region > beginTran, flush, commit, currentTransaction @Programmatic void beginTran(); /** * Provided by <tt>TransactionManager</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt>. */ @Programmatic boolean flush(); /** * Provided by <tt>TransactionManager</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt>. */ @Programmatic void commit(); @Programmatic Transaction currentTransaction(); @Programmatic TransactionState getTransactionState(); //endregion //region > makePersistent, remove /** * Provided by the <tt>PersistenceSession</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt> and also by * <tt>DomainObjectInvocationHandler#handleSaveMethod()</tt>. */ @Programmatic void makePersistent(ObjectAdapter adapter); /** * Provided by <tt>UpdateNotifier</tt> and <tt>PersistenceSession</tt> when * used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt>. */ @Programmatic void remove(ObjectAdapter adapter); //endregion //region > allMatchingQuery, firstMatchingQuery /** * Provided by <tt>PersistenceSession</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt> and also by the choices * facets. */ @Programmatic <T> List<ObjectAdapter> allMatchingQuery(Query<T> query); /** * Provided by <tt>PersistenceSession</tt> when used by framework. * * <p> * Called by <tt>DomainObjectContainerDefault</tt>. */ @Programmatic <T> ObjectAdapter firstMatchingQuery(Query<T> query); void executeWithinTransaction(TransactionalClosure transactionalClosure); //endregion }