// Path: src/com/cjlu/newspublish/utils/ValidateUtils.java
// public final class ValidateUtils {
// 	
// 	private ValidateUtils(){
// 		
// 	}
// 
// 	/**
// 	 * ÅÐ¶Ï×Ö·û´®µÄÓÐÐ§ÐÔ
// 	 */
// 	public static boolean isValid(String str) {
// 		if (str == null || "".equals(str.trim())) {
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	/**
// 	 * ÅÐ¶Ï¼¯ºÏµÄÓÐÐ§ÐÔ
// 	 */
// 	@SuppressWarnings("rawtypes")
// 	public static boolean isValid(Collection collection) {
// 		if (collection == null || collection.isEmpty()) {
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	/**
// 	 * ÅÐ¶ÏÊý×éÊÇ·ñÓÐÐ§
// 	 */
// 	public static boolean isValid(Object[] arr) {
// 		if (arr == null || arr.length == 0) {
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	@SuppressWarnings({ "unchecked", "rawtypes" })
// 	public static boolean hasRight(String nameSpace, String actionName,
// 			HttpServletRequest req, BaseAction baseAction) {
// 		if (!ValidateUtils.isValid(nameSpace) || "/".equals(nameSpace)) {
// 			nameSpace = "";
// 		}
// 		// ½«³¬Á´½ÓµÄ²ÎÊý²¿·ÖÂËµô ?xxxx
// 		if (actionName != null && actionName.contains("?")) {
// 			actionName = actionName.substring(0, actionName.indexOf("?"));
// 		}
// 		String url = nameSpace + "/" + actionName;
// 		HttpSession session = req.getSession();
// 
// 		ServletContext sc = session.getServletContext();
// 		Map<String, Right> map = (Map<String, Right>) sc
// 				.getAttribute("all_rights_map");
// 		Right r = map.get(url);
// 		// ¹«¹²×ÊÔ´?
// 		if (r == null || r.isCommon()) {
// 			return true;
// 		} else {
// 			Admin admin = (Admin) session.getAttribute("admin");
// 			// µÇÂ½?
// 			if (admin == null) {
// 				return false;
// 			} else {
// 				// userAware´¦Àí
// 				if (baseAction != null && baseAction instanceof AdminAware) {
// 					((AdminAware) baseAction).setAdmin(admin);
// 				}
// 				// ÓÐÈ¨ÏÞ?
// 				if (admin.hasRight(r)) {
// 					return true;
// 				} else {
// 					return false;
// 				}
// 			}
// 		}
// 	}
// }


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import org.apache.struts2.components.Component;
import org.apache.struts2.components.Submit;
import com.cjlu.newspublish.utils.ValidateUtils;
import com.opensymphony.xwork2.util.ValueStack;
		return hasRight()?super.doEndTag() : SKIP_BODY;
	}
	
	private boolean hasRight(){
		String ns = getFormNamespace();
		String actionName = getValidActionName();
		return ValidateUtils.hasRight(ns, actionName, (HttpServletRequest)pageContext.getRequest(), null);
	}
	
	/**
	 * »ñµÃËùÔÚ±íµ¥µÄÃû×Ö¿Õ¼ä
	 */
	private String getFormNamespace(){
		//»ñµÃÉÏ¼¶±êÇ©
		Tag ptag = this.getParent();
		while(ptag != null){
			if(ptag instanceof FormTag){
				return ((FormTag)ptag).namespace ;
			}
			else{
				ptag = ptag.getParent();
			}
		}
		return null ;
	}
	
	/**
	 * »ñµÃËùÔÚ±íµ¥µÄÃû×Ö¿Õ¼ä
	 */
	private String getValidActionName(){
// Path: src/com/cjlu/newspublish/utils/ValidateUtils.java
// public final class ValidateUtils {
// 	
// 	private ValidateUtils(){
// 		
// 	}
// 
// 	/**
// 	 * ÅÐ¶Ï×Ö·û´®µÄÓÐÐ§ÐÔ
// 	 */
// 	public static boolean isValid(String str) {
// 		if (str == null || "".equals(str.trim())) {
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	/**
// 	 * ÅÐ¶Ï¼¯ºÏµÄÓÐÐ§ÐÔ
// 	 */
// 	@SuppressWarnings("rawtypes")
// 	public static boolean isValid(Collection collection) {
// 		if (collection == null || collection.isEmpty()) {
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	/**
// 	 * ÅÐ¶ÏÊý×éÊÇ·ñÓÐÐ§
// 	 */
// 	public static boolean isValid(Object[] arr) {
// 		if (arr == null || arr.length == 0) {
// 			return false;
// 		}
// 		return true;
// 	}
// 
// 	@SuppressWarnings({ "unchecked", "rawtypes" })
// 	public static boolean hasRight(String nameSpace, String actionName,
// 			HttpServletRequest req, BaseAction baseAction) {
// 		if (!ValidateUtils.isValid(nameSpace) || "/".equals(nameSpace)) {
// 			nameSpace = "";
// 		}
// 		// ½«³¬Á´½ÓµÄ²ÎÊý²¿·ÖÂËµô ?xxxx
// 		if (actionName != null && actionName.contains("?")) {
// 			actionName = actionName.substring(0, actionName.indexOf("?"));
// 		}
// 		String url = nameSpace + "/" + actionName;
// 		HttpSession session = req.getSession();
// 
// 		ServletContext sc = session.getServletContext();
// 		Map<String, Right> map = (Map<String, Right>) sc
// 				.getAttribute("all_rights_map");
// 		Right r = map.get(url);
// 		// ¹«¹²×ÊÔ´?
// 		if (r == null || r.isCommon()) {
// 			return true;
// 		} else {
// 			Admin admin = (Admin) session.getAttribute("admin");
// 			// µÇÂ½?
// 			if (admin == null) {
// 				return false;
// 			} else {
// 				// userAware´¦Àí
// 				if (baseAction != null && baseAction instanceof AdminAware) {
// 					((AdminAware) baseAction).setAdmin(admin);
// 				}
// 				// ÓÐÈ¨ÏÞ?
// 				if (admin.hasRight(r)) {
// 					return true;
// 				} else {
// 					return false;
// 				}
// 			}
// 		}
// 	}
// }


// Path: src/org/apache/struts2/views/jsp/ui/SubmitTag.java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import org.apache.struts2.components.Component;
import org.apache.struts2.components.Submit;
import com.cjlu.newspublish.utils.ValidateUtils;
import com.opensymphony.xwork2.util.ValueStack;

		return hasRight()?super.doEndTag() : SKIP_BODY;
	}
	
	private boolean hasRight(){
		String ns = getFormNamespace();
		String actionName = getValidActionName();
		return ValidateUtils.hasRight(ns, actionName, (HttpServletRequest)pageContext.getRequest(), null);
	}
	
	/**
	 * »ñµÃËùÔÚ±íµ¥µÄÃû×Ö¿Õ¼ä
	 */
	private String getFormNamespace(){
		//»ñµÃÉÏ¼¶±êÇ©
		Tag ptag = this.getParent();
		while(ptag != null){
			if(ptag instanceof FormTag){
				return ((FormTag)ptag).namespace ;
			}
			else{
				ptag = ptag.getParent();
			}
		}
		return null ;
	}
	
	/**
	 * »ñµÃËùÔÚ±íµ¥µÄÃû×Ö¿Õ¼ä
	 */
	private String getValidActionName(){
		if(ValidateUtils.isValid(action)){