killbill-memoizeit
Changes
pom.xml 2(+1 -1)
Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index 29364d0..374fb62 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -100,6 +100,7 @@ import org.killbill.billing.util.callcontext.TenantContext;
import org.killbill.billing.util.config.PaymentConfig;
import org.killbill.billing.util.entity.Pagination;
import org.killbill.billing.util.tag.ControlTagType;
+import org.killbill.billing.util.tag.Tag;
import org.killbill.clock.Clock;
import com.codahale.metrics.annotation.Timed;
@@ -892,6 +893,27 @@ public class AccountResource extends JaxRsResourceBase {
}
@Timed
+ @GET
+ @Path("/{accountId:" + UUID_PATTERN + "}/" + ALL_TAGS)
+ @Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve account tags", response = TagJson.class, responseContainer = "List")
+ @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id supplied"),
+ @ApiResponse(code = 404, message = "Account not found")})
+ public Response getAllTags(@PathParam(ID_PARAM_NAME) final String accountIdString,
+ @QueryParam(QUERY_OBJECT_TYPE) final ObjectType objectType,
+ @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
+ @QueryParam(QUERY_TAGS_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException {
+ final UUID accountId = UUID.fromString(accountIdString);
+ final TenantContext tenantContext = context.createContext(request);
+ final List<Tag> tags = objectType != null ?
+ tagUserApi.getTagsForAccountType(accountId, objectType, includedDeleted, tenantContext) :
+ tagUserApi.getTagsForAccount(accountId, includedDeleted, tenantContext);
+ return createTagResponse(accountId, tags, auditMode, tenantContext);
+ }
+
+
+ @Timed
@POST
@Path("/{accountId:" + UUID_PATTERN + "}/" + TAGS)
@Produces(APPLICATION_JSON)
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 d29d527..076fd55 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
@@ -88,10 +88,13 @@ public interface JaxrsResource {
public static final String QUERY_PAYMENT_METHOD_ID = "paymentMethodId";
public static final String QUERY_PAYMENT_CONTROL_PLUGIN_NAME = "controlPluginName";
+
public static final String QUERY_TAGS = "tagList";
public static final String QUERY_TAGS_INCLUDED_DELETED = "includedDeleted";
public static final String QUERY_CUSTOM_FIELDS = "customFieldList";
+ public static final String QUERY_OBJECT_TYPE = "objectType";
+
public static final String QUERY_PAYMENT_METHOD_PLUGIN_NAME = "pluginName";
public static final String QUERY_WITH_PLUGIN_INFO = "withPluginInfo";
public static final String QUERY_PAYMENT_METHOD_IS_DEFAULT = "isDefault";
@@ -172,6 +175,7 @@ public interface JaxrsResource {
public static final String CHARGEBACKS = "chargebacks";
public static final String CHARGEBACKS_PATH = PREFIX + "/" + CHARGEBACKS;
+ public static final String ALL_TAGS = "allTags";
public static final String TAGS = "tags";
public static final String TAGS_PATH = PREFIX + "/" + TAGS;
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
index 2921882..b46b836 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -140,6 +140,10 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
protected Response getTags(final UUID accountId, final UUID taggedObjectId, final AuditMode auditMode, final boolean includeDeleted, final TenantContext context) throws TagDefinitionApiException {
final List<Tag> tags = tagUserApi.getTagsForObject(taggedObjectId, getObjectType(), includeDeleted, context);
+ return createTagResponse(accountId, tags, auditMode, context);
+ }
+
+ protected Response createTagResponse(final UUID accountId, final List<Tag> tags, final AuditMode auditMode, final TenantContext context) throws TagDefinitionApiException {
final AccountAuditLogsForObjectType tagsAuditLogs = auditUserApi.getAccountAuditLogs(accountId, ObjectType.TAG, auditMode.getLevel(), context);
final Map<UUID, TagDefinition> tagDefinitionsCache = new HashMap<UUID, TagDefinition>();
@@ -153,10 +157,10 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
final List<AuditLog> auditLogs = tagsAuditLogs.getAuditLogs(tag.getId());
result.add(new TagJson(tag, tagDefinition, auditLogs));
}
-
return Response.status(Response.Status.OK).entity(result).build();
}
+
protected Response createTags(final UUID id,
final String tagList,
final UriInfo uriInfo,
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index 6abdc1f..c3dd122 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>killbill-oss-parent</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.39</version>
+ <version>0.40</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.15.4-SNAPSHOT</version>
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java
index a264129..725ddac 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestTag.java
@@ -23,12 +23,17 @@ import java.util.UUID;
import javax.annotation.Nullable;
+import org.joda.time.DateTime;
import org.killbill.billing.ObjectType;
+import org.killbill.billing.catalog.api.BillingPeriod;
+import org.killbill.billing.catalog.api.ProductCategory;
import org.killbill.billing.client.KillBillClientException;
import org.killbill.billing.client.model.Account;
+import org.killbill.billing.client.model.Subscription;
import org.killbill.billing.client.model.Tag;
import org.killbill.billing.client.model.TagDefinition;
import org.killbill.billing.client.model.Tags;
+import org.killbill.billing.util.api.AuditLevel;
import org.killbill.billing.util.tag.ControlTagType;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -94,6 +99,39 @@ public class TestTag extends TestJaxrsBase {
assertEquals(objFromJson.size(), 3 + sizeSystemTag);
}
+
+ @Test(groups = "slow", description = "Can search all tags for an account")
+ public void testGetAllTagsByType() throws Exception {
+
+ final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);
+ clock.setDeltaFromReality(initialDate.getMillis() - clock.getUTCNow().getMillis());
+
+ final Account account = createAccountWithDefaultPaymentMethod();
+
+ final Subscription subscriptionJson = createEntitlement(account.getAccountId(), "87544332", "Shotgun",
+ ProductCategory.BASE, BillingPeriod.MONTHLY, true);
+
+ for (final ControlTagType controlTagType : ControlTagType.values()) {
+ killBillClient.createAccountTag(account.getAccountId(), controlTagType.getId(), createdBy, reason, comment);
+ }
+
+ final TagDefinition bundleTagDefInput = new TagDefinition(null, false, "bundleTagDef", "nothing special", ImmutableList.<ObjectType>of());
+ final TagDefinition bundleTagDef = killBillClient.createTagDefinition(bundleTagDefInput, createdBy, reason, comment);
+
+ killBillClient.createBundleTag(subscriptionJson.getBundleId(), bundleTagDef.getId(), createdBy, reason, comment);
+
+ final Tags allBundleTags = killBillClient.getBundleTags(subscriptionJson.getBundleId(), AuditLevel.FULL);
+ Assert.assertEquals(allBundleTags.size(), 1);
+
+ final Tags allAccountTags = killBillClient.getAllAccountTags(account.getAccountId(), null, AuditLevel.FULL);
+ Assert.assertEquals(allAccountTags.size(), ControlTagType.values().length + 1);
+
+
+ final Tags allBundleTagsForAccount = killBillClient.getAllAccountTags(account.getAccountId(), ObjectType.BUNDLE.name(), AuditLevel.FULL);
+ Assert.assertEquals(allBundleTagsForAccount.size(), 1);
+ }
+
+
@Test(groups = "slow", description = "Can search system tags")
public void testSystemTagsPagination() throws Exception {
final Account account = createAccount();