001: package org.apache.ojb.jdo;
002:
003: /* Copyright 2003-2005 The Apache Software Foundation
004: *
005: * Licensed under the Apache License, Version 2.0 (the "License");
006: * you may not use this file except in compliance with the License.
007: * You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: import org.apache.ojb.otm.OTMKit;
019: import org.apache.ojb.otm.OTMConnection;
020:
021: import javax.jdo.Transaction;
022: import javax.jdo.PersistenceManager;
023: import javax.jdo.JDOUserException;
024: import javax.jdo.JDOUnsupportedOptionException;
025: import javax.transaction.Synchronization;
026:
027: /**
028: * @author <a href="mailto:mattbaird@yahoo.com">Matthew Baird</a>
029: * @author <a href="mailto:brianm@apache.org">Brian McCallister</a>
030: */
031: public class TransactionImpl implements Transaction {
032: private PersistenceManager m_pm;
033: private OTMKit m_kit;
034: private OTMConnection m_conn;
035:
036: public TransactionImpl(PersistenceManager pm, OTMKit kit,
037: OTMConnection conn) {
038: m_pm = pm;
039: m_conn = conn;
040: m_kit = kit;
041: }
042:
043: public void begin() {
044: if (m_kit.getTransaction(m_conn).isInProgress()) {
045: throw new JDOUserException(
046: "Transaction already in progress");
047: }
048: m_kit.getTransaction(m_conn).begin();
049: }
050:
051: public void commit() {
052: if (!m_kit.getTransaction(m_conn).isInProgress()) {
053: throw new JDOUserException("Transaction not in progress");
054: }
055: m_kit.getTransaction(m_conn).commit();
056: }
057:
058: public void rollback() {
059: if (!m_kit.getTransaction(m_conn).isInProgress()) {
060: throw new JDOUserException("Transaction not in progress");
061: }
062: m_kit.getTransaction(m_conn).rollback();
063: }
064:
065: public boolean isActive() {
066: return m_kit.getTransaction(m_conn).isInProgress();
067: }
068:
069: public void setNontransactionalRead(boolean b) {
070: throw new javax.jdo.JDOUnsupportedOptionException("Unsupported");
071: }
072:
073: public boolean getNontransactionalRead() {
074: return false;
075: }
076:
077: public void setNontransactionalWrite(boolean b) {
078: throw new javax.jdo.JDOUnsupportedOptionException("Unsupported");
079: }
080:
081: public boolean getNontransactionalWrite() {
082: return false;
083: }
084:
085: /**
086: * @todo figure out what to do if someone doesn't want this!
087: */
088: public void setRetainValues(boolean b) {
089: // umh, this is always true.
090: }
091:
092: public boolean getRetainValues() {
093: return true;
094: }
095:
096: /**
097: * @todo implement
098: */
099: public void setRestoreValues(boolean b) {
100: throw new JDOUnsupportedOptionException("Not Yet Implemented");
101: }
102:
103: /**
104: * @todo implement
105: */
106: public boolean getRestoreValues() {
107: return false;
108: }
109:
110: /**
111: * @todo implement
112: */
113: public void setOptimistic(boolean b) {
114: throw new JDOUnsupportedOptionException("Not yet implemented");
115: }
116:
117: /**
118: * @todo implement
119: */
120: public boolean getOptimistic() {
121: return false;
122: }
123:
124: /**
125: * @todo figure out how to implement
126: * @param synchronization
127: */
128: public void setSynchronization(Synchronization synchronization) {
129: throw new JDOUnsupportedOptionException("Not Yet Implemented");
130: }
131:
132: /**
133: * @todo figure out how to implement
134: */
135: public Synchronization getSynchronization() {
136: throw new JDOUnsupportedOptionException("Not Yet Implemented");
137: }
138:
139: public PersistenceManager getPersistenceManager() {
140: return m_pm;
141: }
142: }
|