Details
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
index 6bec34b..c3b2036 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
@@ -1050,8 +1050,13 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
}
@Override
- public String getItemResultBehaviorMode() {
- return null;
+ public UsageDetailMode getItemResultBehaviorMode() {
+ return defaultInvoiceConfig.getItemResultBehaviorMode();
+ }
+
+ @Override
+ public UsageDetailMode getItemResultBehaviorMode(final InternalTenantContext tenantContext) {
+ return getItemResultBehaviorMode();
}
public void setInvoicingSystemEnabled(final boolean invoicingSystemEnabled) {
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java b/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
index adcf302..98e14d7 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
@@ -32,6 +32,7 @@ import org.skife.config.TimeSpan;
public class MultiTenantInvoiceConfig extends MultiTenantConfigBase implements InvoiceConfig {
+
private final InvoiceConfig staticConfig;
@Inject
@@ -163,12 +164,26 @@ public class MultiTenantInvoiceConfig extends MultiTenantConfigBase implements I
}
@Override
- public String getItemResultBehaviorMode() {
- final String result = staticConfig.getItemResultBehaviorMode();
- if (result != InvoiceConfig.AGGREGATE_MODE || result != InvoiceConfig.DETAIL_MODE) {
- return InvoiceConfig.AGGREGATE_MODE;
+ public UsageDetailMode getItemResultBehaviorMode() {
+ final UsageDetailMode mode = staticConfig.getItemResultBehaviorMode();
+ if (mode.compareTo(UsageDetailMode.AGGREGATE) != 0 || mode.compareTo(UsageDetailMode.DETAIL) != 0) {
+ return UsageDetailMode.AGGREGATE;
+ }
+ return mode;
+ }
+
+ @Override
+ public UsageDetailMode getItemResultBehaviorMode(final InternalTenantContext tenantContext) {
+ final UsageDetailMode mode = staticConfig.getItemResultBehaviorMode();
+ final String result = getStringTenantConfig("getItemResultBehaviorMode", tenantContext);
+ if (result != null){
+ return UsageDetailMode.valueOf(result);
+ }
+
+ if (mode.compareTo(UsageDetailMode.AGGREGATE) != 0 || mode.compareTo(UsageDetailMode.DETAIL) != 0) {
+ return UsageDetailMode.AGGREGATE;
}
- return result;
+ return mode;
}
@Override
diff --git a/util/src/main/java/org/killbill/billing/util/config/definition/InvoiceConfig.java b/util/src/main/java/org/killbill/billing/util/config/definition/InvoiceConfig.java
index 434291e..2291565 100644
--- a/util/src/main/java/org/killbill/billing/util/config/definition/InvoiceConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/definition/InvoiceConfig.java
@@ -27,8 +27,11 @@ import org.skife.config.Param;
import org.skife.config.TimeSpan;
public interface InvoiceConfig extends KillbillConfig {
- static final String AGGREGATE_MODE = "aggregate";
- static final String DETAIL_MODE = "detail";
+
+ public enum UsageDetailMode {
+ AGGREGATE,
+ DETAIL,
+ }
@Config("org.killbill.invoice.maxNumberOfMonthsInFuture")
@Default("36")
@@ -121,7 +124,12 @@ public interface InvoiceConfig extends KillbillConfig {
boolean isInvoicingSystemEnabled(@Param("dummy") final InternalTenantContext tenantContext);
@Config("org.killbill.invoice.item.result.behavior.mode")
- @Default(AGGREGATE_MODE)
+ @Default("AGGREGATE")
+ @Description("How the result for an item will be reported (aggregate mode or detail mode). ")
+ UsageDetailMode getItemResultBehaviorMode();
+
+ @Config("org.killbill.invoice.item.result.behavior.mode")
+ @Default("AGGREGATE")
@Description("How the result for an item will be reported (aggregate mode or detail mode). ")
- String getItemResultBehaviorMode();
+ UsageDetailMode getItemResultBehaviorMode(@Param("dummy") final InternalTenantContext tenantContext);
}