killbill-uncached
Changes
pom.xml 2(+1 -1)
Details
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java
index 3c3473a..a5e1c5c 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java
@@ -88,7 +88,7 @@ public class DefaultSubscriptionApi implements SubscriptionApi {
if (compared2 != 0) {
return compared2;
} else {
- // Default, stable, ordering
+ // Default stable ordering (in the sense that doing twice the same call will lead to same result)
return o1.getId().compareTo(o2.getId());
}
}
@@ -203,8 +203,8 @@ public class DefaultSubscriptionApi implements SubscriptionApi {
final SubscriptionBundle bundle = getSubscriptionBundle(cur.getId(), context);
result.add(bundle);
}
-
- return result;
+ // Sorting by createdDate will likely place the active bundle last, but this is the same ordering we already use for getSubscriptionBundlesForAccount
+ return Ordering.from(SUBSCRIPTION_BUNDLE_COMPARATOR).sortedCopy(result);
}
@Override
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 3508ed9..2b2c0a4 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
@@ -1118,7 +1118,7 @@ public class AccountResource extends JaxRsResourceBase {
@ApiResponse(code = 404, message = "Account not found")})
public Response getTags(@PathParam(ID_PARAM_NAME) final String accountIdString,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
- @QueryParam(QUERY_TAGS_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+ @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
@javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException {
final UUID accountId = UUID.fromString(accountIdString);
return super.getTags(accountId, accountId, auditMode, includedDeleted, context.createContext(request));
@@ -1134,7 +1134,7 @@ public class AccountResource extends JaxRsResourceBase {
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,
+ @QueryParam(QUERY_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);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
index f32c0f3..daffae5 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
@@ -17,6 +17,7 @@
package org.killbill.billing.jaxrs.resources;
import java.net.URI;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -74,6 +75,7 @@ import org.killbill.clock.Clock;
import org.killbill.commons.metrics.TimedResource;
import com.google.common.base.Function;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.inject.Inject;
import com.wordnik.swagger.annotations.Api;
@@ -132,14 +134,26 @@ public class BundleResource extends JaxRsResourceBase {
@ApiOperation(value = "Retrieve a bundle by external key", response = BundleJson.class)
@ApiResponses(value = {@ApiResponse(code = 404, message = "Bundle not found")})
public Response getBundleByKey(@QueryParam(QUERY_EXTERNAL_KEY) final String externalKey,
+ @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
@javax.ws.rs.core.Context final HttpServletRequest request) throws SubscriptionApiException, AccountApiException, CatalogApiException {
final TenantContext tenantContext = this.context.createContext(request);
- final SubscriptionBundle bundle = subscriptionApi.getActiveSubscriptionBundleForExternalKey(externalKey, tenantContext);
- final Account account = accountUserApi.getAccountById(bundle.getAccountId(), tenantContext);
- final BundleJson json = new BundleJson(bundle, account.getCurrency(), null);
- return Response.status(Status.OK).entity(json).build();
+ final List<SubscriptionBundle> bundles;
+ if (includedDeleted) {
+ bundles = subscriptionApi.getSubscriptionBundlesForExternalKey(externalKey, tenantContext);
+ } else {
+ final SubscriptionBundle activeBundle = subscriptionApi.getActiveSubscriptionBundleForExternalKey(externalKey, tenantContext);
+ bundles = ImmutableList.of(activeBundle);
+ }
+
+ final List<BundleJson> result = new ArrayList<BundleJson>(bundles.size());
+ for (final SubscriptionBundle bundle : bundles) {
+ final Account account = accountUserApi.getAccountById(bundle.getAccountId(), tenantContext);
+ final BundleJson json = new BundleJson(bundle, account.getCurrency(), null);
+ result.add(json);
+ }
+ return Response.status(Status.OK).entity(result).build();
}
@TimedResource
@@ -333,7 +347,7 @@ public class BundleResource extends JaxRsResourceBase {
@ApiResponse(code = 404, message = "Bundle not found")})
public Response getTags(@PathParam(ID_PARAM_NAME) final String bundleIdString,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
- @QueryParam(QUERY_TAGS_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+ @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
@javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException, SubscriptionApiException {
final UUID bundleId = UUID.fromString(bundleIdString);
final TenantContext tenantContext = context.createContext(request);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
index 74e1588..377dd1c 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
@@ -294,7 +294,7 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
public Response getTags(@PathParam(ID_PARAM_NAME) final String paymentIdString,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
- @QueryParam(QUERY_TAGS_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+ @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
@javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException, PaymentApiException {
final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
final UUID paymentId = UUID.fromString(paymentIdString);
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
index 9d6b982..6811d99 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
@@ -925,7 +925,7 @@ public class InvoiceResource extends JaxRsResourceBase {
@ApiResponse(code = 404, message = "Invoice not found")})
public Response getTags(@PathParam(ID_PARAM_NAME) final String invoiceIdString,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
- @QueryParam(QUERY_TAGS_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+ @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
@javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException, InvoiceApiException {
final UUID invoiceId = UUID.fromString(invoiceIdString);
final TenantContext tenantContext = context.createContext(request);
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 d66420d..db3dc47 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
@@ -104,7 +104,6 @@ public interface JaxrsResource {
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";
@@ -263,4 +262,7 @@ public interface JaxrsResource {
public static final String BCD = "bcd";
public static final String TRANSFER_CREDIT = "transferCredit";
+ public static final String QUERY_INCLUDED_DELETED = "includedDeleted";
+
+
}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
index e770d05..5fb1531 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
@@ -718,7 +718,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
@ApiResponse(code = 404, message = "Subscription not found")})
public Response getTags(@PathParam(ID_PARAM_NAME) final String subscriptionIdString,
@QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
- @QueryParam(QUERY_TAGS_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
+ @QueryParam(QUERY_INCLUDED_DELETED) @DefaultValue("false") final Boolean includedDeleted,
@javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException, SubscriptionApiException {
final UUID subscriptionId = UUID.fromString(subscriptionIdString);
final TenantContext tenantContext = context.createContext(request);
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index d7b0f86..a76853d 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.110</version>
+ <version>0.110-SNAPSHOT</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.17.1-SNAPSHOT</version>
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java
index 33e7df6..3f58b8e 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBundle.java
@@ -102,7 +102,7 @@ public class TestBundle extends TestJaxrsBase {
final Subscription entitlementJsonNoEvents = createEntitlement(accountJson.getAccountId(), bundleExternalKey, productName,
ProductCategory.BASE, term, true);
- final Bundle originalBundle = killBillClient.getBundle(bundleExternalKey);
+ final Bundle originalBundle = killBillClient.getBundle(bundleExternalKey, requestOptions);
assertEquals(originalBundle.getAccountId(), accountJson.getAccountId());
assertEquals(originalBundle.getExternalKey(), bundleExternalKey);
@@ -113,10 +113,18 @@ public class TestBundle extends TestJaxrsBase {
bundle.setBundleId(entitlementJsonNoEvents.getBundleId());
assertEquals(killBillClient.transferBundle(bundle, createdBy, reason, comment).getAccountId(), newAccount.getAccountId());
- final Bundle newBundle = killBillClient.getBundle(bundleExternalKey);
+ final Bundle newBundle = killBillClient.getBundle(bundleExternalKey, requestOptions);
assertNotEquals(newBundle.getBundleId(), originalBundle.getBundleId());
assertEquals(newBundle.getExternalKey(), originalBundle.getExternalKey());
assertEquals(newBundle.getAccountId(), newAccount.getAccountId());
+
+
+ final Bundles bundles = killBillClient.getAllBundlesForExternalKey(bundleExternalKey, requestOptions);
+ assertEquals(bundles.size(), 2);
+ assertEquals(bundles.get(0).getBundleId(), originalBundle.getBundleId());
+ assertEquals(bundles.get(0).getSubscriptions().get(0).getState(), EntitlementState.CANCELLED);
+ assertEquals(bundles.get(1).getBundleId(), newBundle.getBundleId());
+ assertEquals(bundles.get(1).getSubscriptions().get(0).getState(), EntitlementState.ACTIVE);
}
@Test(groups = "slow", description = "Block a bundle")