private String getGluuCustomPersonAttributesWithValues(GluuCustomPerson gluuCustomPerson) { StringBuilder sb = new StringBuilder(); sb.append("dn: '").append(gluuCustomPerson.getDn()).append("'\n"); sb.append("inum: '").append(gluuCustomPerson.getInum()).append("',\n"); sb.append("gluuStatus: '").append(gluuCustomPerson.getStatus()).append("'"); for (GluuCustomAttribute customAttribute : gluuCustomPerson.getCustomAttributes()) { sb.append("\n").append(customAttribute.getName()).append(": '"); if ((customAttribute.getValues() != null) && (customAttribute.getValues().length > 1)) { sb.append(Arrays.toString(customAttribute.getValues())); } else { sb.append(customAttribute.getValue()); } sb.append("'"); } return sb.toString(); }
@Path("/Associate/") @POST @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response createAssociation( @HeaderParam("Authorization") String authorization, PersonAssociation personAssociation) throws Exception { personService = PersonService.instance(); clientService = ClientService.instance(); Response authorizationResponse = processAuthorization(authorization); if (authorizationResponse != null) { return authorizationResponse; } try { log.info("creating an instance of gluuCustomperson"); GluuCustomPerson person = personService.getPersonByInum(personAssociation.getUserAssociation().replaceAll(" ", "")); log.info("setting AssociatedClientDNs"); List<String> cleanCDNList = new ArrayList<String>(); for (String dn : personAssociation.getEntryAssociations()) { cleanCDNList.add(dn.replaceAll(" ", "")); } person.setAssociatedClient(cleanCDNList); log.info("updating person"); personService.updatePerson(person); log.info("setting user in clients"); for (String clientDn : personAssociation.getEntryAssociations()) { log.info("getting a client"); OxAuthCustomClient client = clientService.getClientByAttributeCustom( applicationConfiguration.getClientAssociationAttribute(), clientDn.replaceAll(" ", "")); log.info("the inum of the client ", client.getInum()); log.info("checking if the list is empty"); boolean isAPDNsEmpty = client.getAttributes("associatedPerson") == null; log.info("instantiating a new arraylist"); List<String> listOfpersons = new ArrayList<String>(); log.info("getting AssociatedPersonDN"); if (!isAPDNsEmpty) { listOfpersons = new ArrayList(Arrays.asList(client.getAttributes("associatedPerson"))); /* * for(String dn : * client.getAttributes("associatedPersonDN")){ if(dn != * null && !dn.equalsIgnoreCase("")){listOfpersons.add(dn);} * } */ } log.info("getting persons dn"); String personInum = personAssociation.getUserAssociation().replaceAll(" ", ""); if (isAPDNsEmpty || !listOfpersons.contains(personInum)) { log.info("adding person"); listOfpersons.add(personInum); } String[] arrayOfpersons = new String[listOfpersons.size()]; for (int i = 0; i < listOfpersons.size(); i++) { arrayOfpersons[i] = listOfpersons.get(i); } log.info("setting list of AssociatedPersonDns"); client.setAttribute("associatedPerson", arrayOfpersons); log.info("Updating client"); clientService.updateCustomClient(client); } String uri = "/ClientAssociation/Associate/" + person.getInum(); log.info("returning response"); return Response.created(URI.create(uri)).entity(personAssociation).build(); } catch (Exception ex) { log.error("Failed to add Association", ex); // log.info("Failed to add Association" , ex); return getErrorResponse( "Unexpected processing error, please check the input parameters", Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()); } }