diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f653238
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*.class
+.classpath
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# Eclipse Files #
+.settings/
+.project
+
+# Maven Files #
+target/
diff --git a/apitrary-api-client/.classpath b/apitrary-api-client/.classpath
index 9fc2de7..0539952 100644
--- a/apitrary-api-client/.classpath
+++ b/apitrary-api-client/.classpath
@@ -1,36 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apitrary-api-client/.gitignore b/apitrary-api-client/.gitignore
new file mode 100644
index 0000000..f653238
--- /dev/null
+++ b/apitrary-api-client/.gitignore
@@ -0,0 +1,14 @@
+*.class
+.classpath
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# Eclipse Files #
+.settings/
+.project
+
+# Maven Files #
+target/
diff --git a/apitrary-api-client/.project b/apitrary-api-client/.project
index f6f7e85..7f1aec7 100644
--- a/apitrary-api-client/.project
+++ b/apitrary-api-client/.project
@@ -1,23 +1,18 @@
- apitrary-api-client
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.m2e.core.maven2Builder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
- org.eclipse.m2e.core.maven2Nature
-
-
+ apitrary-api-client
+ NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
\ No newline at end of file
diff --git a/apitrary-api-client/src/main/java/com/apitrary/api/client/Client.java b/apitrary-api-client/src/main/java/com/apitrary/api/client/Client.java
index 26109cc..8ce5ff1 100644
--- a/apitrary-api-client/src/main/java/com/apitrary/api/client/Client.java
+++ b/apitrary-api-client/src/main/java/com/apitrary/api/client/Client.java
@@ -2,4 +2,11 @@
public class Client {
+ private static String apiAuthHeaderKey = "X-Api-Key";
+
+ private Header createHeader(){
+
+ }
+
+
}
diff --git a/apitrary-api-client/src/main/java/com/apitrary/api/client/serialization/ResultSerializer.java b/apitrary-api-client/src/main/java/com/apitrary/api/client/serialization/ResultSerializer.java
new file mode 100644
index 0000000..10b2462
--- /dev/null
+++ b/apitrary-api-client/src/main/java/com/apitrary/api/client/serialization/ResultSerializer.java
@@ -0,0 +1,75 @@
+package com.apitrary.api.client.serialization;
+
+import javax.xml.ws.Response;
+
+import com.google.gson.ExclusionStrategy;
+import com.google.gson.FieldAttributes;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonSyntaxException;
+import com.sun.xml.internal.ws.encoding.soap.SerializationException;
+
+public class ResultSerializer {
+
+ protected Gson gson;
+
+ /**
+ *
+ * Constructor for JsonDeserializer.
+ *
+ */
+ public ResultSerializer() {
+ initializeGson();
+ }
+
+ /**
+ *
+ */
+ private void initializeGson() {
+ gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
+ public boolean shouldSkipField(FieldAttributes fieldAttributes) {
+ if (fieldAttributes.getName().equalsIgnoreCase("serialVersionUUID")) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean shouldSkipClass(Class> arg0) {
+ return false;
+ }
+ }).create();
+ }
+
+ /**
+ *
+ * fromJSON.
+ *
+ *
+ * @param response
+ * a {@link java.lang.String} object.
+ * @param target
+ * a {@link com.cloudcontrolled.api.response.Response} object.
+ * @param
+ * a T object.
+ * @return a {@link com.cloudcontrolled.api.response.Response} object.
+ */
+ @SuppressWarnings("unchecked")
+ public Response fromJSON(String response, Response target) {
+ try {
+ response = StandardizationUtil.getJSONStandardizer(target).normalize(response);
+ } catch (Exception e) {
+ throw new SerializationException(e);
+ }
+
+ try {
+ Response fromJson = gson.fromJson(response, target.getClass());
+ if (fromJson == null) {
+ fromJson = target;
+ }
+ return fromJson;
+ } catch (JsonSyntaxException jse) {
+ throw new SerializationException(jse);
+ }
+ }
+
+}
diff --git a/apitrary-api/.classpath b/apitrary-api/.classpath
index 9fc2de7..b2eae5d 100644
--- a/apitrary-api/.classpath
+++ b/apitrary-api/.classpath
@@ -1,36 +1,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apitrary-api/.gitignore b/apitrary-api/.gitignore
new file mode 100644
index 0000000..f653238
--- /dev/null
+++ b/apitrary-api/.gitignore
@@ -0,0 +1,14 @@
+*.class
+.classpath
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# Eclipse Files #
+.settings/
+.project
+
+# Maven Files #
+target/
diff --git a/apitrary-api/.project b/apitrary-api/.project
index a724947..e30400b 100644
--- a/apitrary-api/.project
+++ b/apitrary-api/.project
@@ -1,23 +1,18 @@
- apitrary-api
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.m2e.core.maven2Builder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
- org.eclipse.m2e.core.maven2Nature
-
-
+ apitrary-api
+ NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
\ No newline at end of file
diff --git a/apitrary-api/pom.xml b/apitrary-api/pom.xml
index b698fed..ca9e0a9 100644
--- a/apitrary-api/pom.xml
+++ b/apitrary-api/pom.xml
@@ -1,9 +1,19 @@
-
- 4.0.0
-
- com.apitrary
- apitrary-jar
- 0.0.1-SNAPSHOT
-
- apitrary-api
+
+ 4.0.0
+
+ com.apitrary
+ apitrary-jar
+ 0.0.1-SNAPSHOT
+
+ apitrary-api
+
+
+
+ com.google.code.gson
+ gson
+ 2.2.2
+ compile
+
+
\ No newline at end of file
diff --git a/apitrary-api/src/main/java/com/apitrary/api/annotation/Normalized.java b/apitrary-api/src/main/java/com/apitrary/api/annotation/Normalized.java
new file mode 100644
index 0000000..6940786
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/annotation/Normalized.java
@@ -0,0 +1,15 @@
+package com.apitrary.api.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import com.apitrary.api.response.normalized.Normalizer;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface Normalized {
+
+ Class extends Normalizer> value() default Normalizer.class;
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/annotation/Path.java b/apitrary-api/src/main/java/com/apitrary/api/annotation/Path.java
new file mode 100644
index 0000000..edf26c9
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/annotation/Path.java
@@ -0,0 +1,13 @@
+package com.apitrary.api.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface Path {
+
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/request/AbstractRequest.java b/apitrary-api/src/main/java/com/apitrary/api/request/AbstractRequest.java
new file mode 100644
index 0000000..dd710d0
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/request/AbstractRequest.java
@@ -0,0 +1,8 @@
+package com.apitrary.api.request;
+
+import java.io.Serializable;
+
+public abstract class AbstractRequest implements Serializable{
+ private static final long serialVersionUID = -5919354837987240483L;
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/AbstractResponse.java b/apitrary-api/src/main/java/com/apitrary/api/response/AbstractResponse.java
new file mode 100644
index 0000000..725eca6
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/AbstractResponse.java
@@ -0,0 +1,42 @@
+package com.apitrary.api.response;
+
+import com.google.gson.JsonObject;
+
+public abstract class AbstractResponse {
+
+ private JsonObject result;
+// "result": {
+// "a": "asd",
+// "_createdAt": "08 Dec 2012 13:03:41 +0000",
+// "c": "xcv",
+// "b": "wer",
+// "_updatedAt": "08 Dec 2012 13:03:41 +0000"
+//},
+
+ private String statusMessage;
+ private int statusCode;
+
+ public JsonObject getResult() {
+ return result;
+ }
+
+ public void setResult(JsonObject result) {
+ this.result = result;
+ }
+
+ public String getStatusMessage() {
+ return statusMessage;
+ }
+
+ public void setStatusMessage(String statusMessage) {
+ this.statusMessage = statusMessage;
+ }
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public void setStatusCode(int statusCode) {
+ this.statusCode = statusCode;
+ }
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/DeleteResponse.java b/apitrary-api/src/main/java/com/apitrary/api/response/DeleteResponse.java
new file mode 100644
index 0000000..b7292e4
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/DeleteResponse.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response;
+
+public class DeleteResponse {
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/GetResponse.java b/apitrary-api/src/main/java/com/apitrary/api/response/GetResponse.java
new file mode 100644
index 0000000..0bf11df
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/GetResponse.java
@@ -0,0 +1,45 @@
+package com.apitrary.api.response;
+
+import com.google.gson.JsonObject;
+
+public class GetResponse {
+
+ private JsonObject result;
+// "result": {
+// "a": "asd",
+// "_createdAt": "08 Dec 2012 13:03:41 +0000",
+// "c": "xcv",
+// "b": "wer",
+// "_updatedAt": "08 Dec 2012 13:03:41 +0000"
+//},
+
+ private String statusMessage;
+ private int statusCode;
+
+ public GetResponse(){
+ }
+
+ public JsonObject getResult() {
+ return result;
+ }
+
+ public void setResult(JsonObject result) {
+ this.result = result;
+ }
+
+ public String getStatusMessage() {
+ return statusMessage;
+ }
+
+ public void setStatusMessage(String statusMessage) {
+ this.statusMessage = statusMessage;
+ }
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public void setStatusCode(int statusCode) {
+ this.statusCode = statusCode;
+ }
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/PostResponse.java b/apitrary-api/src/main/java/com/apitrary/api/response/PostResponse.java
new file mode 100644
index 0000000..8dd3807
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/PostResponse.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response;
+
+public class PostResponse {
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/PutResponse.java b/apitrary-api/src/main/java/com/apitrary/api/response/PutResponse.java
new file mode 100644
index 0000000..deec3f2
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/PutResponse.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response;
+
+public class PutResponse {
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/Result.java b/apitrary-api/src/main/java/com/apitrary/api/response/Result.java
new file mode 100644
index 0000000..39d7f35
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/Result.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response;
+
+public class Result {
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/normalized/DeleteNormalizer.java b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/DeleteNormalizer.java
new file mode 100644
index 0000000..0a288de
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/DeleteNormalizer.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response.normalized;
+
+public class DeleteNormalizer {
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/normalized/GetNormalizer.java b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/GetNormalizer.java
new file mode 100644
index 0000000..b1c0189
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/GetNormalizer.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response.normalized;
+
+public class GetNormalizer {
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/normalized/Normalizer.java b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/Normalizer.java
new file mode 100644
index 0000000..a7a82e4
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/Normalizer.java
@@ -0,0 +1,8 @@
+package com.apitrary.api.response.normalized;
+
+public class Normalizer {
+
+ public String normalize(String jsonResponse){
+ return jsonResponse;
+ }
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/normalized/PostNormalizer.java b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/PostNormalizer.java
new file mode 100644
index 0000000..ade470d
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/PostNormalizer.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response.normalized;
+
+public class PostNormalizer {
+
+}
diff --git a/apitrary-api/src/main/java/com/apitrary/api/response/normalized/PutNormalizer.java b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/PutNormalizer.java
new file mode 100644
index 0000000..857e9bf
--- /dev/null
+++ b/apitrary-api/src/main/java/com/apitrary/api/response/normalized/PutNormalizer.java
@@ -0,0 +1,5 @@
+package com.apitrary.api.response.normalized;
+
+public class PutNormalizer {
+
+}