Scheduling branch for OBTP with in-room tablets
Merge branch 'master' into scheduling
Poll Google Calendar for endpoints' events, store in Mongo, expose over
REST.
Refactored Meetings into MeetingInstances to support personal meetings.
Removed Tapestry and Users.
Upgraded to Jersey 2, Jackson 2, and Servlet 3.
Watermarked QR codes. Passcodeless meetings. Meeting organizers.
If a meeting is deleted from the remote calendar, delete it from our
database too.
Abilities to determine if a Polycom endpoint is in a meeting and to have
it hang up the call.
When listing MeetingInstances for an endpoint, sort by startTime
ascending.
HangUp works. Refactored common project into common (data layer) and
backend (amqp factory) to allow Android app to use data layer without
AMQP.
Refactored SleeperCell to handle more types of commands with better
static typing and layering.
Switched from JAXB to DOM Documents for Tandberg XML generation.
Added hangUp and isCallActive handlers for Tandberg and LifeSize.
Changed LifeSize dial string from x.y@z to z##x#y to support one-string
without screeching sounds.
Sleeper Cell starts blocking on AMQP after Spring is done initializing,
not during.
Added a few tests for dial string generation and Tandberg XML
generation.
Sleeper Cell publishes results back to ASS-MAN, allowing RPC semantics
in addition to fire-and-forget pubsub. Added polling loop where ASS-MAN
gets updated information on whether each endpoint is in a call by
polling all Sleeper Cells.
Extracted telnet logic from Polycom dispatcher to separate TelnetConnection class.
Removed logo from QR codes. Calendar polling interval is 10 seconds.
Added test for parsing Blue Jeans meeting URLs, including the insanity
that is injection-capable Mockito tests with Theories (but no PowerMock
due to classloader issues).
Support for multiple clusters (stage vs. prod) detected using the Blue
Jeans URL subdomain in calendar descriptions.
Better error handling on Sleeper Cell HTTP failures.