killbill-memoizeit
Changes
util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java 14(+10 -4)
Details
diff --git a/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java b/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java
index 163eeea..c3d2f95 100644
--- a/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java
+++ b/util/src/main/java/org/killbill/billing/util/customfield/api/DefaultCustomFieldUserApi.java
@@ -92,7 +92,7 @@ public class DefaultCustomFieldUserApi implements CustomFieldUserApi {
final Iterable<CustomFieldModelDao> transformed = Iterables.transform(customFields, new Function<CustomField, CustomFieldModelDao>() {
@Override
public CustomFieldModelDao apply(final CustomField input) {
- return new CustomFieldModelDao(context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType());
+ return new CustomFieldModelDao(input.getId(), context.getCreatedDate(), context.getCreatedDate(), input.getFieldName(), input.getFieldValue(), input.getObjectId(), input.getObjectType());
}
});
((DefaultCustomFieldDao) customFieldDao).create(transformed, internalCallContext);
@@ -101,9 +101,15 @@ public class DefaultCustomFieldUserApi implements CustomFieldUserApi {
@Override
public void removeCustomFields(final List<CustomField> customFields, final CallContext context) throws CustomFieldApiException {
- // TODO make it transactional
- for (final CustomField cur : customFields) {
- customFieldDao.deleteCustomField(cur.getId(), internalCallContextFactory.createInternalCallContext(cur.getObjectId(), cur.getObjectType(), context));
+ 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);
}
}
diff --git a/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldDao.java b/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldDao.java
index 977ddaa..ca8f8b9 100644
--- a/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldDao.java
+++ b/util/src/main/java/org/killbill/billing/util/customfield/dao/CustomFieldDao.java
@@ -37,5 +37,5 @@ public interface CustomFieldDao extends EntityDao<CustomFieldModelDao, CustomFie
public List<CustomFieldModelDao> getCustomFieldsForAccount(final InternalTenantContext context);
- void deleteCustomField(UUID customFieldId, InternalCallContext context) throws CustomFieldApiException;
+ void deleteCustomFields(Iterable<UUID> customFieldIds, InternalCallContext context) throws CustomFieldApiException;
}
diff --git a/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java b/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
index 28677b9..c6bdff6 100644
--- a/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
+++ b/util/src/main/java/org/killbill/billing/util/customfield/dao/DefaultCustomFieldDao.java
@@ -104,17 +104,19 @@ public class DefaultCustomFieldDao extends EntityDaoBase<CustomFieldModelDao, Cu
}
@Override
- public void deleteCustomField(final UUID customFieldId, final InternalCallContext context) throws CustomFieldApiException {
+ public void deleteCustomFields(final Iterable<UUID> customFieldIds, final InternalCallContext context) throws CustomFieldApiException {
transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() {
@Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
final CustomFieldSqlDao sqlDao = entitySqlDaoWrapperFactory.become(CustomFieldSqlDao.class);
- final CustomFieldModelDao customField = sqlDao.getById(customFieldId.toString(), context);
- sqlDao.markTagAsDeleted(customFieldId.toString(), context);
-
- postBusEventFromTransaction(customField, customField, ChangeType.DELETE, entitySqlDaoWrapperFactory, context);
-
+ for (final UUID cur : customFieldIds) {
+ final CustomFieldModelDao customField = sqlDao.getById(cur.toString(), context);
+ if (customField != null) {
+ sqlDao.markTagAsDeleted(cur.toString(), context);
+ postBusEventFromTransaction(customField, customField, ChangeType.DELETE, entitySqlDaoWrapperFactory, context);
+ }
+ }
return null;
}
});
diff --git a/util/src/test/java/org/killbill/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java b/util/src/test/java/org/killbill/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java
index 4004e9a..4798957 100644
--- a/util/src/test/java/org/killbill/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java
+++ b/util/src/test/java/org/killbill/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java
@@ -76,7 +76,7 @@ public class TestDefaultCustomFieldUserApi extends UtilTestSuiteWithEmbeddedDB {
customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField1, customField2), callContext);
assertListenerStatus();
- // Verify operation is indeed transaction, and nothing was inserted
+ // Verify operation is indeed transactional, and nothing was inserted
final CustomField customField3 = new StringCustomField("qrqrq123", "qrqrq 456", ObjectType.ACCOUNT, accountId, callContext.getCreatedDate());
try {
customFieldUserApi.addCustomFields(ImmutableList.<CustomField>of(customField3, customField1), callContext);
@@ -93,6 +93,18 @@ public class TestDefaultCustomFieldUserApi extends UtilTestSuiteWithEmbeddedDB {
all = customFieldUserApi.getCustomFieldsForAccount(accountId, callContext);
Assert.assertEquals(all.size(), 3);
+
+ eventsListener.pushExpectedEvents(NextEvent.CUSTOM_FIELD, NextEvent.CUSTOM_FIELD);
+ 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);
+ Assert.assertEquals(all.get(0).getFieldName(), customField2.getFieldName());
+ Assert.assertEquals(all.get(0).getFieldValue(), customField2.getFieldValue());
}
diff --git a/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java b/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java
index f3d5cf7..b9b1720 100644
--- a/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java
+++ b/util/src/test/java/org/killbill/billing/util/customfield/dao/MockCustomFieldDao.java
@@ -52,14 +52,13 @@ public class MockCustomFieldDao extends MockEntityDaoBase<CustomFieldModelDao, C
throw new UnsupportedOperationException();
}
-
@Override
- public Pagination<CustomFieldModelDao> searchCustomFields(final String searchKey, final Long offset, final Long limit, final InternalTenantContext context) {
+ public void deleteCustomFields(final Iterable<UUID> customFieldIds, final InternalCallContext context) throws CustomFieldApiException {
throw new UnsupportedOperationException();
}
@Override
- public void deleteCustomField(final UUID customFieldId, final InternalCallContext context) throws CustomFieldApiException {
+ public Pagination<CustomFieldModelDao> searchCustomFields(final String searchKey, final Long offset, final Long limit, final InternalTenantContext context) {
throw new UnsupportedOperationException();
}
}