com.bradmcevoy.http
Class MultipleResourceFactory

java.lang.Object
  extended by com.bradmcevoy.http.MultipleResourceFactory
All Implemented Interfaces:
ResourceFactory

public class MultipleResourceFactory
extends java.lang.Object
implements ResourceFactory


Field Summary
protected  java.util.List<ResourceFactory> factories
           
protected  java.util.Map<java.lang.String,ResourceFactory> mapOfFactoriesByHost
           
 
Constructor Summary
MultipleResourceFactory()
           
MultipleResourceFactory(java.util.List<ResourceFactory> factories)
           
 
Method Summary
 java.util.Map<java.lang.String,ResourceFactory> getMapOfFactoriesByHost()
          When set will always be used exclusively for any matching hosts
 Resource getResource(java.lang.String host, java.lang.String url)
          Locate an instance of a resource at the given url and on the given host.
 void setMapOfFactoriesByHost(java.util.Map<java.lang.String,ResourceFactory> mapOfFactoriesByHost)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

factories

protected final java.util.List<ResourceFactory> factories

mapOfFactoriesByHost

protected java.util.Map<java.lang.String,ResourceFactory> mapOfFactoriesByHost
Constructor Detail

MultipleResourceFactory

public MultipleResourceFactory()

MultipleResourceFactory

public MultipleResourceFactory(java.util.List<ResourceFactory> factories)
Method Detail

getResource

public Resource getResource(java.lang.String host,
                            java.lang.String url)
Description copied from interface: ResourceFactory
Locate an instance of a resource at the given url and on the given host.

The host argument can be used for applications which implement virtual domain hosting. But portable applications (ie those which do not depend on the host name) should ignore the host argument.

Note that the host will include the port number if it was specified in the request

The path argument is just the part of the request url with protocol, host, port number, and request parameters removed

E.g. for a request

http://milton.ettrema.com:80/downloads/index.html?ABC=123
the corresponding arguments will be:
   host: milton.ettrema.com:80
   path: /downloads/index.html
 
Note that your implementation should not be sensitive to trailing slashes E.g. these paths should return the same resource /apath and /apath/

Return null if there is no associated Resource object.

You should generally avoid using any request information other then that provided in the method arguments. But if you find you need to you can access the request and response objects from HttpManager.request() and HttpManager.response()

Specified by:
getResource in interface ResourceFactory
Parameters:
host - Full host name with port number, e.g. milton.ettrema.com:80
url - Relative path on server, e.g. /downloads/index.html
Returns:
the associated Resource object, or null if there is none.

getMapOfFactoriesByHost

public java.util.Map<java.lang.String,ResourceFactory> getMapOfFactoriesByHost()
When set will always be used exclusively for any matching hosts

Returns:

setMapOfFactoriesByHost

public void setMapOfFactoriesByHost(java.util.Map<java.lang.String,ResourceFactory> mapOfFactoriesByHost)


Copyright © 2011. All Rights Reserved.