killbill-memoizeit

Details

diff --git a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
index 43c3f65..b3ec479 100644
--- a/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
+++ b/account/src/main/java/org/killbill/billing/account/api/user/DefaultAccountUserApi.java
@@ -88,6 +88,7 @@ public class DefaultAccountUserApi extends DefaultAccountApiBase implements Acco
         final InternalCallContext internalContext = internalCallContextFactory.createInternalCallContext(context);
 
         if (data.getParentAccountId() != null) {
+            // verify that parent account exists if parentAccountId is not null
             getAccountById(data.getParentAccountId(), internalContext);
         }
 
@@ -151,6 +152,8 @@ public class DefaultAccountUserApi extends DefaultAccountApiBase implements Acco
             throw new AccountApiException(ErrorCode.ACCOUNT_DOES_NOT_EXIST_FOR_ID, accountId);
         }
 
+        // TODO verify that parent is not modified
+
         updateAccount(currentAccount, accountData, context);
     }
 
@@ -197,8 +200,7 @@ public class DefaultAccountUserApi extends DefaultAccountApiBase implements Acco
     }
 
     @Override
-    public List<Account> getChildAccounts(final UUID parentAccountId, final TenantContext context) throws AccountApiException {
-        getAccountById(parentAccountId, context);
+    public List<Account> getChildrenAccounts(final UUID parentAccountId, final TenantContext context) throws AccountApiException {
         return ImmutableList.<Account>copyOf(Collections2.transform(accountDao.getAccountsByParentId(parentAccountId, internalCallContextFactory.createInternalTenantContext(context)),
                                                                          new Function<AccountModelDao, Account>() {
                                                                              @Override
diff --git a/account/src/main/resources/org/killbill/billing/account/dao/AccountSqlDao.sql.stg b/account/src/main/resources/org/killbill/billing/account/dao/AccountSqlDao.sql.stg
index de476bf..a2a86bb 100644
--- a/account/src/main/resources/org/killbill/billing/account/dao/AccountSqlDao.sql.stg
+++ b/account/src/main/resources/org/killbill/billing/account/dao/AccountSqlDao.sql.stg
@@ -113,5 +113,8 @@ getIdFromKey() ::= <<
 getAccountsByParentId() ::= <<
     select <allTableFields()>
     from accounts
-    where parent_account_id = :parentAccountId <AND_CHECK_TENANT()>;
+    where parent_account_id = :parentAccountId
+    <AND_CHECK_TENANT()>
+    <defaultOrderBy()>
+    ;
 >>
\ No newline at end of file
diff --git a/account/src/main/resources/org/killbill/billing/account/ddl.sql b/account/src/main/resources/org/killbill/billing/account/ddl.sql
index 9434afc..9699c67 100644
--- a/account/src/main/resources/org/killbill/billing/account/ddl.sql
+++ b/account/src/main/resources/org/killbill/billing/account/ddl.sql
@@ -11,7 +11,7 @@ CREATE TABLE accounts (
     currency varchar(3) DEFAULT NULL,
     billing_cycle_day_local int DEFAULT NULL,
     parent_account_id varchar(36) DEFAULT NULL,
-    is_payment_delegated_to_parent boolean default false,
+    is_payment_delegated_to_parent boolean DEFAULT FALSE,
     payment_method_id varchar(36) DEFAULT NULL,
     time_zone varchar(50) NOT NULL,
     locale varchar(5) DEFAULT NULL,
diff --git a/account/src/test/java/org/killbill/billing/account/dao/MockAccountDao.java b/account/src/test/java/org/killbill/billing/account/dao/MockAccountDao.java
index 4561d58..67bbc28 100644
--- a/account/src/test/java/org/killbill/billing/account/dao/MockAccountDao.java
+++ b/account/src/test/java/org/killbill/billing/account/dao/MockAccountDao.java
@@ -177,7 +177,7 @@ public class MockAccountDao extends MockEntityDaoBase<AccountModelDao, Account, 
         return ImmutableList.<AccountModelDao>copyOf(Iterables.<AccountModelDao>filter(accountSqlDao.getAll(context), new Predicate<AccountModelDao>() {
             @Override
             public boolean apply(final AccountModelDao input) {
-                return input.getParentAccountId().equals(parentAccountId);
+                return parentAccountId.equals(input.getParentAccountId());
             }
         }));
     }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index 69e303e..652503c 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -1215,19 +1215,19 @@ public class AccountResource extends JaxRsResourceBase {
 
     @TimedResource
     @GET
-    @Path("/{accountId:" + UUID_PATTERN + "}/" + CHILDS)
+    @Path("/{accountId:" + UUID_PATTERN + "}/" + CHILDREN)
     @Produces(APPLICATION_JSON)
-    @ApiOperation(value = "List child accounts", response = AccountJson.class, responseContainer = "List")
+    @ApiOperation(value = "List children accounts", response = AccountJson.class, responseContainer = "List")
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid parent account id supplied"),
                            @ApiResponse(code = 404, message = "Parent Account not found")})
-    public Response getChildAccounts(@PathParam("accountId") final String parentAccountId,
-                                     @QueryParam(QUERY_ACCOUNT_WITH_BALANCE) @DefaultValue("false") final Boolean accountWithBalance,
-                                     @QueryParam(QUERY_ACCOUNT_WITH_BALANCE_AND_CBA) @DefaultValue("false") final Boolean accountWithBalanceAndCBA,
-                                     @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
-                                     @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException {
+    public Response getChildrenAccounts(@PathParam("accountId") final String parentAccountId,
+                                        @QueryParam(QUERY_ACCOUNT_WITH_BALANCE) @DefaultValue("false") final Boolean accountWithBalance,
+                                        @QueryParam(QUERY_ACCOUNT_WITH_BALANCE_AND_CBA) @DefaultValue("false") final Boolean accountWithBalanceAndCBA,
+                                        @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
+                                        @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException {
 
         final TenantContext tenantContext = context.createContext(request);
-        final List<Account> accounts = accountUserApi.getChildAccounts(UUID.fromString(parentAccountId), tenantContext);
+        final List<Account> accounts = accountUserApi.getChildrenAccounts(UUID.fromString(parentAccountId), tenantContext);
 
         final List<AccountJson> accountJson = new ArrayList<AccountJson>();
         for (final Account account : accounts) {
@@ -1239,18 +1239,18 @@ public class AccountResource extends JaxRsResourceBase {
 
     @TimedResource
     @GET
-    @Path("/{parentAccountId:" + UUID_PATTERN + "}/" + CHILDS + "/" + INVOICES)
+    @Path("/{parentAccountId:" + UUID_PATTERN + "}/" + CHILDREN + "/" + INVOICES)
     @Produces(APPLICATION_JSON)
-    @ApiOperation(value = "Retrieve child account invoices", response = InvoiceJson.class)
+    @ApiOperation(value = "Retrieve children account invoices", response = InvoiceJson.class)
     @ApiResponses(value = {@ApiResponse(code = 400, message = "Invalid account id or date range supplied"),
                            @ApiResponse(code = 404, message = "Account not found")})
-    public Response getChildInvoices(@PathParam("parentAccountId") final String parentAccountIdString,
-                                     @QueryParam(QUERY_START_DATE) final String startDateString,
-                                     @QueryParam(QUERY_END_DATE) final String endDateString,
-                                     @QueryParam(QUERY_INVOICE_WITH_ITEMS) @DefaultValue("false") final boolean withItems,
-                                     @QueryParam(QUERY_UNPAID_INVOICES_ONLY) @DefaultValue("false") final boolean unpaidInvoicesOnly,
-                                     @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
-                                     @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, InvoiceApiException {
+    public Response getChildrenInvoices(@PathParam("parentAccountId") final String parentAccountIdString,
+                                       @QueryParam(QUERY_START_DATE) final String startDateString,
+                                       @QueryParam(QUERY_END_DATE) final String endDateString,
+                                       @QueryParam(QUERY_INVOICE_WITH_ITEMS) @DefaultValue("false") final boolean withItems,
+                                       @QueryParam(QUERY_UNPAID_INVOICES_ONLY) @DefaultValue("false") final boolean unpaidInvoicesOnly,
+                                       @QueryParam(QUERY_AUDIT) @DefaultValue("NONE") final AuditMode auditMode,
+                                       @javax.ws.rs.core.Context final HttpServletRequest request) throws AccountApiException, InvoiceApiException {
         final TenantContext tenantContext = context.createContext(request);
 
         // Verify the account exists
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
index e6ba0f4..f97c91a 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
@@ -239,7 +239,7 @@ public interface JaxrsResource {
 
     public static final String COMBO = "combo";
 
-    public static final String CHILDS = "childs";
-    public static final String CHILDS_PATH = PREFIX + "/" + CHILDS;
+    public static final String CHILDREN = "children";
+    public static final String CHILDREN_PATH = PREFIX + "/" + CHILDREN;
 
 }
diff --git a/util/src/test/java/org/killbill/billing/mock/api/MockAccountUserApi.java b/util/src/test/java/org/killbill/billing/mock/api/MockAccountUserApi.java
index d4c3c51..f052a7f 100644
--- a/util/src/test/java/org/killbill/billing/mock/api/MockAccountUserApi.java
+++ b/util/src/test/java/org/killbill/billing/mock/api/MockAccountUserApi.java
@@ -169,7 +169,7 @@ public class MockAccountUserApi implements AccountUserApi {
     }
 
     @Override
-    public List<Account> getChildAccounts(final UUID uuid, final TenantContext tenantContext) throws AccountApiException {
+    public List<Account> getChildrenAccounts(final UUID uuid, final TenantContext tenantContext) throws AccountApiException {
         // TODO implement
         return null;
     }