| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | |
| <html> | |
| <head> | |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
| <title>Using Context Resolvers</title> | |
| <meta http-equiv="Content-Style-Type" content="text/css"> | |
| <meta http-equiv="Content-Script-Type" content="text/javascript"> | |
| <link rel="stylesheet" href="../../book.css" type="text/css"> | |
| <link rel="stylesheet" href="../tutorials/default_style.css"></head> | |
| <body> | |
| <table summary="" cellpadding="0" cellspacing="0" width="100%"> | |
| <tbody><tr valign="bottom"> | |
| <td align="left" width="86%"> | |
| <h1>Using Context Resolvers</h1> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <hr> | |
| <h3>Overview</h3> | |
| Context resolvers are an abstraction used by the JSF EL framework to | |
| decouple sources of context information from the way that information | |
| is created. Common examples of such contexts are: | |
| <ul> | |
| <li>a dynamic web project in an Eclipse workspace</li> | |
| <li>a JSP file in a dynamic web project</li> | |
| <li>a particular absolute offset into an IDocument</li> | |
| </ul> | |
| Context resolvers allow us to derive interesting information from these contexts such as: | |
| <ul> | |
| <li>what is the current IProject?</li> | |
| <li>where are we in an IRegion or DOM tree?</li> | |
| <li>what JSF EL symbols are available at the current IDocument position?</li> | |
| </ul> | |
| <h3>IStructuredDocumentContext</h3> | |
| A particularly useful context is one in an IStructuredDocument. | |
| An IStructuredDocument represents an SSE document that can be | |
| manipulated in a number of different ways including as a regular | |
| IDocument or as a DOM. The IStructuredDocumentContext points to a | |
| specific absolute offset into such a document. The context can | |
| then be passed to various resolvers to determine information about this | |
| position in the document. | |
| <h3>Context Resolvers</h3> | |
| The following is a list of context resolvers that are available as provisional APIs: | |
| <p></p> | |
| <table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2"> | |
| <tbody> | |
| <tr style="font-weight: bold"> | |
| <td style="vertical-align: top;">Resolver Type<br> | |
| </td> | |
| <td style="vertical-align: top;">Purpose<br> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="vertical-align: top;"><a href="../api_reference/org/eclipse/jst/jsf/context/resolver/structureddocument/ITaglibContextResolver.html">ITaglibContextResolver</a></td> | |
| <td style="vertical-align: top;">Resolves taglib information for the current context such | |
| as retrieving the tag library information for the current tag.</td> | |
| </tr> | |
| <tr> | |
| <td style="vertical-align: top;"><a href="../api_reference/org/eclipse/jst/jsf/context/resolver/structureddocument/IWorkspaceContextResolver.html">IWorkspaceContextResolver</a></td> | |
| <td style="vertical-align: top;">Resolves workspace information for the current document | |
| context such as IFile and IProject.</td> | |
| </tr> | |
| <tr> | |
| <td style="vertical-align: top;"><a href="../api_reference/org/eclipse/jst/jsf/context/resolver/structureddocument/IDOMContextResolver.html">IDOMContextResolver</a></td> | |
| <td style="vertical-align: top;">Resolves DOM information for the current context such as | |
| current element and attribute.</td> | |
| </tr> | |
| <tr> | |
| <td style="vertical-align: top;"><a href="../api_reference/org/eclipse/jst/jsf/context/resolver/structureddocument/IMetadataContextResolver.html">IMetadataContextResolver</a></td> | |
| <td style="vertical-align: top;">Resolves meta-data framework information for a given | |
| context.<span style=""> </span>For example, if the current | |
| context resolves to an XML attribute, retrieves meta-data associate with that | |
| attribute/element/uri.</td> | |
| </tr> | |
| <tr> | |
| <td style="vertical-align: top;"><a href="../api_reference/org/eclipse/jst/jsf/designtime/resolver/ISymbolContextResolver.html">ISymbolContextResolver</a></td> | |
| <td style="vertical-align: top;">Determines what symbols are available or valid within the | |
| current context.<span style=""> </span>For example, if | |
| context is an EL expression, what bean names are available?</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h3>Factories</h3> | |
| Factories exist to create both contexts and context resolvers. These are: | |
| <p></p> | |
| <table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2"> | |
| <tbody> | |
| <tr style="font-weight: bold"> | |
| <td style="vertical-align: top;">Factory Name<br> | |
| </td> | |
| <td style="vertical-align: top;">What it does<br> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="vertical-align: top;"><a href="../api_reference/org/eclipse/jst/jsf/context/structureddocument/IStructuredDocumentContextFactory.html">org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContextFactory</a> | |
| </td> | |
| <td style="vertical-align: top;">Creates new IStructuredDocumentContext objects based on a document and offset.<br> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td style="vertical-align: top;"><a href="../api_reference/org/eclipse/jst/jsf/context/resolver/structureddocument/IStructuredDocumentContextResolverFactory.html">org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory</a> | |
| </td> | |
| <td style="vertical-align: top;">Creates a new instances of context resolvers for an IStructuredDocumentContext.<br> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h3>Adding Factory Delegates</h3> | |
| <p>The existing factories can be extended | |
| using factory delegates. A delegate for | |
| IStructuredDocumentContextFactory allows you to extend the existing | |
| factory to create IStructuredDocumentContext's for document contexts | |
| other than an IStructuredDocumentContext and offset. Similarly, | |
| adding factory delegates to IStructuredDocumentContextResolverFactory | |
| allows you to create context resolvers for structured documents other | |
| than those already supported.</p> | |
| <p>Factory delegates are added programmatically be calling | |
| addFactoryDelegate on the appropriate factory. See the JavaDoc | |
| for <a href="../api_reference/org/eclipse/jst/jsf/context/IDelegatingFactory.html">IDelegatingFactory</a> for more details.</p> | |
| </body></html> |