1 29 30 package com.caucho.transaction.enhancer; 31 32 import com.caucho.java.JavaWriter; 33 import com.caucho.java.gen.CallChain; 34 import com.caucho.java.gen.FilterCallChain; 35 import com.caucho.util.L10N; 36 37 import java.io.IOException ; 38 39 42 public class RequiresNewCallChain extends FilterCallChain { 43 private static final L10N L = new L10N(RequiresNewCallChain.class); 44 45 public RequiresNewCallChain(CallChain next) 46 { 47 super(next); 48 } 49 50 51 59 public void generateCall(JavaWriter out, String retVar, 60 String var, String []args) 61 throws IOException 62 { 63 out.println("com.caucho.transaction.TransactionContainer _caucho_xa_c;"); 64 out.println("_caucho_xa_c = com.caucho.transaction.TransactionContainer.getTransactionContainer();"); 65 out.println("javax.transaction.Transaction _caucho_xa;"); 66 67 out.println("_caucho_xa = _caucho_xa_c.beginRequiresNew();"); 68 69 out.println("try {"); 70 out.pushDepth(); 71 72 super.generateCall(out, retVar, var, args); 73 74 out.popDepth(); 75 out.println("} catch (RuntimeException e) {"); 76 out.println(" _caucho_xa_c.setRollbackOnly(e);"); 77 out.println(" throw e;"); 78 out.println("} finally {"); 79 out.println(" _caucho_xa_c.commit(_caucho_xa);"); 80 out.println("}"); 81 } 82 } 83 | Popular Tags |