001    /*
002     * Copyright 2010 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     * A JMSConnectionInfo
021     *
022     * @author jmesnil
023     *
024     *
025     */
026    public class JMSConnectionInfo
027    {
028    
029       // Constants -----------------------------------------------------
030    
031       // Attributes ----------------------------------------------------
032    
033       private final String connectionID;
034    
035       private final String clientAddress;
036    
037       private final long creationTime;
038    
039       private final String clientID;
040    
041       private final String username;
042    
043    
044       // Static --------------------------------------------------------
045    
046       public static JMSConnectionInfo[] from(final String jsonString) throws Exception
047       {
048          JSONArray array = new JSONArray(jsonString);
049          JMSConnectionInfo[] infos = new JMSConnectionInfo[array.length()];
050          for (int i = 0; i < array.length(); i++)
051          {
052             JSONObject obj = array.getJSONObject(i);
053             String cid = obj.isNull("clientID") ? null : obj.getString("clientID");
054             String uname = obj.isNull("principal") ? null : obj.getString("principal");
055    
056             JMSConnectionInfo info = new JMSConnectionInfo(obj.getString("connectionID"),
057                                                            obj.getString("clientAddress"),
058                                                            obj.getLong("creationTime"),
059                                                            cid,
060                                                            uname);
061             infos[i] = info;
062          }
063          return infos;
064       }
065    
066       // Constructors --------------------------------------------------
067    
068       private JMSConnectionInfo(final String connectionID,
069                                 final String clientAddress,
070                                 final long creationTime,
071                                 final String clientID,
072                                 final String username)
073       {
074          this.connectionID = connectionID;
075          this.clientAddress = clientAddress;
076          this.creationTime = creationTime;
077          this.clientID = clientID;
078          this.username = username;
079       }
080    
081       // Public --------------------------------------------------------
082    
083       public String getConnectionID()
084       {
085          return connectionID;
086       }
087    
088       public String getClientAddress()
089       {
090          return clientAddress;
091       }
092    
093       public long getCreationTime()
094       {
095          return creationTime;
096       }
097    
098       public String getClientID()
099       {
100          return clientID;
101       }
102    
103       public String getUsername()
104       {
105          return username;
106       }
107    
108       // Package protected ---------------------------------------------
109    
110       // Protected -----------------------------------------------------
111    
112       // Private -------------------------------------------------------
113    
114       // Inner classes -------------------------------------------------
115    
116    }