001 /* 002 * Copyright 1999-2001,2004 The Apache Software Foundation. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.apache.commons.latka.jelly; 018 019 import org.apache.commons.jelly.JellyContext; 020 import org.apache.commons.jelly.Tag; 021 import org.apache.commons.jelly.TagSupport; 022 023 import org.apache.commons.latka.event.LatkaEventInfo; 024 import org.apache.commons.latka.event.LatkaEventListener; 025 import org.apache.commons.latka.http.Request; 026 027 /** 028 * 029 * @author Morgan Delagrange 030 */ 031 public class JellyUtils { 032 033 protected static final String EVENT_INFO_VAR = 034 "latkaEventInfo"; 035 protected static final String EVENT_LISTENER_VAR = 036 "latkaEventListener"; 037 038 protected static JellyUtils _utils = new JellyUtils(); 039 040 /** Creates a new instance of SuiteTag */ 041 public JellyUtils() { 042 } 043 044 public static JellyUtils getInstance() { 045 return _utils; 046 } 047 048 /** 049 * Return the LatkaEventInfo for the context, 050 * or null if none has been set 051 * 052 * @param context Context for the current Jelly script 053 * @return LatkaEventInfo for the context, 054 * or null if none has been set 055 */ 056 public LatkaEventInfo getLatkaEventInfo(JellyContext context) { 057 return (LatkaEventInfo) context.getVariable(EVENT_INFO_VAR); 058 } 059 060 /** 061 * Provide a LatkaEventInfo object. 062 * 063 * @param context 064 * @param listener LatkaEventInfo object 065 */ 066 public void setLatkaEventInfo(JellyContext context, LatkaEventInfo info) { 067 context.setVariable(EVENT_INFO_VAR,info); 068 } 069 070 071 /** 072 * Remove a LatkaEventInfo object. 073 * 074 * @param context 075 */ 076 public void removeLatkaEventInfo(JellyContext context) { 077 context.removeVariable(EVENT_INFO_VAR); 078 } 079 080 /** 081 * Return the LatkaEventListener for the context, 082 * or null if none has been set 083 * 084 * @param context Context for the current Jelly script 085 * @return LatkaEventListener for the context, 086 * or null if none has been set 087 */ 088 public LatkaEventListener getLatkaEventListener(JellyContext context) { 089 return (LatkaEventListener) context.getVariable(EVENT_LISTENER_VAR); 090 } 091 092 /** 093 * Provide a LatkaEventListener object. 094 * 095 * @param context 096 * @param listener LatkaEventListener object 097 */ 098 public void setLatkaEventListener(JellyContext context, LatkaEventListener listener) { 099 context.setVariable(EVENT_LISTENER_VAR,listener); 100 } 101 102 /** 103 * Given a tag, find a parent RequestTag and return 104 * its Request object. 105 * 106 * @param tag Child tag of RequestTag 107 * @return Request 108 */ 109 public Request findParentRequest(Tag tag) { 110 RequestTag requestTag = 111 (RequestTag) TagSupport.findAncestorWithClass(tag.getParent(), RequestTag.class); 112 return requestTag.getRequest(); 113 } 114 }