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 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 { + +}