1 64 65 package com.jcorporate.expresso.ext.struts.taglib.logic; 66 67 import com.jcorporate.expresso.core.misc.StringUtil; 68 import com.jcorporate.expresso.ext.struts.taglib.ControllerUtils; 69 import org.apache.log4j.Logger; 70 import org.apache.struts.taglib.logic.PresentTag; 71 import org.apache.struts.util.RequestUtils; 72 73 import javax.servlet.http.Cookie ; 74 import javax.servlet.http.HttpServletRequest ; 75 import javax.servlet.jsp.JspException ; 76 import java.security.Principal ; 77 78 79 88 public class ExPresentTag 89 extends PresentTag { 90 private static Logger log = Logger.getLogger("expresso.ext.struts.taglib.logic.ExPresentTag"); 91 92 102 protected boolean condition(boolean desired) 103 throws JspException { 104 if (log.isDebugEnabled()) { 105 log.debug("ExPresentTag begins"); 106 } 107 108 String nameToUse = name; 109 String propertyToUse = property; 110 111 boolean present = false; 113 114 if (cookie != null) { 115 Cookie [] cookies = ((HttpServletRequest ) pageContext.getRequest()).getCookies(); 116 117 if (cookies == null) { 118 cookies = new Cookie [0]; 119 } 120 for (int i = 0; i < cookies.length; i++) { 121 if (cookie.equals(cookies[i].getName())) { 122 present = true; 123 break; 124 } 125 } 126 } else if (header != null) { 127 String value = ((HttpServletRequest ) pageContext.getRequest()).getHeader(header); 128 present = (value != null); 129 } else if (nameToUse != null) { 130 if (log.isDebugEnabled()) { 131 log.debug("Name is not null - looking for property '" + 132 StringUtil.notNull(propertyToUse) + "' in bean '" + 133 StringUtil.notNull(nameToUse) + "'"); 134 } 135 136 present = ControllerUtils.exists(pageContext, nameToUse, 137 propertyToUse); 138 } else if (propertyToUse != null) { 139 if (log.isDebugEnabled()) { 140 log.debug("Property is not null - looking for property '" + 141 StringUtil.notNull(propertyToUse) + "' in bean '" + 142 StringUtil.notNull(nameToUse) + "'"); 143 } 144 145 present = ControllerUtils.exists(pageContext, nameToUse, 146 propertyToUse); 147 } else if (parameter != null) { 148 String value = pageContext.getRequest().getParameter(parameter); 149 present = (value != null); 150 } else if (role != null) { 151 HttpServletRequest request = (HttpServletRequest ) pageContext.getRequest(); 152 present = request.isUserInRole(role); 153 } else if (user != null) { 154 HttpServletRequest request = (HttpServletRequest ) pageContext.getRequest(); 155 Principal principal = request.getUserPrincipal(); 156 present = (principal != null) && 157 user.equals(principal.getName()); 158 } else { 159 JspException e = new JspException (messages.getMessage("logic.selector")); 160 RequestUtils.saveException(pageContext, e); 161 throw e; 162 } 163 164 return (present == desired); 165 } 166 } 167 | Popular Tags |