Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "IdAS Registries Proposal"
(→See Also) |
(→IdAS) |
||
Line 34: | Line 34: | ||
===IdAS=== | ===IdAS=== | ||
cid create(cpid, config) | cid create(cpid, config) | ||
+ | |||
IContext connect(cid) | IContext connect(cid) | ||
+ | |||
destroy(cid) | destroy(cid) | ||
Revision as of 00:15, 9 February 2007
Contents
Introduction
This document describes a new approach to handling IdAS context provider configuration issues. It builds on work discussed at the F2F in Provo Jan 2007. This document works top down from use cases.
It proposes a design that divides the registry work into two completely separate registries. One ("IdASRegistry") is a registry of context providers. The other ("IdASContextRegistry") manages the binding between a ContextId and a (ContextProvider, config-data) pair.
Definitions
- a ContextId (aka "cid") an URI identifier of a Context. It may be an XRI. The intent is that cids are globally unique. In practice they may not be.
- IdAS is an attribute service aggregator/abstraction. It manages a set of statically or dynamically installed Context Providers.
- A Context Provider (analogous to a JDBC driver) acts as a factory for IContexts
Use Cases
- create a new (IContext, cid) combination
- connect to existing cid (returns IContext)
- open an IContext
- close an IContext
- destroy a cid
Non-Use Case
- associate existing IContext with cid
Objects
- cid = ContextId (indentifier)
- config = Config data
- IContext = a Context instance
- cpid = id of a context provider (IContextFactory class name)
- cf = a context factory (i.e. IContextFactory)
Services
- IdAS
- IdASContextRegistry --registry of ContextIds
- IdASRegistry --registry of available cps
- cp --a context provider
IdAS
cid create(cpid, config)
IContext connect(cid)
destroy(cid)
cp (Context Provider)
cid create(config) void destroy(config) IContext connect(cid)
IContext
SubjectId open(callbackHandler) void close() void destroy()
IContextFactory
IContext createContext(config)
IdASContextRegistry
void register(cid, cp, config) void unregister(cid) cpid&config resolve(cid)
IdASRegistry
cf getContextFactory(cpid) void registerContextFactory(cf) void removeContextFactory(cf)
IdAS Implementation
cid create(cpid, config) { cf = IdASRegistry.getContextFactory(cpid); cid = cf.createContext(config); IdASContextRegistry.register(cid, cpid, config); return cid; }
IContext connect(cid) { cpid+config = IdASContextRegistry.resolve(cid); cp = IdASRegistry.get(cpid); IContext = cp.connect(config); }
void destroy(cid) { cpid+config = IdASContextRegistry.resolve(cid); cp = IdASRegistry.get(cpid); cp.destroy(config) }
IdASContextRegistry Implementation
cpid&config resolve(cid) { // if cid is an XRI, resolve it to a URL // HTTP get the XRDS document // lookup the "Higgins IdAS Context Provider" service type with it // return cpid&config // // The code to do this is called an XRI Resolver. It already // exists in a Java implementation maintained by OpenXRI // that is available at SourceForge here // The community that works on this is jazzed about helping the // Higgins project implement this. // }
void register(cid, cpid, config) { // if cid is an XRI, resolve it to a URL // HTTP get the XRDS document at URL // find the "Higgins IdAS Context Provider" service type within it // add cpid and config as "service metadata" // HTTP put updated XRDS document // // The code to do this at a "community" level is something that // the XRI TC members have been working on and could get // done for our purposes very quickly. }
See Also
- <need to put links here to relevant XRI documents>
- Higgins Home