
org.simpleframework.http.resource.ResourceEngine Maven / Gradle / Ivy
/*
* ResourceEngine.java February 2001
*
* Copyright (C) 2001, Niall Gallagher
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA
*/
package org.simpleframework.http.resource;
import org.simpleframework.http.Address;
/**
* The ResourceEngine
is used to create implementations
* of the Resource
interface that suit the targeted
* resource. Different Resource
objects may be needed to
* handle different files/directories or even applications. The request
* URI specified must be a HTTP request URI as of RFC 2616.
*
* The meaning of HTTP URI in this instance is the request URI
* from a HTTP/x.x request, as RFC 2616 and RFC 2396 defines it
*
*
* Request-Line = Method SP Request-URI SP HTTP-Version CRLF
*
* Request-URI = "*" | absoluteURI | abs_path | authority
* absoluteURI = "http:" "//" host [":" port] [abs_path ["?" query]]
* abs_path = "/" path_segments
* path_segments = segment *( "/" segment )
*
*
* The ResourceEngine
object must be prepared to accept
* the request URI that come in the form outlined above. These can
* include formats like
*
*
* http://some.host/pub;param=value/bin/index.html?name=value
* http://some.host:8080/index.en_US.html
* some.host:8080/index.html
* /usr/bin;param=value/README.txt
* /usr/bin/compress.tar.gz
*
*
* The ResourceEngine
implementation should be able to
* directly take a Request-URI as defined in RFC 2616 and translate
* this into a Resource
. This keeps the objects semantics
* simple and explicit, although at the expense of performance.
*
* @author Niall Gallagher
*/
public interface ResourceEngine {
/**
* This will look for and retrieve the requested resource. The
* target given must be in the form of a request URI. This will
* locate the resource and return the Resource
* implementation that will handle the target.
*
* @param target the address used to identify the resource
*
* @return this returns the resource used to handle the request
*/
public Resource resolve(Address target);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy