001
014
015 package com.liferay.portal.jsonwebservice;
016
017 import com.liferay.portal.kernel.servlet.PortletServlet;
018 import com.liferay.portal.kernel.upload.UploadServletRequest;
019 import com.liferay.portal.kernel.util.GetterUtil;
020 import com.liferay.portal.kernel.util.StringPool;
021 import com.liferay.portal.model.User;
022 import com.liferay.portal.security.auth.CompanyThreadLocal;
023 import com.liferay.portal.security.permission.PermissionChecker;
024 import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
025 import com.liferay.portal.security.permission.PermissionThreadLocal;
026 import com.liferay.portal.servlet.JSONServlet;
027 import com.liferay.portal.servlet.UserResolver;
028 import com.liferay.portal.struts.JSONAction;
029 import com.liferay.portal.upload.UploadServletRequestImpl;
030 import com.liferay.portal.util.PortalUtil;
031
032 import java.io.IOException;
033
034 import javax.servlet.RequestDispatcher;
035 import javax.servlet.ServletContext;
036 import javax.servlet.ServletException;
037 import javax.servlet.http.HttpServletRequest;
038 import javax.servlet.http.HttpServletResponse;
039
040
043 public class JSONWebServiceServlet extends JSONServlet {
044
045 @Override
046 public void destroy() {
047 _jsonWebServiceServiceAction.destroy();
048
049 super.destroy();
050 }
051
052 @Override
053 public void service(
054 HttpServletRequest request, HttpServletResponse response)
055 throws IOException, ServletException {
056
057 if (PortalUtil.isMultipartRequest(request)) {
058 UploadServletRequest uploadServletRequest =
059 new UploadServletRequestImpl(request);
060
061 request = uploadServletRequest;
062 }
063
064 String path = GetterUtil.getString(request.getPathInfo());
065
066 if (!path.equals(StringPool.SLASH) && !path.equals(StringPool.BLANK)) {
067 super.service(request, response);
068
069 return;
070 }
071
072 String uri = request.getRequestURI();
073
074 int pos = uri.indexOf("/secure/");
075
076 if (pos != -1) {
077 uri = uri.substring(0, pos) + uri.substring(pos + 7);
078
079 String queryString = request.getQueryString();
080
081 if (queryString != null) {
082 uri = uri.concat(StringPool.QUESTION).concat(queryString);
083 }
084
085 response.sendRedirect(uri);
086
087 return;
088 }
089
090 RequestDispatcher requestDispatcher = request.getRequestDispatcher(
091 "/jsonws.jsp");
092
093 requestDispatcher.forward(request, response);
094 }
095
096 @Override
097 protected JSONAction getJSONAction(ServletContext servletContext) {
098 ClassLoader portletClassLoader =
099 (ClassLoader)servletContext.getAttribute(
100 PortletServlet.PORTLET_CLASS_LOADER);
101
102 _jsonWebServiceServiceAction = new JSONWebServiceServiceAction(
103 servletContext.getServletContextName(), portletClassLoader);
104
105 _jsonWebServiceServiceAction.setServletContext(servletContext);
106
107 return _jsonWebServiceServiceAction;
108 }
109
110 @Override
111 protected void resolveRemoteUser(HttpServletRequest request)
112 throws Exception {
113
114 UserResolver userResolver = new UserResolver(request);
115
116 CompanyThreadLocal.setCompanyId(userResolver.getCompanyId());
117
118 request.setAttribute("companyId", userResolver.getCompanyId());
119
120 User user = userResolver.getUser();
121
122 if (user != null) {
123 PermissionChecker permissionChecker =
124 PermissionCheckerFactoryUtil.create(user, true);
125
126 PermissionThreadLocal.setPermissionChecker(permissionChecker);
127
128 request.setAttribute("user", user);
129 request.setAttribute("userId", user.getUserId());
130 }
131 }
132
133 private JSONWebServiceServiceAction _jsonWebServiceServiceAction;
134
135 }