mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
- Spring driven (configure in new web api methods)
- Support for authentication - HTTP Basic authentication implementation git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4645 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -17,13 +17,14 @@
|
||||
package org.alfresco.web.api;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.alfresco.web.app.servlet.BaseServlet;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.web.context.support.WebApplicationContextUtils;
|
||||
|
||||
|
||||
/**
|
||||
@@ -35,31 +36,23 @@ public class APIServlet extends BaseServlet
|
||||
{
|
||||
private static final long serialVersionUID = 4209892938069597860L;
|
||||
|
||||
|
||||
// API Services
|
||||
// TODO: Define via configuration
|
||||
// TODO: Provide mechanism to construct service specific urls (ideally from template)
|
||||
private static Pattern TEXT_SEARCH_DESCRIPTION_URI = Pattern.compile("/search/textsearchdescription.xml");
|
||||
private static Pattern SEARCH_URI = Pattern.compile("/search/text");
|
||||
private static APIService TEXT_SEARCH_DESCRIPTION_SERVICE;
|
||||
private static APIService TEXT_SEARCH_SERVICE;
|
||||
private APIServiceMap apiServiceMap;
|
||||
|
||||
|
||||
@Override
|
||||
public void init() throws ServletException
|
||||
{
|
||||
super.init();
|
||||
|
||||
// TODO: Replace with dispatch mechanism (maybe lazy construct)
|
||||
TEXT_SEARCH_DESCRIPTION_SERVICE = new TextSearchDescriptionService();
|
||||
TEXT_SEARCH_DESCRIPTION_SERVICE.init(getServletContext());
|
||||
TEXT_SEARCH_SERVICE = new TextSearchService();
|
||||
TEXT_SEARCH_SERVICE.init(getServletContext());
|
||||
|
||||
// Retrieve all web api services and index by http url & http method
|
||||
ApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
|
||||
apiServiceMap = new APIServiceMap(context);
|
||||
}
|
||||
|
||||
|
||||
// TODO:
|
||||
// - authentication
|
||||
// - authentication (as suggested in http://www.xml.com/pub/a/2003/12/17/dive.html)
|
||||
// - atom
|
||||
// - generator
|
||||
// - author (authenticated)
|
||||
@@ -79,31 +72,24 @@ public class APIServlet extends BaseServlet
|
||||
APIRequest request = new APIRequest(req);
|
||||
APIResponse response = new APIResponse(res);
|
||||
|
||||
// TODO: Handle authentication - HTTP Auth?
|
||||
|
||||
|
||||
//
|
||||
// Execute appropriate service
|
||||
//
|
||||
// TODO: Replace with configurable dispatch mechanism based on HTTP method & uri.
|
||||
// TODO: Handle errors (with appropriate HTTP error responses)
|
||||
|
||||
APIRequest.HttpMethod method = request.getHttpMethod();
|
||||
String uri = request.getPathInfo();
|
||||
|
||||
if (method == APIRequest.HttpMethod.GET && TEXT_SEARCH_DESCRIPTION_URI.matcher(uri).matches())
|
||||
APIService service = apiServiceMap.get(method, uri);
|
||||
if (service != null)
|
||||
{
|
||||
TEXT_SEARCH_DESCRIPTION_SERVICE.execute(request, response);
|
||||
}
|
||||
else if (method == APIRequest.HttpMethod.GET && SEARCH_URI.matcher(uri).matches())
|
||||
{
|
||||
TEXT_SEARCH_SERVICE.execute(request, response);
|
||||
service.execute(request, response);
|
||||
}
|
||||
else
|
||||
{
|
||||
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||
// TODO: add appropriate error detail
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user