package org.prevayler.implementation;
import org.prevayler.TransactionWithQuery;
import org.prevayler.foundation.serialization.Serializer;
import java.util.Date;
class TransactionWithQueryCapsule extends Capsule {
private static final long serialVersionUID=78811627002206298L;
private transient Object _queryResult;
private transient Exception _queryException;
public TransactionWithQueryCapsule( TransactionWithQuery transactionWithQuery, Serializer journalSerializer){
super(transactionWithQuery,journalSerializer);
}
public TransactionWithQueryCapsule( byte[] serialized){
super(serialized);
}
protected void justExecute( Object transaction, Object prevalentSystem, Date executionTime){
try {
_queryResult=((TransactionWithQuery)transaction).executeAndQuery(prevalentSystem,executionTime);
}
catch ( RuntimeException rx) {
_queryException=rx;
throw rx;
}
catch ( Exception ex) {
_queryException=ex;
}
}
public Object result() throws Exception {
if (_queryException != null) throw _queryException;
return _queryResult;
}
public Capsule cleanCopy(){
return new TransactionWithQueryCapsule(serialized());
}
}