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.core.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 AddressControl#getRolesAsJSON()}.
022     * 
023     * @author <a href="jmesnil@redhat.com">Jeff Mesnil</a>
024     */
025    public class RoleInfo
026    {
027       final private String name;
028    
029       final private boolean send;
030    
031       final private boolean consume;
032    
033       final private boolean createDurableQueue;
034    
035       final private boolean deleteDurableQueue;
036    
037       final private boolean createNonDurableQueue;
038    
039       final private boolean deleteNonDurableQueue;
040    
041       final private boolean manage;
042    
043       /**
044        * Returns an array of RoleInfo corresponding to the JSON serialization returned
045        * by {@link AddressControl#getRolesAsJSON()}.
046        */
047       public static final RoleInfo[] from(final String jsonString) throws Exception
048       {
049          JSONArray array = new JSONArray(jsonString);
050          RoleInfo[] roles = new RoleInfo[array.length()];
051          for (int i = 0; i < array.length(); i++)
052          {
053             JSONObject r = array.getJSONObject(i);
054             RoleInfo role = new RoleInfo(r.getString("name"),
055                                          r.getBoolean("send"),
056                                          r.getBoolean("consume"),
057                                          r.getBoolean("createDurableQueue"),
058                                          r.getBoolean("deleteDurableQueue"),
059                                          r.getBoolean("createNonDurableQueue"),
060                                          r.getBoolean("deleteNonDurableQueue"),
061                                          r.getBoolean("manage"));
062             roles[i] = role;
063          }
064          return roles;
065       }
066    
067       private RoleInfo(final String name,
068                        final boolean send,
069                        final boolean consume,
070                        final boolean createDurableQueue,
071                        final boolean deleteDurableQueue,
072                        final boolean createNonDurableQueue,
073                        final boolean deleteNonDurableQueue,
074                        final boolean manage)
075       {
076          this.name = name;
077          this.send = send;
078          this.consume = consume;
079          this.createDurableQueue = createDurableQueue;
080          this.deleteDurableQueue = deleteDurableQueue;
081          this.createNonDurableQueue = createNonDurableQueue;
082          this.deleteNonDurableQueue = deleteNonDurableQueue;
083          this.manage = manage;
084       }
085    
086       /**
087        * Returns the name of the role.
088        */
089       public String getName()
090       {
091          return name;
092       }
093    
094       /**
095        * Returns whether this role can send messages to the address.
096        */
097       public boolean isSend()
098       {
099          return send;
100       }
101    
102       /**
103        * Returns whether this role can consume messages from queues bound to the address.
104        */
105       public boolean isConsume()
106       {
107          return consume;
108       }
109    
110       /**
111        * Returns whether this role can create durable queues bound to the address.
112        */
113       public boolean isCreateDurableQueue()
114       {
115          return createDurableQueue;
116       }
117    
118       /**
119        * Returns whether this role can delete durable queues bound to the address.
120        */
121       public boolean isDeleteDurableQueue()
122       {
123          return deleteDurableQueue;
124       }
125    
126       /**
127        * Returns whether this role can create non-durable queues bound to the address.
128        */
129       public boolean isCreateNonDurableQueue()
130       {
131          return createNonDurableQueue;
132       }
133    
134       /**
135        * Returns whether this role can delete non-durable queues bound to the address.
136        */
137       public boolean isDeleteNonDurableQueue()
138       {
139          return deleteNonDurableQueue;
140       }
141    
142       /**
143        * Returns whether this role can send management messages to the address.
144        */
145       public boolean isManage()
146       {
147          return manage;
148       }
149    }