package org.serinus.graph.interceptor; import javax.annotation.Resource; import javax.inject.Inject; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; import javax.transaction.UserTransaction; import org.neo4j.graphdb.Transaction; import org.serinus.graph.GraphManager; @GraphTransaction @Interceptor public class GraphTransactionInterceptor { @Inject GraphManager graphManager; /** * http://wiki.neo4j.org/content/Transactions * * @param ctx * @return * @throws Exception */ @AroundInvoke public Object manageTransaction(InvocationContext ctx) throws Exception { Transaction graphTrans = graphManager.getGraphDatabaseService() .beginTx(); Object result = null; try { result = ctx.proceed(); graphTrans.success(); } finally { graphTrans.finish(); } return result; } }