01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: */
19: package de.schlund.pfixcore.webservice.jsgen;
20:
21: import java.io.IOException;
22: import java.io.OutputStream;
23:
24: /**
25: * Javascript method representation.
26: *
27: * @author mleidig@schlund.de
28: */
29: public class JsMethod {
30:
31: JsClass jsClass;
32: String name;
33: JsParam[] params;
34: JsParam retParam;
35: JsBlock body;
36:
37: public JsMethod(JsClass jsClass, String name) {
38: this .jsClass = jsClass;
39: this .name = name;
40: params = new JsParam[0];
41: body = new JsBlock();
42: }
43:
44: public JsClass getJsClass() {
45: return jsClass;
46: }
47:
48: public String getName() {
49: return name;
50: }
51:
52: public void addParam(JsParam param) {
53: JsParam[] upd = new JsParam[params.length + 1];
54: for (int i = 0; i < params.length; i++)
55: upd[i] = params[i];
56: upd[upd.length - 1] = param;
57: params = upd;
58: }
59:
60: public JsParam[] getParams() {
61: return params;
62: }
63:
64: public String getParamList() {
65: StringBuffer sb = new StringBuffer();
66: for (int i = 0; i < params.length; i++) {
67: sb.append(params[i].getName());
68: if (i < params.length - 1)
69: sb.append(",");
70: }
71: return sb.toString();
72: }
73:
74: public JsBlock getBody() {
75: return body;
76: }
77:
78: public void printCode(String indent, OutputStream out)
79: throws IOException {
80: StringBuffer sb = new StringBuffer();
81: sb.append(getJsClass().getName() + ".prototype." + getName()
82: + "=function(" + getParamList() + ") {\n");
83: out.write(sb.toString().getBytes());
84: getBody().printCode(indent, out);
85: out.write("}\n".getBytes());
86: }
87:
88: }
|