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 javax.jms.JMSException; 017 import javax.jms.Message; 018 019 import org.hornetq.api.core.management.ManagementHelper; 020 import org.hornetq.api.core.management.ResourceNames; 021 import org.hornetq.jms.client.HornetQMessage; 022 023 /** 024 * Helper class to use JMS messages to manage HornetQ server resources. 025 * 026 * @author <a href="mailto:jmesnil@redhat.com">Jeff Mesnil</a> 027 * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a> 028 * 029 * @version <tt>$Revision$</tt> 030 */ 031 public class JMSManagementHelper 032 { 033 // Constants ----------------------------------------------------- 034 035 // Attributes ---------------------------------------------------- 036 037 // Static -------------------------------------------------------- 038 039 private static org.hornetq.api.core.Message getCoreMessage(final Message jmsMessage) 040 { 041 if (jmsMessage instanceof HornetQMessage == false) 042 { 043 throw new IllegalArgumentException("Cannot send a non HornetQ message as a management message " + jmsMessage.getClass() 044 .getName()); 045 } 046 047 return ((HornetQMessage)jmsMessage).getCoreMessage(); 048 } 049 050 /** 051 * Stores a resource attribute in a JMS message to retrieve the value from the server resource. 052 * 053 * @param message JMS message 054 * @param resourceName the name of the resource 055 * @param attribute the name of the attribute 056 * @throws JMSException if an exception occurs while putting the information in the message 057 * 058 * @see ResourceNames 059 */ 060 public static void putAttribute(final Message message, final String resourceName, final String attribute) throws JMSException 061 { 062 ManagementHelper.putAttribute(JMSManagementHelper.getCoreMessage(message), resourceName, attribute); 063 } 064 065 /** 066 * Stores a operation invocation in a JMS message to invoke the corresponding operation the value from the server resource. 067 * 068 * @param message JMS message 069 * @param resourceName the name of the resource 070 * @param operationName the name of the operation to invoke on the resource 071 * @throws JMSException if an exception occurs while putting the information in the message 072 * 073 * @see ResourceNames 074 */ 075 public static void putOperationInvocation(final Message message, 076 final String resourceName, 077 final String operationName) throws JMSException 078 { 079 try 080 { 081 ManagementHelper.putOperationInvocation(JMSManagementHelper.getCoreMessage(message), 082 resourceName, 083 operationName); 084 } 085 catch (Exception e) 086 { 087 throw JMSManagementHelper.convertFromException(e); 088 } 089 } 090 091 private static JMSException convertFromException(final Exception e) 092 { 093 JMSException jmse = new JMSException(e.getMessage()); 094 095 jmse.initCause(e); 096 097 return jmse; 098 } 099 100 /** 101 * Stores a operation invocation in a JMS message to invoke the corresponding operation the value from the server resource. 102 * 103 * @param message JMS message 104 * @param resourceName the name of the server resource 105 * @param operationName the name of the operation to invoke on the server resource 106 * @param parameters the parameters to use to invoke the server resource 107 * @throws JMSException if an exception occurs while putting the information in the message 108 * 109 * @see ResourceNames 110 */ 111 public static void putOperationInvocation(final Message message, 112 final String resourceName, 113 final String operationName, 114 final Object... parameters) throws JMSException 115 { 116 try 117 { 118 ManagementHelper.putOperationInvocation(JMSManagementHelper.getCoreMessage(message), 119 resourceName, 120 operationName, 121 parameters); 122 } 123 catch (Exception e) 124 { 125 throw JMSManagementHelper.convertFromException(e); 126 } 127 } 128 129 /** 130 * Returns whether the JMS message corresponds to the result of a management operation invocation. 131 */ 132 public static boolean isOperationResult(final Message message) throws JMSException 133 { 134 return ManagementHelper.isOperationResult(JMSManagementHelper.getCoreMessage(message)); 135 } 136 137 /** 138 * Returns whether the JMS message corresponds to the result of a management attribute value. 139 */ 140 public static boolean isAttributesResult(final Message message) throws JMSException 141 { 142 return ManagementHelper.isAttributesResult(JMSManagementHelper.getCoreMessage(message)); 143 } 144 145 /** 146 * Returns whether the invocation of the management operation on the server resource succeeded. 147 */ 148 public static boolean hasOperationSucceeded(final Message message) throws JMSException 149 { 150 return ManagementHelper.hasOperationSucceeded(JMSManagementHelper.getCoreMessage(message)); 151 } 152 153 /** 154 * Returns the result of an operation invocation or an attribute value. 155 * <br> 156 * If an error occurred on the server, {@link #hasOperationSucceeded(Message)} will return {@code false}. 157 * and the result will be a String corresponding to the server exception. 158 */ 159 public static Object[] getResults(final Message message) throws Exception 160 { 161 return ManagementHelper.getResults(JMSManagementHelper.getCoreMessage(message)); 162 } 163 164 /** 165 * Returns the result of an operation invocation or an attribute value. 166 * <br> 167 * If an error occurred on the server, {@link #hasOperationSucceeded(Message)} will return {@code false}. 168 * and the result will be a String corresponding to the server exception. 169 */ 170 public static Object getResult(final Message message) throws Exception 171 { 172 return ManagementHelper.getResult(JMSManagementHelper.getCoreMessage(message)); 173 } 174 175 // Constructors -------------------------------------------------- 176 177 private JMSManagementHelper() 178 { 179 } 180 181 // Public -------------------------------------------------------- 182 183 // Package protected --------------------------------------------- 184 185 // Protected ----------------------------------------------------- 186 187 // Private ------------------------------------------------------- 188 189 // Inner classes ------------------------------------------------- 190 }