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 }