1
22
23 package com.liferay.taglib.ui;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.util.MethodInvoker;
28 import com.liferay.portal.kernel.util.MethodWrapper;
29 import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
30 import com.liferay.portal.kernel.util.StringPool;
31 import com.liferay.taglib.util.IncludeTag;
32
33 import javax.servlet.jsp.JspException;
34 import javax.servlet.jsp.PageContext;
35
36
42 public class WriteTag extends IncludeTag {
43
44 public static String doTag(
45 Object bean, String property, PageContext pageContext)
46 throws Exception {
47
48 return doTag(_PAGE, bean, property, pageContext);
49 }
50
51 public static String doTag(
52 String page, Object bean, String property, PageContext pageContext)
53 throws Exception {
54
55 Object returnObj = null;
56
57 Thread currentThread = Thread.currentThread();
58
59 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
60
61 try {
62 currentThread.setContextClassLoader(
63 PortalClassLoaderUtil.getClassLoader());
64
65 MethodWrapper methodWrapper = new MethodWrapper(
66 _TAG_CLASS, _TAG_DO_END_METHOD,
67 new Object[] {page, bean, property, pageContext});
68
69 returnObj = MethodInvoker.invoke(methodWrapper);
70 }
71 catch (Exception e) {
72 _log.error(e, e);
73 }
74 finally {
75 currentThread.setContextClassLoader(contextClassLoader);
76 }
77
78 if (returnObj != null) {
79 return returnObj.toString();
80 }
81 else {
82 return StringPool.BLANK;
83 }
84 }
85
86 public int doEndTag() throws JspException {
87 try {
88 doTag(getPage(), _bean, _property, pageContext);
89 }
90 catch (Exception e) {
91 if (e instanceof JspException) {
92 throw (JspException)e;
93 }
94 else {
95 throw new JspException(e);
96 }
97 }
98
99 return EVAL_PAGE;
100 }
101
102 public void setBean(Object bean) {
103 _bean = bean;
104 }
105
106 public void setProperty(String property) {
107 _property = property;
108 }
109
110 protected String getDefaultPage() {
111 return _PAGE;
112 }
113
114 private static final String _TAG_CLASS =
115 "com.liferay.portal.servlet.taglib.ui.WriteTagUtil";
116
117 private static final String _TAG_DO_END_METHOD = "doEndTag";
118
119 private static final String _PAGE = "/html/taglib/ui/write/page.jsp";
120
121 private static Log _log = LogFactoryUtil.getLog(WriteTag.class);
122
123 private Object _bean;
124 private String _property;
125
126 }