1 31 32 package org.opencms.jsp; 33 34 import org.opencms.file.CmsResource; 35 import org.opencms.flex.CmsFlexController; 36 import org.opencms.i18n.CmsMessageContainer; 37 import org.opencms.main.CmsLog; 38 import org.opencms.main.OpenCms; 39 40 import java.util.Arrays ; 41 import java.util.List ; 42 43 import javax.servlet.ServletRequest ; 44 import javax.servlet.http.HttpServletRequest ; 45 import javax.servlet.jsp.JspException ; 46 import javax.servlet.jsp.tagext.TagSupport ; 47 48 import org.apache.commons.logging.Log; 49 50 90 public class CmsJspTagInfo extends TagSupport { 91 92 93 private static final long serialVersionUID = -3881095296148023924L; 94 95 96 private static final Log LOG = CmsLog.getLog(CmsJspTagInfo.class); 97 98 99 private static final String [] SYSTEM_PROPERTIES = {"opencms.version", "opencms.url", "opencms.uri", "opencms.webapp", "opencms.webbasepath", "opencms.request.uri", "opencms.request.element.uri", "opencms.request.folder", "opencms.request.encoding", "opencms.request.locale" }; 110 111 112 private static final List SYSTEM_PROPERTIES_LIST = Arrays.asList(SYSTEM_PROPERTIES); 113 114 private String m_property; 116 117 125 public static String infoTagAction(String property, HttpServletRequest req) { 126 127 if (property == null) { 128 CmsMessageContainer errMsgContainer = Messages.get().container(Messages.GUI_ERR_INVALID_INFO_PROP_0); 129 return Messages.getLocalizedMessage(errMsgContainer, req); 130 } 131 CmsFlexController controller = CmsFlexController.getController(req); 132 133 String result = null; 134 switch (SYSTEM_PROPERTIES_LIST.indexOf(property)) { 135 case 0: result = OpenCms.getSystemInfo().getVersionName(); 137 break; 138 case 1: result = req.getRequestURL().toString(); 140 break; 141 case 2: result = req.getRequestURI(); 143 break; 144 case 3: result = OpenCms.getSystemInfo().getWebApplicationName(); 146 break; 147 case 4: result = OpenCms.getSystemInfo().getWebApplicationRfsPath(); 149 break; 150 case 5: result = controller.getCmsObject().getRequestContext().getUri(); 152 break; 153 case 6: result = controller.getCurrentRequest().getElementUri(); 155 break; 156 case 7: result = CmsResource.getParentFolder(controller.getCmsObject().getRequestContext().getUri()); 158 break; 159 case 8: result = controller.getCmsObject().getRequestContext().getEncoding(); 161 break; 162 case 9: result = controller.getCmsObject().getRequestContext().getLocale().toString(); 164 break; 165 default: 166 result = System.getProperty(property); 167 if (result == null) { 168 CmsMessageContainer errMsgContainer = Messages.get().container( 169 Messages.GUI_ERR_INVALID_INFO_PROP_1, 170 property); 171 return Messages.getLocalizedMessage(errMsgContainer, req); 172 } 173 } 174 175 return result; 176 } 177 178 181 public int doStartTag() throws JspException { 182 183 ServletRequest req = pageContext.getRequest(); 184 185 if (CmsFlexController.isCmsRequest(req)) { 187 188 try { 189 String result = infoTagAction(m_property, (HttpServletRequest )req); 190 pageContext.getOut().print(result); 192 } catch (Exception ex) { 193 if (LOG.isErrorEnabled()) { 194 LOG.error(Messages.get().getBundle().key(Messages.ERR_PROCESS_TAG_1, "info"), ex); 195 } 196 throw new JspException (ex); 197 } 198 } 199 return SKIP_BODY; 200 } 201 202 207 public String getProperty() { 208 209 return m_property != null ? m_property : ""; 210 } 211 212 215 public void release() { 216 217 super.release(); 218 m_property = null; 219 } 220 221 226 public void setProperty(String name) { 227 228 if (name != null) { 229 m_property = name.toLowerCase(); 230 } 231 } 232 233 } 234 | Popular Tags |