use of org.killbill.bus.api.BusEvent in project killbill by killbill.
the class MockSubscriptionDaoMemory method notifyBusOfEffectiveImmediateChange.
private void notifyBusOfEffectiveImmediateChange(final DefaultSubscriptionBase subscription, final SubscriptionBaseEvent immediateEvent, final int seqId, final InternalCallContext context) {
try {
final SubscriptionBaseTransitionData transition = subscription.getTransitionFromEvent(immediateEvent, seqId);
final BusEvent busEvent = new DefaultEffectiveSubscriptionEvent(transition, subscription.getAlignStartDate(), context.getUserToken(), context.getAccountRecordId(), context.getTenantRecordId());
eventBus.post(busEvent);
} catch (final EventBusException e) {
log.warn("Failed to post effective event for subscription " + subscription.getId(), e);
}
}
use of org.killbill.bus.api.BusEvent in project killbill by killbill.
the class DefaultSubscriptionBaseService method processEventReady.
@Override
public void processEventReady(final SubscriptionBaseEvent event, final int seqId, final InternalCallContext context) {
if (!event.isActive()) {
return;
}
try {
final SubscriptionCatalog catalog = subscriptionCatalogApi.getFullCatalog(context);
final DefaultSubscriptionBase subscription = (DefaultSubscriptionBase) dao.getSubscriptionFromId(event.getSubscriptionId(), catalog, context);
if (subscription == null) {
log.warn("Error retrieving subscriptionId='{}'", event.getSubscriptionId());
return;
}
final SubscriptionBaseTransitionData transition = subscription.getTransitionFromEvent(event, seqId);
if (transition == null) {
log.warn("Skipping event ='{}', no matching transition was built", event.getType());
return;
}
boolean eventSent = false;
if (event.getType() == EventType.PHASE) {
eventSent = onPhaseEvent(subscription, event, catalog, context);
} else if (event.getType() == EventType.API_USER && subscription.getCategory() == ProductCategory.BASE) {
final CallContext callContext = internalCallContextFactory.createCallContext(context);
eventSent = onBasePlanEvent(subscription, event, catalog, callContext);
} else if (event.getType() == EventType.BCD_UPDATE) {
eventSent = false;
}
if (!eventSent) {
// Methods above invoking the DAO will send this event directly from the transaction
final BusEvent busEvent = new DefaultEffectiveSubscriptionEvent(transition, subscription.getAlignStartDate(), context.getUserToken(), context.getAccountRecordId(), context.getTenantRecordId());
eventBus.post(busEvent);
}
} catch (final EventBusException e) {
log.warn("Failed to post event {}", event, e);
} catch (final CatalogApiException e) {
log.warn("Failed to post event {}", event, e);
}
}
use of org.killbill.bus.api.BusEvent in project killbill by killbill.
the class TestBeatrixListener method testInvoiceAdjustment.
@Test(groups = "fast")
public void testInvoiceAdjustment() throws Exception {
InvoiceAdjustmentInternalEvent event = mock(InvoiceAdjustmentInternalEvent.class);
provideCommonBusEventInfo(event);
when(event.getBusEventType()).thenReturn(BusInternalEventType.INVOICE_ADJUSTMENT);
when(event.getInvoiceId()).thenReturn(OBJECT_ID);
when(internalCallContextFactory.getAccountId(OBJECT_ID, ObjectType.INVOICE, tenantContext)).thenReturn(ACCOUNT_ID);
ArgumentCaptor<BusEvent> eventCaptor = ArgumentCaptor.forClass(BusEvent.class);
beatrixListener.handleAllInternalKillbillEvents(event);
verify(externalBus).post(eventCaptor.capture());
DefaultBusExternalEvent postedEvent = (DefaultBusExternalEvent) eventCaptor.getValue();
assertEquals(postedEvent.getObjectId(), OBJECT_ID);
assertEquals(postedEvent.getObjectType(), ObjectType.INVOICE);
assertEquals(postedEvent.getEventType(), ExtBusEventType.INVOICE_ADJUSTMENT);
assertNull(postedEvent.getMetaData());
assertCommonFieldsWithAccountId(postedEvent);
}
use of org.killbill.bus.api.BusEvent in project killbill by killbill.
the class TestBeatrixListener method testPaymentError.
@Test(groups = "fast")
public void testPaymentError() throws Exception {
PaymentErrorInternalEvent event = mock(PaymentErrorInternalEvent.class);
provideCommonBusEventInfo(event);
when(event.getBusEventType()).thenReturn(BusInternalEventType.PAYMENT_ERROR);
when(event.getPaymentId()).thenReturn(OBJECT_ID);
when(event.getAccountId()).thenReturn(ACCOUNT_ID);
provideCommonPaymentInfo(event);
ArgumentCaptor<PaymentMetadata> metadataCaptor = ArgumentCaptor.forClass(PaymentMetadata.class);
when(objectMapper.writeValueAsString(metadataCaptor.capture())).thenReturn(METADATA);
ArgumentCaptor<BusEvent> eventCaptor = ArgumentCaptor.forClass(BusEvent.class);
beatrixListener.handleAllInternalKillbillEvents(event);
verify(externalBus).post(eventCaptor.capture());
DefaultBusExternalEvent postedEvent = (DefaultBusExternalEvent) eventCaptor.getValue();
assertEquals(postedEvent.getObjectId(), OBJECT_ID);
assertEquals(postedEvent.getObjectType(), ObjectType.PAYMENT);
assertEquals(postedEvent.getEventType(), ExtBusEventType.PAYMENT_FAILED);
assertEquals(postedEvent.getMetaData(), METADATA);
assertCommonFieldsWithAccountId(postedEvent);
PaymentMetadata paymentMetadata = metadataCaptor.getValue();
assertPaymentMetadataFields(paymentMetadata);
}
use of org.killbill.bus.api.BusEvent in project killbill by killbill.
the class TestBeatrixListener method testUserTagCreation.
@Test(groups = "fast")
public void testUserTagCreation() throws Exception {
UserTagCreationInternalEvent event = mock(UserTagCreationInternalEvent.class);
provideCommonBusEventInfo(event);
when(event.getBusEventType()).thenReturn(BusInternalEventType.USER_TAG_CREATION);
when(event.getTagId()).thenReturn(OBJECT_ID);
when(event.getTagDefinition()).thenReturn(new DefaultTagDefinition("MY_TAG", "", false));
when(internalCallContextFactory.getAccountId(OBJECT_ID, ObjectType.TAG, tenantContext)).thenReturn(ACCOUNT_ID);
ArgumentCaptor<BusEvent> eventCaptor = ArgumentCaptor.forClass(BusEvent.class);
beatrixListener.handleAllInternalKillbillEvents(event);
verify(externalBus).post(eventCaptor.capture());
DefaultBusExternalEvent postedEvent = (DefaultBusExternalEvent) eventCaptor.getValue();
assertEquals(postedEvent.getObjectId(), OBJECT_ID);
assertEquals(postedEvent.getObjectType(), ObjectType.TAG);
assertEquals(postedEvent.getEventType(), ExtBusEventType.TAG_CREATION);
assertEquals(postedEvent.getMetaData(), "MY_TAG");
assertCommonFieldsWithAccountId(postedEvent);
}
Aggregations