KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > mdr > storagemodel > transientimpl > TransactionalIndex


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20
21 package org.netbeans.mdr.storagemodel.transientimpl;
22
23 import java.util.Stack JavaDoc;
24 import org.netbeans.mdr.persistence.Index;
25 import org.netbeans.mdr.persistence.StorageException;
26 import org.netbeans.mdr.util.Logger;
27
28 /**
29  *
30  * @author Tomas Zezula
31  */

32 public abstract class TransactionalIndex implements Index {
33
34     // Transaction log
35
protected Stack JavaDoc txlog;
36
37     /** Creates a new instance of TransactionalIndex */
38     public TransactionalIndex() {
39         this.txlog = new Stack JavaDoc();
40     }
41
42     /** Commits the changes
43      * Clears compensating transaction log
44      */

45     public void commit() {
46         this.txlog.clear();
47     }
48     
49     /** Rollbacks the transaction
50      * Executes the compensating transaction log
51      */

52     public void rollBack() {
53         while (!txlog.empty()) {
54             try {
55                 CompensatingTransaction ctx = (CompensatingTransaction) txlog.pop();
56                 ctx.perform(this);
57             } catch (StorageException se) {
58                 Logger.getDefault().notify(Logger.INFORMATIONAL, se);
59             }
60         }
61     }
62     
63     protected abstract void addNoTx(Object JavaDoc key, Object JavaDoc value) throws StorageException;
64     
65     protected abstract Object JavaDoc removeNoTx(Object JavaDoc key, Object JavaDoc value) throws StorageException;
66     
67 }
68
Popular Tags