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    }