1
22
23 package com.liferay.taglib.security;
24
25 import com.liferay.portal.kernel.util.BooleanWrapper;
26 import com.liferay.portal.kernel.util.LongWrapper;
27 import com.liferay.portal.kernel.util.MethodInvoker;
28 import com.liferay.portal.kernel.util.MethodWrapper;
29 import com.liferay.portal.kernel.util.NullWrapper;
30 import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
31 import com.liferay.portal.kernel.util.StringPool;
32
33 import javax.servlet.jsp.JspException;
34 import javax.servlet.jsp.PageContext;
35 import javax.servlet.jsp.tagext.TagSupport;
36
37 import org.apache.commons.logging.Log;
38 import org.apache.commons.logging.LogFactory;
39
40
46 public class DoAsURLTag extends TagSupport {
47
48 public static String doTag(
49 long doAsUserId, String var, boolean writeOutput,
50 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 varWrapper = var;
64
65 if (varWrapper == null) {
66 varWrapper = new NullWrapper(String.class.getName());
67 }
68
69 MethodWrapper methodWrapper = new MethodWrapper(
70 _TAG_CLASS, _TAG_DO_END_METHOD,
71 new Object[] {
72 new LongWrapper(doAsUserId), varWrapper,
73 new BooleanWrapper(writeOutput), pageContext
74 });
75
76 returnObj = MethodInvoker.invoke(methodWrapper);
77 }
78 catch (Exception e) {
79 _log.error(e, e);
80 }
81 finally {
82 currentThread.setContextClassLoader(contextClassLoader);
83 }
84
85 if (returnObj != null) {
86 return returnObj.toString();
87 }
88 else {
89 return StringPool.BLANK;
90 }
91 }
92
93 public int doEndTag() throws JspException {
94 try {
95 doTag(_doAsUserId, _var, true, pageContext);
96 }
97 catch (Exception e) {
98 if (e instanceof JspException) {
99 throw (JspException)e;
100 }
101 else {
102 throw new JspException(e);
103 }
104 }
105
106 return EVAL_PAGE;
107 }
108
109 public void setDoAsUserId(long doAsUserId) {
110 _doAsUserId = doAsUserId;
111 }
112
113 public void setVar(String var) {
114 _var = var;
115 }
116
117 private static final String _TAG_CLASS =
118 "com.liferay.portal.servlet.taglib.security.DoAsURLTagUtil";
119
120 private static final String _TAG_DO_END_METHOD = "doEndTag";
121
122 private static Log _log = LogFactory.getLog(DoAsURLTag.class);
123
124 private long _doAsUserId;
125 private String _var;
126
127 }