More raw Shindig notes. This time, looking at org.apache.shindig.gadgets.http. See Shindigging tag. I’ll structure them just a little more this time.
Main Servlet
BasicHttpContext.java - data struct for country/language/locale
GadgetRenderingServlet.java - The servlet that accepts gadget spec URL and prefs, and outputs the gadget content (typically in an iframe). Delegates heavily to GadgetServer, in order to get a Gadget, and then serialises the Gadget itself with outputGadget(). outputGadget() will output the gadget as either URL or HTML type, depending on the content type. (I expect those output methods will probably be extracted to a seperate class, or to their own strategy classes.) [java] gadget = servletState.getGadgetServer().processGadget(gadgetId, getPrefsFromRequest(req), context.getLocale(), RenderingContext.GADGET, options); outputGadget(gadget, view, options, contentFilters, resp); [/java]
HttpProcessingOptions.java extends ProcessingOptions - Allows URL params to override default options, e.g. to allow caller to suppress caching
Javascript Servlet
JsServlet.java - Outputs Javascript content
Proxy Servlet
ProxyHandler.java - Provides implementation for ProxyServlet, which is a thin wrapper around this class
ProxyServlet.java- Handles Fetch commands for gadgets, i.e. allowing them to get remote content. Delegates everything to ProxyHandler
RpcServlet
RpcServlet is a “meta” servlet. Initially I thought it was just for debugging/administering the container, but it plays a more important role as it lets the browser-side gadget container issue a query to find out about the gadgets it’s hosting. (The gadgets are of course in an iframe, so due to security restrictions, it can’t directly inspect the gadget content to find out, for example, its name, which it needs to know in order to show the gadget chrome/wrapper).
JsonRpcContext.java - Context for JsonRpc stuff. Used by RpcServlet
JsonRpcGadget.java - Meta-model of a Gadget (ie just its defining features - URL and moduleId - and not fields to populate it as in Gadget). Used by RpcServlet
JsonRpcGadgetJob.java - Used by RpcServlet
JsonRpcProcessingOptions.java - Used by RpcServlet
JsonRpcRequest.java - Used by RpcServlet
RpcException.java - Boring exception class
RpcServlet.java - Provides Gadget meta-info - allows a programmer/tester to get info about the gadget server and list its gadgets. See http://www.mail-archive.com/[email protected]/msg00317.html.
Used by All Servlets
CrossServletState.java - Servlet scoped state (ie instances of the same servlet always get this state object) -
- Defines accessors for globals such as the GadgetServer, so that each Gadget can get a handle on them.
DefaultCrossServletState.java implements CrossServerState - creates globals such as the GadgetServer (and defines accessors for servlets to access them). Also includes some utility methods for the servlet (which could really go elsewhere).
Misc
CajaContentFilter.java implements ContentFilter - Caja filter - adaptor/bridge to Caja project, which sanitises JS, intended for inlined gadget.