KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > ejb > cfg > EjbEntityFindMethod


1 /*
2  * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3  *
4  * This file is part of Resin(R) Open Source
5  *
6  * Each copy or derived work must preserve the copyright notice and this
7  * notice unmodified.
8  *
9  * Resin Open Source is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Resin Open Source is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17  * of NON-INFRINGEMENT. See the GNU General Public License for more
18  * details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with Resin Open Source; if not, write to the
22  *
23  * Free Software Foundation, Inc.
24  * 59 Temple Place, Suite 330
25  * Boston, MA 02111-1307 USA
26  *
27  * @author Scott Ferguson
28  */

29
30 package com.caucho.ejb.cfg;
31
32 import com.caucho.bytecode.JClass;
33 import com.caucho.bytecode.JMethod;
34 import com.caucho.ejb.gen.*;
35 import com.caucho.java.gen.BaseMethod;
36 import com.caucho.java.gen.CallChain;
37 import com.caucho.util.L10N;
38
39 import java.util.Collection JavaDoc;
40 import java.util.Enumeration JavaDoc;
41 import java.util.Iterator JavaDoc;
42
43 /**
44  * Configuration for a method of a view.
45  */

46 public class EjbEntityFindMethod extends EjbMethod {
47   private static final L10N L = new L10N(EjbEntityFindMethod.class);
48
49   /**
50    * Creates a new method.
51    *
52    * @param view the owning view
53    * @param apiMethod the method from the view
54    * @param implMethod the method from the implementation
55    */

56   public EjbEntityFindMethod(EjbView view,
57                  JMethod apiMethod,
58                  JMethod implMethod)
59   {
60     super(view, apiMethod, implMethod);
61   }
62
63   /**
64    * Creates a new method.
65    *
66    * @param view the owning view
67    * @param apiMethod the method from the view
68    * @param implMethod the method from the implementation
69    */

70   public EjbEntityFindMethod(EjbView view, JMethod apiMethod)
71   {
72     super(view, apiMethod, null);
73   }
74
75   /**
76    * Assembles the method.
77    */

78   public BaseMethod assemble(ViewClass viewAssembler, String JavaDoc fullClassName)
79   {
80     if (((EjbEntityBean) getView().getBean()).isCMP() &&
81     (getImplMethod() == null ||
82      getImplMethod().isAbstract())) {
83       return new AmberFindMethod(getApiMethod(),
84                  fullClassName,
85                  getViewPrefix());
86     }
87     else if (((EjbEntityBean) getView().getBean()).isCMP1() &&
88          (getImplMethod() == null ||
89           getImplMethod().isAbstract())) {
90       return new CMP10FindMethod(getApiMethod(),
91                  fullClassName,
92                  getViewPrefix());
93     }
94     else {
95       BaseMethod method;
96
97       JClass apiReturnType = getApiMethod().getReturnType();
98       
99       if (apiReturnType.isAssignableTo(Collection JavaDoc.class) ||
100       apiReturnType.isAssignableTo(Enumeration JavaDoc.class) ||
101       apiReturnType.isAssignableTo(Iterator JavaDoc.class))
102     method = new EntityFindCollectionMethod(getApiMethod(),
103                         getImplMethod(),
104                         fullClassName,
105                         getViewPrefix());
106       else
107     method = new EntityFindMethod(getApiMethod(),
108                       getImplMethod(),
109                       fullClassName,
110                       getViewPrefix());
111
112       CallChain call = method.getCall();
113
114       if (call != null) {
115     call = new EntityHomeSync(call);
116     call = new EntityHomePoolChain(call);
117
118     method.setCall(assembleCallChain(call));
119       }
120
121       return method;
122     }
123   }
124 }
125
Popular Tags