KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > jdbcx > JdbcXid


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.jdbcx;
6
7 import java.sql.SQLException JavaDoc;
8 import java.util.StringTokenizer JavaDoc;
9
10 //#ifdef JDK14
11
import javax.transaction.xa.Xid JavaDoc;
12 //#endif
13

14 import org.h2.message.Message;
15 import org.h2.message.TraceObject;
16 import org.h2.util.ByteUtils;
17
18 public class JdbcXid extends TraceObject
19 //#ifdef JDK14
20
implements Xid JavaDoc
21 //#endif
22
{
23     
24     private static final String JavaDoc PREFIX = "XID";
25
26     private int formatId;
27     private byte[] branchQualifier;
28     private byte[] globalTransactionId;
29     
30     JdbcXid(JdbcDataSourceFactory factory, int id, String JavaDoc tid) throws SQLException JavaDoc {
31         setTrace(factory.getTrace(), TraceObject.XID, id);
32         try {
33             StringTokenizer JavaDoc tokenizer = new StringTokenizer JavaDoc(tid, "_");
34             String JavaDoc prefix = tokenizer.nextToken();
35             if(!PREFIX.equals(prefix)) {
36                 throw Message.getSQLException(Message.WRONG_XID_FORMAT_1, tid);
37             }
38             formatId = Integer.parseInt(tokenizer.nextToken());
39             branchQualifier = ByteUtils.convertStringToBytes(tokenizer.nextToken());
40             globalTransactionId = ByteUtils.convertStringToBytes(tokenizer.nextToken());
41         } catch(Throwable JavaDoc e) {
42             throw Message.getSQLException(Message.WRONG_XID_FORMAT_1, tid);
43         }
44     }
45     
46 // private JdbcXid(JdbcDataSourceFactory factory, int id, Xid xid) {
47
// setTrace(factory.getTrace(), TraceObject.XID, id);
48
// this.formatId = xid.getFormatId();
49
// this.branchQualifier = clone(xid.getBranchQualifier());
50
// this.globalTransactionId = clone(xid.getGlobalTransactionId());
51
// }
52

53     public String JavaDoc getAsString() {
54         StringBuffer JavaDoc buff = new StringBuffer JavaDoc(PREFIX);
55         buff.append('_');
56         buff.append(formatId);
57         buff.append('_');
58         buff.append(ByteUtils.convertBytesToString(branchQualifier));
59         buff.append('_');
60         buff.append(ByteUtils.convertBytesToString(globalTransactionId));
61         return buff.toString();
62     }
63     
64 // private byte[] clone(byte[] data) {
65
// byte[] d2 = new byte[data.length];
66
// System.arraycopy(data, 0, d2, 0, data.length);
67
// return d2;
68
// }
69

70     public int getFormatId() {
71         debugCodeCall("getFormatId");
72         return formatId;
73     }
74
75     public byte[] getBranchQualifier() {
76         debugCodeCall("getBranchQualifier");
77         return branchQualifier;
78     }
79
80     public byte[] getGlobalTransactionId() {
81         debugCodeCall("getGlobalTransactionId");
82         return globalTransactionId;
83     }
84
85 }
86
Popular Tags