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;
}