1 /***
2 *
3 * Copyright 2004 Protique Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.codehaus.activemq.management;
19
20 import org.codehaus.activemq.ActiveMQSession;
21 import org.codehaus.activemq.util.IndentPrinter;
22
23 import javax.management.j2ee.statistics.JMSConnectionStats;
24 import javax.management.j2ee.statistics.JMSSessionStats;
25 import java.util.List;
26
27 /***
28 * Statistics for a JMS connection
29 *
30 * @version $Revision: 1.4 $
31 */
32 public class JMSConnectionStatsImpl extends StatsImpl implements JMSConnectionStats {
33 private List sessions;
34 private boolean transactional;
35
36 public JMSConnectionStatsImpl(List sessions, boolean transactional) {
37 this.sessions = sessions;
38 this.transactional = transactional;
39 }
40
41 public JMSSessionStats[] getSessions() {
42
43 Object[] sessionArray = sessions.toArray();
44 int size = sessionArray.length;
45 JMSSessionStats[] answer = new JMSSessionStats[size];
46 for (int i = 0; i < size; i++) {
47 ActiveMQSession session = (ActiveMQSession) sessionArray[i];
48 answer[i] = session.getSessionStats();
49 }
50 return answer;
51 }
52
53 public boolean isTransactional() {
54 return transactional;
55 }
56
57 public String toString() {
58 StringBuffer buffer = new StringBuffer("connection{ ");
59 JMSSessionStats[] array = getSessions();
60 for (int i = 0; i < array.length; i++) {
61 if (i > 0) {
62 buffer.append(", ");
63 }
64 buffer.append(Integer.toString(i));
65 buffer.append(" = ");
66 buffer.append(array[i]);
67 }
68 buffer.append(" }");
69 return buffer.toString();
70 }
71
72 public void dump(IndentPrinter out) {
73 out.printIndent();
74 out.println("connection {");
75 out.incrementIndent();
76 JMSSessionStats[] array = getSessions();
77 for (int i = 0; i < array.length; i++) {
78 JMSSessionStatsImpl sessionStat = (JMSSessionStatsImpl) array[i];
79 out.printIndent();
80 out.println("session {");
81 out.incrementIndent();
82 sessionStat.dump(out);
83 out.decrementIndent();
84 out.printIndent();
85 out.println("}");
86 }
87 out.decrementIndent();
88 out.printIndent();
89 out.println("}");
90 out.flush();
91 }
92 }