This disclosure relates generally to converged address book services and, more particularly, to methods and apparatus to use a network repository as a proxy to exchange converged address book service requests and responses.
Modern user computing devices provide many applications implementing features that utilize personal contact information obtained from one or more address books. A typical address book contains a list of contact entries, with each contact entry comprising a set of contact information. Such information could include, but is not limited to, a name, a physical address, an email address, a telephone number, a personal identification number, an instant messaging identifier, etc., which enables one user to contact another user. Additionally, an address book system may maintain and manage a computing device user's own personal contact information. The Open Mobile Alliance (OMA) is standardizing a Converged Address Book (CAB) enabler to permit users to manage (e.g., add, modify, delete, etc.), publish, subscribe, import, search and share contact information among various computing devices, users, and applications.
Although the following discloses example methods and apparatus including, among other components, software executed on hardware, it should be noted that such methods and apparatus are merely illustrative and should not be considered as limiting. For example, any or all of these hardware and software components could be embodied exclusively in hardware, exclusively in software, exclusively in firmware, or in any combination of hardware, software, and/or firmware. Accordingly, while the following describes example methods and apparatus, persons having ordinary skill in the art will readily appreciate that the examples provided are not the only way to implement such methods and apparatus.
Currently, there are a wide variety of address book systems employing different data formats and communication protocols that are often not interoperable among different computing devices or applications. The Open Mobile Alliance (OMA) is an example of one organization working to define a global standard for interoperable address book management and use. In particular, the OMA is standardizing a converged address book (CAB) enabler to permit users to manage (e.g., add, modify, delete, etc.), publish, subscribe, import, search and share contact information among various computing devices, users, and applications. As used herein, and defined by the OMA, the term “enabler,” in general, refers to any system, technology, etc., supporting development, deployment or operation of a service, such as a CAB service. Example CAB services include, but are not limited to, an address book management service to manage (e.g., add, modify, delete, etc.) address book data stored in a network repository, a personal contact card management service to manage a user's own personal contact information stored in the network repository, a search service to allow searching for available contact information internal or external to the CAB system, a contact share service to allow sharing of contact information among users, a contact subscription service to allow a user to subscribe to changes in contact information maintained by other users, and an import non-CAB address book service to allow for the import of legacy address book information (e.g., from non-CAB address book systems).
Presently, an OMA-compliant CAB system provides a direct interface between a CAB client operating on a user's device and a CAB server in communication with the network data repository to synchronize and manage information in the network (e.g., such as address book data, personal contact card data, as well as other forms of CAB user data, such as user preferences and policies) with read and write operations, among others, which may be relatively simple and implemented using, for example, the OMA data synchronization (DS) SyncML protocol. Other messaging operations, which may be more complex than the foregoing-mentioned read and write operations, to support user requests to invoke other CAB service features, such as the contact share service, the contact subscription service and the import non-CAB address book service, as well as to support their associated responses, may be performed via a network repository acting as proxy instead of directly between the CAB client and the CAB server. However, at present, the actual implementation of the proxy-based exchange of CAB service requests and responses in an OMA-compliant CAB system is undefined.
Accordingly, example methods and apparatus to use a network repository as a proxy to exchange CAB service requests and responses are described herein. The methods and apparatus described herein implement an example CAB service handler messaging framework for exchanging messages between a CAB client and a network repository to enable the CAB client to store service requests at a network repository for later access or retrieval by a CAB server, and for a CAB client to later retrieve associated service responses stored at the network repository by the CAB server. The example CAB service handler messaging framework also supports exchanging messages between a CAB server and the network repository to enable the CAB server to retrieve service requests stored at the network repository by the CAB client, and to store associated service responses at the network repository for retrieval by the CAB client.
In an example implementation, the network repository is implemented by an extensible markup language (XML) document management server (XDMS). In such an example, the methods and apparatus described herein implement an XML document management (XDM) application usage specifying the syntax/schema for formatting the service requests in XML for storage in one or more XML documents at the XDMS. The example XDM application usage is referred to as the CAB service handler application usage and, in an example implementation, supports individual and/or composite service requests which are decomposed by the XDMS proxy into multiple, individual service requests for similar or different services chained or otherwise aggregated together to implement a particular composite service request (e.g., such as a CAB contact share service feature on behalf of a CAB client). Thus, the CAB service handler messaging framework and the associated CAB service handler application usage can decouple the CAB client and the CAB server such that the CAB client needs to spe'cify a minimal amount of information and have limited interaction with the XDMS, in terms of message requests and message payloads, whereas the XDMS and the CAB server perform the bulk of the processing and have more extensive interaction. In this way, at least some example CAB clients can be implemented as thin clients imposing only a small footprint (e.g., in terms of processing, memory requirements, and network bandwidth) on the user's computing device and the associated network.
Turning to the figures, an example CAB system 100 capable of using a network repository as a proxy to exchange CAB service requests and responses is shown in
The CAB server 105 implements one or more CAB services for operating on stored CAB information. For example, the CAB server 105 implements an address book management service, a personal contact card management service, a search service, a contact share service, a contact subscription service and an import non-CAB address book service as described above. In the illustrated example, and as specified by the OMA, the CAB system includes respective direct interface 120 and 125 between the CAB server 105 and the CAB clients 110 and 115 to support the relatively basic interactions necessary to synchronize and manage information in the network (e.g., such as address book data, personal contact card data, as well as other forms of CAB user data, such as user preferences and policies) with simple read and write operations, among others, using the OMA DS SyncML protocol.
However, other services, such as the contact share service, the contact subscription service and the import non-CAB address book service, require relatively more complex messaging (e.g., more complex than read/write-type messaging) to allow a user device implementing a CAB client to send a request to a CAB server to invoke a service, to then allow the CAB server to process the request, and then to subsequently allow the CAB client to receive an associated response to the request. For example, the CAB client 110 may direct a request towards the CAB server 105 to invoke the contact share service to cause contact information for one or more contacts associated with the CAB client 110 to be shared with the CAB client 115.
In another example, the CAB client 110 may direct a request towards the CAB server 105 to invoke the contact subscription service to allow the CAB client 110 to be notified when specified contact information associated with the CAB client 115 is modified. In yet another example, the CAB client 110 may direct a request towards the CAB server 105 to invoke the import non-CAB address book service to import legacy information stored in a non-CAB address book system (not shown) into the CAB system.
The example CAB system 100 of
As mentioned above, the CAB system 100 and, more specifically, the CAB server 105, the CAB clients 110 and 115 and the CAB XDMS 130 prepare and process CAB service requests and responses according to an example CAB service handler application usage. The CAB service handler application usage is a special XDM application usage specifying the schema (e.g., syntax) of the service requests, as well as the semantics (e.g., meaning, behavior, and possibly limits) of the client service requests. The CAB service handler application usage employed by the CAB system 100 also specifies the schema for storing responses and other processing results associated with the CAB service requests such that the CAB clients 110 and 115 can be made aware of the status of each of their respective requests.
Example implementations of the CAB server 105, the CAB client 110, and the CAB XDMS 130 are illustrated in
An example CAB system 200 including example implementations of the CAB server 105, the CAB client 110, and the CAB XDMS 130 of
Also, as shown in the CAB system 200 of
To exchange messaging associated with CAB service requests and responses via the CAB XDMS 130 (acting as a proxy), the CAB client 110 of
The CAB client 110 of
In at least some example implementations, the user request unit 235 can initiate a garbage collection operation to delete previous service requests stored at the CAB XDMS 130 or to request garbage collection on behalf of CAB client 110 at the CAB XDMS 130. Generally, to preserve memory resources, user service requests are not to be stored permanently in the CAB XDMS 130. Accordingly, the user request unit 235 can be configured to automatically (e.g., periodically, based on occurrence of an event, according to a policy, etc.) trigger sending of an appropriate clean-up message to the CAB XDMS 130 to cause expired user service requests to be deleted. Service requests may be considered to be expired, for example, after a certain period of time has expired, after a response to the request has been retrieved by the CAB client 110, etc. Additionally or alternatively, such a garbage collection operation may be initiated by the CAB Server 105 or the CAB XDMS 130 automatically without the intervention of the CAB client 110 based on specified configurations or policies, as described below.
To exchange messaging associated with CAB service requests and responses via the CAB XDMS 130, the CAB server 105 of
The CAB server 105 of
Additionally, the CAB server 105 includes a service request processor 250 to process the retrieved CAB server requests according to the appropriate CAB service (e.g., such as the contact share service, the contact subscription service the import non-CAB address book service, etc.) related to each request. For example, the service request processor 250 can be implemented by corresponding functions, such as the Contact Subscription Function, the Contact Share Function or the Interworking Function defined in OMA's “Converged Address Book Architecture” referenced above. Furthermore, the service request processor 250 can prioritize processing of multiple service requests according to priorities, such as low, normal, high, etc., specified in the requests. Additionally or alternatively, the service request processor 250 can retry processing of a particular user service request (e.g., to handle scenarios in which errors occur during processing) if retries are permitted by the service request.
In at least some example implementations, the service request processor 250 performs a garbage collection operation to initiate or signal a delete operation for previous service requests stored at the CAB XDMS 130. As mentioned above, to preserve memory resources, user service requests are not to be stored permanently in the CAB XDMS 130. Accordingly, the service request processor 250 (in addition or as an alternative to the user request unit 235) can be configured to automatically (e.g., periodically, based on occurrence of an event, according to a policy, etc.) trigger sending of an appropriate clean-up message to the CAB XDMS 130 to cause any expired user service requests to be deleted.
Although the example methods and apparatus are described herein in the context of CAB systems 100 and 200 of
While an example manner of implementing the CAB system 200 has been illustrated in
An example message sequence diagram 300 illustrating example messaging to exchange CAB service requests and responses in the example CAB systems 100 or 200 of
Turning to
Next, the CAB server 105 utilizes a retrieve service request message 315 to retrieve the CAB service request stored by the CAB client 105 at the CAB XDMS 130 via the store user request message 305. For example, the retrieve service request message 315 can correspond to a SIP SUBSCRIBE message subscribing the CAB server 105 to be notified of changes in the data stored on the CAB XDMS 130, with the SIP SUBSCRIBE message having been sent by the server messaging unit 240 of the CAB server 105 to the CAB XDMS 130 sometime before the CAB service request was stored at the CAB XDMS 130. In another example, the retrieve service request message 315 can correspond to an XCAP HTTP GET message sent by the server messaging unit 240 of the CAB server 105 to the CAB XDMS 130 to retrieve the stored CAB service request. Then, the CAB server 105 receives a response message 320 containing the CAB service request from the CAB XDMS 130. For example, the response message 320 can correspond to a SIP NOTIFY message containing the CAB service request (e.g., such as when the retrieve service request message 315 corresponds to a SIP SUBSCRIBE message) or an HTTP 200/OK message accompanied by the CAB service request (e.g., such as when the retrieve service request message 315 corresponds to an XCAP HTTP GET message).
Next, the CAB server 105 invokes the appropriate CAB service(s) indicated in the request (e.g., such as the contact share service, the contact subscription service the import non-CAB address book service, etc.) to processes the retrieved CAB service request with the assistance of one or more of the service request processor units 250. The processing of the CAB service request is indicated by the directed arrow 325. After processing completes, the CAB server 105 sends a store response status message 330 to the CAB XDMS 130 to store an appropriate response to the processed CAB service request, with the response formatted according to the example CAB service handler application usage illustrated in
Next, the CAB client 110 utilizes a retrieve response status message 340 to retrieve the CAB service response stored by the CAB server 110 at the CAB XDMS 130 via the store response status message 330. For example, the retrieve response status message 340 can correspond to a SIP SUBSCRIBE message subscribing the CAB client 110 to be notified of changes in the data stored on the CAB XDMS 130, with the SIP SUBSCRIBE message having been sent by the client messaging unit 225 of the CAB client 110 to the CAB XDMS 130 sometime before the CAB service response was stored at the CAB XDMS 130. In another example, the retrieve response status message 340 can correspond to an XCAP HTTP GET message sent by the client messaging unit 225 of the CAB client 110 to the CAB XDMS 130 to retrieve the stored CAB service response. Then, the CAB client 110 receives a response message 345 containing the CAB service response from the CAB XDMS 130. For example, the response message 345 can correspond to a SIP NOTIFY message containing the CAB service response (e.g., such as when the retrieve response status message 340 corresponds to a SIP SUBSCRIBE message) or an HTTP 200/OK message accompanied by the CAB service response (e.g., such as when the retrieve response status message 340 corresponds to an XCAP HTTP GET message). The example message sequence diagram 300 then ends. Although subscription and notification are illustrated in
Another example message sequence diagram 350 illustrating example messaging to exchange CAB user requests and responses in the example CAB systems 100 or 200 of
Turning to
Next, the CAB XDMS 130 as a result of the apriori subscription from CAB server 105, sends a series of one or more notification messages (368-a/b) toward the CAB server. These notification messages contain the suitably transformed CAB server requests on behalf of a client CAB user request. CAB server 105 then processes each request (and may issue an ACK message—not shown) toward the CAB XDMS 130. As a result of processing each discrete CAB service primitive in order to achieve a particular CAB service user request (represented by the arrows 375-a/b), CAB server 105 issues one or more CAB server response(s) as shown by arrows 380-a/b.
As a result of these responses, the CAB XDMS 130 processes these results on behalf of the CAB server 105 and the CAB client 110. Processing by CAB XDMS 130 may include, for example, transforming CAB server response codes into corresponding CAB service user request/response codes. Processing may also include storing these codes (as shown by arrow 367) or in the scenario whereby a CAB server request primitive has failed, re-initiating the notification process (as shown by arrows 368-a/b-380-a/b inclusive) to the CAB server 105, as a retry mechanism.
Next, the CAB XDMS 130, after resolving a given CAB service user request, permits a CAB client 110 to either retrieve (as shown by arrow 390) or receive notification (not shown in figure) regarding the status or result of CAB service user requests (e.g., assuming a CAB client 110 has subscribed to be notified of these changes either directly or indirectly). The CAB XDMS 130 provides one or more CAB service user requests (arrow 395) in response to the request by CAB client 110.
An example CAB service handler XDM application usage 400 specifying the syntax/schema for formatting CAB service requests and associated responses for storage in one or more XML documents at the CAB XDMS 130 is illustrated in
The example CAB service handler application usage 400 begins with a ServiceHandler element 402 corresponding to the root node of the application usage and representing a container for handling service feature requests and associated responses on a per user basis. Next, each instance of a CAB service request is indicated using a ServiceFeature element 404. A complete CAB service handler XML data structure can include requests for multiple CAB services. The ServiceFeature element 404 is characterized by an ID attribute 406, a GarbageCollection attribute 408, a Priority attribute 410 and an Attempts attribute 412. The ID attribute 406 is an integer value representing a unique ID assigned to a service feature request that is used to correlate requests and responses. The ID attribute 406 is computed on a per user and a per device basis to distinguish CAB service requests from multiple user requests and their respective devices, and therefore should be unique. The GarbageCollection attribute 408 is a boolean value indicating whether the corresponding CAB service request and associated response data stored on the CAB XDMS 130 is to be cleaned-up after processing completes. The Priority attribute 410 indicates a priority of the corresponding CAB service request (e.g., such as high, normal, low, etc.) relative to other service requests. The Attempts attribute 412 is an integer specifying the number of retry attempts the CAB server 105 is to perform to process the CAB service request before indicating the processing of the request has failed.
Examples of using the ServiceHandler element 402, the ServiceFeature element 404, the ID attribute 406, the GarbageCollection attribute 408, the Priority attribute 410 and the Attempts attribute 412 in the context of formatting contact subscription service requests/responses, contact share service requests/responses and import non-CAB address book service requests/responses are shown in
The example CAB service handler application usage 400 further includes a FeatureRequest element 414 to indicate a group of service feature request data corresponding to a particular CAB service request. The particular group of service feature request data included in a particular CAB service request depends on the type of the CAB service request. For example, a service request corresponding to the contact subscription service is indicated using a ContactSubscription element 416. The group of service feature request data following the ContactSubscription element 416 includes a SubscriptionStatus element 418, a UserIdentifier element 420 and a Duration element 422. The SubscriptionStatus element 418 is a response that indicates the status of the subscription request, such as whether the request is pending authorization or has been accepted by the subscribed user. This field is generally managed by the network (e.g., such as by the CAB server 105) and the user (e.g., such as the CAB client 110) can only view the value of this field. Further, the value of this field may be utilized to keep track of a list of other users for which subscription is pending for the particular CAB user. This status information may also be displayed in the corresponding contact entry of the user's address book at the client device. For example, a text or icon similar to “contact subscription pending” may be displayed next to the contact entry to which the CAB user has requested to be subscribed. The UserIdentifier element 420 represents the uniform resource identifier (URI) for the destination user to which the source user wishes to subscribe using the CAB subscription service request. For example, the URI can correspond to an XCAP user identifier (XUI) of the destination user or a list of URIs representing multiple users, or both. The Duration element 422 represents the duration of the subscription period, such as an integer representing the duration in seconds.
An example of using the FeatureRequest element 414, the ContactSubscription element 416, the SubscriptionStatus element 418, the UserIdentifier element 420 and the Duration element 422 in the context of formatting contact subscription service requests/responses is shown in
As another example, a service request corresponding to the contact share service is indicated using a ContactShare element 424. The group of service feature request data following the ContactShare element 424 includes a Format element 425, a ShareStatus element 426, a UserIdentifier element 428, a Data element 430, a PCC element 432 characterized by a ContactView attribute 434, an AB element 436 and a ContactEntryIndex element 438. The Format element 425 indicates the format of the data to be shared. Multiple data formats can be supported, such as CAB format, vCard, hCard, etc., with the default value being vCard in the illustrated example. The ShareStatus element 426 is a response that indicates the status of the share request, such as whether the share request is pending or sent or accepted by the recipient user. This field is generally managed by the network (e.g., such as by the CAB server 105) and the user (e.g., such as the CAB client 110) can only view the value of this field. Further, the value of this field may be utilized to keep track of a list of other users for which share request is pending for the particular CAB user. This status information may also be displayed in the corresponding contact entry of the user's address book at the client device. For example, a text or icon similar to “contact share pending” may be displayed next to the contact entry for which the CAB user has requested to share data. The UserIdentifier element 428 represents the URI for the destination user to which the source user wishes to share CAB data. For example, the URI can correspond to an XUI of the destination user or a list of URIs, or both. The Data element 430 is used to demarcate a particular type of data to be shared, such as the user's personal contact card (PCC), a contact entry in the user's address book (AB), or both. The PCC element 432 indicates that PCC content is to be shared, and is characterized by the ContactView attribute 434 specifying which contact view within the PCC is to be shared. The AB element 436 indicates that AB content is to be shared. The ContactEntryIndex element 438 represents the URI of a contact entry in the address book to be shared. Multiple contact entries are allowed in a single CAB contact share service request.
An example of using the FeatureRequest element 414, the ContactShare element 424, the Format element 425, the ShareStatus element 426, the UserIdentifier element 428, the Data element 430, the PCC element 432, the ContactView attribute 434, the AB element 436 and the ContactEntryIndex element 438 in the context of formatting contact share service requests/responses is shown in
As yet another example, a service request corresponding to the import non-CAB address book service is indicated using an ImportLegacyAB element 440. The group of service feature request data following the ImportLegacyAB element 440 includes an ImportStatus element 442, a DomainID element 444, a Username element 446, a Password element 448 and a Synchronize element 450. The ImportStatus element 442 indicates the status of the import non-CAB address book request, such as whether the request is pending (e.g., such as when the CAB server 105 is in the process of importing the requested data and the import operation is still in progress or requires further user actions to validate the data that is being imported) or accepted (e.g., such as when importing of the data that has been requested by the user to be imported has been completed). The DomainID element 444 represents the domain name of the legacy or non-CAB system from which the non-CAB address book is to be imported. The Username element 446 represents the user's username for accessing the legacy or non-CAB system. The Password element 448 represents the user's password for accessing the legacy or non-CAB system. The Synchronize element 450 indicates whether the import request should remain synchronized or, in other words, whether the user's CAB address book should be kept up-to-date with any subsequent changes made to the imported non-CAB address book that has been requested to be imported. The default value is false to indicate that the operation to import non-CAB data is done only once and it is not periodic in nature.
An example of using the FeatureRequest element 414, the ImportLegacyAB element 440, the ImportStatus element 442, the DomainID element 444, the Username element 446, the Password element 448 and the Synchronize element 450 in the context of formatting import non-CAB address book service requests/responses is shown in
In at least some example implementations, a user service request can be deleted from the CAB service handler XML data structure to indicate that the request is not to be processed for the user (e.g., such as when the user is no longer interested in the CAB feature corresponding to the request). For example, if a user would like to unsubscribe from a contact subscription directed to another user, deletion of the FeatureRequest element 414 and associated group of service feature request data (e.g., the ContactSubscription element 416 and so on) corresponding to this contact subscription from the CAB service handler XML data structure indicates that the user would like to unsubscribe from the contact subscription. Upon noticing this deletion, the CAB server 105 would stop contact subscription processing and perform any other appropriate operations to unsubscribe the user from the contact subscription. Similarly, deletion of the FeatureRequest element 414 and associated group of service feature request data corresponding to a contact share service request (e.g., the ContactShare element 424 and so on) or an import non-CAB address book service request (e.g., the ImportLegacyAB element 440 and so on) from the CAB service handler XML data structure would indicate to the CAB server 105 that performance of the respective service is no longer desired and can be halted.
Further, modification of data related to any of the existing CAB user service requests in the application usage instance document by the CAB client 110 may be treated as a new request by the CAB server 105.
The example CAB service handler application usage 400 further includes a FeatureResponse element 452 to provide service feature response data, which can include an error message or response status for the corresponding CAB service request. For example, the response status can be an ‘OK’ code to indicate that the request has been successfully processed by the CAB server 105. As another example, the response status can be a ‘Processing Error’ code to indicate that the request could not be understood by the server. These and/or other response codes can be specified to accommodate the reporting of various types of status. For example, error codes reported by the FeatureResponse element 452 could be modeled around the Internet Engineering Task Force (IETF) request for comment (RFC) 2616 that defines status codes for the HTTP protocol. IETF RFC 2616, which is publicly available, is hereby incorporated by reference in its entirety. Examples of using the FeatureResponse element 452 in the context of formatting contact subscription service requests/responses, contact share service requests/responses and import non-CAB address book service requests/responses are shown in
Although the example CAB service handler application usage 400 is described in the context of formatting service requests/responses for the CAB contact subscription service, the CAB contact share service and the CAB import of non-CAB address book service, the CAB service handler application usage 400 could be readily adapted to support any service request requiring usage of an XDMS as a proxy for exchanging messages between a client and an application server.
Flowcharts representative of example processes that may be executed to implement any or all of the example CAB system 100, the example CAB system 200, the example CAB server 105, the example CAB client 110, the example CAB XDMS 130, the example core network 205, the example CAB AB XDMS 210, the example CAB PCC XDMS 215, the example CAB user preference XDMS 220, the example client messaging unit 225, the example user request formatter 230, the example user request unit 235, the example server messaging unit 240, the example service request parser 245 and/or the example service request processor 250 are shown in FIGS. 8 and 9A-B. In these examples, the process represented by each flowchart may be implemented by one or more programs comprising machine readable instructions for execution by: (a) a processor, such as the processor 1012 shown in the example computer 1000 discussed below in connection with
For example, any or all of the example CAB system 100, the example CAB system 200, the example CAB server 105, the example CAB client 110, the example CAB XDMS 130, the example core network 205, the example CAB AB XDMS 210, the example CAB PCC XDMS 215, the example CAB user preference XDMS 220, the example client messaging unit 225, the example user request formatter 230, the example user request unit 235, the example server messaging unit 240, the example service request parser 245 and/or the example service request processor 250 could be implemented by any combination of software, hardware, and/or firmware. Also, some or all of the processes represented by the flowcharts of FIGS. 8 and 9A-B may be implemented manually. Further, although the example processes are described with reference to the flowcharts illustrated in FIGS. 8 and 9A-B, many other techniques for implementing the example methods and apparatus described herein may alternatively be used. For example, with reference to the flowcharts illustrated in FIGS. 8 and 9A-B, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, combined and/or subdivided into multiple blocks.
An example process 800 that may be executed to implement functionality in the CAB client 110 for exchanging CAB service request messages and responses with the CAB server 105 via the CAB XDMS 130 acting as a proxy server is illustrated in
With reference to
However, if there are no additional requests to append (block 810), control proceeds to block 815 at which the CAB client 110 sends the store user request message 305 to the CAB XDMS 130 to store the formatted CAB service user request for subsequent retrieval by the CAB server 105. For example, at block 815 the client messaging unit 225 of the CAB client 110 can send an XCAP HTTP PUT message containing the formatted CAB service request as the store user request message 305. Next, control proceeds to block 820 at which the CAB client waits until a response associated with the CAB user service request stored at the CAB XDMS 130 at block 815 is ready for retrieval or until a notification containing the response is received. For example, the CAB client 110 can implement any appropriate waiting mechanism, such as any or all of a polling mechanism, an interrupt mechanism, a timer mechanism, etc., to implement the waiting period at block 820. Furthermore, the CAB client 110 may be configured to perform other processing (e.g., such as executing other instances of the example process 800) during the waiting period at block 820.
After waiting for the response at block 820, control proceeds to block 825 at which the CAB client 110 utilizes a retrieve response status message 340 to retrieve the response associated with the CAB user service request stored at the CAB XDMS 130 at block 815. For example, at block 825 the client messaging unit 225 of the CAB client 110 can receive a SIP NOTIFY message containing the appropriate response triggered due to a previous SIP SUBSCRIBE message implementing the retrieve response status message 340. In another example, the retrieve response status message 340 can correspond to an XCAP HTTP GET message sent by the client messaging unit 225 of the CAB client 110 to the CAB XDMS 130 to retrieve the appropriate stored response. The response retrieved from the CAB XDMS 130 can include, for example, any of the response information specified in the CAB service handler application usage 400 for the CAB service request stored at the CAB XDMS 130 at block 815. Then, after processing at block 825 completes, execution of the process 800 ends.
An example process 900 that may be executed to implement functionality in the CAB server 105 for exchanging CAB service request messages and responses with the CAB client 110 via the CAB XDMS 130 acting as a proxy server is illustrated in
With reference to
Next, at block 910 the CAB server 105 invokes the appropriate CAB service(s) (e.g., such as the contact share service, the contact subscription service the import non-CAB address book service, etc.) indicated in the CAB service request(s) retrieved at block 905 to process the request. For example, at block 910 the service request parser 245 of the CAB server 105 may parse a request retrieved at block 905 according to the CAB service handler application usage 400 to determine how the service request processor 250 is to process the request. After processing of the retrieved request(s) completes at block 910, control proceeds to block 915 at which the CAB server 105 formats a response to the processed request to be stored at the CAB XDMS 130 for subsequent retrieval by the CAB client 110. For example, at block 915 the service request processor 250 of the CAB server 105 formats the response according to the CAB service handler application usage 400.
Next, control proceeds to block 920 at which the CAB server 105 sends the store response status message 330 to the CAB XDMS 130 to store the formatted response associated with the CAB service request retrieved at block 905. The stored response will be retrieved from the CAB XDMS 130 by the CAB client 110 responsible for the CAB service request retrieved at block 905. For example, at block 920 the server messaging unit 240 of the CAB server 105 can send an XCAP HTTP PUT message containing the formatted response as the store response status message 330. After the response is stored at block 920, execution of the process 900 ends.
An example process 950 that may be executed to implement functionality in the CAB server 105 for exchanging CAB service request messages and responses with the CAB client 110 via the CAB XDMS 130 acting as a proxy server is illustrated in
With reference to
Next, at block 975 the CAB server 105 formats the CAB server primitive response. This response is in the format native to the server response (unlike that shown in the example process 900 if
The system 1000 of the instant example includes a processor 1012 such as a general purpose programmable processor. The processor 1012 includes a local memory 1014, and executes coded instructions 1016 present in the local memory 1014 and/or in another memory device. The processor 1012 may execute, among other things, machine readable instructions to implement the processes represented in FIGS. 8 and 9A-B. The processor 1012 may be any type of processing unit, such as one or more microprocessors from the Intel® Centrino® family of microprocessors, the Intel® Pentium® family of microprocessors, the Intel® Itanium® family of microprocessors, and/or the Intel XScale® family of processors. Of course, other processors from other families are also appropriate.
The processor 1012 is in communication with a main memory including a volatile memory 1018 and a non-volatile memory 1020 via a bus 1022. The volatile memory 1018 may be implemented by Static Random Access Memory (SRAM), Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of random access memory device. The non-volatile memory 1020 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 1018, 1020 is typically controlled by a memory controller (not shown).
The computer 1000 also includes an interface circuit 1024. The interface circuit 1024 may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a third generation input/output (3GIO) interface.
One or more input devices 1026 are connected to the interface circuit 1024. The input device(s) 1026 permit a user to enter data and commands into the processor 1012. The input device(s) can be implemented by, for example, a keyboard, a mouse, a touchscreen, a track-pad, a trackball, an isopoint and/or a voice recognition system.
One or more output devices 1028 are also connected to the interface circuit 1024. The output devices 1028 can be implemented, for example, by display devices (e.g., a liquid crystal display, a cathode ray tube display (CRT)), by a printer and/or by speakers. The interface circuit 1024, thus, typically includes a graphics driver card.
The interface circuit 1024 also includes a communication device such as a modem or network interface card to facilitate exchange of data with external computers via a network (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).
The computer 1000 also includes one or more mass storage devices 1030 for storing software and data. Examples of such mass storage devices 1030 include floppy disk drives, hard drive disks, compact disk drives and digital versatile disk (DVD) drives.
As an alternative to implementing the methods and/or apparatus described herein in a system such as the device of
From the foregoing, example methods and apparatus to exchange CAB service requests and response via a network repository acting as a proxy are disclosed. As a further example, the example methods and apparatus described herein can be supported in the OMA CAB specifications as follows.
Structure: In this example, the CAB service handler XDM application usage 400 defines the semantics of the CAB service request and response data stored in the CAB XDMS 130.
Application Unique ID (AUID): In this example, the AUID is to be “org.openmobilealliance.cab-service-handler.”
XML Schema: In this example, a “cab-service-handler” XML document is to be composed according to the CAB service handler XDM application usage 400.
Default Namespace: In this example, the default namespace used in expanding URIs is to be “urn:oma:xml:cab:service-handler.”
Multipurpose Internet Mail Extension (MIME) Type: In this example, the MIME type for the CAB requests document is to be “application/vnd.oma.cab-service-handler+xml.”
Validation Constraints: In this example, the validation constraints are subject to the CAB service handler XDM application usage 400, and may contain other constraints.
Data Semantics: The semantics for this application usage are defined in the Description column of the table shown in
Naming Conventions: The name of the CAB service handler document is to be “Service-Handler.”
Global Documents: In this example, no global documents are envisioned for the CAB service handler XDM application usage 400.
Resource Interdependencies: In this example, the CAB service handler XDM application usage 400 may define additional resource interdependencies.
Authorization Policies: In this example, the authorization policies are to be based on the conventional IETF policy that is commonly used in XDM, with possible extensions as needed in the particular implementations. For example, the SubscriptionStatus, ShareStatus, and ImportStatus fields can be set to read-only for the CAB client 110 while allowing read-write privileges for the CAB server 105.
Search Capabilities: In this example, the data in this application usage can be made accessible to search queries based on XQuery which is already supported in the XDM enabler. The schema of this application usage may need to be configured at the client making the search requests.
Finally, although certain example methods, apparatus and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents.
This patent claims priority from U.S. Provisional Application Ser. No. 61/227,057, entitled “Methods and Apparatus to Use a Network Repository as a Proxy to Exchange Converged Address Book Service Requests and Responses” and filed on Jul. 20, 2009. U.S. Provisional Application Ser. No. 61/227,057 is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61227057 | Jul 2009 | US |