killbill-aplcache
Changes
pom.xml 2(+1 -1)
Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
index 94464f6..f8fd726 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
@@ -47,6 +47,7 @@ import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
import org.killbill.billing.payment.api.Payment;
import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.payment.api.PaymentApiException;
+import org.killbill.billing.payment.api.PaymentTransaction;
import org.killbill.billing.payment.api.PluginProperty;
import org.killbill.billing.payment.api.TransactionStatus;
import org.killbill.billing.util.api.AuditUserApi;
@@ -174,10 +175,11 @@ public class TransactionResource extends JaxRsResourceBase {
public Response getTags(@PathParam(ID_PARAM_NAME) final String id,
@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 {
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws TagDefinitionApiException, PaymentApiException {
final TenantContext tenantContext = context.createContext(request);
- //return super.getTags(accountId, invoiceId, auditMode, includedDeleted, tenantContext);
- throw new IllegalStateException("Not implemented");
+ final PaymentTransaction paymentTransaction = paymentApi.getPaymentTransactionById(UUID.fromString(id), tenantContext);
+ final Payment payment = paymentApi.getPayment(paymentTransaction.getPaymentId(), false, false, ImmutableList.<PluginProperty>of(), tenantContext);
+ return super.getTags(payment.getAccountId(), UUID.fromString(id), auditMode, includedDeleted, tenantContext);
}
@TimedResource
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentApi.java b/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentApi.java
index ac0702a..f57bea6 100644
--- a/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentApi.java
+++ b/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentApi.java
@@ -911,6 +911,11 @@ public class DefaultPaymentApi extends DefaultApiBase implements PaymentApi {
return paymentMethods;
}
+ @Override
+ public PaymentTransaction getPaymentTransactionById(final UUID paymentTransactionId, final TenantContext context) throws PaymentApiException {
+ return paymentProcessor.getPaymentTransactionById(paymentTransactionId, internalCallContextFactory.createInternalTenantContextWithoutAccountRecordId(context));
+ }
+
private PaymentTransaction findPaymentTransaction(final Payment payment, @Nullable final String paymentTransactionExternalKey) {
// By design, the payment transactions are already correctly sorted (by effective date asc)
if (paymentTransactionExternalKey == null) {
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/PaymentProcessor.java b/payment/src/main/java/org/killbill/billing/payment/core/PaymentProcessor.java
index ab61ca5..0b29de1 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/PaymentProcessor.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/PaymentProcessor.java
@@ -389,6 +389,27 @@ public class PaymentProcessor extends ProcessorBase {
}
}
+ public PaymentTransaction getPaymentTransactionById(final UUID transactionId,
+ final InternalTenantContext internalTenantContext) throws PaymentApiException {
+ final PaymentTransactionModelDao paymentTransactionDao = paymentDao.getPaymentTransaction(transactionId, internalTenantContext);
+ return new DefaultPaymentTransaction(
+ paymentTransactionDao.getId(),
+ paymentTransactionDao.getAttemptId(),
+ paymentTransactionDao.getTransactionExternalKey(),
+ paymentTransactionDao.getCreatedDate(),
+ paymentTransactionDao.getUpdatedDate(),
+ paymentTransactionDao.getPaymentId(),
+ paymentTransactionDao.getTransactionType(),
+ paymentTransactionDao.getEffectiveDate(),
+ paymentTransactionDao.getTransactionStatus(),
+ paymentTransactionDao.getAmount(),
+ paymentTransactionDao.getCurrency(),
+ paymentTransactionDao.getProcessedAmount(),
+ paymentTransactionDao.getProcessedCurrency(),
+ paymentTransactionDao.getGatewayErrorCode(),
+ paymentTransactionDao.getGatewayErrorMsg(),
+ null);
+ }
private Payment performOperation(final boolean isApiPayment,
@Nullable final UUID attemptId,
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index 1bb43b2..0927ec9 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.128</version>
+ <version>0.129-SNAPSHOT</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.17.5-SNAPSHOT</version>
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
index 16f4c35..928ba11 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
@@ -36,6 +36,7 @@ import org.killbill.billing.client.model.PaymentMethodPluginDetail;
import org.killbill.billing.client.model.PaymentTransaction;
import org.killbill.billing.client.model.Payments;
import org.killbill.billing.client.model.PluginProperty;
+import org.killbill.billing.client.model.TagDefinition;
import org.killbill.billing.client.model.Tags;
import org.killbill.billing.control.plugin.api.PaymentControlPluginApi;
import org.killbill.billing.osgi.api.OSGIServiceDescriptor;
@@ -644,6 +645,50 @@ public class TestPayment extends TestJaxrsBase {
Assert.assertNull(payment);
}
+ @Test(groups = "slow")
+ public void testGetTagsForPaymentTransaction() throws Exception {
+ UUID tagDefinitionId = UUID.randomUUID();
+ String tagDefinitionName = "payment-transaction";
+ TagDefinition tagDefinition = new TagDefinition(tagDefinitionId, false, tagDefinitionName, "description", null);
+ final TagDefinition createdTagDefinition = killBillClient.createTagDefinition(tagDefinition, requestOptions);
+
+ final Account account = createAccountWithDefaultPaymentMethod();
+ final String externalPaymentKey = UUID.randomUUID().toString();
+ final UUID paymentId = testCreateRetrievePayment(account, null, externalPaymentKey, 1);
+
+ final Payment payment = killBillClient.getPaymentByExternalKey(externalPaymentKey, requestOptions);
+ assertEquals(payment.getPaymentId(), paymentId);
+
+ UUID paymentTransactionId = payment.getTransactions().get(0).getTransactionId();
+ killBillClient.createPaymentTransactionTag(paymentTransactionId, createdTagDefinition.getId(), requestOptions);
+
+ final Tags paymentTransactionTags = killBillClient.getPaymentTransactionTags(paymentTransactionId, requestOptions);
+
+ Assert.assertNotNull(paymentTransactionTags);
+ Assert.assertEquals(paymentTransactionTags.get(0).getTagDefinitionName(), tagDefinitionName);
+ }
+
+ @Test(groups = "slow")
+ public void testCreateTagForPaymentTransaction() throws Exception {
+ UUID tagDefinitionId = UUID.randomUUID();
+ String tagDefinitionName = "payment-transaction";
+ TagDefinition tagDefinition = new TagDefinition(tagDefinitionId, false, tagDefinitionName, "description", null);
+ final TagDefinition createdTagDefinition = killBillClient.createTagDefinition(tagDefinition, requestOptions);
+
+ final Account account = createAccountWithDefaultPaymentMethod();
+ final String externalPaymentKey = UUID.randomUUID().toString();
+ final UUID paymentId = testCreateRetrievePayment(account, null, externalPaymentKey, 1);
+
+ final Payment payment = killBillClient.getPaymentByExternalKey(externalPaymentKey, requestOptions);
+ assertEquals(payment.getPaymentId(), paymentId);
+
+ UUID paymentTransactionId = payment.getTransactions().get(0).getTransactionId();
+ final Tags paymentTransactionTag = killBillClient.createPaymentTransactionTag(paymentTransactionId, createdTagDefinition.getId(), requestOptions);
+
+ Assert.assertNotNull(paymentTransactionTag);
+ Assert.assertEquals(paymentTransactionTag.get(0).getTagDefinitionName(), tagDefinitionName);
+ }
+
private UUID testCreateRetrievePayment(final Account account, @Nullable final UUID paymentMethodId,
final String paymentExternalKey, final int paymentNb) throws Exception {
// Authorization