diff options
author | Matt Windsor <mattwindsor@btinternet.com> | 2011-03-21 21:54:31 +0000 |
---|---|---|
committer | Matt Windsor <mattwindsor@btinternet.com> | 2011-03-21 21:54:31 +0000 |
commit | df7d7981b56a4560c95ea7e9b194080e93398ecf (patch) | |
tree | b3ae4f02d23ae1f7f4951c776ee8d91b0047dd6f /src/uk/org/ury/server/HttpHandler.java | |
parent | 2d073129857a42ab4195cd433c8be152e357033f (diff) |
GREAT PACKAGE RESHUFFLE: Everything is now organised into frontend, backend and common (to frontend and backend) packages. Things may have been broken. Doc refresh.
Diffstat (limited to 'src/uk/org/ury/server/HttpHandler.java')
-rw-r--r-- | src/uk/org/ury/server/HttpHandler.java | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/src/uk/org/ury/server/HttpHandler.java b/src/uk/org/ury/server/HttpHandler.java deleted file mode 100644 index 948e03a..0000000 --- a/src/uk/org/ury/server/HttpHandler.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * HttpHandler.java - * --------------------- - * - * Part of the URY Server Platform - * - * V0.00 2011/03/20 - * - * (C) 2011 URY Computing - * - * Based on the HttpCore example code, which is available under the - * Apache License, version 2.0; the copyright notice provided with - * said code follows. - * - * ==================================================================== - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - */ - -package uk.org.ury.server; - -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Map; - -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.entity.StringEntity; -import org.apache.http.protocol.HTTP; -import org.apache.http.protocol.HttpContext; -import org.apache.http.protocol.HttpRequestHandler; -import org.json.simple.JSONValue; - -import uk.org.ury.protocol.Directive; -import uk.org.ury.protocol.Status; -import uk.org.ury.server.exceptions.BadRequestException; -import uk.org.ury.server.exceptions.HandleFailureException; -import uk.org.ury.server.exceptions.HandlerNotFoundException; -import uk.org.ury.server.exceptions.HandlerSetupFailureException; -import uk.org.ury.server.exceptions.NotAHandlerException; - -/** - * @author Matt Windsor, Apache Software Foundation - */ -public class HttpHandler extends AbstractRequestHandler implements - HttpRequestHandler { - - /** - * Construct a new HttpHandler. - * - * @param server - * The instance of the URY server responsible for the request. - * - * @param mount - * The directory to which this handler is to be mounted. - */ - public HttpHandler(Server server, String mount) { - super(server, mount); - } - - /** - * Handle a HTTP GET request. - * - * @param request - * The HTTP request. - * - * @param response - * The response that the handler will populate during the - * handling of the request. - * - * @param context - * The HTTP context. - * - * @throws HandlerNotFoundException - * if the client requested a request handler that could not be - * found on the class path. - * - * @throws HandlerSetupFailureException - * if the handler was found but could not be set up (eg does not - * implement appropriate interface or cannot be instantiated). - * - * @throws HandleFailureException - * if an appropriate handler was contacted, but it failed to - * process the request. - * - * @throws BadRequestException - * if the request was malformed or invalid. - * - * @throws NotAHandlerException - * if the class requested to handle the request is not a - * handler. - */ - @Override - public void handleGet(HttpRequest request, HttpResponse response, - HttpContext context) throws HandlerNotFoundException, - HandlerSetupFailureException, HandleFailureException, - BadRequestException, NotAHandlerException { - String path = request.getRequestLine().getUri(); - - if (path.equals("/index.html") || path.equals("/")) { - // Someone's trying to get the index page! - // Humour them. - - response.setStatusLine(request.getProtocolVersion(), - HttpStatus.SC_OK, "OK"); - - StringEntity entity = null; - - try { - entity = new StringEntity(Server.DOCTYPE + Server.INDEX_HTML); - } catch (UnsupportedEncodingException e) { - throw new HandlerSetupFailureException("(Index page)", e); - } - - entity.setContentType("text/html"); - - response.setEntity(entity); - } else { - // Convert this into a URL and fan out the various parts of it. - - URL pathURL = null; - - try { - pathURL = new URL("http://localhost" + path); - } catch (MalformedURLException e) { - throw new BadRequestException(e); - } - - String className = "uk.org.ury" - + pathURL.getPath().replace('/', '.'); - System.out.println(className); - Class<?> newClass = null; - - try { - newClass = Class.forName(className); - } catch (ClassNotFoundException e) { - throw new HandlerNotFoundException(className, e); - } - - if (ApiRequestHandler.class.isAssignableFrom(newClass) == false) - throw new NotAHandlerException(className); - - String queryString = pathURL.getQuery(); - Map<String, String> parameters; - - try { - parameters = parseQueryString(queryString); - } catch (UnsupportedEncodingException e) { - throw new HandlerSetupFailureException(className, e); - } - - Map<String, Object> content = null; - - try { - ApiRequestHandler srh = ((ApiRequestHandler) newClass - .newInstance()); - content = srh.handleGetRequest(parameters, server); - } catch (InstantiationException e) { - throw new HandlerSetupFailureException(className, e); - } catch (IllegalAccessException e) { - throw new HandlerSetupFailureException(className, e); - } - - // Everything seems OK, so make the response. - - response.setStatusLine(request.getProtocolVersion(), - HttpStatus.SC_OK, "OK"); - - content.put(Directive.STATUS.toString(), Status.OK.toString()); - - StringEntity entity = null; - - try { - entity = new StringEntity(JSONValue.toJSONString(content)); - } catch (UnsupportedEncodingException e) { - throw new HandlerSetupFailureException(className, e); - } - - entity.setContentType(HTTP.PLAIN_TEXT_TYPE); - response.setEntity(entity); - } - } -} |