1
22
23 package com.liferay.taglib.security;
24
25 import com.liferay.portal.kernel.util.BooleanWrapper;
26 import com.liferay.portal.kernel.util.MethodInvoker;
27 import com.liferay.portal.kernel.util.MethodWrapper;
28 import com.liferay.portal.kernel.util.NullWrapper;
29 import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
30 import com.liferay.portal.kernel.util.StringPool;
31
32 import javax.servlet.jsp.JspException;
33 import javax.servlet.jsp.PageContext;
34 import javax.servlet.jsp.tagext.TagSupport;
35
36 import org.apache.commons.logging.Log;
37 import org.apache.commons.logging.LogFactory;
38
39
45 public class PermissionsURLTag extends TagSupport {
46
47 public static String doTag(
48 String redirect, String modelResource,
49 String modelResourceDescription, String resourcePrimKey, String var,
50 boolean writeOutput, PageContext pageContext)
51 throws Exception {
52
53 Object returnObj = null;
54
55 Thread currentThread = Thread.currentThread();
56
57 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
58
59 try {
60 currentThread.setContextClassLoader(
61 PortalClassLoaderUtil.getClassLoader());
62
63 Object redirectWrapper = redirect;
64
65 if (redirectWrapper == null) {
66 redirectWrapper = new NullWrapper(String.class.getName());
67 }
68
69 Object varWrapper = var;
70
71 if (varWrapper == null) {
72 varWrapper = new NullWrapper(String.class.getName());
73 }
74
75 MethodWrapper methodWrapper = new MethodWrapper(
76 _TAG_CLASS, _TAG_DO_END_METHOD,
77 new Object[] {
78 redirectWrapper, modelResource, modelResourceDescription,
79 resourcePrimKey, varWrapper,
80 new BooleanWrapper(writeOutput), pageContext
81 });
82
83 returnObj = MethodInvoker.invoke(methodWrapper);
84 }
85 catch (Exception e) {
86 _log.error(e, e);
87 }
88 finally {
89 currentThread.setContextClassLoader(contextClassLoader);
90 }
91
92 if (returnObj != null) {
93 return returnObj.toString();
94 }
95 else {
96 return StringPool.BLANK;
97 }
98 }
99
100 public int doEndTag() throws JspException {
101 try {
102 doTag(
103 _redirect, _modelResource, _modelResourceDescription,
104 _resourcePrimKey, _var, true, pageContext);
105 }
106 catch (Exception e) {
107 if (e instanceof JspException) {
108 throw (JspException)e;
109 }
110 else {
111 throw new JspException(e);
112 }
113 }
114
115 return EVAL_PAGE;
116 }
117
118 public void setRedirect(String redirect) {
119 _redirect = redirect;
120 }
121
122 public void setModelResource(String modelResource) {
123 _modelResource = modelResource;
124 }
125
126 public void setModelResourceDescription(String modelResourceDescription) {
127 _modelResourceDescription = modelResourceDescription;
128 }
129
130 public void setResourcePrimKey(String resourcePrimKey) {
131 _resourcePrimKey = resourcePrimKey;
132 }
133
134 public void setVar(String var) {
135 _var = var;
136 }
137
138 private static final String _TAG_CLASS =
139 "com.liferay.portal.servlet.taglib.security.PermissionsURLTagUtil";
140
141 private static final String _TAG_DO_END_METHOD = "doEndTag";
142
143 private static Log _log = LogFactory.getLog(PermissionsURLTag.class);
144
145 private String _redirect;
146 private String _modelResource;
147 private String _modelResourceDescription;
148 private String _resourcePrimKey;
149 private String _var;
150
151 }