package io.ebeaninternal.server.transaction;

import io.ebean.ProfileLocation;
import io.ebean.TransactionCallback;
import io.ebean.annotation.DocStoreMode;
import io.ebean.bean.PersistenceContext;
import io.ebean.event.changelog.BeanChange;
import io.ebean.event.changelog.ChangeSet;
import io.ebeaninternal.api.SpiProfileTransactionEvent;
import io.ebeaninternal.api.SpiTransaction;
import io.ebeaninternal.api.TransactionEvent;
import io.ebeaninternal.server.core.PersistDeferredRelationship;
import io.ebeaninternal.server.core.PersistRequestBean;
import io.ebeaninternal.server.persist.BatchControl;
import io.ebeanservice.docstore.api.DocStoreTransaction;

import javax.persistence.PersistenceException;
import java.sql.Connection;
import java.sql.SQLException;

Place holder for use with SUPPORTS and NEVER transactional when there really isn't a transaction.
/** * Place holder for use with SUPPORTS and NEVER transactional when there really isn't a transaction. */
class NoTransaction implements SpiTransaction { static final NoTransaction INSTANCE = new NoTransaction(); @Override public void setLabel(String label) { // do nothing } @Override public String getLabel() { return null; } @Override public boolean isNestedUseSavepoint() { return false; } @Override public void setNestedUseSavepoint() { } @Override public long getStartNanoTime() { // not used return System.nanoTime(); } @Override public boolean isActive() { // always false return false; } @Override public void commitAndContinue() { // do nothing } @Override public void commit() { // do nothing } @Override public void rollback() throws PersistenceException { // do nothing } @Override public void rollback(Throwable e) throws PersistenceException { // do nothing } @Override public void end() { // do nothing } @Override public void close() { // do nothing } @Override public void preCommit() { // do nothing } @Override public void postCommit() { // do nothing } @Override public void postRollback(Throwable cause) { // do nothing } @Override public String getLogPrefix() { return null; } @Override public boolean isLogSql() { return false; } @Override public boolean isLogSummary() { return false; } @Override public void logSql(String msg) { } @Override public void logSummary(String msg) { } @Override public void registerDeferred(PersistDeferredRelationship derived) { } @Override public void registerDeleteBean(Integer hash) { } @Override public boolean isRegisteredDeleteBean(Integer hash) { return false; } @Override public void unregisterBeans() { } @Override public boolean isRegisteredBean(Object bean) { return false; } @Override public String getId() { return null; } @Override public Boolean isUpdateAllLoadedProperties() { return null; } @Override public DocStoreMode getDocStoreMode() { return null; } @Override public int getDocStoreBatchSize() { return 0; } @Override public void register(TransactionCallback callback) { } @Override public boolean isReadOnly() { return false; } @Override public void setReadOnly(boolean readOnly) { } @Override public void setRollbackOnly() { } @Override public boolean isRollbackOnly() { return false; } @Override public void setDocStoreMode(DocStoreMode mode) { } @Override public void setDocStoreBatchSize(int batchSize) { } @Override public void setPersistCascade(boolean persistCascade) { } @Override public void setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { } @Override public void setSkipCache(boolean skipCache) { } @Override public boolean isSkipCacheExplicit() { return false; } @Override public boolean isSkipCache() { return false; } @Override public void setBatchMode(boolean useBatch) { } @Override public boolean isBatchMode() { return false; } @Override public void setBatchOnCascade(boolean batchMode) { } @Override public boolean isBatchOnCascade() { return false; } @Override public void setBatchSize(int batchSize) { } @Override public int getBatchSize() { return 0; } @Override public void setGetGeneratedKeys(boolean getGeneratedKeys) { } @Override public void setFlushOnMixed(boolean batchFlushOnMixed) { } @Override public void setFlushOnQuery(boolean batchFlushOnQuery) { } @Override public boolean isFlushOnQuery() { return false; } @Override public void flush() throws PersistenceException { } @Override public void flushBatch() throws PersistenceException { } @Override public Connection getConnection() { return null; } @Override public void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { } @Override public void putUserObject(String name, Object value) { } @Override public Object getUserObject(String name) { return null; } @Override public Boolean getBatchGetGeneratedKeys() { return null; } @Override public void depth(int diff) { } @Override public int depth() { return 0; } @Override public boolean isExplicit() { return false; } @Override public TransactionEvent getEvent() { return null; } @Override public boolean isPersistCascade() { return false; } @Override public boolean isBatchThisRequest() { return false; } @Override public BatchControl getBatchControl() { return null; } @Override public void setBatchControl(BatchControl control) { } @Override public PersistenceContext getPersistenceContext() { return null; } @Override public void setPersistenceContext(PersistenceContext context) { } @Override public Connection getInternalConnection() { return null; } @Override public boolean isSaveAssocManyIntersection(String intersectionTable, String beanName) { return false; } @Override public boolean checkBatchEscalationOnCascade(PersistRequestBean<?> request) { return false; } @Override public void flushBatchOnCascade() { } @Override public void flushBatchOnRollback() { } @Override public PersistenceException translate(String message, SQLException cause) { return null; } @Override public void markNotQueryOnly() { } @Override public void checkBatchEscalationOnCollection() { } @Override public void flushBatchOnCollection() { } @Override public void addBeanChange(BeanChange beanChange) { } @Override public void sendChangeLog(ChangeSet changeSet) { } @Override public DocStoreTransaction getDocStoreTransaction() { return null; } @Override public void setTenantId(Object tenantId) { } @Override public Object getTenantId() { return null; } @Override public long profileOffset() { return 0; } @Override public void profileEvent(SpiProfileTransactionEvent event) { } @Override public void setProfileStream(ProfileStream profileStream) { } @Override public ProfileStream profileStream() { return null; } @Override public void setProfileLocation(ProfileLocation profileLocation) { } @Override public ProfileLocation getProfileLocation() { return null; } }