1 29 30 package com.caucho.ejb.gen; 31 32 import com.caucho.bytecode.JClass; 33 import com.caucho.bytecode.JMethod; 34 import com.caucho.ejb.cfg.EjbEntityBean; 35 import com.caucho.java.JavaWriter; 36 import com.caucho.java.gen.BaseMethod; 37 import com.caucho.java.gen.CallChain; 38 import com.caucho.util.L10N; 39 40 import javax.ejb.EJBLocalObject ; 41 import javax.ejb.EJBObject ; 42 import java.io.IOException ; 43 44 47 public class EntityCreateMethod extends BaseMethod { 48 private static L10N L = new L10N(EntityCreateMethod.class); 49 50 private JMethod _apiMethod; 51 private String _contextClassName; 52 53 protected EntityCreateMethod(JMethod apiMethod, CallChain call) 54 { 55 super(apiMethod, call); 56 } 57 58 public EntityCreateMethod(EjbEntityBean bean, 59 JMethod apiMethod, 60 JMethod beanCreateMethod, 61 JMethod beanPostCreateMethod, 62 String contextClassName) 63 { 64 this(apiMethod, new EntityCreateCall(bean, 65 beanCreateMethod, 66 beanPostCreateMethod, 67 contextClassName)); 68 69 _apiMethod = apiMethod; 70 71 _contextClassName = contextClassName; 72 } 73 74 79 public void generateCall(JavaWriter out, String []args) 80 throws IOException 81 { 82 91 92 out.println(_contextClassName + " cxt;"); 93 out.println("cxt = new " + _contextClassName + "(_server);"); 94 95 getCall().generateCall(out, null, "cxt", args); 96 97 out.println(); 98 99 JClass retType = _apiMethod.getReturnType(); 100 if (retType.isAssignableTo(EJBObject .class)) 101 out.println("return (" + retType.getName() + ") cxt.getEJBObject();"); 102 else if (retType.isAssignableTo(EJBLocalObject .class)) 103 out.println("return (" + retType.getName() + ") cxt.getEJBLocalObject();"); 104 else 105 throw new RuntimeException (L.l("trying to create unknown type {0}", 106 retType.getName())); 107 108 114 } 115 } 116 | Popular Tags |