<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="/wikid/docs/xsl/mwCollections/CollectionWikiData/display.xsl" type="text/xsl"?>

<!--
This resource container holds the product of the resolution request
-->
<resource xmlns:config="info:sid/localhost:CollectionSimpleSchemas:config" xmlns:explain="http://explain.z3950.org/dtd/2.0/" xmlns:srw="http://www.loc.gov/zing/srw/" xmlns:wiki="info:sid/localhost:CollectionSimpleSchemas:wiki" xmlns:wr="http://errol.oclc.org/oai:xmlregistry.oclc.org:errol/WikiRepository" xmlns:xlink="http://www.w3.org/TR/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--
This is an echo of the request information this stylesheet used to produce the resolution product
-->
<uri-context>
<srwIdentifier>info:sid/localhost:CollectionWikiData:ImplementationDetails</srwIdentifier>
<collectionURI>info:sid/localhost:CollectionWikiData</collectionURI>
<repository-identifier>CollectionWikiData</repository-identifier>
<srwURL>http://alcme.oclc.org:80/wikid/search/WikiDb.localhost</srwURL>
<local-identifier>ImplementationDetails</local-identifier>
<action>display</action>
</uri-context>
<!--
This is the collection configuration record
-->
<record xmlns="info:sid/localhost:CollectionSimpleSchemas:config" xsi:schemaLocation="info:sid/localhost:CollectionSimpleSchemas:config http://alcme.oclc.org:80/wikid/raw/info:sid/localhost:CollectionSimpleSchemas:config.xsd">
<repositoryName>WikiD Documentation</repositoryName>
<description>Documentation for the OSS WikiD web application</description>
<localIdentifierType>userAssigned</localIdentifierType>
<adminEmail>mailto:jyoung@oclc.org</adminEmail>
<defaultXSL>no</defaultXSL>
<schemaURI recordPrefix="wiki">info:sid/localhost:CollectionSimpleSchemas:wiki</schemaURI>
<crosswalkSchemaURI recordPrefix="xhtml">info:sid/localhost:CollectionExternalSchemas:xhtml</crosswalkSchemaURI>
<defaultSchemaURI>info:sid/localhost:CollectionExternalSchemas:xhtml</defaultSchemaURI>
</record>
<!--
There is a local-identifier, so this URI must identify an item in a collection
-->
<!--
This is the searchRetrieveResponse for the item's Deposit record
-->
<content>
<searchRetrieveResponse xmlns="http://www.loc.gov/zing/srw/">
<version>1.1</version>
<numberOfRecords>1</numberOfRecords>
<resultSetId>g3l66m</resultSetId>
<resultSetIdleTime>300</resultSetIdleTime>
<records xmlns:ns1="http://www.loc.gov/zing/srw/">
<record>
<recordSchema>http://www.oclc.org/schemas/WikiRepository</recordSchema>
<recordPacking>xml</recordPacking>
<recordData>
<wr:Deposit xmlns="http://www.w3.org/TR/xhtml1/strict">
<wr:browserPath>http://alcme.oclc.org:80/wikid/docs/WikiRepository</wr:browserPath>
<wr:refID>info:sid/localhost:CollectionWikiData:ImplementationDetails</wr:refID>
<wr:refIDPrefix/>
<wr:userName>anonymous</wr:userName>
<wr:collection>CollectionWikiData</wr:collection>
<wr:relativePath>2006/01/11/21</wr:relativePath>
<wr:fullRefID>inf_3asid_2flocalhost_3aCollectionWikiData_3aImplementationDetails_5f20060111214915080</wr:fullRefID>
<wr:mimeType>text/xml</wr:mimeType>
<wr:sort>CollectionWikiData:ImplementationDetails</wr:sort>
<wr:dateCreated>2005-12-12</wr:dateCreated>
<wr:datestamp>2006-01-11</wr:datestamp>
<wr:oldDate/>
</wr:Deposit>
</recordData>
<recordPosition>1</recordPosition>
</record>
</records>
<echoedSearchRetrieveRequest xmlns:ns2="http://www.loc.gov/zing/srw/">
<version>1.1</version>
<query>repos.hasDate = "hasdate" and oai.identifier exact "info:sid/localhost:CollectionWikiData:ImplementationDetails"</query>
<xQuery>
<ns3:searchClause xmlns:ns3="http://www.loc.gov/zing/cql/xcql/">
<ns3:index>cql.any</ns3:index>
<ns3:relation>
<ns3:value>=</ns3:value>
</ns3:relation>
<ns3:term>huh?</ns3:term>
</ns3:searchClause>
</xQuery>
<startRecord>1</startRecord>
<maximumRecords>1</maximumRecords>
<recordPacking>xml</recordPacking>
<recordSchema>default</recordSchema>
</echoedSearchRetrieveRequest>
</searchRetrieveResponse>
<!--
This is the datestamp for the Deposit
-->
<datestamp>2006-01-11</datestamp>
<!--
This is the URL for the content
-->
<contentURL>http://alcme.oclc.org:80/wikid/docs/WikiRepository/2006/01/11/21/inf_3asid_2flocalhost_3aCollectionWikiData_3aImplementationDetails_5f20060111214915080</contentURL>
<!--
Here is the record content
-->
<record>
<record xmlns="info:sid/localhost:CollectionSimpleSchemas:wiki" xsi:schemaLocation="info:sid/localhost:CollectionSimpleSchemas:wiki http://alcme.oclc.org:80/wikid/raw/info:sid/localhost:CollectionSimpleSchemas:wiki.xsd">
<raw>= WikiD Implementation Details =
WikiD is a J2EE Servlet that contains an embedded OpenURL resolver (ORG.oclc.openurl.OpenURLResolver). Requests to the WikiD Servlet are transformed into OpenURL ContextObject''''''s according to this plan:

* Referent: Identifier parsed from the pathInfo
* Requester: HttpServletRequest.getRemoteUser()
* ReferringEntity: HttpServletRequest.getHeader("Referer")
* Referrer: "info:sid/oclc.org:referrer/WikiD"
* ServiceType: HttpServletRequest.getQueryString() (PrivateData)

In my OpenURL 1.0 implementataion, results are produced by running the ContextObject(s) through one or more AbstractService classes. The AbstractService classes invoked depend on the ServiceType entities identified in the ContextObject(s). In the case of WikiD, a single ContextObject with a single PrivateData ServiceType entity is the only possibility (see above).

In the OpenURL 1.0 protocol, PrivateData entities are interpreted relative to the Referrer. The WikiD.props file associates "Referrer: info:sid/oclc.org:referrer/WikiD" with the Java class ORG.oclc.openurl.app.entities.WikiReferrer. This is the class that interprets PrivateData entities in relation to the WikiD Referrer. In this case, we need a class capable of understanding a ServiceType PrivateData entity, which can be obtained via the method WikiReferrer.getPrivateDataService(). This method is hard-coded to return the AbstractService implementation ORG.oclc.openurl.app.services.WikiService, which is capable of processing ServiceType PrivateData requests in relation to the WikiD Referrer.

The constructor for WikiService looks at the value of the ServiceType PrivateData and constructs an AbstractAction class depending on the value of the "action" parameter. At this point, the WikiService class is ready to process the other entities in the ContextObject to produce the desired result.</raw>
</record>
</record>
</content>
<displayContent>
<html xmlns="http://www.w3.org/1999/xhtml">
<body><h1> WikiD Implementation Details </h1>
<a href="/wikid/CollectionWikiData:WikiD">WikiD</a> is a J2EE Servlet that contains an embedded OpenURL resolver (ORG.oclc.openurl.OpenURLResolver). Requests to the <a href="/wikid/CollectionWikiData:WikiD">WikiD</a> Servlet are transformed into OpenURL <a href="/wikid/CollectionWikiData:ContextObject">ContextObject</a>s according to this plan:<p></p>
<ul>
<li> Referent: Identifier parsed from the pathInfo</li>
<li> Requester: <a href="/wikid/CollectionWikiData:HttpServletRequest">HttpServletRequest</a>.getRemoteUser()</li>
<li> <a href="/wikid/CollectionWikiData:ReferringEntity">ReferringEntity</a>: <a href="/wikid/CollectionWikiData:HttpServletRequest">HttpServletRequest</a>.getHeader(&quot;Referer&quot;)</li>
<li> Referrer: &quot;<a href="./info:sid/oclc.org:referrer/WikiD">info:sid/oclc.org:referrer/WikiD</a>&quot;</li>
<li> <a href="/wikid/CollectionWikiData:ServiceType">ServiceType</a>: <a href="/wikid/CollectionWikiData:HttpServletRequest">HttpServletRequest</a>.getQueryString() (<a href="/wikid/CollectionWikiData:PrivateData">PrivateData</a>)</li>
</ul>
<p></p>
In my OpenURL 1.0 implementataion, results are produced by running the <a href="/wikid/CollectionWikiData:ContextObject">ContextObject</a>(s) through one or more <a href="/wikid/CollectionWikiData:AbstractService">AbstractService</a> classes. The <a href="/wikid/CollectionWikiData:AbstractService">AbstractService</a> classes invoked depend on the <a href="/wikid/CollectionWikiData:ServiceType">ServiceType</a> entities identified in the <a href="/wikid/CollectionWikiData:ContextObject">ContextObject</a>(s). In the case of <a href="/wikid/CollectionWikiData:WikiD">WikiD</a>, a single <a href="/wikid/CollectionWikiData:ContextObject">ContextObject</a> with a single <a href="/wikid/CollectionWikiData:PrivateData">PrivateData</a> <a href="/wikid/CollectionWikiData:ServiceType">ServiceType</a> entity is the only possibility (see above).<p></p>
In the OpenURL 1.0 protocol, <a href="/wikid/CollectionWikiData:PrivateData">PrivateData</a> entities are interpreted relative to the Referrer. The <a href="/wikid/CollectionWikiData:WikiD">WikiD</a>.props file associates &quot;Referrer: <a href="./info:sid/oclc.org:referrer/WikiD">info:sid/oclc.org:referrer/WikiD</a>&quot; with the Java class ORG.oclc.openurl.app.entities.<a href="/wikid/CollectionWikiData:WikiReferrer">WikiReferrer</a>. This is the class that interprets <a href="/wikid/CollectionWikiData:PrivateData">PrivateData</a> entities in relation to the <a href="/wikid/CollectionWikiData:WikiD">WikiD</a> Referrer. In this case, we need a class capable of understanding a <a href="/wikid/CollectionWikiData:ServiceType">ServiceType</a> <a href="/wikid/CollectionWikiData:PrivateData">PrivateData</a> entity, which can be obtained via the method <a href="/wikid/CollectionWikiData:WikiReferrer">WikiReferrer</a>.getPrivateDataService(). This method is hard-coded to return the <a href="/wikid/CollectionWikiData:AbstractService">AbstractService</a> implementation ORG.oclc.openurl.app.services.<a href="/wikid/CollectionWikiData:WikiService">WikiService</a>, which is capable of processing <a href="/wikid/CollectionWikiData:ServiceType">ServiceType</a> <a href="/wikid/CollectionWikiData:PrivateData">PrivateData</a> requests in relation to the <a href="/wikid/CollectionWikiData:WikiD">WikiD</a> Referrer.<p></p>
The constructor for <a href="/wikid/CollectionWikiData:WikiService">WikiService</a> looks at the value of the <a href="/wikid/CollectionWikiData:ServiceType">ServiceType</a> <a href="/wikid/CollectionWikiData:PrivateData">PrivateData</a> and constructs an <a href="/wikid/CollectionWikiData:AbstractAction">AbstractAction</a> class depending on the value of the &quot;action&quot; parameter. At this point, the <a href="/wikid/CollectionWikiData:WikiService">WikiService</a> class is ready to process the other entities in the <a href="/wikid/CollectionWikiData:ContextObject">ContextObject</a> to produce the desired result.</body>
</html>
</displayContent>
</resource>
