You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by ro...@apache.org on 2014/11/13 02:40:47 UTC

[4/6] incubator-usergrid git commit: Merged ported Apigee android sdk to 1.0

Merged ported Apigee android sdk to 1.0


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/21b60593
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/21b60593
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/21b60593

Branch: refs/heads/master
Commit: 21b605932b422e71f8fbf1abaaa20cb88b3ba90b
Parents: 464d10a
Author: amuramoto <am...@apigee.com>
Authored: Wed Nov 12 17:32:32 2014 -0800
Committer: amuramoto <am...@apigee.com>
Committed: Wed Nov 12 17:32:32 2014 -0800

----------------------------------------------------------------------
 sdks/android/.gitignore                         |   20 +
 sdks/android/README.md                          |   33 +
 sdks/android/README.txt                         |    2 -
 sdks/android/build_release_zip.sh               |  167 +
 sdks/android/dependency-reduced-pom.xml         |  109 +
 sdks/android/dist/jackson-core-asl-1.9.1.jar    |  Bin 0 -> 228286 bytes
 sdks/android/dist/jackson-mapper-asl-1.9.1.jar  |  Bin 0 -> 764465 bytes
 .../dist/spring-android-core-1.0.0.M4.jar       |  Bin 0 -> 83065 bytes
 .../spring-android-rest-template-1.0.0.M4.jar   |  Bin 0 -> 137368 bytes
 .../0.0.6/usergrid-java-client-0.0.6.jar        |  Bin 0 -> 46389 bytes
 .../0.0.6/usergrid-java-client-0.0.6.jar.sha1   |    1 +
 .../0.0.6/usergrid-java-client-0.0.6.pom        |   95 +
 .../0.0.6/usergrid-java-client-0.0.6.pom.sha1   |    1 +
 .../maven-metadata-local.xml                    |   12 +
 sdks/android/pom.xml                            |   47 +-
 .../apache/usergrid/android/client/Client.java  | 1036 ------
 .../client/callbacks/ApiResponseCallback.java   |   26 -
 .../client/callbacks/ClientAsyncTask.java       |   54 -
 .../client/callbacks/ClientCallback.java        |   25 -
 .../callbacks/DeviceRegistrationCallback.java   |   25 -
 .../callbacks/GroupsRetrievedCallback.java      |   29 -
 .../client/callbacks/QueryResultsCallback.java  |   25 -
 .../android/client/utils/DeviceUuidFactory.java |  170 -
 .../android/client/utils/ObjectUtils.java       |   36 -
 .../usergrid/android/sdk/CounterIncrement.java  |   53 +
 .../sdk/DefaultURLConnectionFactory.java        |   17 +
 .../apache/usergrid/android/sdk/UGClient.java   | 3160 ++++++++++++++++++
 .../android/sdk/URLConnectionFactory.java       |   12 +
 .../sdk/callbacks/ApiResponseCallback.java      |   12 +
 .../android/sdk/callbacks/ClientAsyncTask.java  |   47 +
 .../android/sdk/callbacks/ClientCallback.java   |   12 +
 .../sdk/callbacks/GroupsRetrievedCallback.java  |   16 +
 .../sdk/callbacks/QueryResultsCallback.java     |   14 +
 .../usergrid/android/sdk/entities/Activity.java | 1019 ++++++
 .../android/sdk/entities/Collection.java        |  319 ++
 .../usergrid/android/sdk/entities/Device.java   |  103 +
 .../usergrid/android/sdk/entities/Entity.java   |  533 +++
 .../usergrid/android/sdk/entities/Group.java    |  132 +
 .../usergrid/android/sdk/entities/Message.java  |  140 +
 .../usergrid/android/sdk/entities/User.java     |  296 ++
 .../android/sdk/exception/ClientException.java  |   40 +
 .../android/sdk/response/AggregateCounter.java  |   39 +
 .../sdk/response/AggregateCounterSet.java       |   98 +
 .../android/sdk/response/ApiResponse.java       |  755 +++++
 .../sdk/response/ClientCredentialsInfo.java     |   45 +
 .../android/sdk/response/QueueInfo.java         |   28 +
 .../android/sdk/utils/DeviceUuidFactory.java    |  154 +
 .../usergrid/android/sdk/utils/JsonUtils.java   |  166 +
 .../usergrid/android/sdk/utils/MapUtils.java    |   23 +
 .../usergrid/android/sdk/utils/ObjectUtils.java |   20 +
 .../usergrid/android/sdk/utils/UrlUtils.java    |  108 +
 51 files changed, 7811 insertions(+), 1463 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/.gitignore
----------------------------------------------------------------------
diff --git a/sdks/android/.gitignore b/sdks/android/.gitignore
new file mode 100644
index 0000000..3dfc800
--- /dev/null
+++ b/sdks/android/.gitignore
@@ -0,0 +1,20 @@
+.idea
+*.DS_Store
+hector.iml
+releases
+target
+tmp
+bin
+build
+.classpath
+.project
+.settings
+out
+*.svn
+*.ipr
+*.iws
+DS_Store
+/.DS_Store
+*.class
+.class
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/README.md
----------------------------------------------------------------------
diff --git a/sdks/android/README.md b/sdks/android/README.md
new file mode 100755
index 0000000..4fe667a
--- /dev/null
+++ b/sdks/android/README.md
@@ -0,0 +1,33 @@
+Usergrid Android SDK Overview
+=======================
+
+Installing the SDK
+--------------------
+
+To initialize the Usergrid SDK, do the following:
+
+1. Add 'usergrid-android-<version>.jar' to the build path for your project.
+2. Add the following to your source code to import commonly used SDK classes:
+<pre>
+    import org.apache.usergrid.android.sdk.UGClient;
+    import org.apache.usergrid.android.sdk.callbacks.ApiResponseCallback;
+    import org.apache.usergrid.android.sdk.response.ApiResponse;  
+</pre>
+3. Add the following to your 'AndroidManifest.xml':
+<pre>
+    &lt;uses-permission android:name="android.permission.INTERNET" /&gt;    
+</pre>
+4. Instantiate the 'UGClient' class to initialize the Usergrid SDK:
+<pre>
+    //Usergrid app credentials, available in the admin portal
+    String ORGNAME = "your-org";
+    String APPNAME = "your-app";
+    UGClient client = new UGClient(ORGNAME,APPNAME);    
+</pre>
+
+Building From Source
+--------------------
+To build from source, do the following:
+
+1. Update the path in <android.libs>
+2. Run <code>sh build_release_zip.sh &lt;version&gt;</code> - <version> is the SDK version number specified in UGClient.java.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/README.txt
----------------------------------------------------------------------
diff --git a/sdks/android/README.txt b/sdks/android/README.txt
index e9b2a71..5540ba4 100644
--- a/sdks/android/README.txt
+++ b/sdks/android/README.txt
@@ -11,5 +11,3 @@ Requires the following permissions:
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 
-This client relies on an old copy of the Usergrid Java SDK 0.0.6, which is
-included in the sdks directory, make sure you build it first.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/build_release_zip.sh
----------------------------------------------------------------------
diff --git a/sdks/android/build_release_zip.sh b/sdks/android/build_release_zip.sh
new file mode 100755
index 0000000..b68b356
--- /dev/null
+++ b/sdks/android/build_release_zip.sh
@@ -0,0 +1,167 @@
+#!/bin/sh
+#******************************************************************************
+# This shell script pulls together the pieces that make up the Android SDK
+# distribution and builds a single zip file containing those pieces.
+#
+# The version of the SDK should be passed in as an argument.
+# Example: build_sdk_zip.sh 1.4.3
+#******************************************************************************
+
+# variables used for javadoc generation
+MAVEN_REPO="${HOME}/.m2/repository"
+ANDROID_SDK_PATH="/Applications/adt-bundle-mac/sdk/platforms/android-4.2"
+JAVADOC_EXE_PATH="${JAVA_HOME}/bin"
+JAVA_VERSION="1.6"
+
+
+# verify that we've been given an argument (the version string)
+if [ $# -eq 0 ]
+  then
+    echo "Error: SDK version string should be passed as argument"
+	exit 1
+fi
+
+# SDK version string is passed in as an argument to this script
+SDK_VERSION="$1"
+
+# the following command extracts the version string from the sdk source
+SDK_SOURCE_VERSION=`grep "String SDK_VERSION" src/main/java/org/apache/usergrid/android/sdk/UGClient.java | awk '{print $7}' | cut -d'"' -f2`
+
+if [ "${SDK_VERSION}" != "${SDK_SOURCE_VERSION}" ]; then
+	echo "Error: sdk source version (${SDK_SOURCE_VERSION}) does not match specified version (${SDK_VERSION})"
+	exit 1
+fi
+
+
+# set up our tools
+MVN_COMMAND="mvn"
+
+# set our paths and file names
+LIBRARY_BASE_NAME="usergrid-android"
+JAR_FILE_NAME="${LIBRARY_BASE_NAME}-${SDK_VERSION}.jar"
+ZIP_BASE_NAME="${LIBRARY_BASE_NAME}-sdk"
+ZIP_FILE_NAME="${ZIP_BASE_NAME}.zip"
+TOPLEVEL_ZIP_DIR="zip"
+DEST_ZIP_DIR="${TOPLEVEL_ZIP_DIR}/${LIBRARY_BASE_NAME}-sdk-${SDK_VERSION}"
+BUILT_SDK_JAR_FILE="target/${JAR_FILE_NAME}"
+ZIP_JAR_DIR="${DEST_ZIP_DIR}/lib"
+NEW_PROJECT_TEMPLATE_DIR="new-project-template"
+SAMPLES_DIR="samples"
+DEST_SAMPLES_DIR="${DEST_ZIP_DIR}/${SAMPLES_DIR}"
+
+# make a clean build
+"${MVN_COMMAND}" clean
+"${MVN_COMMAND}" install -Dmaven.test.skip=true
+
+# new jar file found?
+if [ ! -f "${BUILT_SDK_JAR_FILE}" ] ; then
+	echo "Error: unable to find jar file '${BUILT_SDK_JAR_FILE}'"	
+	exit 1
+fi
+
+# zip directory exists?
+if [ -d "${DEST_ZIP_DIR}" ]; then
+	# erase all existing files there
+	find "${DEST_ZIP_DIR}" -type f -exec rm {} \;
+else
+	mkdir -p "${DEST_ZIP_DIR}"
+fi
+
+# copy everything from repository
+for entry in *
+do
+	if [ -f "$entry" ]; then
+		cp "$entry" "${DEST_ZIP_DIR}"
+	elif [ -d "$entry" ]; then
+		if [ "$entry" != "${TOPLEVEL_ZIP_DIR}" ]; then
+			cp -r "$entry" "${DEST_ZIP_DIR}"
+		fi
+	fi
+done
+
+
+# if we have source/target in zip directory, delete everything under source/target
+if [ -d "${DEST_ZIP_DIR}/src/target" ]; then
+	rm -rf "${DEST_ZIP_DIR}/src/target"
+	rmdir "${DEST_ZIP_DIR}/src/target"
+fi
+
+# create directory for jar file
+mkdir -p "${ZIP_JAR_DIR}"
+
+# copy jar file to destination directory
+cp "${BUILT_SDK_JAR_FILE}" "${ZIP_JAR_DIR}"
+
+
+# copy new jar file to new-project-template
+# missing libs directory?
+PROJECT_TEMPLATE_LIBS_DIR="${DEST_ZIP_DIR}/${NEW_PROJECT_TEMPLATE_DIR}/libs"
+if [ ! -d "${PROJECT_TEMPLATE_LIBS_DIR}" ]; then
+	mkdir -p "${PROJECT_TEMPLATE_LIBS_DIR}"
+fi
+
+cp "${BUILT_SDK_JAR_FILE}" "${PROJECT_TEMPLATE_LIBS_DIR}"
+
+# does new-project-template have 'bin' subdirectory?
+if [ -d "${DEST_ZIP_DIR}/${NEW_PROJECT_TEMPLATE_DIR}/bin" ]; then
+	# delete it
+	rm -r "${DEST_ZIP_DIR}/${NEW_PROJECT_TEMPLATE_DIR}/bin"
+	rmdir "${DEST_ZIP_DIR}/${NEW_PROJECT_TEMPLATE_DIR}/bin"
+fi
+
+# copy new jar file to each sample app lib directory
+for sample_entry in ${DEST_SAMPLES_DIR}/*
+do
+	if [ -d "${sample_entry}" ]; then
+		# is it missing a libs subdirectory?
+		SAMPLE_LIBS_DIR="${sample_entry}/libs"
+		if [ ! -d "${SAMPLE_LIBS_DIR}" ]; then
+			mkdir "${SAMPLE_LIBS_DIR}"
+		fi
+		
+		# copy jar file to libs dir for sample app
+		cp "${BUILT_SDK_JAR_FILE}" "${SAMPLE_LIBS_DIR}"
+		
+		# does the sample app directory have a 'bin' subdirectory?
+		if [ -d "${sample_entry}/bin" ]; then
+			# delete it
+			rm -r "${sample_entry}/bin"
+			rmdir "${sample_entry}/bin"
+		fi
+	fi
+done
+
+# have sdk-explorer in samples?
+if [ -d "${DEST_SAMPLES_DIR}/sdk-explorer" ]; then
+	# delete it
+	rm -r "${DEST_SAMPLES_DIR}/sdk-explorer"
+	rmdir "${DEST_SAMPLES_DIR}/sdk-explorer"
+fi
+
+# have build_release_zip.sh?
+if [ -f "${DEST_ZIP_DIR}/build_release_zip.sh" ]; then
+	# delete it
+	rm "${DEST_ZIP_DIR}/build_release_zip.sh"
+fi
+
+# generate javadocs
+JAVADOC_OUTPUT_DIR="${DEST_ZIP_DIR}/docs"
+if [ -d "${JAVADOC_OUTPUT_DIR}" ]; then
+  # delete everything that may be there
+  rm -r "${JAVADOC_OUTPUT_DIR}/*"
+else
+  mkdir "${JAVADOC_OUTPUT_DIR}"
+fi
+
+CLASSPATH="./src/target/test-classes:${MAVEN_REPO}/com/fasterxml/jackson/core/jackson-core/2.2.3/jackson-core-2.2.3.jar:${MAVEN_REPO}/com/fasterxml/jackson/core/jackson-annotations/2.2.3/jackson-annotations-2.2.3.jar:${MAVEN_REPO}/com/fasterxml/jackson/core/jackson-databind/2.2.3/jackson-databind-2.2.3.jar:${MAVEN_REPO}/commons-codec/commons-codec/1.4/commons-codec-1.4.jar:${MAVEN_REPO}/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:${MAVEN_REPO}/org/apache/httpcomponents/httpclient/4.1.2/httpclient-4.1.2.jar:${MAVEN_REPO}/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2.jar"
+SOURCEPATH="./src/main/java"
+JAVADOC_OPTIONS="-splitindex -use -version -public -author"
+PACKAGE_LIST="org.apache.usergrid.android.sdk.exception org.apache.usergrid.android.sdk.response org.apache.usergrid.android.sdk org.apache.usergrid.android.sdk.utils org.apache.usergrid.android.sdk.entities org.apache.usergrid.android.sdk.callbacks"
+
+JDOC_CMD="${JAVADOC_EXE_PATH}/javadoc ${JAVADOC_OPTIONS} -classpath ${CLASSPATH} -d ${JAVADOC_OUTPUT_DIR} -source ${JAVA_VERSION} -sourcepath ${SOURCEPATH} ${PACKAGE_LIST}"
+echo ${JDOC_CMD}
+${JDOC_CMD}
+
+# create the zip file
+cd ${TOPLEVEL_ZIP_DIR} && zip -r -y ${ZIP_FILE_NAME} .
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/dependency-reduced-pom.xml
----------------------------------------------------------------------
diff --git a/sdks/android/dependency-reduced-pom.xml b/sdks/android/dependency-reduced-pom.xml
new file mode 100755
index 0000000..6274319
--- /dev/null
+++ b/sdks/android/dependency-reduced-pom.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-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/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.usergrid</groupId>
+  <artifactId>android</artifactId>
+  <name>android</name>
+  <version>0.0.8</version>
+  <url>http://maven.apache.org</url>
+  <developers>
+    <developer>
+      <id>eanuff</id>
+      <name>Ed Anuff</name>
+    </developer>
+    <developer>
+      <id>tnine</id>
+      <name>Todd Nine</name>
+    </developer>
+    <developer>
+      <id>sganyo</id>
+      <name>Scott Ganyo</name>
+      <email>sganyo@apigee.com</email>
+    </developer>
+    <developer>
+      <id>pdardeau</id>
+      <name>Paul Dardeau</name>
+      <email>pdardeau@apigee.com</email>
+    </developer>
+  </developers>
+  <build>
+    <finalName>usergrid-android-${project.version}</finalName>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>${maven-compiler-plugin-version}</source>
+          <target>${maven-compiler-plugin-version}</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>${maven-shade-plugin-version}</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <artifactSet>
+                <excludes>
+                  <exclude>commons-logging:commons-logging</exclude>
+                  <exclude>commons-codec:commons-codec</exclude>
+                  <exclude>org.apache.httpcomponents:httpclient</exclude>
+                  <exclude>org.apache.httpcomponents:httpcore</exclude>
+                  <exclude>junit:junit</exclude>
+                </excludes>
+              </artifactSet>
+              <filters>
+                <filter>
+                  <includes>
+                    <include>com/fasterxml/**</include>
+                  </includes>
+                </filter>
+              </filters>
+              <relocations>
+                <relocation>
+                  <pattern>com.fasterxml.jackson</pattern>
+                  <shadedPattern>com.apigee.fasterxml.jackson</shadedPattern>
+                </relocation>
+              </relocations>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <version>4.1.2</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.usergrid</groupId>
+      <artifactId>android-platform</artifactId>
+      <version>18</version>
+      <scope>system</scope>
+      <systemPath>/Users/ApigeeCorporation/Desktop/adt-bundle-mac/sdk/platforms/android-18/android.jar</systemPath>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <properties>
+    <android-api-version>18</android-api-version>
+    <maven-compiler-plugin-version>1.6</maven-compiler-plugin-version>
+    <jackson-version>2.2.3</jackson-version>
+    <apache-http-version>4.1.2</apache-http-version>
+    <maven-shade-plugin-version>2.1</maven-shade-plugin-version>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <junit-version>3.8.1</junit-version>
+    <android.libs>/Users/ApigeeCorporation/Desktop/adt-bundle-mac/sdk/platforms/android-18</android.libs>
+  </properties>
+</project>
+

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/dist/jackson-core-asl-1.9.1.jar
----------------------------------------------------------------------
diff --git a/sdks/android/dist/jackson-core-asl-1.9.1.jar b/sdks/android/dist/jackson-core-asl-1.9.1.jar
new file mode 100644
index 0000000..1f47861
Binary files /dev/null and b/sdks/android/dist/jackson-core-asl-1.9.1.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/dist/jackson-mapper-asl-1.9.1.jar
----------------------------------------------------------------------
diff --git a/sdks/android/dist/jackson-mapper-asl-1.9.1.jar b/sdks/android/dist/jackson-mapper-asl-1.9.1.jar
new file mode 100644
index 0000000..959d8c4
Binary files /dev/null and b/sdks/android/dist/jackson-mapper-asl-1.9.1.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/dist/spring-android-core-1.0.0.M4.jar
----------------------------------------------------------------------
diff --git a/sdks/android/dist/spring-android-core-1.0.0.M4.jar b/sdks/android/dist/spring-android-core-1.0.0.M4.jar
new file mode 100644
index 0000000..dc9444e
Binary files /dev/null and b/sdks/android/dist/spring-android-core-1.0.0.M4.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/dist/spring-android-rest-template-1.0.0.M4.jar
----------------------------------------------------------------------
diff --git a/sdks/android/dist/spring-android-rest-template-1.0.0.M4.jar b/sdks/android/dist/spring-android-rest-template-1.0.0.M4.jar
new file mode 100644
index 0000000..069d511
Binary files /dev/null and b/sdks/android/dist/spring-android-rest-template-1.0.0.M4.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar
----------------------------------------------------------------------
diff --git a/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar
new file mode 100644
index 0000000..fe979a1
Binary files /dev/null and b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar.sha1
----------------------------------------------------------------------
diff --git a/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar.sha1 b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar.sha1
new file mode 100644
index 0000000..c20c1e2
--- /dev/null
+++ b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.jar.sha1
@@ -0,0 +1 @@
+bb9caaeca9317dca02df039a21dd55b46d165eb4
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom
----------------------------------------------------------------------
diff --git a/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom
new file mode 100644
index 0000000..78993bb
--- /dev/null
+++ b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom
@@ -0,0 +1,95 @@
+<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>
+		<spring-java-version>1.0.1.RELEASE</spring-java-version>
+		<jackson-version>2.1.1</jackson-version>
+	</properties>
+	
+	<parent>
+		<groupId>org.sonatype.oss</groupId>
+		<artifactId>oss-parent</artifactId>
+		<version>7</version>
+	</parent>
+	
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.usergrid</groupId>
+	<artifactId>usergrid-java-client</artifactId>
+	<version>0.0.6</version>
+	<packaging>jar</packaging>
+	<description>A simple java client for usergrid</description>
+	<url>https://github.com/apigee/usergrid-stack-internal</url>
+	
+	<licenses>
+		<license>
+			<name>The Apache Software License, Version 2.0</name>
+			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+			<distribution>repo</distribution>
+		</license>
+	</licenses>
+
+	<developers>
+		<developer>
+			<id>eanuff</id>
+			<name>Ed Anuff</name>
+		</developer>
+		<developer>
+			<id>tnine</id>
+			<name>Todd Nine</name>
+		</developer>
+		<developer>
+			<id>sganyo</id>
+			<name>Scott Ganyo</name>
+		</developer>
+	</developers>
+	<dependencies>
+		<!-- <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> 
+			<version>2.2.1</version> <scope>provided</scope> </dependency> -->
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-core</artifactId>
+			<version>${jackson-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-annotations</artifactId>
+			<version>${jackson-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.fasterxml.jackson.core</groupId>
+			<artifactId>jackson-databind</artifactId>
+			<version>${jackson-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.android</groupId>
+			<artifactId>spring-android-rest-template</artifactId>
+			<version>${spring-java-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.android</groupId>
+			<artifactId>spring-android-core</artifactId>
+			<version>${spring-java-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.6.4</version>
+		</dependency>
+	</dependencies>
+	<repositories>
+		<repository>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+			<id>springsource-milestone</id>
+			<name>Spring Framework Milestone Repository</name>
+			<url>http://maven.springframework.org/milestone</url>
+		</repository>
+	</repositories>
+	<scm>
+		<connection>scm:git:git@github.com:apigee/usergrid-java-sdk.git</connection>
+		<developerConnection>scm:git:git@github.com:apigee/usergrid-java-sdk.git</developerConnection>
+		<url>git@github.com:apigee/usergrid-java-sdk.git</url>
+	</scm>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom.sha1
----------------------------------------------------------------------
diff --git a/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom.sha1 b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom.sha1
new file mode 100644
index 0000000..38a32d9
--- /dev/null
+++ b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/0.0.6/usergrid-java-client-0.0.6.pom.sha1
@@ -0,0 +1 @@
+b3b97c25a37250b2cd01925f430d9e785abef652
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/m2/repository/org/usergrid/usergrid-java-client/maven-metadata-local.xml
----------------------------------------------------------------------
diff --git a/sdks/android/m2/repository/org/usergrid/usergrid-java-client/maven-metadata-local.xml b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/maven-metadata-local.xml
new file mode 100644
index 0000000..456be57
--- /dev/null
+++ b/sdks/android/m2/repository/org/usergrid/usergrid-java-client/maven-metadata-local.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>org.usergrid</groupId>
+  <artifactId>usergrid-java-client</artifactId>
+  <versioning>
+    <release>0.0.6</release>
+    <versions>
+      <version>0.0.6</version>
+    </versions>
+    <lastUpdated>20140207142624</lastUpdated>
+  </versioning>
+</metadata>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/pom.xml
----------------------------------------------------------------------
diff --git a/sdks/android/pom.xml b/sdks/android/pom.xml
index 2802a03..f3bf61e 100644
--- a/sdks/android/pom.xml
+++ b/sdks/android/pom.xml
@@ -1,21 +1,3 @@
-<!--
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
 <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>
@@ -24,20 +6,19 @@
 	</properties>
 
 	<parent>
-		<groupId>org.apache.usergrid</groupId>
-		<artifactId>usergrid</artifactId>
-		<version>1.0.0</version>
-		<relativePath>../../stack</relativePath>
+		<groupId>org.sonatype.oss</groupId>
+		<artifactId>oss-parent</artifactId>
+		<version>7</version>
 	</parent>
 	
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.apache.usergrid</groupId>
-	<artifactId>usergrid-android-client</artifactId>
-	<version>0.0.8-SNAPSHOT</version>
+	<artifactId>usergrid-android</artifactId>
+	<version>0.0.8</version>
 	
 	<packaging>jar</packaging>
-	<description>An Android client for usergrid</description>
-	<url>http://usergrid.incubator.apache.org</url>
+	<description>A simple java client for usergrid</description>
+	<url>https://github.com/apigee/usergrid-stack-internal</url>
 	
 	<licenses>
 		<license>
@@ -61,6 +42,11 @@
 			<name>Scott Ganyo</name>
 		</developer>
 	</developers>
+	<scm>
+		<connection>scm:git:git@github.com:apigee/usergrid-android-sdk.git</connection>
+		<developerConnection>scm:git:git@github.com:apigee/usergrid-android-sdk.git</developerConnection>
+		<url>git@github.com:apigee/usergrid-android-sdk.git</url>
+	</scm>
 
     <build>
         <plugins>
@@ -96,13 +82,4 @@
             <url>file://${project.basedir}/m2/repository</url>
         </repository>
     </repositories>
-    <name>Apache Usergrid Android SDK</name>
-    <issueManagement>
-    	<system>JIRA</system>
-    	<url>https://issues.apache.org/jira/browse/USERGRID</url>
-    </issueManagement>
-    <organization>
-    	<name>The Apache Software Foundation</name>
-    	<url>http://apache.org</url>
-    </organization>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/Client.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/Client.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/Client.java
deleted file mode 100644
index c2e874a..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/Client.java
+++ /dev/null
@@ -1,1036 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import java.util.ArrayList;
-
-import org.springframework.http.HttpMethod;
-import org.springframework.web.client.RestTemplate;
-import org.apache.usergrid.android.client.callbacks.ApiResponseCallback;
-import org.apache.usergrid.android.client.callbacks.ClientAsyncTask;
-import org.apache.usergrid.android.client.callbacks.DeviceRegistrationCallback;
-import org.apache.usergrid.android.client.callbacks.GroupsRetrievedCallback;
-import org.apache.usergrid.android.client.callbacks.QueryResultsCallback;
-import org.usergrid.java.client.entities.Device;
-import org.usergrid.java.client.entities.Entity;
-import org.usergrid.java.client.entities.Group;
-import org.usergrid.java.client.entities.User;
-import org.usergrid.java.client.response.ApiResponse;
-import org.apache.usergrid.android.client.utils.DeviceUuidFactory;
-
-import android.content.Context;
-import android.location.Location;
-import android.util.Log;
-
-/**
- * The Client class for accessing the Usergrid API. Start by instantiating this
- * class though the appropriate constructor.
- * 
- */
-public class Client extends org.usergrid.java.client.Client {
-
-
-  /**
-   * Default tag applied to all logging messages sent from an instance of Client
-   */
-  public static final String LOGGING_TAG = "UsergridClient";	
-
-  private static final String TAG = "UsergridClient";
-
-	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;
-
-	/**
-	 * Standard HTTP methods use in generic request methods
-	 * @see apiRequest 
-	 * @see doHttpRequest
-	 */
-	protected static final HttpMethod HTTP_METHOD_DELETE = HttpMethod.DELETE;
-
-	/**
-	 * Standard HTTP methods use in generic request methods
-	 * @see apiRequest 
-	 * @see doHttpRequest
-	 */
-	protected static final HttpMethod HTTP_METHOD_GET    = HttpMethod.GET;
-
-	/**
-	 * Standard HTTP methods use in generic request methods
-	 * @see apiRequest 
-	 * @see doHttpRequest
-	 */
-	protected static final HttpMethod HTTP_METHOD_POST   = HttpMethod.POST;
-
-	/**
-	 * Standard HTTP methods use in generic request methods
-	 * @see apiRequest 
-	 * @see doHttpRequest
-	 */
-	protected static final HttpMethod HTTP_METHOD_PUT    = HttpMethod.PUT;
-
-	private String organizationId;
-  private String applicationId;
-  private String clientId;
-  private String clientSecret;
-
-	static RestTemplate restTemplate = new RestTemplate(true);
-
-	/**
-	 * 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) {
-		super(organizationId, applicationId);
-		this.organizationId = organizationId;
-		this.applicationId = applicationId;		
-	}
-
-  /**
-   * Logs a trace-level logging message with tag 'UsergridClient'
-   *
-   * @param   logMessage  the message to log
-   */
-  public void logTrace(String logMessage) {
-  	if(logMessage != null) {
-  		Log.v(LOGGING_TAG,logMessage);
-  	}
-  }
-  
-  /**
-   * Logs a debug-level logging message with tag 'UsergridClient'
-   *
-   * @param   logMessage  the message to log
-   */
-  public void logDebug(String logMessage) {
-  	if(logMessage != null) {
-  		Log.d(LOGGING_TAG,logMessage);
-  	}
-  }
-  
-  /**
-   * Logs an info-level logging message with tag 'UsergridClient'
-   *
-   * @param   logMessage  the message to log
-   */
-  public void logInfo(String logMessage) {
-  	if(logMessage != null) {
-  		Log.i(LOGGING_TAG,logMessage);
-  	}
-  }
-  
-  /**
-   * Logs a warn-level logging message with tag 'UsergridClient'
-   *
-   * @param   logMessage  the message to log
-   */
-  public void logWarn(String logMessage) {
-  	if(logMessage != null) {
-  		Log.w(LOGGING_TAG,logMessage);
-  	}
-  }
-  
-  /**
-   * Logs an error-level logging message with tag 'UsergridClient'
-   *
-   * @param   logMessage  the message to log
-   */
-  public void logError(String logMessage) {
-  	if(logMessage != null) {
-  		Log.e(LOGGING_TAG,logMessage);
-  	}
-  }
-
-  /**
-   * Logs a debug-level logging message with tag 'UsergridClient'
-   *
-   * @param   logMessage  the message to log
-   */
-  public void writeLog(String logMessage) {
-    //TODO: do we support different log levels in this class?
-    Log.d(LOGGING_TAG, logMessage);      
-  }
-
-  public static boolean isEmpty(Object s) {
-		if (s == null) {
-			return true;
-		}
-		if ((s instanceof String) && (((String) s).trim().length() == 0)) {
-			return true;
-		}
-		if (s instanceof Map) {
-			return ((Map<?, ?>) s).isEmpty();
-		}
-		return false;
-	}
-
-	/**
-	 * Log the user in and get a valid access token. Executes asynchronously in
-	 * background and the callbacks are called in the UI thread.
-	 * 
-	 * @param email
-	 * @param password
-	 * @param callback
-	 */
-	public void authorizeAppUserAsync(final String email,
-			final String password, final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return authorizeAppUser(email, password);
-			}
-		}).execute();
-	}
-
-	
-
-	/**
-	 * Log the user in with their numeric pin-code and get a valid access token.
-	 * Executes asynchronously in background and the callbacks are called in the
-	 * UI thread.
-	 * 
-	 * @param email
-	 * @param pin
-	 * @param callback
-	 */
-	public void authorizeAppUserViaPinAsync(final String email,
-			final String pin, final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return authorizeAppUserViaPin(email, pin);
-			}
-		}).execute();
-	}
-
-
-	/**
-	 * Log the user in with their numeric pin-code and get a valid access token.
-	 * Executes asynchronously in background and the callbacks are called in the
-	 * UI thread.
-	 * 
-	 * @param email
-	 * @param pin
-	 * @param callback
-	 */
-	public void authorizeAppUserViaFacebookAsync(final String fb_access_token,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return authorizeAppUserViaFacebook(fb_access_token);
-			}
-		}).execute();
-	}
-
-	
-
-	/**
-	 * Log the app in with it's client id and client secret key. Not recommended
-	 * for production apps. Executes asynchronously in background and the
-	 * callbacks are called in the UI thread.
-	 * 
-	 * @param clientId
-	 * @param clientSecret
-	 * @param callback
-	 */
-	public void authorizeAppClientAsync(final String clientId,
-			final String clientSecret, final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-
-			@Override
-			public ApiResponse doTask() {
-				return authorizeAppClient(clientId, clientSecret);
-			}
-		}).execute();
-	}
-
-	    /**
-     * Log out a user and destroy the access token currently stored in DataClient 
-     * on the server and in the DataClient.
-     * 
-     * @param  username  The username to be logged out
-     * @return  non-null ApiResponse if request succeeds
-     */
-    public ApiResponse logOutAppUser(String username) {
-        String token = getAccessToken();
-        Map<String,Object> params = new HashMap<String,Object>();
-        params.put("token",token);
-        ApiResponse response = apiRequest(HTTP_METHOD_PUT, params, null,
-                organizationId,  applicationId, "users",username,"revoketoken?");
-        if (response == null) {
-            return response;
-        } else {
-            logInfo("logoutAppUser(): Response: " + response);
-            setAccessToken(null);
-        }
-        return response;
-    }
-
-    /**
-     * Log out a user and destroy the access token currently stored in DataClient 
-     * on the server and in the DataClient.
-     * Executes asynchronously in background and the callbacks are called in the
-     * UI thread.
-     * 
-     * @param  username  The username to be logged out
-     * @param  callback  an ApiResponseCallback to handle the async response     
-     */
-    public void logOutAppUserAsync(final String username, final ApiResponseCallback callback) {
-        (new ClientAsyncTask<ApiResponse>(callback) {
-            @Override
-            public ApiResponse doTask() {
-                return logOutAppUser(username);
-            }
-        }).execute();
-    }
-
-   /**
-     * Destroy a specific user token on the server. The token will also be cleared 
-     * from the DataClient instance, if it matches the token provided.
-     * 
-     * @param username The username to be logged out
-     * @param token The access token to be destroyed on the server
-     * @return  non-null ApiResponse if request succeeds
-     */
-    public ApiResponse logOutAppUserForToken(String username, String token) {                
-        Map<String,Object> params = new HashMap<String,Object>();
-        params.put("token",token);
-        ApiResponse response = apiRequest(HTTP_METHOD_PUT, params, null,
-                organizationId,  applicationId, "users",username,"revoketoken?");
-        if (response == null) {
-            return response;
-        } else {
-            logInfo("logoutAppWithTokenUser(): Response: " + response);
-            if (token.equals(getAccessToken())) {
-                setAccessToken(null);
-            }
-        }
-        return response;
-    }
-
-    /**
-     * Destroy a specific user token on the server. The token will also be cleared 
-     * from the DataClient instance, if it matches the token provided.
-     * Executes asynchronously in background and the callbacks are called in the UI thread.
-     * 
-     * @param  username  The username to be logged out
-     * @param  token  The access token to be destroyed on the server   
-     * @param callback A callback for the async response  
-     */
-    public void logOutAppUserForTokenAsync(final String username, final String token, final ApiResponseCallback callback) {
-        (new ClientAsyncTask<ApiResponse>(callback) {
-            @Override
-            public ApiResponse doTask() {
-                return logOutAppUserForToken(username, token);
-            }
-        }).execute();
-    }
-
-    /**
-     * Log out a user and destroy all associated tokens on the server.
-     * The token stored in DataClient will also be destroyed.
-     * 
-     * @param  username The username to be logged out
-     * @return  non-null ApiResponse if request succeeds
-     */
-    public ApiResponse logOutAppUserForAllTokens(String username) {
-        ApiResponse response = apiRequest(HTTP_METHOD_PUT, null, null,
-                organizationId,  applicationId, "users",username,"revoketokens");
-        if (response == null) {
-            return response;
-        } else {
-            logInfo("logoutAppUserForAllTokens(): Response: " + response);
-            setAccessToken(null);
-        }
-        return response;
-    }
-
-    /**
-     * Log out a user and destroy all associated tokens on the server.
-     * The token stored in DataClient will also be destroyed.
-     * Executes asynchronously in background and the callbacks are called in the UI thread.
-     * 
-     * @param  username  The username to be logged out
-     * @param callback A callback for the response
-     */
-    public void logOutAppUserForAllTokensAsync(final String username, final ApiResponseCallback callback) {
-        (new ClientAsyncTask<ApiResponse>(callback) {
-            @Override
-            public ApiResponse doTask() {
-                return logOutAppUserForAllTokens(username);
-            }
-        }).execute();
-    }
-
-	/**
-	 * Registers a device using the device's unique device ID. Executes
-	 * asynchronously in background and the callbacks are called in the UI
-	 * thread.
-	 * 
-	 * @param context
-	 * @param properties
-	 * @param callback
-	 */
-	public void registerDeviceAsync(final Context context,
-			final Map<String, Object> properties,
-			final DeviceRegistrationCallback callback) {
-		(new ClientAsyncTask<Device>(callback) {
-			@Override
-			public Device doTask() {
-			    UUID deviceId = new DeviceUuidFactory(context).getDeviceUuid();
-		        
-				return registerDevice(deviceId, properties);
-			}
-		}).execute();
-	}
-
-
-  /**
-   * Registers a device using the device's unique device ID. Executes
-   * asynchronously in background and the callbacks are called in the UI
-   * thread.
-   *
-   * @param context
-   * @param properties
-   * @param callback
-   */
-  public void registerDeviceForPushAsync(final Context context,
-                                         final String notifier,
-                                         final String token,
-                                         final Map<String, Object> properties,
-                                         final DeviceRegistrationCallback callback) {
-    (new ClientAsyncTask<Device>(callback) {
-      @Override
-      public Device doTask() {
-        UUID deviceId = new DeviceUuidFactory(context).getDeviceUuid();
-
-        return registerDeviceForPush(deviceId, notifier, token, properties);
-      }
-    }).execute();
-  }
-
-      /**
-     * Requests all entities of specified type that match the provided query string.
-     *
-     * @param  type  the entity type to be retrieved
-     * @param  queryString  a query string to send with the request
-     * @return  a non-null ApiResponse object if successful
-    */
-    public ApiResponse getEntities(String type,String queryString)
-    {
-        Map<String, Object> params = null;
-
-        if (queryString.length() > 0) {
-            params = new HashMap<String, Object>();
-            params.put("ql", queryString);
-        }
-        
-        return apiRequest(HTTP_METHOD_GET, // method
-                            params, // params
-                            null, // data
-                            organizationId,
-                            applicationId,
-                            type);
-    }
-    
-    /**
-     * Asynchronously requests all entities of specified type that match the provided query string.
-     *
-     * @param  type  the entity type to be retrieved
-     * @param  queryString  a query string to send with the request
-     * @param  callback an ApiResponseCallback to handle the async response
-    */
-    public void getEntitiesAsync(final String type,
-            final String queryString, final ApiResponseCallback callback) {
-        (new ClientAsyncTask<ApiResponse>(callback) {
-            @Override
-            public ApiResponse doTask() {
-                return getEntities(type, queryString);
-            }
-        }).execute();
-    }
-
-  /**
-	 * Create a new entity on the server. Executes asynchronously in background
-	 * and the callbacks are called in the UI thread.
-	 * 
-	 * @param entity
-	 * @param callback
-	 */
-	public void createEntityAsync(final Entity entity,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return createEntity(entity);
-			}
-		}).execute();
-	}
-
-	
-	/**
-	 * Create a new entity on the server from a set of properties. Properties
-	 * must include a "type" property. Executes asynchronously in background and
-	 * the callbacks are called in the UI thread.
-	 * 
-	 * @param properties
-	 * @param callback
-	 */
-	public void createEntityAsync(final Map<String, Object> properties,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return createEntity(properties);
-			}
-		}).execute();
-	}
-
-	/**
-	 * Create a set of entities on the server from an ArrayList. Each item in the array
-	 * contains a set of properties that define a entity.
-	 * 
-	 * @param type The type of entities to create.
-	 * @param entities A list of maps where keys are entity property names and values
-	 * are property values.
-	 * @return An instance with response data from the server.
-	 */
-	public ApiResponse createEntities(String type, ArrayList<Map<String, Object>> entities) {
-      assertValidApplicationId();                
-      if (isEmpty(type)) {
-          throw new IllegalArgumentException("Missing entity type");
-      }
-      ApiResponse response = apiRequest(HTTP_METHOD_POST, null, entities,
- 		     organizationId, applicationId, type);	           		
- 		return response;	
-  }
-  
-  /**
-	 * Create a set of entities on the server from an ArrayList. Each item in the array
-	 * contains a set of properties that define a entity. Executes asynchronously in 
-	 * background and the callbacks are called in the UI thread.
-	 * 
-	 * @param type The type of entities to create.
-	 * @param entities A list of maps where keys are entity property names and values
-	 * are property values.
-	 * @param callback A callback for the async response
-	 */
-  public void createEntitiesAsync(final String type, final ArrayList<Map<String, Object>> entities,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return createEntities(type, entities);
-			}
-		}).execute();
-	}
-
-	/**
-	 * Creates a user. Executes asynchronously in background and the callbacks
-	 * are called in the UI thread.
-	 * 
-	 * @param username
-	 * @param name
-	 * @param email
-	 * @param password
-	 * @param callback
-	 */
-	public void createUserAsync(final String username, final String name,
-			final String email, final String password,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return createUser(username, name, email, password);
-			}
-		}).execute();
-	}
-
-
-
-	/**
-	 * Get the groups for the user. Executes asynchronously in background and
-	 * the callbacks are called in the UI thread.
-	 * 
-	 * @param userId
-	 * @param callback
-	 */
-	public void getGroupsForUserAsync(final String userId,
-			final GroupsRetrievedCallback callback) {
-		(new ClientAsyncTask<Map<String, Group>>(callback) {
-			@Override
-			public Map<String, Group> doTask() {
-				return getGroupsForUser(userId);
-			}
-		}).execute();
-	}
-
-	/**
-	 * Get a user's activity feed. Returned as a query to ease paging. Executes
-	 * asynchronously in background and the callbacks are called in the UI
-	 * thread.
-	 * 
-	 * 
-	 * @param userId
-	 * @param callback
-	 */
-	public void queryActivityFeedForUserAsync(final String userId, final QueryResultsCallback callback) {
-		(new ClientAsyncTask<Query>(callback) {
-			@Override
-			public Query doTask() {
-				return queryActivityFeedForUser(userId);
-			}
-		}).execute();
-	}
-
-	
-	/**
-	 * Creates and posts an activity to a user. Executes asynchronously in
-	 * background and the callbacks are called in the UI thread.
-	 * 
-	 * @param verb
-	 * @param title
-	 * @param content
-	 * @param category
-	 * @param user
-	 * @param object
-	 * @param objectType
-	 * @param objectName
-	 * @param objectContent
-	 * @param callback
-	 */
-	public void postUserActivityAsync(final String verb, final String title,
-			final String content, final String category, final User user,
-			final Entity object, final String objectType,
-			final String objectName, final String objectContent,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return postUserActivity(verb, title, content, category, user,
-						object, objectType, objectName, objectContent);
-			}
-		}).execute();
-	}
-
-	
-	/**
-	 * Creates and posts an activity to a group. Executes asynchronously in
-	 * background and the callbacks are called in the UI thread.
-	 * 
-	 * @param groupId
-	 * @param verb
-	 * @param title
-	 * @param content
-	 * @param category
-	 * @param user
-	 * @param object
-	 * @param objectType
-	 * @param objectName
-	 * @param objectContent
-	 * @param callback
-	 */
-	public void postGroupActivityAsync(final String groupId, final String verb, final String title,
-			final String content, final String category, final User user,
-			final Entity object, final String objectType,
-			final String objectName, final String objectContent,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return postGroupActivity(groupId, verb, title, content, category, user,
-						object, objectType, objectName, objectContent);
-			}
-		}).execute();
-	}
-
-
-	/**
-	 * Get a group's activity feed. Returned as a query to ease paging. Executes
-	 * asynchronously in background and the callbacks are called in the UI
-	 * thread.
-	 * 
-	 * 
-	 * @param userId
-	 * @param callback
-	 */
-	public void queryActivityFeedForGroupAsync(final String groupId,
-			final QueryResultsCallback callback) {
-		(new ClientAsyncTask<Query>(callback) {
-			@Override
-			public Query doTask() {
-				return queryActivityFeedForGroup(groupId);
-			}
-		}).execute();
-	}
-
-
-	/**
-	 * 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. Executes asynchronously in background and the
-	 * callbacks are called in the UI thread.
-	 * 
-	 * @param callback
-	 * @param method
-	 * @param params
-	 * @param data
-	 * @param segments
-	 */
-	public void queryEntitiesRequestAsync(final QueryResultsCallback callback,
-			final HttpMethod method, final Map<String, Object> params,
-			final Object data, final String... segments) {
-		(new ClientAsyncTask<Query>(callback) {
-			@Override
-			public Query doTask() {
-				return queryEntitiesRequest(method, params, data, segments);
-			}
-		}).execute();
-	}
-
-
-	/**
-	 * Perform a query of the users collection. Executes asynchronously in
-	 * background and the callbacks are called in the UI thread.
-	 * 
-	 * @param callback
-	 */
-	public void queryUsersAsync(QueryResultsCallback callback) {
-		queryEntitiesRequestAsync(callback, HttpMethod.GET, null, null,
-				organizationId, applicationId, "users");
-	}
-
-	/**
-	 * Perform a query of the users collection using the provided query command.
-	 * For example: "name contains 'ed'". Executes asynchronously in background
-	 * and the callbacks are called in the UI thread.
-	 * 
-	 * @param ql
-	 * @param callback
-	 */
-	public void queryUsersAsync(String ql, QueryResultsCallback callback) {
-		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("ql", ql);
-		queryEntitiesRequestAsync(callback, HttpMethod.GET, params, null,
-				organizationId, applicationId, "users");
-	}
-
-	
-	/**
-	 * Queries the users for the specified group. Executes asynchronously in
-	 * background and the callbacks are called in the UI thread.
-	 * 
-	 * @param groupId
-	 * @param callback
-	 */
-	public void queryUsersForGroupAsync(String groupId,
-			QueryResultsCallback callback) {
-		queryEntitiesRequestAsync(callback, HttpMethod.GET, null, null,
-				applicationId, "groups", groupId, "users");
-	}
-
-	/**
-	 * Adds a user to the specified groups. Executes asynchronously in
-	 * background and the callbacks are called in the UI thread.
-	 * 
-	 * @param userId
-	 * @param groupId
-	 * @param callback
-	 */
-	public void addUserToGroupAsync(final String userId, final String groupId,
-			final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return addUserToGroup(userId, groupId);
-			}
-		}).execute();
-	}
-
-
-	/**
-	 * Creates a group with the specified group path. Group paths can be slash
-	 * ("/") delimited like file paths for hierarchical group relationships.
-	 * Executes asynchronously in background and the callbacks are called in the
-	 * UI thread.
-	 * 
-	 * @param groupPath
-	 * @param callback
-	 */
-	public void createGroupAsync(String groupPath,
-			final ApiResponseCallback callback) {
-		createGroupAsync(groupPath, null);
-	}
-
-	
-
-	/**
-	 * Creates a group with the specified group path and group title. Group
-	 * paths can be slash ("/") deliminted like file paths for hierarchical
-	 * group relationships. Executes asynchronously in background and the
-	 * callbacks are called in the UI thread.
-	 * 
-	 * @param groupPath
-	 * @param groupTitle
-	 * @param callback
-	 */
-	public void createGroupAsync(final String groupPath,
-			final String groupTitle, final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return createGroup(groupPath, groupTitle);
-			}
-		}).execute();
-	}
-
-	/**
-     * Connect two entities together.
-     * 
-     * @param connectingEntityType The type of the first entity.
-     * @param connectingEntityId The ID of the first entity.
-     * @param connectionType The type of connection between the entities.
-     * @param connectedEntityId The ID of the second entity.
-     * @return An instance with the server's response.
-     */
-    public ApiResponse connectEntities(String connectingEntityType,
-            String connectingEntityId, String connectionType,
-            String connectedEntityId) {
-        return apiRequest(HTTP_METHOD_POST, null, null,  organizationId, applicationId,
-                connectingEntityType, connectingEntityId, connectionType,
-                connectedEntityId);
-    }
-    
-    /**
-     * Connect two entities together
-     * 
-     * @param connectorType The type of the first entity in the connection.
-     * @param connectorID The first entity's ID.
-     * @param connectionType The type of connection to make.
-     * @param connecteeType The type of the second entity.
-     * @param connecteeID The second entity's ID
-     * @return An instance with the server's response.
-     */
-    public ApiResponse connectEntities(String connectorType,
-    		String connectorID,
-    		String connectionType,
-    		String connecteeType,
-    		String connecteeID) {
-		return apiRequest(HTTP_METHOD_POST, null, null, organizationId, applicationId,
-				connectorType, connectorID, connectionType, connecteeType, connecteeID);
-    }
-	
-	/**
-	 * Connect two entities together. Executes asynchronously in background and
-	 * the callbacks are called in the UI thread.
-	 * 
-	 * @param connectingEntityType
-	 * @param connectingEntityId
-	 * @param connectionType
-	 * @param connectedEntityId
-	 * @param callback
-	 */
-	public void connectEntitiesAsync(final String connectingEntityType,
-			final String connectingEntityId, final String connectionType,
-			final String connectedEntityId, final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return connectEntities(connectingEntityType,
-						connectingEntityId, connectionType, connectedEntityId);
-			}
-		}).execute();
-	}
-
-  /**
-   * Connect two entities together. Allows the 'name' of the connected entity
-   * to be specified but requires the type also be specified. Executes asynchronously 
-   * in background and the callbacks are called in the UI thread.
-   * 
-   * @param connectingEntityType The type of the first entity.
-   * @param connectingEntityId The UUID or 'name' property of the first entity.
-   * @param connectionType The type of connection between the entities.
-   * @param connectedEntityType The type of connection between the entities.
-   * @param connectedEntityId The UUID or 'name' property of the second entity.
-   * @param callback A callback with the async response.
-   */
-  public void connectEntitiesAsync(final String connectingEntityType,
-          final String connectingEntityId, final String connectionType,
-          final String connectedEntityType, final String connectedEntityId, 
-          final ApiResponseCallback callback) {
-      (new ClientAsyncTask<ApiResponse>(callback) {
-          @Override
-          public ApiResponse doTask() {
-              return connectEntities(connectingEntityType,
-                      connectingEntityId, connectionType, connectedEntityType, connectedEntityId);
-          }
-      }).execute();
-    }
-
-  /**
-   * Disconnect two entities.
-   * 
-   * @param connectingEntityType The collection name or UUID of the first entity.
-   * @param connectingEntityId The name or UUID of the first entity.
-   * @param connectionType The type of connection between the entities.     
-   * @param connectedEntityId The name or UUID of the second entity.
-   * @return An instance with the server's response.
-   */
-  public ApiResponse disconnectEntities(String connectingEntityType,
-          String connectingEntityId, String connectionType,
-          String connectedEntityId) {
-      return apiRequest(HTTP_METHOD_DELETE, null, null,  organizationId, applicationId,
-              connectingEntityType, connectingEntityId, connectionType,
-              connectedEntityId);
-  }
-
-	/**
-	 * Disconnect two entities. Executes asynchronously in background and the
-	 * callbacks are called in the UI thread.
-	 * 
-	 * @param connectingEntityType
-	 * @param connectingEntityId
-	 * @param connectionType
-	 * @param connectedEntityId
-	 * @param callback
-	 */
-	public void disconnectEntitiesAsync(final String connectingEntityType,
-			final String connectingEntityId, final String connectionType,
-			final String connectedEntityId, final ApiResponseCallback callback) {
-		(new ClientAsyncTask<ApiResponse>(callback) {
-			@Override
-			public ApiResponse doTask() {
-				return disconnectEntities(connectingEntityType,
-						connectingEntityId, connectionType, connectedEntityId);
-			}
-		}).execute();
-	}
-
-	/**
-   * Disconnect two entities.
-   * 
-   * @param connectingEntityType The collection name or UUID of the first entity.
-   * @param connectingEntityId The name or UUID of the first entity.
-   * @param connectionType The type of connection between the entities.
-   * @param connectedEntityType The collection name or UUID of the second entity.
-   * @param connectedEntityId The name or UUID of the second entity.
-   * @return An instance with the server's response.
-   */
-  public ApiResponse disconnectEntities(String connectingEntityType,
-          String connectingEntityId, String connectionType,
-          String connectedEntityType, String connectedEntityId) {
-      return apiRequest(HTTP_METHOD_DELETE, null, null,  organizationId, applicationId,
-              connectingEntityType, connectingEntityId, connectionType,
-              connectedEntityType, connectedEntityId);
-  }
-
-  /**
-   * Disconnect two entities. Executes asynchronously in background and the
-   * callbacks are called in the UI thread.
-   * 
-   * @param connectingEntityType The collection name or UUID of the first entity.
-   * @param connectingEntityId The name or UUID of the first entity.
-   * @param connectionType The type of connection between the entities.
-   * @param connectedEntityType The collection name or UUID of the second entity.
-   * @param connectedEntityId The name or UUID of the second entity.
-   * @param callback A callback with the async response.
-   */
-  public void disconnectEntitiesAsync(final String connectingEntityType,
-          final String connectingEntityId, final String connectionType,
-          final String connectedEntityType, final String connectedEntityId, 
-          final ApiResponseCallback callback) {
-      (new ClientAsyncTask<ApiResponse>(callback) {
-          @Override
-          public ApiResponse doTask() {
-              return disconnectEntities(connectingEntityType,
-                      connectingEntityId, connectionType, connectedEntityType, connectedEntityId);
-          }
-      }).execute();
-  }
-
-	/**
-	 * Query the connected entities. Executes asynchronously in background and
-	 * the callbacks are called in the UI thread.
-	 * 
-	 * @param connectingEntityType
-	 * @param connectingEntityId
-	 * @param connectionType
-	 * @param ql
-	 * @param callback
-	 */
-	public void queryEntityConnectionsAsync(String connectingEntityType,
-			String connectingEntityId, String connectionType, String ql,
-			QueryResultsCallback callback) {
-		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("ql", ql);
-		queryEntitiesRequestAsync(callback, HttpMethod.GET, params, null,
-				organizationId, applicationId, connectingEntityType, connectingEntityId,
-				connectionType);
-	}
-
-
-	/**
-	 * Query the connected entities within distance of a specific point. .
-	 * Executes asynchronously in background and the callbacks are called in the
-	 * UI thread.
-	 * 
-	 * @param connectingEntityType
-	 * @param connectingEntityId
-	 * @param connectionType
-	 * @param distance
-	 * @param latitude
-	 * @param longitude
-	 * @param callback
-	 */
-	public void queryEntityConnectionsWithinLocationAsync(
-			String connectingEntityType, String connectingEntityId,
-			String connectionType, float distance, Location location,
-			String ql, QueryResultsCallback callback) {
-		Map<String, Object> params = new HashMap<String, Object>();
-		params.put("ql", makeLocationQL(distance, location.getLatitude(), location.getLongitude(), ql));
-		params.put("ql", ql);
-		queryEntitiesRequestAsync(callback, HttpMethod.GET, params, null,
-				organizationId, applicationId, connectingEntityType, connectingEntityId,
-				connectionType);
-	}
-
-	
-	
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ApiResponseCallback.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ApiResponseCallback.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ApiResponseCallback.java
deleted file mode 100644
index 19c256f..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ApiResponseCallback.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.callbacks;
-
-import org.usergrid.java.client.response.ApiResponse;
-
-
-public interface ApiResponseCallback extends ClientCallback<ApiResponse> {
-
-	public void onResponse(ApiResponse response);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientAsyncTask.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientAsyncTask.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientAsyncTask.java
deleted file mode 100644
index 2ad074e..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientAsyncTask.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.callbacks;
-
-import android.os.AsyncTask;
-
-public abstract class ClientAsyncTask<T> extends AsyncTask<Void, Exception, T> {
-
-	ClientCallback<T> callback;
-
-	public ClientAsyncTask(ClientCallback<T> callback) {
-		this.callback = callback;
-	}
-
-	@Override
-	protected T doInBackground(Void... v) {
-		try {
-			return doTask();
-		} catch (Exception e) {
-			this.publishProgress(e);
-		}
-		return null;
-	}
-
-	public abstract T doTask();
-
-	@Override
-	protected void onPostExecute(T response) {
-		if (callback != null) {
-			callback.onResponse(response);
-		}
-	}
-
-	@Override
-	protected void onProgressUpdate(Exception... e) {
-		if ((callback != null) && (e != null) && (e.length > 0)) {
-			callback.onException(e[0]);
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientCallback.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientCallback.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientCallback.java
deleted file mode 100644
index 0b834d5..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/ClientCallback.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.callbacks;
-
-public interface ClientCallback<T> {
-
-	public void onResponse(T response);
-
-	public void onException(Exception e);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/DeviceRegistrationCallback.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/DeviceRegistrationCallback.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/DeviceRegistrationCallback.java
deleted file mode 100644
index 462bebb..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/DeviceRegistrationCallback.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.callbacks;
-
-import org.usergrid.java.client.entities.Device;
-
-public interface DeviceRegistrationCallback extends ClientCallback<Device> {
-
-	public void onDeviceRegistration(Device device);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/GroupsRetrievedCallback.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/GroupsRetrievedCallback.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/GroupsRetrievedCallback.java
deleted file mode 100644
index 806110b..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/GroupsRetrievedCallback.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.callbacks;
-
-import java.util.Map;
-
-import org.usergrid.java.client.entities.Group;
-
-
-public interface GroupsRetrievedCallback extends
-		ClientCallback<Map<String, Group>> {
-
-	public void onGroupsRetrieved(Map<String, Group> groups);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/QueryResultsCallback.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/QueryResultsCallback.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/QueryResultsCallback.java
deleted file mode 100644
index 3bc683a..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/callbacks/QueryResultsCallback.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.callbacks;
-
-import org.usergrid.java.client.Client.Query;
-
-public interface QueryResultsCallback extends ClientCallback<Query> {
-
-	public void onQueryResults(Query query);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/DeviceUuidFactory.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/DeviceUuidFactory.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/DeviceUuidFactory.java
deleted file mode 100644
index 6c731c2..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/DeviceUuidFactory.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.utils;
-
-import static org.apache.usergrid.android.client.utils.ObjectUtils.isEmpty;
-
-import java.io.UnsupportedEncodingException;
-import java.util.UUID;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.net.wifi.WifiManager;
-import android.os.Build;
-import android.provider.Settings.Secure;
-import android.telephony.TelephonyManager;
-
-/**
- * Tries to get the device ID as a UUID and fallsback to a generated UUID value
- * if it doesn't work.
- * 
- * @see http 
- *      ://stackoverflow.com/questions/2785485/is-there-a-unique-android-device
- *      -id
- * 
- */
-public class DeviceUuidFactory {
-	protected static final String PREFS_FILE = "device_id.xml";
-	protected static final String PREFS_DEVICE_ID = "device_id";
-
-	protected static UUID uuid;
-
-	public DeviceUuidFactory(Context context) {
-
-		if (uuid == null) {
-			synchronized (DeviceUuidFactory.class) {
-				if (uuid == null) {
-					final SharedPreferences prefs = context
-							.getSharedPreferences(PREFS_FILE, 0);
-					final String id = prefs.getString(PREFS_DEVICE_ID, null);
-
-					if (id != null) {
-						// Use the ids previously computed and stored in the
-						// prefs file
-						uuid = UUID.fromString(id);
-
-					} else {
-
-						final String androidId = Secure
-								.getString(context.getContentResolver(),
-										Secure.ANDROID_ID);
-
-						// Use the Android ID unless it's broken, in which case
-						// fallback on deviceId,
-						// unless it's not available, then fallback on a random
-						// number which we store
-						// to a prefs file
-						try {
-							if (!"9774d56d682e549c".equals(androidId)) {
-								uuid = UUID.nameUUIDFromBytes(androidId
-										.getBytes("utf8"));
-							} else {
-								final String deviceId = ((TelephonyManager) context
-										.getSystemService(Context.TELEPHONY_SERVICE))
-										.getDeviceId();
-								uuid = deviceId != null ? UUID
-										.nameUUIDFromBytes(deviceId
-												.getBytes("utf8"))
-										: generateDeviceUuid(context);
-							}
-						} catch (UnsupportedEncodingException e) {
-							throw new RuntimeException(e);
-						}
-
-						// Write the value out to the prefs file
-						prefs.edit()
-								.putString(PREFS_DEVICE_ID, uuid.toString())
-								.commit();
-
-					}
-
-				}
-			}
-		}
-
-	}
-
-	private UUID generateDeviceUuid(Context context) {
-
-		// Get some of the hardware information
-		String buildParams = Build.BOARD + Build.BRAND + Build.CPU_ABI
-				+ Build.DEVICE + Build.DISPLAY + Build.FINGERPRINT + Build.HOST
-				+ Build.ID + Build.MANUFACTURER + Build.MODEL + Build.PRODUCT
-				+ Build.TAGS + Build.TYPE + Build.USER;
-
-		// Requires READ_PHONE_STATE
-		TelephonyManager tm = (TelephonyManager) context
-				.getSystemService(Context.TELEPHONY_SERVICE);
-
-		// gets the imei (GSM) or MEID/ESN (CDMA)
-		String imei = tm.getDeviceId();
-
-		// gets the android-assigned id
-		String androidId = Secure.getString(context.getContentResolver(),
-				Secure.ANDROID_ID);
-
-		// requires ACCESS_WIFI_STATE
-		WifiManager wm = (WifiManager) context
-				.getSystemService(Context.WIFI_SERVICE);
-
-		// gets the MAC address
-		String mac = wm.getConnectionInfo().getMacAddress();
-
-		// if we've got nothing, return a random UUID
-		if (isEmpty(imei) && isEmpty(androidId) && isEmpty(mac)) {
-			return UUID.randomUUID();
-		}
-
-		// concatenate the string
-		String fullHash = buildParams.toString() + imei + androidId + mac;
-
-		return UUID.nameUUIDFromBytes(fullHash.getBytes());
-	}
-
-	/**
-	 * Returns a unique UUID for the current android device. As with all UUIDs,
-	 * this unique ID is "very highly likely" to be unique across all Android
-	 * devices. Much more so than ANDROID_ID is.
-	 * 
-	 * The UUID is generated by using ANDROID_ID as the base key if appropriate,
-	 * falling back on TelephonyManager.getDeviceID() if ANDROID_ID is known to
-	 * be incorrect, and finally falling back on a random UUID that's persisted
-	 * to SharedPreferences if getDeviceID() does not return a usable value.
-	 * 
-	 * In some rare circumstances, this ID may change. In particular, if the
-	 * device is factory reset a new device ID may be generated. In addition, if
-	 * a user upgrades their phone from certain buggy implementations of Android
-	 * 2.2 to a newer, non-buggy version of Android, the device ID may change.
-	 * Or, if a user uninstalls your app on a device that has neither a proper
-	 * Android ID nor a Device ID, this ID may change on reinstallation.
-	 * 
-	 * Note that if the code falls back on using TelephonyManager.getDeviceId(),
-	 * the resulting ID will NOT change after a factory reset. Something to be
-	 * aware of.
-	 * 
-	 * Works around a bug in Android 2.2 for many devices when using ANDROID_ID
-	 * directly.
-	 * 
-	 * @see http://code.google.com/p/android/issues/detail?id=10603
-	 * 
-	 * @return a UUID that may be used to uniquely identify your device for most
-	 *         purposes.
-	 */
-	public UUID getDeviceUuid() {
-		return uuid;
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/ObjectUtils.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/ObjectUtils.java b/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/ObjectUtils.java
deleted file mode 100644
index f0ef8fb..0000000
--- a/sdks/android/src/main/java/org/apache/usergrid/android/client/utils/ObjectUtils.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.android.client.utils;
-
-import java.util.Map;
-
-public class ObjectUtils {
-
-	public static boolean isEmpty(Object s) {
-		if (s == null) {
-			return true;
-		}
-		if ((s instanceof String) && (((String) s).trim().length() == 0)) {
-			return true;
-		}
-		if (s instanceof Map) {
-			return ((Map<?, ?>) s).isEmpty();
-		}
-		return false;
-	}
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/sdk/CounterIncrement.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/sdk/CounterIncrement.java b/sdks/android/src/main/java/org/apache/usergrid/android/sdk/CounterIncrement.java
new file mode 100755
index 0000000..6532ac8
--- /dev/null
+++ b/sdks/android/src/main/java/org/apache/usergrid/android/sdk/CounterIncrement.java
@@ -0,0 +1,53 @@
+package org.apache.usergrid.android.sdk;
+
+/**
+ * Represents an incrementing counter, including the counter's
+ * name and increment value.
+ * 
+ * You can use a counter when creating a number of similar 
+ * Event entity instances. An Event entity's "counters" property
+ * is a Map in which the key is the counter name and value is the 
+ * increment value.
+ */
+public class CounterIncrement {
+
+	private String counterName;
+	private long counterIncrementValue;
+	
+	
+	/**
+	 * Constructs an instance, specifying the increment value
+	 * as 1.
+	 */
+	public CounterIncrement() {
+		this.counterIncrementValue = 1;
+	}
+
+	/**
+	 * Constructs an instance with the specified counter name
+	 * and increment value.
+	 * 
+	 * @param counterName The counter name.
+	 * @param counterIncrementValue The counter's increment value.
+	 */
+	public CounterIncrement(String counterName, long counterIncrementValue) {
+		this.counterName = counterName;
+		this.counterIncrementValue = counterIncrementValue;
+	}
+	
+	public String getCounterName() {
+		return this.counterName;
+	}
+	
+	public void setCounterName(String counterName) {
+		this.counterName = counterName;
+	}
+	
+	public long getCounterIncrementValue() {
+		return this.counterIncrementValue;
+	}
+	
+	public void setCounterIncrementValue(long counterIncrementValue) {
+		this.counterIncrementValue = counterIncrementValue;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/21b60593/sdks/android/src/main/java/org/apache/usergrid/android/sdk/DefaultURLConnectionFactory.java
----------------------------------------------------------------------
diff --git a/sdks/android/src/main/java/org/apache/usergrid/android/sdk/DefaultURLConnectionFactory.java b/sdks/android/src/main/java/org/apache/usergrid/android/sdk/DefaultURLConnectionFactory.java
new file mode 100755
index 0000000..5f70902
--- /dev/null
+++ b/sdks/android/src/main/java/org/apache/usergrid/android/sdk/DefaultURLConnectionFactory.java
@@ -0,0 +1,17 @@
+package org.apache.usergrid.android.sdk;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+/**
+ * @y.exclude
+ */
+public class DefaultURLConnectionFactory implements URLConnectionFactory {
+	public URLConnection openConnection(String urlAsString) throws MalformedURLException, IOException {
+		URL url = new URL(urlAsString);
+		return url.openConnection();
+	}
+
+}