View Javadoc
1 /* 2 * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/taglibs/beanshell/src/java/org/apache/commons/jelly/tags/beanshell/BeanShellExpressionFactory.java,v 1.1 2002/05/21 07:58:55 jstrachan Exp $ 3 * $Revision: 1.1 $ 4 * $Date: 2002/05/21 07:58:55 $ 5 * 6 * ==================================================================== 7 * 8 * The Apache Software License, Version 1.1 9 * 10 * Copyright (c) 1999-2002 The Apache Software Foundation. All rights 11 * reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 17 * 1. Redistributions of source code must retain the above copyright 18 * notice, this list of conditions and the following disclaimer. 19 * 20 * 2. Redistributions in binary form must reproduce the above copyright 21 * notice, this list of conditions and the following disclaimer in 22 * the documentation and/or other materials provided with the 23 * distribution. 24 * 25 * 3. The end-user documentation included with the redistribution, if 26 * any, must include the following acknowlegement: 27 * "This product includes software developed by the 28 * Apache Software Foundation (http://www.apache.org/)." 29 * Alternately, this acknowlegement may appear in the software itself, 30 * if and wherever such third-party acknowlegements normally appear. 31 * 32 * 4. The names "The Jakarta Project", "Commons", and "Apache Software 33 * Foundation" must not be used to endorse or promote products derived 34 * from this software without prior written permission. For written 35 * permission, please contact apache@apache.org. 36 * 37 * 5. Products derived from this software may not be called "Apache" 38 * nor may "Apache" appear in their names without prior written 39 * permission of the Apache Group. 40 * 41 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 42 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 43 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 44 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 45 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 46 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 47 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 48 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 49 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 50 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 51 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 52 * SUCH DAMAGE. 53 * ==================================================================== 54 * 55 * This software consists of voluntary contributions made by many 56 * individuals on behalf of the Apache Software Foundation. For more 57 * information on the Apache Software Foundation, please see 58 * <http://www.apache.org/>;. 59 * 60 * $Id: BeanShellExpressionFactory.java,v 1.1 2002/05/21 07:58:55 jstrachan Exp $ 61 */ 62 package org.apache.commons.jelly.tags.jms; 63 64 import javax.jms.Destination; 65 import javax.jms.Message; 66 67 import org.apache.commons.jelly.JellyException; 68 import org.apache.commons.jelly.TagSupport; 69 import org.apache.commons.jelly.XMLOutput; 70 71 import org.apache.commons.messenger.Messenger; 72 73 /*** A tag which creates a JMS message 74 * 75 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a> 76 * @version $Revision: 1.1 $ 77 */ 78 public class MessageTag extends TagSupport { 79 80 /*** The name of the Message variable that is created */ 81 private String var; 82 83 /*** The JMS Message created */ 84 private Message message; 85 86 /*** The Messenger used to access the JMS connection */ 87 private Messenger connection; 88 89 public MessageTag() { 90 } 91 92 /*** Adds a JMS property to the message */ 93 public void addProperty(String name, Object value) throws Exception { 94 Message message = getMessage(); 95 message.setObjectProperty(name, value); 96 } 97 98 // Tag interface 99 //------------------------------------------------------------------------- 100 public void doTag(XMLOutput output) throws Exception { 101 if ( var == null ) { 102 // expose message to parent message consumer 103 SendTag tag = (SendTag) findAncestorWithClass( SendTag.class ); 104 if ( tag == null ) { 105 throw new JellyException("<jms:message> tags must either have the 'var' attribute specified or be used inside a <jms:send> tag"); 106 } 107 tag.setMessage( getMessage() ); 108 } 109 else { 110 context.setVariable( var, getMessage() ); 111 } 112 } 113 114 // Properties 115 //------------------------------------------------------------------------- 116 117 /*** Sets the name of the variable that the message will be exported to */ 118 public void setVar(String var) { 119 this.var = var; 120 } 121 122 public Messenger getConnection() throws Exception { 123 if ( connection == null ) { 124 return findConnection(); 125 } 126 return connection; 127 } 128 129 /*** 130 * Sets the Messenger (the JMS connection pool) that will be used to send the message 131 */ 132 public void setConnection(Messenger connection) { 133 this.connection = connection; 134 } 135 136 public Message getMessage() throws Exception { 137 if ( message == null ) { 138 message = createMessage(); 139 } 140 return message; 141 } 142 143 144 // JMS related properties 145 146 /*** 147 * Sets the JMS Correlation ID to be used on the message 148 */ 149 public void setCorrelationID(String correlationID) throws Exception { 150 getMessage().setJMSCorrelationID(correlationID); 151 } 152 153 /*** 154 * Sets the reply-to destination to add to the message 155 */ 156 public void setReplyTo(Destination destination) throws Exception { 157 getMessage().setJMSReplyTo(destination); 158 } 159 160 /*** 161 * Sets the type name of the message 162 */ 163 public void setType(String type) throws Exception { 164 getMessage().setJMSType(type); 165 } 166 167 // Implementation methods 168 //------------------------------------------------------------------------- 169 protected Messenger findConnection() throws Exception { 170 ConnectionContext messengerTag = (ConnectionContext) findAncestorWithClass( ConnectionContext.class ); 171 if ( messengerTag == null ) { 172 throw new JellyException("This tag must be within a <jms:connection> tag or the 'connection' attribute should be specified"); 173 } 174 return messengerTag.getConnection(); 175 } 176 177 protected Message createMessage() throws Exception { 178 return getConnection().createMessage(); 179 } 180 }

This page was automatically generated by Maven