Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
titleSearchJSONServlet.java
linenumberstrue
collapsetrue
package org.dspace.app.webui.servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.stream.StreamResult;

import org.apache.log4j.Logger;
import org.dspace.authorize.AuthorizeException;
import org.dspace.core.Context;

public class SearchJSONServlet extends DSpaceServlet
{
 private static final long serialVersionUID = 1L;
 /** log4j category */
 private static Logger log = Logger.getLogger(SearchJSONServlet.class);

 /**
 * Create an DSpaceServlet Servlet
 */
 public SearchJSONServlet()
 {
 super();
 }

 protected void doDSPost(Context context, HttpServletRequest request,
 HttpServletResponse response) throws ServletException, IOException,
 SQLException, AuthorizeException
 {
 doDSGet(context, request, response);
 }

 protected void doDSGet(Context context, HttpServletRequest request,
 HttpServletResponse response) throws ServletException, IOException,
 SQLException, AuthorizeException
 {
 String pathString = request.getPathInfo();
 String queryString = request.getQueryString();

 //Build localhost solr query path
 String scheme = request.getScheme();             // http
 String serverName = "127.0.0.1";                 // Solr can only be accessed from localhost
 int serverPort = request.getServerPort();        // 80

 String contextPath = "/solr";
 String servletPath = "/searchJSPUI";
 String parentContextPath = "";
 StringBuffer url =  new StringBuffer();
 url.append(scheme).append("://").append(serverName);
 if (serverPort != 80)
 url.append(":").append(serverPort);
 url.append(parentContextPath).append(contextPath).append(servletPath);
 url.append(pathString + "?");
 url.append(queryString);
 String solrPath = url.toString();

 //Get response from solr server and send it as servlet reponse
 StringBuilder jsonResponse = new StringBuilder();
 URL sorlURL = new URL(solrPath);
 URLConnection solrConnection = sorlURL.openConnection();
 BufferedReader in = new BufferedReader(new InputStreamReader(solrConnection.getInputStream()));
 String inputLine;
 while ((inputLine = in.readLine()) != null)
 jsonResponse.append(inputLine + "\n");
 in.close();
 StreamResult result = new StreamResult(response.getOutputStream());
 response.setHeader("Content-Length", String.valueOf(jsonResponse.length()));
 response.getOutputStream().flush();

 byte[] buf = jsonResponse.toString().getBytes();
 response.setContentLength(buf.length);
 ServletOutputStream servletOut = response.getOutputStream();
 servletOut.write(buf);
 }
}

...