killbill-memoizeit

Add new endpoints to store tenant user keys (that is different

4/8/2015 8:57:48 PM

Details

diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
index d920800..872296c 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
@@ -29,6 +29,7 @@ public interface JaxrsResource {
     public static final String TIMELINE = "timeline";
     public static final String REGISTER_NOTIFICATION_CALLBACK = "registerNotificationCallback";
     public static final String UPLOAD_PLUGIN_CONFIG = "uploadPluginConfig";
+    public static final String USER_KEY_VALUE = "userKeyValue";
     public static final String SEARCH = "search";
 
     /*
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
index 977537d..3fb174e 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
@@ -16,7 +16,6 @@
 
 package org.killbill.billing.jaxrs.resources;
 
-import java.net.URI;
 import java.util.List;
 import java.util.UUID;
 
@@ -33,7 +32,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
-import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriInfo;
 
 import org.killbill.billing.ObjectType;
@@ -209,6 +207,58 @@ public class TenantResource extends JaxRsResourceBase {
         return deleteTenantKey(TenantKey.PLUGIN_CONFIG_, pluginName, createdBy, reason, comment, request);
     }
 
+
+    @Timed
+    @POST
+    @Path("/" + USER_KEY_VALUE + "/{keyName:" + ANYTHING_PATTERN + "}")
+    @Consumes(TEXT_PLAIN)
+    @Produces(APPLICATION_JSON)
+    @ApiOperation(value = "Add a per tenant user key/value")
+    @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid tenantId supplied")})
+    public Response insertUserKeyValue(@PathParam("keyName") final String key,
+                               final String value,
+                               @HeaderParam(HDR_CREATED_BY) final String createdBy,
+                               @HeaderParam(HDR_REASON) final String reason,
+                               @HeaderParam(HDR_COMMENT) final String comment,
+                               @javax.ws.rs.core.Context final HttpServletRequest request,
+                               @javax.ws.rs.core.Context  final UriInfo uriInfo) throws TenantApiException {
+        final CallContext callContext = context.createContext(createdBy, reason, comment, request);
+        tenantApi.addTenantKeyValue(key, value, callContext);
+        return uriBuilder.buildResponse(uriInfo, TenantResource.class, "getUserKeyValue", key);
+    }
+
+    @Timed
+    @GET
+    @Path("/" + USER_KEY_VALUE + "/{keyName:" + ANYTHING_PATTERN + "}")
+    @Produces(APPLICATION_JSON)
+    @ApiOperation(value = "Retrieve a per tenant user key/value", response = TenantKeyJson.class)
+    @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid tenantId supplied")})
+    public Response getUserKeyValue(@PathParam("keyName") final String key,
+                                           @javax.ws.rs.core.Context final HttpServletRequest request) throws TenantApiException {
+        final TenantContext tenantContext = context.createContext(request);
+        final List<String> values = tenantApi.getTenantValuesForKey(key, tenantContext);
+        final TenantKeyJson result = new TenantKeyJson(key, values);
+        return Response.status(Status.OK).entity(result).build();
+    }
+
+
+    @Timed
+    @DELETE
+    @Path("/" + USER_KEY_VALUE + "/{keyName:" + ANYTHING_PATTERN + "}")
+    @ApiOperation(value = "Delete  a per tenant user key/value")
+    @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid tenantId supplied")})
+    public Response deleteUserKeyValue(@PathParam("keyName") final String key,
+                                              @HeaderParam(HDR_CREATED_BY) final String createdBy,
+                                              @HeaderParam(HDR_REASON) final String reason,
+                                              @HeaderParam(HDR_COMMENT) final String comment,
+                                              @javax.ws.rs.core.Context final HttpServletRequest request) throws TenantApiException {
+        final CallContext callContext = context.createContext(createdBy, reason, comment, request);
+        tenantApi.deleteTenantKey(key, callContext);
+        return Response.status(Status.OK).build();
+    }
+
+
+
     private Response insertTenantKey(final TenantKey key,
                                      @Nullable final String keyPostfix,
                                      final String value,
@@ -223,10 +273,10 @@ public class TenantResource extends JaxRsResourceBase {
         tenantApi.addTenantKeyValue(tenantKey, value, callContext);
 
         return uriBuilder.buildResponse(uriInfo, TenantResource.class, getMethodStr, keyPostfix);
-//        final URI uri = UriBuilder.fromResource(TenantResource.class).path(TenantResource.class, getMethodStr).build();
-//        return Response.created(uri).build();
     }
 
+
+
     private Response getTenantKey(final TenantKey key,
                                   @Nullable final String keyPostfix,
                                   final HttpServletRequest request) throws TenantApiException {