The following table annotates some of the main packages in the wave code base.

Java Package

Description

Used By

Client Side

Server Side

com.google.wave.api

This is not really an API.  It is a set of implementation classes that seem to mostly have to do with Robots.

RPC, Robots, Persistence

 

X

org.waveprotocol.box.server

This is the main root package of the Wave in a Box server.  The ServerMain class is the class that bootstraps the server.  This package uses an embedded jetty container to publish servlets for client, robot, and federation communication.  It uses Guie to inject much of the server infrastructure (see the ServerModule) class.

 

 

X

org.waveprotocol.box.server.frontend

This package provides the portion of the sever that is focused on coordinating requests from the client. The WaveClientRpcImp implements the Client Server Protocol (Protobuf Interface) and forwards that the the ClientFrontend (ClientFrontEndImpl) delegate which actually works with the server internals (wave bus, etc).

Server Main

 

X

org.waveprotocol.box.server.persistence

Contains the interfaces and implementations for Accounts, Attachments, and Deltas.  It should be noted that the interface for the DeltaStore actually lices in org.waveprotocol.box.server.waveserver, whereas the Account and Attachment store interfaces live here.

Server Main

 

X

org.waveprotocol.box.server.robots

Implements the server infrastructure for working with robots.  Under that "agent" package several robot implementations are provided.

Server Main

 

X

org.waveprotocol.box.server.rpc

Implements the server side handler for client RPC requests.  this includes SocketIO implementations, WebSocket implementations, and the Servlets that respond to various URL patterns.  these servlets are are registered via the ServerRpcProvider (by the ServerMain class).

Server Main

 

X

org.waveprotocol.box.waveimport

Implements Wave Import and Export.  Basically the code will export waves from GWave to files, and then import those files in to WiaB.  The import and export format seems to decode the protobuf deltas into a JSON format.  This used Google Robot API.  I am not sure if we need this code anymore since G'Wave is no more.  At the least we might need to revisit it.

 

 

 

org.waveprotocol.box.webclient

This package is the main bootstrap entry point for the GWT Web Client.  The WebClient class is the main GWT class.  This is what we hit after you log in.  It contains the search panel / inbox.  It also contains the placeholder for the undercurrent panel, and coordinates the StagesProvider to construct the undercurrent panel when a wave is loaded.

Web Client

X

 

org.waveprotocol.wave.client

This is the implementation of the undercurrent wave panel.  This contains the editor, doodads, blip renderers, etc.

Web Client

X

 

org.waveprotocol.wave.common.bootstrap

Provide FlagConstants *(What are these?).  *It seems to have to do with RPC and is used on the in the server RPC package and in the web client.

Box, Client

X

X

org.waveprotocol.wave.common.logging

Provides logging facilities for the web client.

Media, cc, client, webclient

X

 

org.waveprotocol.wave.communication

Contains utilities for the various communications mechanisms for the client, federation, diff etc.  It contains classes that encode characters to numbers, byte arrays etc.  It also contains helper classes that deal with serialization of things to JSON, GSON, and GWT Objects.

client, federation, diff

 

 

org.waveprotocol.wave.concurrencycontrol

This is the location of the concurrency control stack used in the client.  Despite what the java package structure might indicate, these classes are not used by the server.

Web Client Only

X

 

org.waveprotocol.wave.crypto

These classes handle the signing of wave protocol messages.

Server Only

 

X

org.waveprotocol.wave.federation

Implements the server side federation protocol handling.  It provides some core abstractions to the server to shield the server from the exact transport layer.  Currently an no-op and XMPP module are provided.

Server

 

X

com.google.gwt.websockets

Implements a GWT wrapper for interacting with Web Sockets in the client.

Client

X

 

org.waveprotocol.wave.media.model

This package seems to represent image attachments in the client.  There are comments in the files that suggest that it is used by the server, but it seems to be used only by the client.

Client

X

 

org.waveprotocol.wave.migration

?????  This code does not seem to be used anywhere.

 

 

 

org.waveprotocol.wave.model

Contains the basic interfaces and implementation of those interfaces that define the wave data model.. Blips, Waves, Documents, Conversations, etc.

google wave api, robots, persistence, web client, rpc, front end (basically everywhere)

X

X

org.waveprotocol.wave.util

Contains logging and "escapers"

Server and the web client

X

X

  • No labels