@Override public OrganisaatioOidListType findChildrenOidsByOid(OrganisaatioSearchOidType parameters) { System.out.println(String.format("mock searching children for '%s'", parameters.getSearchOid())); OrganisaatioOidListType response = new OrganisaatioOidListType(); HashSet<String> oids = new HashSet<String>(); final String theOid = parameters.getSearchOid(); oids.add(theOid); int oldCount = -1; while (oids.size() != oldCount) { oldCount = oids.size(); HashSet<String> additions = new HashSet<String>(); for (OrganisaatioDTO org : repo) { for (String oid : oids) { if (oid.equals(org.getParentOid()) && !oids.contains(org.getOid())) { additions.add(org.getOid()); } } } oids.addAll(additions); } for(String oid: oids) { if(theOid.equals(oid)) continue; OrganisaatioOidType oidType = new OrganisaatioOidType(); oidType.setOrganisaatioOid(oid); response.getOrganisaatioOidList().add(oidType); } return response; }