killbill-memoizeit

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 07a8c84..6bec34b 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
@@ -1049,6 +1049,11 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
             return isInvoicingSystemEnabled();
         }
 
+        @Override
+        public String getItemResultBehaviorMode() {
+            return null;
+        }
+
         public void setInvoicingSystemEnabled(final boolean invoicingSystemEnabled) {
             isInvoicingSystemEnabled = 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 70f9c13..adcf302 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
@@ -163,6 +163,15 @@ 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;
+        }
+        return result;
+    }
+
+    @Override
     protected Class<? extends KillbillConfig> getConfigClass() {
         return InvoiceConfig.class;
     }
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 65ea53b..434291e 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,6 +27,8 @@ 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";
 
     @Config("org.killbill.invoice.maxNumberOfMonthsInFuture")
     @Default("36")
@@ -117,4 +119,9 @@ public interface InvoiceConfig extends KillbillConfig {
     @Default("true")
     @Description("Whether the invoicing system is enabled")
     boolean isInvoicingSystemEnabled(@Param("dummy") final InternalTenantContext tenantContext);
+
+    @Config("org.killbill.invoice.item.result.behavior.mode")
+    @Default(AGGREGATE_MODE)
+    @Description("How the result for an item will be reported (aggregate mode or detail mode). ")
+    String getItemResultBehaviorMode();
 }