2
* Copyright 2003-2010 Terracotta, Inc.
2
* Copyright Terracotta, Inc.
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
16
16
package net.sf.ehcache.transaction;
18
import java.util.concurrent.ConcurrentHashMap;
19
import java.util.concurrent.ConcurrentMap;
21
import net.sf.ehcache.Ehcache;
18
22
import net.sf.ehcache.transaction.xa.XidTransactionID;
19
23
import net.sf.ehcache.transaction.xa.XidTransactionIDImpl;
26
30
* @author Ludovic Orban
28
public class TransactionIDFactoryImpl implements TransactionIDFactory {
32
public class TransactionIDFactoryImpl extends AbstractTransactionIDFactory {
31
* Create a new TransactionIDFactory
33
public TransactionIDFactoryImpl() {
34
private final ConcurrentMap<TransactionID, Decision> transactionStates = new ConcurrentHashMap<TransactionID, Decision>();
40
39
public TransactionID createTransactionID() {
41
return new TransactionIDImpl();
47
public XidTransactionID createXidTransactionID(Xid xid) {
48
return new XidTransactionIDImpl(xid);
40
TransactionID id = new TransactionIDImpl();
41
getTransactionStates().putIfAbsent(id, Decision.IN_DOUBT);
48
public TransactionID restoreTransactionID(TransactionIDSerializedForm serializedForm) {
49
throw new UnsupportedOperationException("unclustered transaction IDs are directly deserializable!");
55
public XidTransactionID createXidTransactionID(Xid xid, Ehcache cache) {
56
XidTransactionID id = new XidTransactionIDImpl(xid, cache.getName());
57
getTransactionStates().putIfAbsent(id, Decision.IN_DOUBT);
64
public XidTransactionID restoreXidTransactionID(XidTransactionIDSerializedForm serializedForm) {
65
throw new UnsupportedOperationException("unclustered transaction IDs are directly deserializable!");
69
protected ConcurrentMap<TransactionID, Decision> getTransactionStates() {
70
return transactionStates;
74
public Boolean isPersistent() {
79
public boolean isExpired(TransactionID transactionID) {