1 16 17 package org.apache.jetspeed.services.jsp.tags; 18 19 import java.util.Hashtable ; 21 import java.util.StringTokenizer ; 22 23 import javax.servlet.jsp.PageContext ; 25 import javax.servlet.jsp.JspException ; 26 import javax.servlet.jsp.tagext.BodyTagSupport ; 27 28 import org.apache.turbine.util.RunData; 30 import org.apache.turbine.services.jsp.JspService; 31 32 import org.apache.jetspeed.modules.ParameterLoader; 34 import org.apache.jetspeed.services.logging.JetspeedLogFactoryService; 35 import org.apache.jetspeed.services.logging.JetspeedLogger; 36 import org.apache.jetspeed.services.security.PortalResource; 37 import org.apache.jetspeed.om.registry.Parameter; 38 import org.apache.jetspeed.om.registry.PortletEntry; 39 import org.apache.jetspeed.services.JetspeedSecurity; 40 import org.apache.jetspeed.om.security.JetspeedUser; 41 import org.apache.jetspeed.services.Registry; 42 43 69 public class JetspeedParameterStyleTag extends BodyTagSupport 70 { 71 74 private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(JetspeedParameterStyleTag.class.getName()); 75 76 79 private String name = null; 80 81 84 private String style = null; 85 86 89 private String value = null; 90 91 94 private String portlet = null; 95 96 101 public void setName(String value) 102 { 103 this.name = value; 104 } 105 106 111 public void setValue(String value) 112 { 113 this.value = value; 114 } 115 116 121 public void setStyle(String value) 122 { 123 this.style = value; 124 } 125 126 131 public void setPortlet(String value) 132 { 133 this.portlet = value; 134 } 135 136 141 public int doStartTag() throws JspException 142 { 143 return EVAL_BODY_TAG; 144 } 145 146 151 public int doEndTag() throws JspException 152 { 153 RunData data = (RunData) pageContext.getAttribute(JspService.RUNDATA, PageContext.REQUEST_SCOPE); 154 String result = null; 155 156 try 157 { 158 159 String body = this.getBodyContent() == null ? null : this.getBodyContent().getString(); 161 Hashtable options = new Hashtable (); 162 163 if (body != null && !body.trim().equalsIgnoreCase("")) 164 { 165 StringTokenizer st = new StringTokenizer (body, ";"); 166 String prefix = this.name + ".style."; 167 while (st.hasMoreTokens()) 168 { 169 StringTokenizer pair = new StringTokenizer (st.nextToken(), "="); 170 if (pair.countTokens() == 2) 171 { 172 options.put(prefix + pair.nextToken().trim(), pair.nextToken().trim()); 173 } 174 } 175 } 176 177 boolean canAccess = true; 178 179 if (this.portlet != null) 181 { 182 PortletEntry entry = (PortletEntry) Registry.getEntry(Registry.PORTLET, this.portlet); 184 Parameter param = entry.getParameter(this.name); 185 186 canAccess = JetspeedSecurity.checkPermission((JetspeedUser) data.getUser(), 188 new PortalResource(entry, param), 189 JetspeedSecurity.PERMISSION_CUSTOMIZE); 190 } 191 192 if (canAccess) 193 { 194 result = ParameterLoader.getInstance().eval(data, 195 this.style, 196 this.name, 197 this.value, 198 options); 199 } 200 201 pageContext.getOut().print(result); 202 203 204 } 205 catch (Exception e) 206 { 207 result = "<input type=\"text\" name=\"" + this.name + "\" value=\"" + this.value + "\""; 208 209 String message = "Error processing portlet (PortletTag): [" + name + "]"; 210 logger.error(message, e); 211 try 212 { 213 pageContext.getOut().print(result); 214 } 215 catch (java.io.IOException ioe) 216 { 217 } 218 } 219 220 return EVAL_PAGE; 221 } 222 223 } | Popular Tags |