/** * The contents of this file are subject to the OpenMRS Public License * Version 1.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://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs.module.sync.test; import org.openmrs.Encounter; import org.openmrs.OpenmrsObject; import org.openmrs.Patient; import org.openmrs.api.OpenmrsService; /** * Example service to test out various transactional use cases of hibernate and spring */ public interface ExampleTransactionalService extends OpenmrsService { /** * Example read-only transaction */ <T extends OpenmrsObject> T getObject(Class<T> type, Integer id); /** * Example save without transaction annotation */ void saveObjectNoTransaction(OpenmrsObject openmrsObject); /** * Example single transaction */ void saveObjectInTransaction(OpenmrsObject openmrsObject); /** * Example single transaction that throws an Exception */ void saveObjectInTransactionWithException(OpenmrsObject openmrsObject); /** * Example single transaction with REQUIRES_NEW */ void saveObjectInNewTransaction(OpenmrsObject openmrsObject); /** * Example nested transaction */ void saveAllObjectsInSingleTransaction(OpenmrsObject... objects); /** * Example nested transaction */ void saveAllObjectsInNewTransactions(OpenmrsObject... objects); }