@Override public CustomField apply(final CustomFieldModelDao input) { return new StringCustomField(input); } };
@Override public UUID apply(final CustomField input) { return input.getId(); } });
@Override public CustomFieldModelDao apply(final CustomField input) { // Respect user-specified ID // TODO See https://github.com/killbill/killbill/issues/35 if (input.getId() != null) { return new CustomFieldModelDao(input.getId(), context.getCreatedDate(), context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } else { return new CustomFieldModelDao(context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } } });
@Test(groups = "slow") public void testCustomFieldUpdate() throws Exception { final CustomField customField1 = new StringCustomField("gtqre", "value1", ObjectType.ACCOUNT, accountId, callContext.getCreatedDate()); eventsListener.pushExpectedEvents(NextEvent.CUSTOM_FIELD); customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField1), callContext); assertListenerStatus(); final CustomField update1 = new StringCustomField(customField1.getId(), customField1.getFieldName(), "value2", customField1.getObjectType(), customField1.getObjectId(), callContext.getCreatedDate()); customFieldUserApi.updateCustomFields(ImmutableList.of(update1), callContext); List<CustomField> all = customFieldUserApi.getCustomFieldsForAccount(accountId, callContext); Assert.assertEquals(all.size(), 1); Assert.assertEquals(all.get(0).getId(), update1.getId()); Assert.assertEquals(all.get(0).getObjectType(), update1.getObjectType()); Assert.assertEquals(all.get(0).getObjectId(), update1.getObjectId()); Assert.assertEquals(all.get(0).getFieldName(), update1.getFieldName()); Assert.assertEquals(all.get(0).getFieldValue(), "value2"); try { customFieldUserApi.updateCustomFields(ImmutableList.<CustomField>of(new StringCustomField("gtqre", "value1", ObjectType.ACCOUNT, accountId, callContext.getCreatedDate())), callContext); Assert.fail("Updating custom field should fail"); } catch (final CustomFieldApiException e) { Assert.assertEquals(e.getCode(), ErrorCode.CUSTOM_FIELD_DOES_NOT_EXISTS_FOR_ID.getCode()); } try { customFieldUserApi.updateCustomFields(ImmutableList.<CustomField>of(new StringCustomField(customField1.getId(), "wrongName", "value2", customField1.getObjectType(), customField1.getObjectId(), callContext.getCreatedDate())), callContext); Assert.fail("Updating custom field should fail"); } catch (final CustomFieldApiException e) { Assert.assertEquals(e.getCode(), ErrorCode.CUSTOM_FIELD_INVALID_UPDATE.getCode()); } }
checkPagination(0); final CustomField customField = new StringCustomField(cfName, cfValue, ObjectType.ACCOUNT, accountId, callContext.getCreatedDate()); eventsListener.pushExpectedEvent(NextEvent.CUSTOM_FIELD); customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField), callContext); assertListenerStatus(); checkPagination(1); final List<CustomField> customFields = customFieldUserApi.getCustomFieldsForObject(accountId, ObjectType.ACCOUNT, callContext); Assert.assertEquals(customFields.size(), 1); Assert.assertEquals(customFields.get(0).getFieldName(), customField.getFieldName()); Assert.assertEquals(customFields.get(0).getFieldValue(), customField.getFieldValue()); Assert.assertEquals(customFields.get(0).getObjectId(), customField.getObjectId()); Assert.assertEquals(customFields.get(0).getObjectType(), customField.getObjectType()); customFieldUserApi.removeCustomFields(customFields, callContext); assertListenerStatus(); List<CustomField> remainingCustomFields = customFieldUserApi.getCustomFieldsForObject(accountId, ObjectType.ACCOUNT, callContext); Assert.assertEquals(remainingCustomFields.size(), 0); checkPagination(0); final CustomField newCustomField = new StringCustomField(cfName, cfValue, ObjectType.ACCOUNT, accountId, callContext.getCreatedDate()); customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(newCustomField), callContext); assertListenerStatus(); remainingCustomFields = customFieldUserApi.getCustomFieldsForObject(accountId, ObjectType.ACCOUNT, callContext); Assert.assertEquals(remainingCustomFields.size(), 1);
@Test(groups = "slow") public void testCustomFieldNoId() throws Exception { // Verify that when coming from a plugin, the id isn't required final CustomField customField = Mockito.mock(CustomField.class); Mockito.when(customField.getObjectId()).thenReturn(accountId); Mockito.when(customField.getObjectType()).thenReturn(ObjectType.ACCOUNT); Mockito.when(customField.getFieldName()).thenReturn(UUID.randomUUID().toString()); Mockito.when(customField.getFieldValue()).thenReturn(UUID.randomUUID().toString()); eventsListener.pushExpectedEvents(NextEvent.CUSTOM_FIELD); customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField), callContext); assertListenerStatus(); }
@Override public void removeCustomFields(final List<CustomField> customFields, final CallContext context) throws CustomFieldApiException { if (!customFields.isEmpty()) { final InternalCallContext internalCallContext = internalCallContextFactory.createInternalCallContext(customFields.get(0).getObjectId(), customFields.get(0).getObjectType(), context); final Iterable<UUID> curstomFieldIds = Iterables.transform(customFields, new Function<CustomField, UUID>() { @Override public UUID apply(final CustomField input) { return input.getId(); } }); customFieldDao.deleteCustomFields(curstomFieldIds, internalCallContext); } }
@Override public void updateCustomFields(final List<CustomField> customFields, final CallContext context) throws CustomFieldApiException { if (!customFields.isEmpty()) { final InternalCallContext internalCallContext = internalCallContextFactory.createInternalCallContext(customFields.get(0).getObjectId(), customFields.get(0).getObjectType(), context); final Iterable<CustomFieldModelDao> customFieldIds = Iterables.transform(customFields, new Function<CustomField, CustomFieldModelDao>() { @Override public CustomFieldModelDao apply(final CustomField input) { return new CustomFieldModelDao(input.getId(), internalCallContext.getCreatedDate(), internalCallContext.getUpdatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } }); customFieldDao.updateCustomFields(customFieldIds, internalCallContext); } }
@Override public void addCustomFields(final List<CustomField> customFields, final CallContext context) throws CustomFieldApiException { if (!customFields.isEmpty()) { final InternalCallContext internalCallContext = internalCallContextFactory.createInternalCallContext(customFields.get(0).getObjectId(), customFields.get(0).getObjectType(), context); final Iterable<CustomFieldModelDao> transformed = Iterables.transform(customFields, new Function<CustomField, CustomFieldModelDao>() { @Override public CustomFieldModelDao apply(final CustomField input) { // Respect user-specified ID // TODO See https://github.com/killbill/killbill/issues/35 if (input.getId() != null) { return new CustomFieldModelDao(input.getId(), context.getCreatedDate(), context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } else { return new CustomFieldModelDao(context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } } }); ((DefaultCustomFieldDao) customFieldDao).create(transformed, internalCallContext); } }
@Test(groups = "slow") public void testCreateCustomField() throws CustomFieldApiException { final UUID id = UUID.randomUUID(); final ObjectType objectType = ObjectType.ACCOUNT; String fieldName = "TestField1"; String fieldValue = "Kitty Hawk"; eventsListener.pushExpectedEvent(NextEvent.CUSTOM_FIELD); customFieldDao.create(new CustomFieldModelDao(internalCallContext.getCreatedDate(), fieldName, fieldValue, id, objectType), internalCallContext); assertListenerStatus(); fieldName = "TestField2"; fieldValue = "Cape Canaveral"; eventsListener.pushExpectedEvent(NextEvent.CUSTOM_FIELD); customFieldDao.create(new CustomFieldModelDao(internalCallContext.getCreatedDate(), fieldName, fieldValue, id, objectType), internalCallContext); assertListenerStatus(); } }
private void saveValue(MutableIssue issue, String valueToSave, CustomField customField) throws FieldLayoutStorageException { issue.setCustomFieldValue(customField, valueToSave); Map<String, ModifiedValue> modifiedFields = issue.getModifiedFields(); FieldLayoutItem fieldLayoutItem = ComponentManager.getInstance().getFieldLayoutManager().getFieldLayout(issue).getFieldLayoutItem( customField); DefaultIssueChangeHolder issueChangeHolder = new DefaultIssueChangeHolder(); final ModifiedValue modifiedValue = (ModifiedValue) modifiedFields.get(customField.getId()); customField.updateValue(fieldLayoutItem, issue, modifiedValue, issueChangeHolder); }
public static <E extends Entity, O, T extends BillingExceptionBase> Pagination<E> getEntityPaginationNoException(final Long limit, final SourcePaginationBuilder<O, T> sourcePaginationBuilder, final Function<O, E> function) { try { return getEntityPagination(limit, sourcePaginationBuilder, function); } catch (final BillingExceptionBase e) { throw new ShouldntHappenException("No exception expected" + e); } } }
@Override protected void installCustomFieldDao() { bind(CustomFieldDao.class).to(MockCustomFieldDao.class).asEagerSingleton(); } }
final CustomField customField1 = new StringCustomField("some123", "some 456", ObjectType.ACCOUNT, accountId, callContext.getCreatedDate()); final CustomField customField2 = new StringCustomField("other123", "other 456", ObjectType.ACCOUNT, accountId, callContext.getCreatedDate()); eventsListener.pushExpectedEvents(NextEvent.CUSTOM_FIELD, NextEvent.CUSTOM_FIELD); customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField1, customField2), callContext); assertListenerStatus(); final CustomField customField3 = new StringCustomField("qrqrq123", "qrqrq 456", ObjectType.ACCOUNT, accountId, callContext.getCreatedDate()); try { customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField3, customField1), callContext); } catch (CustomFieldApiException e) { Assert.assertEquals(e.getCode(), ErrorCode.CUSTOM_FIELD_ALREADY_EXISTS.getCode()); List<CustomField> all = customFieldUserApi.getCustomFieldsForAccount(accountId, callContext); Assert.assertEquals(all.size(), 2); customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField3), callContext); assertListenerStatus(); all = customFieldUserApi.getCustomFieldsForAccount(accountId, callContext); Assert.assertEquals(all.size(), 3); customFieldUserApi.removeCustomFields(ImmutableList.of(customField1, customField3), callContext); assertListenerStatus(); all = customFieldUserApi.getCustomFieldsForAccount(accountId, callContext); Assert.assertEquals(all.size(), 1); Assert.assertEquals(all.get(0).getId(), customField2.getId()); Assert.assertEquals(all.get(0).getObjectId(), accountId); Assert.assertEquals(all.get(0).getObjectType(), ObjectType.ACCOUNT);
@Override public CustomFieldModelDao apply(final CustomField input) { return new CustomFieldModelDao(input.getId(), internalCallContext.getCreatedDate(), internalCallContext.getUpdatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } });
@Override public CustomField apply(final CustomFieldModelDao input) { return new StringCustomField(input); } };
@Override public UUID apply(final CustomField input) { return input.getId(); } });
return ImmutableList.<AuditLog>of(); default: throw new ShouldntHappenException("AuditLevel " + auditLevel + " unsupported");
@Override public CustomFieldModelDao apply(final CustomField input) { // Respect user-specified ID // TODO See https://github.com/killbill/killbill/issues/35 if (input.getId() != null) { return new CustomFieldModelDao(input.getId(), context.getCreatedDate(), context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } else { return new CustomFieldModelDao(context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType()); } } });
public static <E extends Entity, O, T extends BillingExceptionBase> Pagination<E> getEntityPaginationNoException(final Long limit, final SourcePaginationBuilder<O, T> sourcePaginationBuilder, final Function<O, E> function) { try { return getEntityPagination(limit, sourcePaginationBuilder, function); } catch (final BillingExceptionBase e) { throw new ShouldntHappenException("No exception expected" + e); } } }