diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
index 2efe1c5..3699d88 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
@@ -100,22 +100,42 @@ public class SubscriptionData extends CustomizableEntityBase implements Subscrip
@Override
public void setFieldValue(String fieldName, String fieldValue) {
+ setFieldValueInternal(fieldName, fieldValue, true);
+ }
+
+ public void setFieldValueInternal(String fieldName, String fieldValue, boolean commit) {
super.setFieldValue(fieldName, fieldValue);
- apiService.commitCustomFields(this);
+ if (commit) {
+ apiService.commitCustomFields(this);
+ }
}
+
@Override
public void addFields(List<CustomField> fields) {
+ addFieldsInternal(fields, true);
+ }
+
+ public void addFieldsInternal(List<CustomField> fields, boolean commit) {
super.addFields(fields);
- apiService.commitCustomFields(this);
+ if (commit) {
+ apiService.commitCustomFields(this);
+ }
}
@Override
public void clearFields() {
+ clearFieldsInternal(true);
+ }
+
+ public void clearFieldsInternal(boolean commit) {
super.clearFields();
- apiService.commitCustomFields(this);
+ if (commit) {
+ apiService.commitCustomFields(this);
+ }
}
+
@Override
public UUID getBundleId() {
return bundleId;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
index e34d48c..c0e4316 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
@@ -511,7 +511,7 @@ public class EntitlementSqlDao implements EntitlementDao {
default:
break;
}
- loadCustomFields(reloaded);
+ loadCustomFields((SubscriptionData) reloaded);
result.add(reloaded);
}
return result;
@@ -618,13 +618,12 @@ public class EntitlementSqlDao implements EntitlementDao {
});
}
-
- private void loadCustomFields(final Subscription subscription) {
+ private void loadCustomFields(final SubscriptionData subscription) {
FieldStoreDao fieldStoreDao = subscriptionsDao.become(FieldStoreDao.class);
List<CustomField> fields = fieldStoreDao.load(subscription.getId().toString(), subscription.getObjectName());
- subscription.clearFields();
+ subscription.clearFieldsInternal(false);
if (fields != null) {
- subscription.addFields(fields);
+ subscription.addFieldsInternal(fields, false);
}
}
}