1 29 30 package com.caucho.ejb.cfg; 31 32 import com.caucho.bytecode.JMethod; 33 import com.caucho.config.ConfigException; 34 import com.caucho.ejb.gen.AmberQueryMethod; 35 import com.caucho.ejb.gen.ViewClass; 36 import com.caucho.ejb.ql.EjbSelectQuery; 37 import com.caucho.ejb.ql.QLParser; 38 import com.caucho.java.gen.BaseMethod; 39 import com.caucho.util.L10N; 40 41 44 public class EjbAmberFindMethod extends EjbMethod { 45 private static final L10N L = new L10N(EjbAmberFindMethod.class); 46 47 private String _query; 48 private String _location; 49 50 private boolean _queryLoadsBean = true; 51 52 59 public EjbAmberFindMethod(EjbView view, JMethod apiMethod, 60 String query, String location) 61 throws ConfigException 62 { 63 super(view, apiMethod, null); 64 65 if (apiMethod == null) 66 throw new NullPointerException (); 67 68 _query = query; 69 _location = location; 70 } 71 72 75 public void setQueryLoadsBean(boolean queryLoadsBean) 76 { 77 _queryLoadsBean = queryLoadsBean; 78 } 79 80 83 public BaseMethod assemble(ViewClass viewAssembler, String fullClassName) 84 throws ConfigException 85 { 86 JMethod apiMethod = getApiMethod(); 87 EjbEntityBean bean = (EjbEntityBean) getView().getBean(); 88 89 QLParser parser = new QLParser(bean, 90 apiMethod.getName(), apiMethod, 91 apiMethod.getReturnType()); 92 93 if (_location != null) 94 parser.setLocation(_location); 95 96 EjbSelectQuery query = (EjbSelectQuery) parser.parseQuery(_query); 97 98 String returnEJB = parser.getReturnEJB(); 99 100 if (returnEJB == null || ! returnEJB.equals(bean.getEJBName())) 101 throw new ConfigException(L.l("{0}: '{1}' query must return collection of '{2}'", 102 bean.getEJBClass().getName(), 103 apiMethod.getName(), 104 bean.getLocal().getName())); 105 106 AmberQueryMethod queryMethod = new AmberQueryMethod(bean, 107 getApiMethod(), 108 fullClassName, 109 getViewPrefix(), 110 query); 111 112 queryMethod.setQueryLoadsBean(_queryLoadsBean); 113 114 return queryMethod; 115 } 116 } 117 | Popular Tags |