Skip to content

Resource download architecture

JGuillemotte edited this page Mar 15, 2013 · 4 revisions

Why

Downloading resources is useful to

  • downloading WSDLs found on endpoints in discoveries
  • downloading any kind of (file) content resources from the EasySOA Registry, including formal SOA models such as especially WSDLs
  • downloading any kind of (file) content resources found on any other website that stores either unstructured content (discovery / import from wiki or bare ECM / DMS) or structured content (SOA artifact repositories, SOA runtime registries, anything allowing HTTP download), and again including WSDLs

This requires to get access to the resource to download, such as having the right authentication.

The Resource download architecture's goal is to provide this access in a configurable and pluggable manner :

  • pluggable access & authentication "domains", chosen notably using URL pattern
  • either one domain per site (ex. EasySOA Registry / Nuxeo or other known SOA repositories / registries)
  • or one domain per authentication method whatever the site (using some routing magic)

How

  • top-level ResourceDownloadService : java (& REST)
  • implemented by RoutingResourceDownloadServiceImpl
  • which delegates to plugged leaf ResourceDownloadService according to the strategy. For the only strategy is to match a given URL pattern, by extending AbstractTODO (TODO move to have a single UrlPatternResourceDownloadServiceImpl delegating to XXXResourceDownloadServices, to allow users to write MyCustomResourceDownloadServiceImpl). Possible concrete implementations are :
  • Nuxeo[UrlPattern]WebResourceDownloadServiceImpl . Downloads from a delegate REST NuxeoResourceDownloadService (TODO rename) authentified by a FraSCAti Intent (BasicAuth). TODO if possible make it generic for any single given website, if not enrich these info with the why.
  • Default[UrlPattern]WebResourceDownloadServiceImpl . For now downloads using URL.openConnection(). TODO add authentication by moving to a REST binding authentified by a FraSCAti Intent (BasicAuth, SSL / TLS...) thanks to an interceptor Intent setting Message.ENDPOINT_ADDRESS.

TODO schema

Clone this wiki locally