+ try {
+ Boolean exists = transaction.exists(path).checkedGet();
+ DataExistsReply dataExistsReply = new DataExistsReply(exists);
+ getSender().tell(returnSerialized ? dataExistsReply.toSerializable() :
+ dataExistsReply, getSelf());
+ } catch (ReadFailedException e) {
+ getSender().tell(new akka.actor.Status.Failure(e),getSelf());
+ }
+
+ }
+
+ private static class ShardTransactionCreator implements Creator<ShardTransaction> {
+
+ private static final long serialVersionUID = 1L;
+
+ final DOMStoreTransaction transaction;
+ final ActorRef shardActor;
+ final SchemaContext schemaContext;
+ final DatastoreContext datastoreContext;
+ final ShardStats shardStats;
+ final String transactionID;
+ final int txnClientVersion;
+
+ ShardTransactionCreator(DOMStoreTransaction transaction, ActorRef shardActor,
+ SchemaContext schemaContext, DatastoreContext datastoreContext,
+ ShardStats shardStats, String transactionID, int txnClientVersion) {
+ this.transaction = transaction;
+ this.shardActor = shardActor;
+ this.shardStats = shardStats;
+ this.schemaContext = schemaContext;
+ this.datastoreContext = datastoreContext;
+ this.transactionID = transactionID;
+ this.txnClientVersion = txnClientVersion;
+ }
+
+ @Override
+ public ShardTransaction create() throws Exception {
+ ShardTransaction tx;
+ if(transaction instanceof DOMStoreReadWriteTransaction) {
+ tx = new ShardReadWriteTransaction((DOMStoreReadWriteTransaction)transaction,
+ shardActor, schemaContext, shardStats, transactionID, txnClientVersion);
+ } else if(transaction instanceof DOMStoreReadTransaction) {
+ tx = new ShardReadTransaction((DOMStoreReadTransaction)transaction, shardActor,
+ schemaContext, shardStats, transactionID, txnClientVersion);
+ } else {
+ tx = new ShardWriteTransaction((DOMStoreWriteTransaction)transaction,
+ shardActor, schemaContext, shardStats, transactionID, txnClientVersion);
+ }
+
+ tx.getContext().setReceiveTimeout(datastoreContext.getShardTransactionIdleTimeout());
+ return tx;
+ }
+ }