    001    /*
    002     * Copyright 2009 Red Hat, Inc.
    003     * Red Hat licenses this file to you under the Apache License, version
    004     * 2.0 (the "License"); you may not use this file except in compliance
    005     * with the License.  You may obtain a copy of the License at
    006     *    http://www.apache.org/licenses/LICENSE-2.0
    007     * Unless required by applicable law or agreed to in writing, software
    008     * distributed under the License is distributed on an "AS IS" BASIS,
    009     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    010     * implied.  See the License for the specific language governing
    011     * permissions and limitations under the License.
    012     */
    013
    014    package org.hornetq.api.jms.management;
    015
    016    import org.hornetq.utils.json.JSONArray;
    017    import org.hornetq.utils.json.JSONObject;
    018
    019    /**
    020     * Helper class to create Java Objects from the
    021     * JSON serialization returned by {@link JMSServerControl#listConsumersAsJSON(String)} and related methods.
    022     *
    023     * @author <a href="mailto:jmesnil@redhat.com">Jeff Mesnil</a>
    024     */
    025    public class JMSConsumerInfo
    026    {
    027       // Constants -----------------------------------------------------
    028
    029       // Attributes ----------------------------------------------------
    030
    031       private final String consumerID;
    032
    033       private final String connectionID;
    034
    035       private final String destinationName;
    036
    037       private final String destinationType;
    038
    039       private final boolean browseOnly;
    040
    041       private final long creationTime;
    042
    043       private final boolean durable;
    044
    045       private final String filter;
    046
    047       // Static --------------------------------------------------------
    048
    049       /**
    050        * Returns an array of SubscriptionInfo corresponding to the JSON serialization returned
    051        * by {@link TopicControl#listAllSubscriptionsAsJSON()} and related methods.
    052        */
    053       public static JMSConsumerInfo[] from(final String jsonString) throws Exception
    054       {
    055          JSONArray array = new JSONArray(jsonString);
    056          JMSConsumerInfo[] infos = new JMSConsumerInfo[array.length()];
    057          for (int i = 0; i < array.length(); i++)
    058          {
    059             JSONObject sub = array.getJSONObject(i);
    060             JMSConsumerInfo info = new JMSConsumerInfo(sub.getString("consumerID"),
    061                                                        sub.getString("connectionID"),
    062                                                        sub.getString("destinationName"),
    063                                                        sub.getString("destinationType"),
    064                                                        sub.getBoolean("browseOnly"),
    065                                                        sub.getLong("creationTime"),
    066                                                        sub.getBoolean("durable"),
    067                                                        sub.optString("filter", null));
    068             infos[i] = info;
    069          }
    070
    071          return infos;
    072       }
    073
    074       // Constructors --------------------------------------------------
    075
    076       private JMSConsumerInfo(final String consumerID,
    077                               final String connectionID,
    078                                final String destinationName,
    079                                final String destinationType,
    080                                final boolean browseOnly,
    081                                final long creationTime,
    082                                final boolean durable,
    083                                final String filter)
    084       {
    085          this.consumerID = consumerID;
    086          this.connectionID = connectionID;
    087          this.destinationName = destinationName;
    088          this.destinationType = destinationType;
    089          this.browseOnly = browseOnly;
    090          this.creationTime = creationTime;
    091          this.durable = durable;
    092          this.filter = filter;
    093       }
    094
    095       // Public --------------------------------------------------------
    096
    097       public String getConsumerID()
    098       {
    099          return consumerID;
    100       }
    101
    102       public String getConnectionID()
    103       {
    104          return connectionID;
    105       }
    106
    107       public String getDestinationName()
    108       {
    109          return destinationName;
    110       }
    111
    112       public String getDestinationType()
    113       {
    114          return destinationType;
    115       }
    116
    117       public boolean isBrowseOnly()
    118       {
    119          return browseOnly;
    120       }
    121
    122       public long getCreationTime()
    123       {
    124          return creationTime;
    125       }
    126
    127       /**
    128        * @return the durable
    129        */
    130       public boolean isDurable()
    131       {
    132          return durable;
    133       }
    134
    135       public String getFilter()
    136       {
    137          return filter;
    138       }
    139
    140       // Package protected ---------------------------------------------
    141
    142       // Protected -----------------------------------------------------
    143
    144       // Private -------------------------------------------------------
    145
    146       // Inner classes -------------------------------------------------
    147    }