Group project
Objectives
An understanding of
- process-oriented web services
- simple object access protocol (SOAP)
- Apache CXF framework
In this project, you will build the Recommendr web service, which helps you manage your Participatr group subscriptions based on your preferences expressed as keywords.
This stateful service will support the following operations:
- setTermsRequired(terms: list of strings): void; in this and the following operations, the terms are words that occur in the group description
- getTermsRequired(): list of strings
- clearTermsRequired(): void
- setTermsToAvoid(terms: list of strings): void
- getTermsToAvoid(): list of strings
- clearTermsToAvoid(): void
- setMinGroupSize(size: int): void; -1 means no min
- getMinGroupSize(): int
- setMaxGroupSize(size: int): void; -1 means no max
- getMaxGroupSize(): int
- findMatchingGroups(): list of group URIs that match all criteria
- findGroupsToAvoid(): list of group URIs that don't match at least one criterium
- authenticateOnParticipatr(id: string, passwd: string): void // throws exception if unsuccessful
- findMatchingUnsubscribedGroups(): list of URIs of unsubscribed groups that match all criteria (requires prior authentication)
- findSubscribedGroupsToAvoid(): list of URIs of subscribed groups that don't match at least one criterium (requires prior authentication)
- subscribeToMatchingUnsubscribedGroups(): void
- unsubscribeFromSubscribedGroupsToAvoid(): void
- recommendr operation arguments
Extra Credit
For extra credit, use OAuth to give Recommendr access to Participatr accounts without Recommendr having to know the account passwords. (You will have to modify your Participatr service to support OAuth.)
The following nonfunctional requirements apply:
- The project is managed using Maven.
- Both the service and client should be equipped with comprehensive test suites.
- CXF is used to implement the web service and client using wsdl2java (included with CXF).
- Spring session-scoped proxies are used for data in session scope (please see examples).
There are various CXF examples in the repository.
Deliverables- Working code in the repository.
- Also in the repository, detailed documentation of your architecture and implementation.