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 }