usergrid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From snoopd...@apache.org
Subject [04/82] [abbrv] Rename for Java SDK, also regenerated Javadocs.
Date Sat, 08 Feb 2014 17:20:54 GMT
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/overview-tree.html
----------------------------------------------------------------------
diff --git a/sdks/java/doc/overview-tree.html b/sdks/java/doc/overview-tree.html
index ca637d6..89be748 100644
--- a/sdks/java/doc/overview-tree.html
+++ b/sdks/java/doc/overview-tree.html
@@ -1,173 +1,184 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--NewPage-->
-<HTML>
-<HEAD>
-<!-- Generated by javadoc (build 1.6.0_29) on Fri Mar 09 16:00:54 PST 2012 -->
-<TITLE>
-Class Hierarchy
-</TITLE>
-
-<META NAME="date" CONTENT="2012-03-09">
-
-<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
-
-<SCRIPT type="text/javascript">
-function windowTitle()
-{
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (version 1.7.0_45) on Fri Feb 07 09:14:42 EST 2014 -->
+<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
+<title>Class Hierarchy (usergrid-java-client 0.0.9-SNAPSHOT API)</title>
+<meta name="date" content="2014-02-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
     if (location.href.indexOf('is-external=true') == -1) {
-        parent.document.title="Class Hierarchy";
+        parent.document.title="Class Hierarchy (usergrid-java-client 0.0.9-SNAPSHOT API)";
     }
-}
-</SCRIPT>
-<NOSCRIPT>
-</NOSCRIPT>
-
-</HEAD>
-
-<BODY BGCOLOR="white" onload="windowTitle();">
-<HR>
-
-
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
 <!-- ========= START OF TOP NAVBAR ======= -->
-<A NAME="navbar_top"><!-- --></A>
-<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_top_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
-  <TR ALIGN="center" VALIGN="top">
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
-  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
-  </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-</EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV&nbsp;
-&nbsp;NEXT</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
-  <!--
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
   if(window==top) {
-    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
   }
   //-->
-</SCRIPT>
-<NOSCRIPT>
-  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_top"></A>
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
 <!-- ========= END OF TOP NAVBAR ========= -->
-
-<HR>
-<CENTER>
-<H2>
-Hierarchy For All Packages</H2>
-</CENTER>
-<DL>
-<DT><B>Package Hierarchies:</B><DD><A HREF="org/usergrid/android/client/package-tree.html">org.usergrid.android.client</A>, <A HREF="org/usergrid/android/client/callbacks/package-tree.html">org.usergrid.android.client.callbacks</A>, <A HREF="org/usergrid/android/client/entities/package-tree.html">org.usergrid.android.client.entities</A>, <A HREF="org/usergrid/android/client/response/package-tree.html">org.usergrid.android.client.response</A>, <A HREF="org/usergrid/android/client/utils/package-tree.html">org.usergrid.android.client.utils</A></DL>
-<HR>
-<H2>
-Class Hierarchy
-</H2>
-<UL>
-<LI TYPE="circle">java.lang.Object<UL>
-<LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Activity.ActivityCollection.html" title="class in org.usergrid.android.client.entities"><B>Activity.ActivityCollection</B></A><LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Activity.ActivityObject.html" title="class in org.usergrid.android.client.entities"><B>Activity.ActivityObject</B></A><LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Activity.MediaLink.html" title="class in org.usergrid.android.client.entities"><B>Activity.MediaLink</B></A><LI TYPE="circle">org.usergrid.android.client.response.<A HREF="org/usergrid/android/client/response/AggregateCounter.html" title="class in org.usergrid.android.client.response"><B>AggregateCounter</B></A><LI TYPE="circle">org.usergrid.android.client.response.<A HREF="org/usergrid/android/client/response/AggregateCounterSet.html" title="cla
 ss in org.usergrid.android.client.response"><B>AggregateCounterSet</B></A><LI TYPE="circle">org.usergrid.android.client.response.<A HREF="org/usergrid/android/client/response/ApiResponse.html" title="class in org.usergrid.android.client.response"><B>ApiResponse</B></A><LI TYPE="circle">android.os.AsyncTask&lt;Params,Progress,Result&gt;<UL>
-<LI TYPE="circle">org.usergrid.android.client.callbacks.<A HREF="org/usergrid/android/client/callbacks/ClientAsyncTask.html" title="class in org.usergrid.android.client.callbacks"><B>ClientAsyncTask</B></A>&lt;T&gt;</UL>
-<LI TYPE="circle">org.usergrid.android.client.<A HREF="org/usergrid/android/client/Client.html" title="class in org.usergrid.android.client"><B>Client</B></A><LI TYPE="circle">org.usergrid.android.client.response.<A HREF="org/usergrid/android/client/response/ClientCredentialsInfo.html" title="class in org.usergrid.android.client.response"><B>ClientCredentialsInfo</B></A><LI TYPE="circle">org.usergrid.android.client.utils.<A HREF="org/usergrid/android/client/utils/DeviceUuidFactory.html" title="class in org.usergrid.android.client.utils"><B>DeviceUuidFactory</B></A><LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Entity.html" title="class in org.usergrid.android.client.entities"><B>Entity</B></A><UL>
-<LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Activity.html" title="class in org.usergrid.android.client.entities"><B>Activity</B></A><LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Device.html" title="class in org.usergrid.android.client.entities"><B>Device</B></A><LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Group.html" title="class in org.usergrid.android.client.entities"><B>Group</B></A><LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/Message.html" title="class in org.usergrid.android.client.entities"><B>Message</B></A><LI TYPE="circle">org.usergrid.android.client.entities.<A HREF="org/usergrid/android/client/entities/User.html" title="class in org.usergrid.android.client.entities"><B>User</B></A></UL>
-<LI TYPE="circle">org.usergrid.android.client.utils.<A HREF="org/usergrid/android/client/utils/JsonUtils.html" title="class in org.usergrid.android.client.utils"><B>JsonUtils</B></A><LI TYPE="circle">org.usergrid.android.client.utils.<A HREF="org/usergrid/android/client/utils/MapUtils.html" title="class in org.usergrid.android.client.utils"><B>MapUtils</B></A><LI TYPE="circle">org.usergrid.android.client.utils.<A HREF="org/usergrid/android/client/utils/ObjectUtils.html" title="class in org.usergrid.android.client.utils"><B>ObjectUtils</B></A><LI TYPE="circle">org.usergrid.android.client.response.<A HREF="org/usergrid/android/client/response/QueueInfo.html" title="class in org.usergrid.android.client.response"><B>QueueInfo</B></A><LI TYPE="circle">org.usergrid.android.client.utils.<A HREF="org/usergrid/android/client/utils/UrlUtils.html" title="class in org.usergrid.android.client.utils"><B>UrlUtils</B></A></UL>
-</UL>
-<H2>
-Interface Hierarchy
-</H2>
-<UL>
-<LI TYPE="circle">org.usergrid.android.client.<A HREF="org/usergrid/android/client/Client.Query.html" title="interface in org.usergrid.android.client"><B>Client.Query</B></A><LI TYPE="circle">org.usergrid.android.client.callbacks.<A HREF="org/usergrid/android/client/callbacks/ClientCallback.html" title="interface in org.usergrid.android.client.callbacks"><B>ClientCallback</B></A>&lt;T&gt;<UL>
-<LI TYPE="circle">org.usergrid.android.client.callbacks.<A HREF="org/usergrid/android/client/callbacks/ApiResponseCallback.html" title="interface in org.usergrid.android.client.callbacks"><B>ApiResponseCallback</B></A><LI TYPE="circle">org.usergrid.android.client.callbacks.<A HREF="org/usergrid/android/client/callbacks/DeviceRegistrationCallback.html" title="interface in org.usergrid.android.client.callbacks"><B>DeviceRegistrationCallback</B></A><LI TYPE="circle">org.usergrid.android.client.callbacks.<A HREF="org/usergrid/android/client/callbacks/GroupsRetrievedCallback.html" title="interface in org.usergrid.android.client.callbacks"><B>GroupsRetrievedCallback</B></A><LI TYPE="circle">org.usergrid.android.client.callbacks.<A HREF="org/usergrid/android/client/callbacks/QueryResultsCallback.html" title="interface in org.usergrid.android.client.callbacks"><B>QueryResultsCallback</B></A></UL>
-</UL>
-<H2>
-Enum Hierarchy
-</H2>
-<UL>
-<LI TYPE="circle">java.lang.Object<UL>
-<LI TYPE="circle">java.lang.Enum&lt;E&gt; (implements java.lang.Comparable&lt;T&gt;, java.io.Serializable)
-<UL>
-<LI TYPE="circle">org.usergrid.android.client.<A HREF="org/usergrid/android/client/Client.QueuePosition.html" title="enum in org.usergrid.android.client"><B>Client.QueuePosition</B></A></UL>
-</UL>
-</UL>
-<HR>
-
-
+<div class="header">
+<h1 class="title">Hierarchy For All Packages</h1>
+<span class="strong">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="org/apache/usergrid/java/client/package-tree.html">org.apache.usergrid.java.client</a>, </li>
+<li><a href="org/apache/usergrid/java/client/entities/package-tree.html">org.apache.usergrid.java.client.entities</a>, </li>
+<li><a href="org/apache/usergrid/java/client/exception/package-tree.html">org.apache.usergrid.java.client.exception</a>, </li>
+<li><a href="org/apache/usergrid/java/client/response/package-tree.html">org.apache.usergrid.java.client.response</a>, </li>
+<li><a href="org/apache/usergrid/java/client/utils/package-tree.html">org.apache.usergrid.java.client.utils</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="strong">Object</span></a>
+<ul>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Activity.ActivityCollection.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Activity.ActivityCollection</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Activity.ActivityObject.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Activity.ActivityObject</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Activity.MediaLink.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Activity.MediaLink</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.response.<a href="org/apache/usergrid/java/client/response/AggregateCounter.html" title="class in org.apache.usergrid.java.client.response"><span class="strong">AggregateCounter</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.response.<a href="org/apache/usergrid/java/client/response/AggregateCounterSet.html" title="class in org.apache.usergrid.java.client.response"><span class="strong">AggregateCounterSet</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.response.<a href="org/apache/usergrid/java/client/response/ApiResponse.html" title="class in org.apache.usergrid.java.client.response"><span class="strong">ApiResponse</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.<a href="org/apache/usergrid/java/client/Client.html" title="class in org.apache.usergrid.java.client"><span class="strong">Client</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.response.<a href="org/apache/usergrid/java/client/response/ClientCredentialsInfo.html" title="class in org.apache.usergrid.java.client.response"><span class="strong">ClientCredentialsInfo</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Entity.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Entity</span></a>
+<ul>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Activity.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Activity</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Device.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Device</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Group.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Group</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/Message.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">Message</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.entities.<a href="org/apache/usergrid/java/client/entities/User.html" title="class in org.apache.usergrid.java.client.entities"><span class="strong">User</span></a></li>
+</ul>
+</li>
+<li type="circle">org.apache.usergrid.java.client.utils.<a href="org/apache/usergrid/java/client/utils/JsonUtils.html" title="class in org.apache.usergrid.java.client.utils"><span class="strong">JsonUtils</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.utils.<a href="org/apache/usergrid/java/client/utils/MapUtils.html" title="class in org.apache.usergrid.java.client.utils"><span class="strong">MapUtils</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.utils.<a href="org/apache/usergrid/java/client/utils/ObjectUtils.html" title="class in org.apache.usergrid.java.client.utils"><span class="strong">ObjectUtils</span></a></li>
+<li type="circle">org.apache.usergrid.java.client.response.<a href="org/apache/usergrid/java/client/response/QueueInfo.html" title="class in org.apache.usergrid.java.client.response"><span class="strong">QueueInfo</span></a></li>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><span class="strong">Throwable</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang"><span class="strong">Exception</span></a>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang"><span class="strong">RuntimeException</span></a>
+<ul>
+<li type="circle">org.apache.usergrid.java.client.exception.<a href="org/apache/usergrid/java/client/exception/ClientException.html" title="class in org.apache.usergrid.java.client.exception"><span class="strong">ClientException</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li type="circle">org.apache.usergrid.java.client.utils.<a href="org/apache/usergrid/java/client/utils/UrlUtils.html" title="class in org.apache.usergrid.java.client.utils"><span class="strong">UrlUtils</span></a></li>
+</ul>
+</li>
+</ul>
+<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
+<ul>
+<li type="circle">org.apache.usergrid.java.client.<a href="org/apache/usergrid/java/client/Client.Query.html" title="interface in org.apache.usergrid.java.client"><span class="strong">Client.Query</span></a></li>
+</ul>
+<h2 title="Enum Hierarchy">Enum Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="strong">Object</span></a>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
+<ul>
+<li type="circle">org.apache.usergrid.java.client.<a href="org/apache/usergrid/java/client/Client.QueuePosition.html" title="enum in org.apache.usergrid.java.client"><span class="strong">Client.QueuePosition</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
-<A NAME="navbar_bottom"><!-- --></A>
-<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
-<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
-<TR>
-<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
-<A NAME="navbar_bottom_firstrow"><!-- --></A>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
-  <TR ALIGN="center" VALIGN="top">
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
-  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
-  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
-  </TR>
-</TABLE>
-</TD>
-<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
-</EM>
-</TD>
-</TR>
-
-<TR>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-&nbsp;PREV&nbsp;
-&nbsp;NEXT</FONT></TD>
-<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
-  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
-&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
-&nbsp;<SCRIPT type="text/javascript">
-  <!--
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?overview-tree.html" target="_top">Frames</a></li>
+<li><a href="overview-tree.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
   if(window==top) {
-    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
   }
   //-->
-</SCRIPT>
-<NOSCRIPT>
-  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
-</NOSCRIPT>
-
-
-</FONT></TD>
-</TR>
-</TABLE>
-<A NAME="skip-navbar_bottom"></A>
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
 <!-- ======== END OF BOTTOM NAVBAR ======= -->
-
-<HR>
-
-</BODY>
-</HTML>
+<p class="legalCopy"><small>Copyright &#169; 2014. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/package-list
----------------------------------------------------------------------
diff --git a/sdks/java/doc/package-list b/sdks/java/doc/package-list
index eb07ee9..10daf95 100644
--- a/sdks/java/doc/package-list
+++ b/sdks/java/doc/package-list
@@ -1,5 +1,5 @@
-org.usergrid.android.client
-org.usergrid.android.client.callbacks
-org.usergrid.android.client.entities
-org.usergrid.android.client.response
-org.usergrid.android.client.utils
+org.apache.usergrid.java.client
+org.apache.usergrid.java.client.entities
+org.apache.usergrid.java.client.exception
+org.apache.usergrid.java.client.response
+org.apache.usergrid.java.client.utils

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/resources/background.gif
----------------------------------------------------------------------
diff --git a/sdks/java/doc/resources/background.gif b/sdks/java/doc/resources/background.gif
new file mode 100644
index 0000000..f471940
Binary files /dev/null and b/sdks/java/doc/resources/background.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/resources/inherit.gif
----------------------------------------------------------------------
diff --git a/sdks/java/doc/resources/inherit.gif b/sdks/java/doc/resources/inherit.gif
deleted file mode 100644
index c814867..0000000
Binary files a/sdks/java/doc/resources/inherit.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/resources/tab.gif
----------------------------------------------------------------------
diff --git a/sdks/java/doc/resources/tab.gif b/sdks/java/doc/resources/tab.gif
new file mode 100644
index 0000000..1a73a83
Binary files /dev/null and b/sdks/java/doc/resources/tab.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/resources/titlebar.gif
----------------------------------------------------------------------
diff --git a/sdks/java/doc/resources/titlebar.gif b/sdks/java/doc/resources/titlebar.gif
new file mode 100644
index 0000000..17443b3
Binary files /dev/null and b/sdks/java/doc/resources/titlebar.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/resources/titlebar_end.gif
----------------------------------------------------------------------
diff --git a/sdks/java/doc/resources/titlebar_end.gif b/sdks/java/doc/resources/titlebar_end.gif
new file mode 100644
index 0000000..3ad78d4
Binary files /dev/null and b/sdks/java/doc/resources/titlebar_end.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/serialized-form.html
----------------------------------------------------------------------
diff --git a/sdks/java/doc/serialized-form.html b/sdks/java/doc/serialized-form.html
new file mode 100644
index 0000000..2b15bbe
--- /dev/null
+++ b/sdks/java/doc/serialized-form.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc (version 1.7.0_45) on Fri Feb 07 09:14:42 EST 2014 -->
+<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
+<title>Serialized Form (usergrid-java-client 0.0.9-SNAPSHOT API)</title>
+<meta name="date" content="2014-02-07">
+<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Serialized Form (usergrid-java-client 0.0.9-SNAPSHOT API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Serialized Form" class="title">Serialized Form</h1>
+</div>
+<div class="serializedFormContainer">
+<ul class="blockList">
+<li class="blockList">
+<h2 title="Package">Package&nbsp;org.apache.usergrid.java.client.exception</h2>
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.usergrid.java.client.exception.ClientException">
+<!--   -->
+</a>
+<h3>Class <a href="org/apache/usergrid/java/client/exception/ClientException.html" title="class in org.apache.usergrid.java.client.exception">org.apache.usergrid.java.client.exception.ClientException</a> extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang">RuntimeException</a> implements Serializable</h3>
+<dl class="nameValue">
+<dt>serialVersionUID:</dt>
+<dd>1L</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="overview-summary.html">Overview</a></li>
+<li>Package</li>
+<li>Class</li>
+<li>Use</li>
+<li><a href="overview-tree.html">Tree</a></li>
+<li><a href="deprecated-list.html">Deprecated</a></li>
+<li><a href="index-all.html">Index</a></li>
+<li><a href="help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="index.html?serialized-form.html" target="_top">Frames</a></li>
+<li><a href="serialized-form.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2014. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/doc/stylesheet.css
----------------------------------------------------------------------
diff --git a/sdks/java/doc/stylesheet.css b/sdks/java/doc/stylesheet.css
index 6ea9e51..0aeaa97 100644
--- a/sdks/java/doc/stylesheet.css
+++ b/sdks/java/doc/stylesheet.css
@@ -1,29 +1,474 @@
 /* Javadoc style sheet */
-
-/* Define colors, fonts and other style attributes here to override the defaults */
-
-/* Page background color */
-body { background-color: #FFFFFF; color:#000000 }
-
-/* Headings */
-h1 { font-size: 145% }
-
-/* Table colors */
-.TableHeadingColor     { background: #CCCCFF; color:#000000 } /* Dark mauve */
-.TableSubHeadingColor  { background: #EEEEFF; color:#000000 } /* Light mauve */
-.TableRowColor         { background: #FFFFFF; color:#000000 } /* White */
-
-/* Font used in left-hand frame lists */
-.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
-.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
-.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
-
-/* Navigation bar fonts and colors */
-.NavBarCell1    { background-color:#EEEEFF; color:#000000} /* Light mauve */
-.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */
-.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;}
-.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;}
-
-.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
-.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
-
+/*
+Overall document style
+*/
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:Arial, Helvetica, sans-serif;
+    font-size:76%;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-size:1.3em;
+}
+h1 {
+    font-size:1.8em;
+}
+h2 {
+    font-size:1.5em;
+}
+h3 {
+    font-size:1.4em;
+}
+h4 {
+    font-size:1.3em;
+}
+h5 {
+    font-size:1.2em;
+}
+h6 {
+    font-size:1.1em;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-size:1.2em;
+}
+dt code {
+    font-size:1.2em;
+}
+table tr td dt code {
+    font-size:1.2em;
+    vertical-align:top;
+}
+sup {
+    font-size:.6em;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:.8em;
+    z-index:200;
+    margin-top:-7px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    background-image:url(resources/titlebar.gif);
+    background-position:left top;
+    background-repeat:no-repeat;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:1em;
+    margin:0;
+}
+.topNav {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.bottomNav {
+    margin-top:10px;
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.subNav {
+    background-color:#dee3e9;
+    border-bottom:1px solid #9eadc0;
+    float:left;
+    width:100%;
+    overflow:hidden;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding:3px 6px;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+    font-size:90%;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+.navBarCell1Rev {
+    background-image:url(resources/tab.gif);
+    background-color:#a88834;
+    color:#FFFFFF;
+    margin: auto 5px;
+    border:1px solid #c9aa44;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader h1 {
+    font-size:1.3em;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 25px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:1.2em;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:1.0em;
+}
+.indexContainer h2 {
+    font-size:1.1em;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+    font-size:1.1em;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+    margin:10px 0 10px 20px;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:25px;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #9eadc0;
+    background-color:#f9f9f9;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:1px solid #9eadc0;
+    border-top:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+    border-bottom:1px solid #9eadc0;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.contentContainer table, .classUseContainer table, .constantValuesContainer table {
+    border-bottom:1px solid #9eadc0;
+    width:100%;
+}
+.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table {
+    width:100%;
+}
+.contentContainer .description table, .contentContainer .details table {
+    border-bottom:none;
+}
+.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{
+    vertical-align:top;
+    padding-right:20px;
+}
+.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast,
+.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast,
+.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne,
+.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne {
+    padding-right:3px;
+}
+.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#FFFFFF;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    margin:0px;
+}
+caption a:link, caption a:hover, caption a:active, caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span {
+    white-space:nowrap;
+    padding-top:8px;
+    padding-left:8px;
+    display:block;
+    float:left;
+    background-image:url(resources/titlebar.gif);
+    height:18px;
+}
+.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd {
+    width:10px;
+    background-image:url(resources/titlebar_end.gif);
+    background-repeat:no-repeat;
+    background-position:top right;
+    position:relative;
+    float:left;
+}
+ul.blockList ul.blockList li.blockList table {
+    margin:0 0 12px 0px;
+    width:100%;
+}
+.tableSubHeadingColor {
+    background-color: #EEEEFF;
+}
+.altColor {
+    background-color:#eeeeef;
+}
+.rowColor {
+    background-color:#ffffff;
+}
+.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td {
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+th.colFirst, th.colLast, th.colOne, .constantValuesContainer th {
+    background:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+td.colFirst, th.colFirst {
+    border-left:1px solid #9eadc0;
+    white-space:nowrap;
+}
+td.colLast, th.colLast {
+    border-right:1px solid #9eadc0;
+}
+td.colOne, th.colOne {
+    border-right:1px solid #9eadc0;
+    border-left:1px solid #9eadc0;
+}
+table.overviewSummary  {
+    padding:0px;
+    margin-left:0px;
+}
+table.overviewSummary td.colFirst, table.overviewSummary th.colFirst,
+table.overviewSummary td.colOne, table.overviewSummary th.colOne {
+    width:25%;
+    vertical-align:middle;
+}
+table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
+    width:25%;
+    vertical-align:middle;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:.9em;
+}
+.block {
+    display:block;
+    margin:3px 0 0 0;
+}
+.strong {
+    font-weight:bold;
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/pom.xml
----------------------------------------------------------------------
diff --git a/sdks/java/pom.xml b/sdks/java/pom.xml
index 6913cf9..322dc2a 100644
--- a/sdks/java/pom.xml
+++ b/sdks/java/pom.xml
@@ -1,8 +1,8 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<bundle.symbolicName>org.usergrid</bundle.symbolicName>
-		<bundle.namespace>org.usergrid</bundle.namespace>
+		<bundle.symbolicName>org.apache.usergrid</bundle.symbolicName>
+		<bundle.namespace>org.apache.usergrid</bundle.namespace>
 		<org.springframework.version>3.1.2.RELEASE</org.springframework.version>
 		<jackson-version>2.2.0</jackson-version>
 	</properties>
@@ -14,9 +14,9 @@
 	</parent>
 	
 	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.usergrid</groupId>
+	<groupId>org.apache.usergrid</groupId>
 	<artifactId>usergrid-java-client</artifactId>
-	<version>0.0.8-SNAPSHOT</version>
+	<version>0.0.9-SNAPSHOT</version>
 	<packaging>jar</packaging>
 	<description>A simple java client for usergrid</description>
 	<url>https://github.com/apigee/usergrid-stack-internal</url>
@@ -43,6 +43,19 @@
 			<name>Scott Ganyo</name>
 		</developer>
 	</developers>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <configuration>
+                   <doclet>com.sun.tools.doclets.standard.Standard</doclet>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 	<dependencies>
 		<!-- <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> 
 			<version>2.2.1</version> <scope>provided</scope> </dependency> -->

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/c984364d/sdks/java/src/main/java/org/apache/usergrid/java/client/Client.java
----------------------------------------------------------------------
diff --git a/sdks/java/src/main/java/org/apache/usergrid/java/client/Client.java b/sdks/java/src/main/java/org/apache/usergrid/java/client/Client.java
new file mode 100644
index 0000000..1128a4c
--- /dev/null
+++ b/sdks/java/src/main/java/org/apache/usergrid/java/client/Client.java
@@ -0,0 +1,1276 @@
+package org.apache.usergrid.java.client;
+
+import static org.springframework.util.StringUtils.arrayToDelimitedString;
+import static org.springframework.util.StringUtils.tokenizeToStringArray;
+import static org.apache.usergrid.java.client.utils.JsonUtils.parse;
+import static org.apache.usergrid.java.client.utils.ObjectUtils.isEmpty;
+import static org.apache.usergrid.java.client.utils.UrlUtils.addQueryParams;
+import static org.apache.usergrid.java.client.utils.UrlUtils.encodeParams;
+import static org.apache.usergrid.java.client.utils.UrlUtils.path;
+
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestTemplate;
+import org.apache.usergrid.java.client.entities.Activity;
+import org.apache.usergrid.java.client.entities.Device;
+import org.apache.usergrid.java.client.entities.Entity;
+import org.apache.usergrid.java.client.entities.Group;
+import org.apache.usergrid.java.client.entities.User;
+import org.apache.usergrid.java.client.response.ApiResponse;
+
+/**
+ * The Client class for accessing the Usergrid API. Start by instantiating this
+ * class though the appropriate constructor.
+ * 
+ */
+public class Client {
+
+    private static final Logger log = LoggerFactory.getLogger(Client.class);
+
+    public static boolean FORCE_PUBLIC_API = false;
+
+    // Public API
+    public static String PUBLIC_API_URL = "http://api.usergrid.com";
+
+    // Local API of standalone server
+    public static String LOCAL_STANDALONE_API_URL = "http://localhost:8080";
+
+    // Local API of Tomcat server in Eclipse
+    public static String LOCAL_TOMCAT_API_URL = "http://localhost:8080/ROOT";
+
+    // Local API
+    public static String LOCAL_API_URL = LOCAL_STANDALONE_API_URL;
+
+    private String apiUrl = PUBLIC_API_URL;
+
+    private String organizationId;
+    private String applicationId;
+    private String clientId;
+    private String clientSecret;
+
+    private User loggedInUser = null;
+
+    private String accessToken = null;
+
+    private String currentOrganization = null;
+
+    static RestTemplate restTemplate = new RestTemplate();
+
+    /**
+     * Default constructor for instantiating a client.
+     */
+    public Client() {
+        init();
+    }
+
+    /**
+     * Instantiate client for a specific app
+     * 
+     * @param applicationId
+     *            the application id or name
+     */
+    public Client(String organizationId, String applicationId) {
+        init();
+        this.organizationId = organizationId;
+        this.applicationId = applicationId;
+    }
+
+    public void init() {
+
+    }
+
+    /**
+     * @return the Usergrid API url (default: http://api.usergrid.com)
+     */
+    public String getApiUrl() {
+        return apiUrl;
+    }
+
+    /**
+     * @param apiUrl
+     *            the Usergrid API url (default: http://api.usergrid.com)
+     */
+    public void setApiUrl(String apiUrl) {
+        this.apiUrl = apiUrl;
+    }
+
+    /**
+     * @param apiUrl
+     *            the Usergrid API url (default: http://api.usergrid.com)
+     * @return Client object for method call chaining
+     */
+    public Client withApiUrl(String apiUrl) {
+        this.apiUrl = apiUrl;
+        return this;
+    }
+    
+    
+    /**
+     * the organizationId to set
+     * @param organizationId
+     * @return
+     */
+    public Client withOrganizationId(String organizationId){
+        this.organizationId = organizationId;
+        return this;
+    }
+    
+    
+
+    /**
+     * @return the organizationId
+     */
+    public String getOrganizationId() {
+        return organizationId;
+    }
+
+    /**
+     * @param organizationId the organizationId to set
+     */
+    public void setOrganizationId(String organizationId) {
+        this.organizationId = organizationId;
+    }
+
+    /**
+     * @return the application id or name
+     */
+    public String getApplicationId() {
+        return applicationId;
+    }
+
+    /**
+     * @param applicationId
+     *            the application id or name
+     */
+    public void setApplicationId(String applicationId) {
+        this.applicationId = applicationId;
+    }
+   
+
+    /**
+     * @param applicationId
+     *            the application id or name
+     * @return Client object for method call chaining
+     */
+    public Client withApplicationId(String applicationId) {
+        this.applicationId = applicationId;
+        return this;
+    }
+
+    /**
+     * @return the client key id for making calls as the application-owner. Not
+     *         safe for most mobile use.
+     */
+    public String getClientId() {
+        return clientId;
+    }
+
+    /**
+     * @param clientId
+     *            the client key id for making calls as the application-owner.
+     *            Not safe for most mobile use.
+     */
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    /**
+     * @param clientId
+     *            the client key id for making calls as the application-owner.
+     *            Not safe for most mobile use.
+     * @return Client object for method call chaining
+     */
+    public Client withClientId(String clientId) {
+        this.clientId = clientId;
+        return this;
+    }
+
+    /**
+     * @return the client key id for making calls as the application-owner. Not
+     *         safe for most mobile use.
+     */
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    /**
+     * @param clientSecret
+     *            the client key id for making calls as the application-owner.
+     *            Not safe for most mobile use.
+     */
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    /**
+     * @param clientSecret
+     *            the client key id for making calls as the application-owner.
+     *            Not safe for most mobile use.
+     * @return Client object for method call chaining
+     */
+    public Client withClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+        return this;
+    }
+
+    /**
+     * @return the logged-in user after a successful authorizeAppUser request
+     */
+    public User getLoggedInUser() {
+        return loggedInUser;
+    }
+
+    /**
+     * @param loggedInUser
+     *            the logged-in user, usually not set by host application
+     */
+    public void setLoggedInUser(User loggedInUser) {
+        this.loggedInUser = loggedInUser;
+    }
+
+    /**
+     * @return the OAuth2 access token after a successful authorize request
+     */
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    /**
+     * @param accessToken
+     *            an OAuth2 access token. Usually not set by host application
+     */
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    /**
+     * @return the currentOrganization
+     */
+    public String getCurrentOrganization() {
+        return currentOrganization;
+    }
+
+    /**
+     * @param currentOrganization
+     */
+    public void setCurrentOrganization(String currentOrganization) {
+        this.currentOrganization = currentOrganization;
+    }
+
+    /**
+     * Low-level HTTP request method. Synchronous, blocks till response or
+     * timeout.
+     * 
+     * @param method
+     *            HttpMethod method
+     * @param cls
+     *            class for the return type
+     * @param params
+     *            parameters to encode as querystring or body parameters
+     * @param data
+     *            JSON data to put in body
+     * @param segments
+     *            REST url path segments (i.e. /segment1/segment2/segment3)
+     * @return results marshalled into class specified in cls parameter
+     */
+    public <T> T httpRequest(HttpMethod method, Class<T> cls,
+            Map<String, Object> params, Object data, String... segments) {
+        HttpHeaders requestHeaders = new HttpHeaders();
+        requestHeaders.setAccept(Collections
+                .singletonList(MediaType.APPLICATION_JSON));
+        if (accessToken != null) {
+            String auth = "Bearer " + accessToken;
+            requestHeaders.set("Authorization", auth);
+            log.info("Authorization: " + auth);
+        }
+        String url = path(apiUrl, segments);
+
+        MediaType contentType = MediaType.APPLICATION_JSON;
+        if (method.equals(HttpMethod.POST) && isEmpty(data) && !isEmpty(params)) {
+            data = encodeParams(params);
+            contentType = MediaType.APPLICATION_FORM_URLENCODED;
+        } else {
+            url = addQueryParams(url, params);
+        }
+        requestHeaders.setContentType(contentType);
+        HttpEntity<?> requestEntity = null;
+
+        if (method.equals(HttpMethod.POST) || method.equals(HttpMethod.PUT)) {
+            if (isEmpty(data)) {
+                data = JsonNodeFactory.instance.objectNode();
+            }
+            requestEntity = new HttpEntity<Object>(data, requestHeaders);
+        } else {
+            requestEntity = new HttpEntity<Object>(requestHeaders);
+        }
+        log.info("Client.httpRequest(): url: " + url);
+        ResponseEntity<T> responseEntity = restTemplate.exchange(url, method,
+                requestEntity, cls);
+        log.info("Client.httpRequest(): reponse body: "
+                + responseEntity.getBody().toString());
+        return responseEntity.getBody();
+    }
+
+    /**
+     * High-level Usergrid API request.
+     * 
+     * @param method
+     * @param params
+     * @param data
+     * @param segments
+     * @return
+     */
+    public ApiResponse apiRequest(HttpMethod method,
+            Map<String, Object> params, Object data, String... segments) {
+        ApiResponse response = null;
+        try {
+            response = httpRequest(method, ApiResponse.class, params, data,
+                    segments);
+            log.info("Client.apiRequest(): Response: " + response);
+        } catch (HttpClientErrorException e) {
+            log.error("Client.apiRequest(): HTTP error: "
+                    + e.getLocalizedMessage());
+            response = parse(e.getResponseBodyAsString(), ApiResponse.class);
+            if ((response != null) && !isEmpty(response.getError())) {
+                log.error("Client.apiRequest(): Response error: "
+                        + response.getError());
+                if (!isEmpty(response.getException())) {
+                    log.error("Client.apiRequest(): Response exception: "
+                            + response.getException());
+                }
+            }
+        }
+        return response;
+    }
+
+    protected void assertValidApplicationId() {
+        if (isEmpty(applicationId)) {
+            throw new IllegalArgumentException("No application id specified");
+        }
+    }
+
+    /**
+     * Log the user in and get a valid access token.
+     * 
+     * @param email
+     * @param password
+     * @return non-null ApiResponse if request succeeds, check getError() for
+     *         "invalid_grant" to see if access is denied.
+     */
+    public ApiResponse authorizeAppUser(String email, String password) {
+        validateNonEmptyParam(email, "email");
+        validateNonEmptyParam(password,"password");
+        assertValidApplicationId();
+        loggedInUser = null;
+        accessToken = null;
+        currentOrganization = null;
+        Map<String, Object> formData = new HashMap<String, Object>();
+        formData.put("grant_type", "password");
+        formData.put("username", email);
+        formData.put("password", password);
+        ApiResponse response = apiRequest(HttpMethod.POST, formData, null,
+                organizationId, applicationId, "token");
+        if (response == null) {
+            return response;
+        }
+        if (!isEmpty(response.getAccessToken()) && (response.getUser() != null)) {
+            loggedInUser = response.getUser();
+            accessToken = response.getAccessToken();
+            currentOrganization = null;
+            log.info("Client.authorizeAppUser(): Access token: " + accessToken);
+        } else {
+            log.info("Client.authorizeAppUser(): Response: " + response);
+        }
+        return response;
+    }
+
+    /**
+     * Change the password for the currently logged in user. You must supply the
+     * old password and the new password.
+     * 
+     * @param username
+     * @param oldPassword
+     * @param newPassword
+     * @return
+     */
+    public ApiResponse changePassword(String username, String oldPassword,
+            String newPassword) {
+
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("newpassword", newPassword);
+        data.put("oldpassword", oldPassword);
+
+        return apiRequest(HttpMethod.POST, null, data, organizationId,  applicationId, "users",
+                username, "password");
+
+    }
+
+    /**
+     * Log the user in with their numeric pin-code and get a valid access token.
+     * 
+     * @param email
+     * @param pin
+     * @return non-null ApiResponse if request succeeds, check getError() for
+     *         "invalid_grant" to see if access is denied.
+     */
+    public ApiResponse authorizeAppUserViaPin(String email, String pin) {
+        validateNonEmptyParam(email, "email");
+        validateNonEmptyParam(pin, "pin");
+        assertValidApplicationId();
+        loggedInUser = null;
+        accessToken = null;
+        currentOrganization = null;
+        Map<String, Object> formData = new HashMap<String, Object>();
+        formData.put("grant_type", "pin");
+        formData.put("username", email);
+        formData.put("pin", pin);
+        ApiResponse response = apiRequest(HttpMethod.POST, formData, null,
+                organizationId,  applicationId, "token");
+        if (response == null) {
+            return response;
+        }
+        if (!isEmpty(response.getAccessToken()) && (response.getUser() != null)) {
+            loggedInUser = response.getUser();
+            accessToken = response.getAccessToken();
+            currentOrganization = null;
+            log.info("Client.authorizeAppUser(): Access token: " + accessToken);
+        } else {
+            log.info("Client.authorizeAppUser(): Response: " + response);
+        }
+        return response;
+    }
+
+    /**
+     * Log the user in with their Facebook access token retrived via Facebook
+     * OAuth.
+     * 
+     * @param email
+     * @param pin
+     * @return non-null ApiResponse if request succeeds, check getError() for
+     *         "invalid_grant" to see if access is denied.
+     */
+    public ApiResponse authorizeAppUserViaFacebook(String fb_access_token) {
+        validateNonEmptyParam(fb_access_token, "Facebook token");
+        assertValidApplicationId();
+        loggedInUser = null;
+        accessToken = null;
+        currentOrganization = null;
+        Map<String, Object> formData = new HashMap<String, Object>();
+        formData.put("fb_access_token", fb_access_token);
+        ApiResponse response = apiRequest(HttpMethod.POST, formData, null,
+                organizationId,  applicationId, "auth", "facebook");
+        if (response == null) {
+            return response;
+        }
+        if (!isEmpty(response.getAccessToken()) && (response.getUser() != null)) {
+            loggedInUser = response.getUser();
+            accessToken = response.getAccessToken();
+            currentOrganization = null;
+            log.info("Client.authorizeAppUserViaFacebook(): Access token: "
+                    + accessToken);
+        } else {
+            log.info("Client.authorizeAppUserViaFacebook(): Response: "
+                    + response);
+        }
+        return response;
+    }
+
+    /**
+     * Log the app in with it's client id and client secret key. Not recommended
+     * for production apps.
+     * 
+     * @param email
+     * @param pin
+     * @return non-null ApiResponse if request succeeds, check getError() for
+     *         "invalid_grant" to see if access is denied.
+     */
+    public ApiResponse authorizeAppClient(String clientId, String clientSecret) {
+        validateNonEmptyParam(clientId, "client identifier");
+        validateNonEmptyParam(clientSecret, "client secret");
+        assertValidApplicationId();
+        loggedInUser = null;
+        accessToken = null;
+        currentOrganization = null;
+        Map<String, Object> formData = new HashMap<String, Object>();
+        formData.put("grant_type", "client_credentials");
+        formData.put("client_id", clientId);
+        formData.put("client_secret", clientSecret);
+        ApiResponse response = apiRequest(HttpMethod.POST, formData, null,
+                organizationId, applicationId, "token");
+        if (response == null) {
+            return response;
+        }
+        if (!isEmpty(response.getAccessToken())) {
+            loggedInUser = null;
+            accessToken = response.getAccessToken();
+            currentOrganization = null;
+            log.info("Client.authorizeAppClient(): Access token: "
+                    + accessToken);
+        } else {
+            log.info("Client.authorizeAppClient(): Response: " + response);
+        }
+        return response;
+    }
+
+    private void validateNonEmptyParam(Object param, String paramName) {
+        if ( isEmpty(param) ) {
+            throw new IllegalArgumentException(paramName + " cannot be null or empty");
+        }
+    }
+
+    /**
+     * Registers a device using the device's unique device ID.
+     * 
+     * @param context
+     * @param properties
+     * @return a Device object if success
+     */
+    public Device registerDevice(UUID deviceId, Map<String, Object> properties) {
+        assertValidApplicationId();
+        if (properties == null) {
+            properties = new HashMap<String, Object>();
+        }
+        properties.put("refreshed", System.currentTimeMillis());
+        ApiResponse response = apiRequest(HttpMethod.PUT, null, properties,
+                organizationId, applicationId, "devices", deviceId.toString());
+        return response.getFirstEntity(Device.class);
+    }
+
+    /**
+     * Registers a device using the device's unique device ID.
+     *
+     * @param context
+     * @param properties
+     * @return a Device object if success
+     */
+    public Device registerDeviceForPush(UUID deviceId,
+                                        String notifier,
+                                        String token,
+                                        Map<String, Object> properties) {
+      if (properties == null) {
+          properties = new HashMap<String, Object>();
+      }
+      String notifierKey = notifier + ".notifier.id";
+      properties.put(notifierKey, token);
+      return registerDevice(deviceId, properties);
+    }
+
+    /**
+     * Create a new entity on the server.
+     * 
+     * @param entity
+     * @return an ApiResponse with the new entity in it.
+     */
+    public ApiResponse createEntity(Entity entity) {
+        assertValidApplicationId();
+        if (isEmpty(entity.getType())) {
+            throw new IllegalArgumentException("Missing entity type");
+        }
+        ApiResponse response = apiRequest(HttpMethod.POST, null, entity,
+                organizationId, applicationId, entity.getType());
+        return response;
+    }
+
+    /**
+     * Create a new entity on the server from a set of properties. Properties
+     * must include a "type" property.
+     * 
+     * @param properties
+     * @return an ApiResponse with the new entity in it.
+     */
+    public ApiResponse createEntity(Map<String, Object> properties) {
+        assertValidApplicationId();
+        if (isEmpty(properties.get("type"))) {
+            throw new IllegalArgumentException("Missing entity type");
+        }
+        ApiResponse response = apiRequest(HttpMethod.POST, null, properties,
+                organizationId, applicationId, properties.get("type").toString());
+        return response;
+    }
+
+    /**
+     * Creates a user.
+     * 
+     * @param username
+     *            required
+     * @param name
+     * @param email
+     * @param password
+     * @return
+     */
+    public ApiResponse createUser(String username, String name, String email,
+            String password) {
+        Map<String, Object> properties = new HashMap<String, Object>();
+        properties.put("type", "user");
+        if (username != null) {
+            properties.put("username", username);
+        }
+        if (name != null) {
+            properties.put("name", name);
+        }
+        if (email != null) {
+            properties.put("email", email);
+        }
+        if (password != null) {
+            properties.put("password", password);
+        }
+        return createEntity(properties);
+    }
+
+    /**
+     * Get the groups for the user.
+     * 
+     * @param userId
+     * @return a map with the group path as the key and the Group entity as the
+     *         value
+     */
+    public Map<String, Group> getGroupsForUser(String userId) {
+        ApiResponse response = apiRequest(HttpMethod.GET, null, null,
+                organizationId, applicationId, "users", userId, "groups");
+        Map<String, Group> groupMap = new HashMap<String, Group>();
+        if (response != null) {
+            List<Group> groups = response.getEntities(Group.class);
+            for (Group group : groups) {
+                groupMap.put(group.getPath(), group);
+            }
+        }
+        return groupMap;
+    }
+
+    /**
+     * Get a user's activity feed. Returned as a query to ease paging.
+     * 
+     * @param userId
+     * @return
+     */
+    public Query queryActivityFeedForUser(String userId) {
+        Query q = queryEntitiesRequest(HttpMethod.GET, null, null,
+                organizationId, applicationId, "users", userId, "feed");
+        return q;
+    }
+
+    /**
+     * Posts an activity to a user. Activity must already be created.
+     * 
+     * @param userId
+     * @param activity
+     * @return
+     */
+    public ApiResponse postUserActivity(String userId, Activity activity) {
+        return apiRequest(HttpMethod.POST, null, activity,  organizationId, applicationId, "users",
+                userId, "activities");
+    }
+
+    /**
+     * Creates and posts an activity to a user.
+     * 
+     * @param verb
+     * @param title
+     * @param content
+     * @param category
+     * @param user
+     * @param object
+     * @param objectType
+     * @param objectName
+     * @param objectContent
+     * @return
+     */
+    public ApiResponse postUserActivity(String verb, String title,
+            String content, String category, User user, Entity object,
+            String objectType, String objectName, String objectContent) {
+        Activity activity = Activity.newActivity(verb, title, content,
+                category, user, object, objectType, objectName, objectContent);
+        return postUserActivity(user.getUuid().toString(), activity);
+    }
+
+    /**
+     * Posts an activity to a group. Activity must already be created.
+     * 
+     * @param userId
+     * @param activity
+     * @return
+     */
+    public ApiResponse postGroupActivity(String groupId, Activity activity) {
+        return apiRequest(HttpMethod.POST, null, activity, organizationId, applicationId, "groups",
+                groupId, "activities");
+    }
+
+    /**
+     * Creates and posts an activity to a group.
+     * 
+     * @param groupId
+     * @param verb
+     * @param title
+     * @param content
+     * @param category
+     * @param user
+     * @param object
+     * @param objectType
+     * @param objectName
+     * @param objectContent
+     * @return
+     */
+    public ApiResponse postGroupActivity(String groupId, String verb, String title,
+            String content, String category, User user, Entity object,
+            String objectType, String objectName, String objectContent) {
+        Activity activity = Activity.newActivity(verb, title, content,
+                category, user, object, objectType, objectName, objectContent);
+        return postGroupActivity(groupId, activity);
+    }
+
+    /**
+     * Post an activity to the stream.
+     * 
+     * @param activity
+     * @return
+     */
+    public ApiResponse postActivity(Activity activity) {
+        return createEntity(activity);
+    }
+
+    /**
+     * Creates and posts an activity to a group.
+     * 
+     * @param verb
+     * @param title
+     * @param content
+     * @param category
+     * @param user
+     * @param object
+     * @param objectType
+     * @param objectName
+     * @param objectContent
+     * @return
+     */
+    public ApiResponse postActivity(String verb, String title,
+            String content, String category, User user, Entity object,
+            String objectType, String objectName, String objectContent) {
+        Activity activity = Activity.newActivity(verb, title, content,
+                category, user, object, objectType, objectName, objectContent);
+        return createEntity(activity);
+    }
+    
+    /**
+     * Get a group's activity feed. Returned as a query to ease paging.
+     * 
+     * @param userId
+     * @return
+     */
+    public Query queryActivity() {
+        Query q = queryEntitiesRequest(HttpMethod.GET, null, null,
+               organizationId, applicationId, "activities");
+        return q;
+    }
+
+    
+
+    /**
+     * Get a group's activity feed. Returned as a query to ease paging.
+     * 
+     * @param userId
+     * @return
+     */
+    public Query queryActivityFeedForGroup(String groupId) {
+        Query q = queryEntitiesRequest(HttpMethod.GET, null, null,
+                organizationId,  applicationId, "groups", groupId, "feed");
+        return q;
+    }
+
+    /**
+     * Perform a query request and return a query object. The Query object
+     * provides a simple way of dealing with result sets that need to be
+     * iterated or paged through.
+     * 
+     * @param method
+     * @param params
+     * @param data
+     * @param segments
+     * @return
+     */
+    public Query queryEntitiesRequest(HttpMethod method,
+            Map<String, Object> params, Object data, String... segments) {
+        ApiResponse response = apiRequest(method, params, data, segments);
+        return new EntityQuery(response, method, params, data, segments);
+    }
+
+    /**
+     * Perform a query of the users collection.
+     * 
+     * @return
+     */
+    public Query queryUsers() {
+        Query q = queryEntitiesRequest(HttpMethod.GET, null, null,
+                organizationId,  applicationId, "users");
+        return q;
+    }
+
+    /**
+     * Perform a query of the users collection using the provided query command.
+     * For example: "name contains 'ed'".
+     * 
+     * @param ql
+     * @return
+     */
+    public Query queryUsers(String ql) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("ql", ql);
+        Query q = queryEntitiesRequest(HttpMethod.GET, params, null,organizationId,
+                applicationId, "users");
+        return q;
+    }
+
+    /**
+     * Perform a query of the users collection within the specified distance of
+     * the specified location and optionally using the provided query command.
+     * For example: "name contains 'ed'".
+     * 
+     * @param distance
+     * @param location
+     * @param ql
+     * @return
+     */
+    public Query queryUsersWithinLocation(float distance, float lattitude,
+            float longitude, String ql) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("ql",
+                this.makeLocationQL(distance, lattitude, longitude, ql));
+        Query q = queryEntitiesRequest(HttpMethod.GET, params, null, organizationId,
+                applicationId, "users");
+        return q;
+    }
+
+    /**
+     * Queries the users for the specified group.
+     * 
+     * @param groupId
+     * @return
+     */
+    public Query queryUsersForGroup(String groupId) {
+        Query q = queryEntitiesRequest(HttpMethod.GET, null, null, organizationId,
+                applicationId, "groups", groupId, "users");
+        return q;
+    }
+
+    /**
+     * Adds a user to the specified groups.
+     * 
+     * @param userId
+     * @param groupId
+     * @return
+     */
+    public ApiResponse addUserToGroup(String userId, String groupId) {
+        return apiRequest(HttpMethod.POST, null, null, organizationId,  applicationId, "groups",
+                groupId, "users", userId);
+    }
+
+    /**
+     * Creates a group with the specified group path. Group paths can be slash
+     * ("/") delimited like file paths for hierarchical group relationships.
+     * 
+     * @param groupPath
+     * @return
+     */
+    public ApiResponse createGroup(String groupPath) {
+        return createGroup(groupPath, null);
+    }
+
+    /**
+     * Creates a group with the specified group path and group title. Group
+     * paths can be slash ("/") delimited like file paths for hierarchical group
+     * relationships.
+     * 
+     * @param groupPath
+     * @param groupTitle
+     * @return
+     */
+    public ApiResponse createGroup(String groupPath, String groupTitle) {
+     return createGroup(groupPath, groupTitle, null);  
+    }
+    
+    /**
+     * Create a group with a path, title and name
+     * @param groupPath
+     * @param groupTitle
+     * @param groupName
+     * @return
+     */
+    public ApiResponse createGroup(String groupPath, String groupTitle, String groupName){
+        Map<String, Object> data = new HashMap<String, Object>();
+        data.put("type", "group");
+        data.put("path", groupPath);
+        
+        if (groupTitle != null) {
+            data.put("title", groupTitle);
+        }
+        
+        if(groupName != null){
+            data.put("name", groupName);
+        }
+        
+        return apiRequest(HttpMethod.POST, null, data,  organizationId, applicationId, "groups");
+    }
+    
+    /**
+     * Perform a query of the users collection using the provided query command.
+     * For example: "name contains 'ed'".
+     * 
+     * @param ql
+     * @return
+     */
+    public Query queryGroups(String ql) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("ql", ql);
+        Query q = queryEntitiesRequest(HttpMethod.GET, params, null, organizationId,
+                applicationId, "groups");
+        return q;
+    }
+
+    
+
+    /**
+     * Connect two entities together.
+     * 
+     * @param connectingEntityType
+     * @param connectingEntityId
+     * @param connectionType
+     * @param connectedEntityId
+     * @return
+     */
+    public ApiResponse connectEntities(String connectingEntityType,
+            String connectingEntityId, String connectionType,
+            String connectedEntityId) {
+        return apiRequest(HttpMethod.POST, null, null,  organizationId, applicationId,
+                connectingEntityType, connectingEntityId, connectionType,
+                connectedEntityId);
+    }
+
+    /**
+     * Disconnect two entities.
+     * 
+     * @param connectingEntityType
+     * @param connectingEntityId
+     * @param connectionType
+     * @param connectedEntityId
+     * @return
+     */
+    public ApiResponse disconnectEntities(String connectingEntityType,
+            String connectingEntityId, String connectionType,
+            String connectedEntityId) {
+        return apiRequest(HttpMethod.DELETE, null, null,  organizationId, applicationId,
+                connectingEntityType, connectingEntityId, connectionType,
+                connectedEntityId);
+    }
+
+    /**
+     * Query the connected entities.
+     * 
+     * @param connectingEntityType
+     * @param connectingEntityId
+     * @param connectionType
+     * @param ql
+     * @return
+     */
+    public Query queryEntityConnections(String connectingEntityType,
+            String connectingEntityId, String connectionType, String ql) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("ql", ql);
+        Query q = queryEntitiesRequest(HttpMethod.GET, params, null,
+                organizationId, applicationId, connectingEntityType, connectingEntityId,
+                connectionType);
+        return q;
+    }
+
+    protected String makeLocationQL(float distance, double lattitude,
+            double longitude, String ql) {
+        String within = String.format("within %d of %d , %d", distance,
+                lattitude, longitude);
+        ql = ql == null ? within : within + " and " + ql;
+        return ql;
+    }
+
+    /**
+     * Query the connected entities within distance of a specific point.
+     * 
+     * @param connectingEntityType
+     * @param connectingEntityId
+     * @param connectionType
+     * @param distance
+     * @param latitude
+     * @param longitude
+     * @return
+     */
+    public Query queryEntityConnectionsWithinLocation(
+            String connectingEntityType, String connectingEntityId,
+            String connectionType, float distance, float lattitude,
+            float longitude, String ql) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("ql", makeLocationQL(distance, lattitude, longitude, ql));
+        Query q = queryEntitiesRequest(HttpMethod.GET, params, null, organizationId,
+                applicationId, connectingEntityType, connectingEntityId,
+                connectionType);
+        return q;
+    }
+
+    public interface Query {
+
+        public ApiResponse getResponse();
+
+        public boolean more();
+
+        public Query next();
+
+    }
+
+    /**
+     * Query object
+     * 
+     */
+    private class EntityQuery implements Query {
+        final HttpMethod method;
+        final Map<String, Object> params;
+        final Object data;
+        final String[] segments;
+        final ApiResponse response;
+
+        private EntityQuery(ApiResponse response, HttpMethod method,
+                Map<String, Object> params, Object data, String[] segments) {
+            this.response = response;
+            this.method = method;
+            this.params = params;
+            this.data = data;
+            this.segments = segments;
+        }
+
+        private EntityQuery(ApiResponse response, EntityQuery q) {
+            this.response = response;
+            method = q.method;
+            params = q.params;
+            data = q.data;
+            segments = q.segments;
+        }
+
+        /**
+         * @return the api response of the last request
+         */
+        public ApiResponse getResponse() {
+            return response;
+        }
+
+        /**
+         * @return true if the server indicates more results are available
+         */
+        public boolean more() {
+            if ((response != null) && (response.getCursor() != null)
+                    && (response.getCursor().length() > 0)) {
+                return true;
+            }
+            return false;
+        }
+
+        /**
+         * Performs a request for the next set of results
+         * 
+         * @return query that contains results and where to get more from.
+         */
+        public Query next() {
+            if (more()) {
+                Map<String, Object> nextParams = null;
+                if (params != null) {
+                    nextParams = new HashMap<String, Object>(params);
+                } else {
+                    nextParams = new HashMap<String, Object>();
+                }
+                nextParams.put("cursor", response.getCursor());
+                ApiResponse nextResponse = apiRequest(method, nextParams, data,
+                        segments);
+                return new EntityQuery(nextResponse, this);
+            }
+            return null;
+        }
+
+    }
+
+    private String normalizeQueuePath(String path) {
+        return arrayToDelimitedString(
+                tokenizeToStringArray(path, "/", true, true), "/");
+    }
+
+    public ApiResponse postMessage(String path, Map<String, Object> message) {
+        return apiRequest(HttpMethod.POST, null, message, organizationId,  applicationId,
+                "queues", normalizeQueuePath(path));
+    }
+
+    public ApiResponse postMessage(String path,
+            List<Map<String, Object>> messages) {
+        return apiRequest(HttpMethod.POST, null, messages,  organizationId, applicationId,
+                "queues", normalizeQueuePath(path));
+    }
+
+    public enum QueuePosition {
+        START("start"), END("end"), LAST("last"), CONSUMER("consumer");
+
+        private final String shortName;
+
+        QueuePosition(String shortName) {
+            this.shortName = shortName;
+        }
+
+        static Map<String, QueuePosition> nameMap = new ConcurrentHashMap<String, QueuePosition>();
+
+        static {
+            for (QueuePosition op : EnumSet.allOf(QueuePosition.class)) {
+                if (op.shortName != null) {
+                    nameMap.put(op.shortName, op);
+                }
+            }
+        }
+
+        public static QueuePosition find(String s) {
+            if (s == null) {
+                return null;
+            }
+            return nameMap.get(s);
+        }
+
+        @Override
+        public String toString() {
+            return shortName;
+        }
+    }
+
+    public ApiResponse getMessages(String path, String consumer, UUID last,
+            Long time, Integer prev, Integer next, Integer limit,
+            QueuePosition pos, Boolean update, Boolean sync) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        if (consumer != null) {
+            params.put("consumer", consumer);
+        }
+        if (last != null) {
+            params.put("last", last);
+        }
+        if (time != null) {
+            params.put("time", time);
+        }
+        if (prev != null) {
+            params.put("prev", prev);
+        }
+        if (next != null) {
+            params.put("next", next);
+        }
+        if (limit != null) {
+            params.put("limit", limit);
+        }
+        if (pos != null) {
+            params.put("pos", pos.toString());
+        }
+        if (update != null) {
+            params.put("update", update);
+        }
+        if (sync != null) {
+            params.put("synchronized", sync);
+        }
+        return apiRequest(HttpMethod.GET, params, null,  organizationId, applicationId,
+                "queues", normalizeQueuePath(path));
+    }
+
+    public ApiResponse addSubscriber(String publisherQueue,
+            String subscriberQueue) {
+        return apiRequest(HttpMethod.POST, null, null, organizationId,  applicationId, "queues",
+                normalizeQueuePath(publisherQueue), "subscribers",
+                normalizeQueuePath(subscriberQueue));
+    }
+
+    public ApiResponse removeSubscriber(String publisherQueue,
+            String subscriberQueue) {
+        return apiRequest(HttpMethod.DELETE, null, null, organizationId,  applicationId,
+                "queues", normalizeQueuePath(publisherQueue), "subscribers",
+                normalizeQueuePath(subscriberQueue));
+    }
+
+    private class QueueQuery implements Query {
+        final HttpMethod method;
+        final Map<String, Object> params;
+        final Object data;
+        final String queuePath;
+        final ApiResponse response;
+
+        private QueueQuery(ApiResponse response, HttpMethod method,
+                Map<String, Object> params, Object data, String queuePath) {
+            this.response = response;
+            this.method = method;
+            this.params = params;
+            this.data = data;
+            this.queuePath = normalizeQueuePath(queuePath);
+        }
+
+        private QueueQuery(ApiResponse response, QueueQuery q) {
+            this.response = response;
+            method = q.method;
+            params = q.params;
+            data = q.data;
+            queuePath = q.queuePath;
+        }
+
+        /**
+         * @return the api response of the last request
+         */
+        public ApiResponse getResponse() {
+            return response;
+        }
+
+        /**
+         * @return true if the server indicates more results are available
+         */
+        public boolean more() {
+            if ((response != null) && (response.getCursor() != null)
+                    && (response.getCursor().length() > 0)) {
+                return true;
+            }
+            return false;
+        }
+
+        /**
+         * Performs a request for the next set of results
+         * 
+         * @return query that contains results and where to get more from.
+         */
+        public Query next() {
+            if (more()) {
+                Map<String, Object> nextParams = null;
+                if (params != null) {
+                    nextParams = new HashMap<String, Object>(params);
+                } else {
+                    nextParams = new HashMap<String, Object>();
+                }
+                nextParams.put("start", response.getCursor());
+                ApiResponse nextResponse = apiRequest(method, nextParams, data,
+                        queuePath);
+                return new QueueQuery(nextResponse, this);
+            }
+            return null;
+        }
+
+    }
+
+    public Query queryQueuesRequest(HttpMethod method,
+            Map<String, Object> params, Object data, String queuePath) {
+        ApiResponse response = apiRequest(method, params, data, queuePath);
+        return new QueueQuery(response, method, params, data, queuePath);
+    }
+
+}


Mime
View raw message