Monday, September 14, 2009

Project 2c

Due date: Sat, 7 Nov
Group project

Objectives

An understanding of
Functional Requirements

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
Furthermore, you will build a simple command-line client for this service. This client allows you to invoke the operations of the service in the form
  • 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.)

Architectural and Other Nonfunctional Requirements

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.
Please use the repository for your group for collaboration and notify me when your work is ready for me to review. No explicit submission will be required. Submission by email will not be accepted.

No comments: