View Javadoc

    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          // lets make a snapshot before we process them
    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  }