added support for opensrf-serializable objects and JSON output of those objects....
[OpenSRF.git] / src / java / org / opensrf / Method.java
1 package org.opensrf;
2 import java.util.List;
3 import java.util.ArrayList;
4 import org.opensrf.util.*;
5
6
7 public class Method implements OSRFSerializable {
8
9     private String name;
10     private List<Object> params;
11
12     /** Register this object */
13     private static OSRFRegistry registry = 
14         OSRFRegistry.registerObject(
15             "osrfMethod", 
16             OSRFRegistry.WireProtocol.HASH, 
17             new String[] {"method", "params"});
18
19
20     public Method(String name) {
21         this.name = name;
22         this.params = new ArrayList<Object>(8);
23     }
24
25     public Method(String name, List<Object> params) {
26         this.name = name;
27         this.params = params;
28     }
29
30     public String getName() {
31         return name;
32     }
33     public List<Object> getParams() {
34        return params; 
35     }
36
37     /**
38      * Pushes a new param object onto the set of params 
39      * @param p The new param to add to the method.
40      */
41     public void addParam(Object p) {
42         this.params.add(p);
43     }
44
45     /**
46      * Implements the generic get() API required by OSRFSerializable
47      */
48     public Object get(String field) {
49         if("method".equals(field))
50             return getName();
51         if("params".equals(field))
52             return getParams();
53         return null;
54     }
55
56     public OSRFRegistry getRegistry() {
57         return registry;
58     }
59
60 }
61