Version: 1.1.1

org.biomoby.shared
Class LSIDResolver

java.lang.Object
  extended by org.biomoby.shared.LSIDResolver

public class LSIDResolver
extends Object

Implementation of LSID resolution for data and metadata. LSIDs are a OMG standard for referring to pieces of biomedical data using URNs. See http://lsids.sourceforge.net/ Currently, this implementation only supports HTTP GET/POST resolution (resolution for SOAP-based LSID servers is in the works). Essentially, given a URN such as urn:lsid:biomoby.org:servicetype:Retrieval:2001-09-21T16-00-00Z, the resolvcer takes these steps:

  1. Parses out the authority "biomoby.org" from the URN
  2. Uses DNS SRV records to determine if the authority has a LSID resolution server (e.g. moby.ucalgary.ca, port 80 for biomoby.org)
  3. Does an HTTP GET for /authority/ on the server to get the WSDL for the getAvailableServices operation
  4. Calls getAvailableServices on the LSID, which returns a WSDL of things you can do with the LSID
  5. Determines from the WSDL how to retrieve the data or metadata for the LSID
  6. Resolves any lsid:latest predicate in the response (if the requested LSID was versionless)
  7. Returns the URL where the data or metadata can be retrieved
For the moment, the First Well-Known Rule of LSID resolution is ignored because lsid.urn.arpa is not registered in DNS, and all known hosts have DNS SRV records. Steps 1 and 2 described here implement the Second Well-Known Rule in the LSID DDDS process (RFC 3405).


Field Summary
static String AUTHORITY_SERVICE_HTTP_BINDING
           
static String AUTHORITY_SERVICE_SOAP_BINDING
           
static String AUTHORITY_WSDL_LOCATION
           
static String LSID_DATA_NAMESPACE
           
static String LSID_HTTP_NAMESPACE
           
static String LSID_SOAP_NAMESPACE
           
static String LSID_WSDL_NAMESPACE
           
static String SRV_PREFIX
           
 
Constructor Summary
LSIDResolver()
           
 
Method Summary
 URL findAuthorityWSDL(String lsid)
           
static boolean isLSID(String id)
           
 URL resolveDataURL(String lsid)
           
 Dispatch resolveMetadataService(String lsid)
           
 URL resolveMetadataURL(String lsid)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SRV_PREFIX

public static final String SRV_PREFIX
See Also:
Constant Field Values

AUTHORITY_WSDL_LOCATION

public static final String AUTHORITY_WSDL_LOCATION
See Also:
Constant Field Values

AUTHORITY_SERVICE_HTTP_BINDING

public static final String AUTHORITY_SERVICE_HTTP_BINDING
See Also:
Constant Field Values

AUTHORITY_SERVICE_SOAP_BINDING

public static final String AUTHORITY_SERVICE_SOAP_BINDING
See Also:
Constant Field Values

LSID_DATA_NAMESPACE

public static final String LSID_DATA_NAMESPACE
See Also:
Constant Field Values

LSID_HTTP_NAMESPACE

public static final String LSID_HTTP_NAMESPACE
See Also:
Constant Field Values

LSID_SOAP_NAMESPACE

public static final String LSID_SOAP_NAMESPACE
See Also:
Constant Field Values

LSID_WSDL_NAMESPACE

public static final String LSID_WSDL_NAMESPACE
See Also:
Constant Field Values
Constructor Detail

LSIDResolver

public LSIDResolver()
Method Detail

isLSID

public static boolean isLSID(String id)

findAuthorityWSDL

public URL findAuthorityWSDL(String lsid)
                      throws Exception
Throws:
Exception

resolveDataURL

public URL resolveDataURL(String lsid)
                   throws Exception
Throws:
Exception

resolveMetadataURL

public URL resolveMetadataURL(String lsid)
                       throws Exception
Throws:
Exception

resolveMetadataService

public Dispatch resolveMetadataService(String lsid)
                                throws Exception
Throws:
Exception

Version: 1.1.1

Submit a bug or feature
Generated: Sat May 29 04:26:35 EDT 2010