001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.taglib.search;
016    
017    import com.liferay.portal.kernel.bean.BeanPropertiesUtil;
018    import com.liferay.portal.kernel.servlet.DirectRequestDispatcherFactoryUtil;
019    import com.liferay.portal.kernel.util.WebKeys;
020    import com.liferay.taglib.servlet.PipingServletResponse;
021    
022    import java.io.Writer;
023    
024    import javax.servlet.RequestDispatcher;
025    import javax.servlet.ServletContext;
026    import javax.servlet.http.HttpServletRequest;
027    import javax.servlet.http.HttpServletResponse;
028    
029    /**
030     * @author Brian Wing Shun Chan
031     */
032    public class JSPSearchEntry extends SearchEntry {
033    
034            @Override
035            public Object clone() {
036                    JSPSearchEntry jspSearchEntry = new JSPSearchEntry();
037    
038                    BeanPropertiesUtil.copyProperties(this, jspSearchEntry);
039    
040                    return jspSearchEntry;
041            }
042    
043            public String getHref() {
044                    return _href;
045            }
046    
047            public String getPath() {
048                    return _path;
049            }
050    
051            public HttpServletRequest getRequest() {
052                    return _request;
053            }
054    
055            public HttpServletResponse getResponse() {
056                    return _response;
057            }
058    
059            public ServletContext getServletContext() {
060                    return _servletContext;
061            }
062    
063            @Override
064            public void print(
065                            Writer writer, HttpServletRequest request,
066                            HttpServletResponse response)
067                    throws Exception {
068    
069                    request.setAttribute(WebKeys.SEARCH_ENTRY_HREF, getHref());
070    
071                    if (_servletContext != null) {
072                            RequestDispatcher requestDispatcher =
073                                    DirectRequestDispatcherFactoryUtil.getRequestDispatcher(
074                                            _servletContext, _path);
075    
076                            requestDispatcher.include(
077                                    _request, new PipingServletResponse(response, writer));
078                    }
079                    else {
080                            RequestDispatcher requestDispatcher = request.getRequestDispatcher(
081                                    _path);
082    
083                            requestDispatcher.include(request, response);
084                    }
085    
086                    request.removeAttribute(WebKeys.SEARCH_ENTRY_HREF);
087            }
088    
089            public void setHref(String href) {
090                    _href = href;
091            }
092    
093            public void setPath(String path) {
094                    _path = path;
095            }
096    
097            public void setRequest(HttpServletRequest request) {
098                    _request = request;
099            }
100    
101            public void setResponse(HttpServletResponse response) {
102                    _response = response;
103            }
104    
105            public void setServletContext(ServletContext servletContext) {
106                    _servletContext = servletContext;
107            }
108    
109            private String _href;
110            private String _path;
111            private HttpServletRequest _request;
112            private HttpServletResponse _response;
113            private ServletContext _servletContext;
114    
115    }