1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package org.apache.harmony.tests.org.xml.sax.support;
18 
19 import java.util.ArrayList;
20 import java.util.List;
21 
22 /**
23  * A simple helper class that logs method calls by storing method names and
24  * parameter lists. Used as a foundation for various simple SAX handlers.
25  */
26 public class MethodLogger {
27 
28     /**
29      * The names of the invoked methods, in order.
30      */
31     private List<String> methods = new ArrayList<String>();
32 
33     /**
34      * The parameter lists of the invoked methods, in order.
35      */
36     private List<Object[]> argLists = new ArrayList<Object[]>();
37 
38     /**
39      * Adds a method call with a variable list of arguments.
40      */
add(String method, Object ... args)41     public void add(String method, Object ... args) {
42         Object[] argsCopy = new Object[args.length];
43         System.arraycopy(args, 0, argsCopy, 0, args.length);
44 
45         methods.add(method);
46         argLists.add(argsCopy);
47     }
48 
49     /**
50      * Returns the number of method invoked so far.
51      */
size()52     public int size() {
53         return methods.size();
54     }
55 
56     /**
57      * Returns the method name stored at the given index.
58      */
getMethod(int index)59     public String getMethod(int index) {
60         return methods.get(index);
61     }
62 
63     /**
64      * Returns the name of the last method that was invoked. Returns null if no
65      * method calls have been logged so far.
66      */
getMethod()67     public String getMethod() {
68         return (size() == 0 ? null : getMethod(size() - 1));
69     }
70 
71     /**
72      * Returns the argument array stored at the given index. May be empty, but
73      * not null.
74      */
getArgs(int index)75     public Object[] getArgs(int index) {
76         return argLists.get(index);
77     }
78 
79     /**
80      * Returns the argument array of the last method that was invoked. Returns
81      * null if no method has been invoked so far.
82      */
getArgs()83     public Object[] getArgs() {
84         return (size() == 0 ? null : getArgs(size() - 1));
85     }
86 
87     /**
88      * Clears the log.
89      */
clear()90     public void clear() {
91         methods.clear();
92         argLists.clear();
93     }
94 
95 }
96