Search in sources :

Example 6 with GluuCustomPerson

use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.

the class BulkWebService method processUserOperation.

private BulkOperation processUserOperation(BulkOperation operation, Map<String, String> processedBulkIds) throws Exception {
    log.info(" Operation is for User ");
    // Intercept bulkId
    User user = null;
    if (operation.getData() != null) {
        // Required in a request when
        // "method" is "POST", "PUT", or
        // "PATCH".
        String serializedData = serialize(operation.getData());
        for (Map.Entry<String, String> entry : processedBulkIds.entrySet()) {
            String key = "bulkId:" + entry.getKey();
            serializedData = serializedData.replaceAll(key, entry.getValue());
        }
        user = deserializeToUser(serializedData);
    }
    String userRootEndpoint = appConfiguration.getBaseEndpoint() + "/scim/v2/Users/";
    if (operation.getMethod().equalsIgnoreCase(HttpMethod.POST)) {
        log.info(" Method is POST ");
        try {
            user = scim2UserService.createUser(user);
            GluuCustomPerson gluuPerson = personService.getPersonByUid(user.getUserName());
            String inum = gluuPerson.getInum();
            // String location = (new
            // StringBuilder()).append(domain).append("/Users/").append(inum).toString();
            String location = userRootEndpoint + inum;
            operation.setLocation(location);
            operation.setStatus(String.valueOf(Response.Status.CREATED.getStatusCode()));
            operation.setResponse(user);
            // Set aside successfully-processed bulkId
            // bulkId is only required in POST
            processedBulkIds.put(operation.getBulkId(), user.getId());
        } catch (DuplicateEntryException ex) {
            log.error("DuplicateEntryException", ex);
            ex.printStackTrace();
            operation.setStatus(String.valueOf(Response.Status.CONFLICT.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.CONFLICT, ErrorScimType.UNIQUENESS, ex.getMessage()));
        } catch (PersonRequiredFieldsException ex) {
            log.error("PersonRequiredFieldsException: ", ex);
            operation.setStatus(String.valueOf(Response.Status.BAD_REQUEST.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.BAD_REQUEST, ErrorScimType.INVALID_VALUE, ex.getMessage()));
        } catch (Exception ex) {
            log.error("Failed to create user", ex);
            ex.printStackTrace();
            operation.setStatus(String.valueOf(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.INTERNAL_SERVER_ERROR, null, INTERNAL_SERVER_ERROR_MESSAGE));
        }
    } else if (operation.getMethod().equalsIgnoreCase(HttpMethod.PUT)) {
        log.info(" Method is PUT ");
        String path = operation.getPath();
        String id = getId(path);
        for (Map.Entry<String, String> entry : processedBulkIds.entrySet()) {
            String key = "bulkId:" + entry.getKey();
            if (id.equalsIgnoreCase(key)) {
                id = id.replaceAll(key, entry.getValue());
                break;
            }
        }
        try {
            user = scim2UserService.updateUser(id, user);
            // String location = (new
            // StringBuilder()).append(domain).append("/Users/").append(personiD).toString();
            String location = userRootEndpoint + id;
            operation.setLocation(location);
            operation.setStatus(String.valueOf(Response.Status.OK.getStatusCode()));
            operation.setResponse(user);
            // bulkId is only required in POST
            if (operation.getBulkId() != null) {
                processedBulkIds.put(operation.getBulkId(), user.getId());
            }
        } catch (EntryPersistenceException ex) {
            log.error("Failed to update user", ex);
            ex.printStackTrace();
            operation.setStatus(String.valueOf(Response.Status.NOT_FOUND.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.NOT_FOUND, ErrorScimType.INVALID_VALUE, "Resource " + id + " not found"));
        } catch (DuplicateEntryException ex) {
            log.error("DuplicateEntryException", ex);
            ex.printStackTrace();
            operation.setStatus(String.valueOf(Response.Status.CONFLICT.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.CONFLICT, ErrorScimType.UNIQUENESS, ex.getMessage()));
        } catch (Exception ex) {
            log.error("Failed to update user", ex);
            ex.printStackTrace();
            operation.setStatus(String.valueOf(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.INTERNAL_SERVER_ERROR, null, INTERNAL_SERVER_ERROR_MESSAGE));
        }
    } else if (operation.getMethod().equalsIgnoreCase(HttpMethod.DELETE)) {
        log.info(" Method is DELETE ");
        String path = operation.getPath();
        String id = getId(path);
        for (Map.Entry<String, String> entry : processedBulkIds.entrySet()) {
            String key = "bulkId:" + entry.getKey();
            if (id.equalsIgnoreCase(key)) {
                id = id.replaceAll(key, entry.getValue());
                break;
            }
        }
        try {
            scim2UserService.deleteUser(id);
            // Location may be omitted on DELETE
            operation.setStatus(String.valueOf(Response.Status.OK.getStatusCode()));
            operation.setResponse("User " + id + " deleted");
            // bulkId is only required in POST
            if (operation.getBulkId() != null) {
                processedBulkIds.put(operation.getBulkId(), id);
            }
        } catch (EntryPersistenceException ex) {
            log.error("Failed to delete user", ex);
            ex.printStackTrace();
            operation.setStatus(String.valueOf(Response.Status.NOT_FOUND.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.NOT_FOUND, null, "Resource " + id + " not found"));
        } catch (Exception ex) {
            log.error("Failed to delete user", ex);
            ex.printStackTrace();
            operation.setStatus(String.valueOf(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()));
            operation.setResponse(createErrorResponse(Response.Status.INTERNAL_SERVER_ERROR, null, INTERNAL_SERVER_ERROR_MESSAGE));
        }
    }
    return operation;
}
Also used : GluuCustomPerson(org.gluu.oxtrust.model.GluuCustomPerson) User(org.gluu.oxtrust.model.scim2.User) EntryPersistenceException(org.gluu.site.ldap.persistence.exception.EntryPersistenceException) DuplicateEntryException(org.gluu.site.ldap.exception.DuplicateEntryException) PersonRequiredFieldsException(org.gluu.oxtrust.exception.PersonRequiredFieldsException) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) PersonRequiredFieldsException(org.gluu.oxtrust.exception.PersonRequiredFieldsException) EntryPersistenceException(org.gluu.site.ldap.persistence.exception.EntryPersistenceException) DuplicateEntryException(org.gluu.site.ldap.exception.DuplicateEntryException)

Example 7 with GluuCustomPerson

use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.

the class CopyUtils method copy.

/**
	 * Copy data from GluuGroup object to ScimGroup object
	 * 
	 * @param source
	 * @param destination
	 * @return
	 * @throws Exception
	 */
public ScimGroup copy(GluuGroup source, ScimGroup destination) throws Exception {
    if (source == null) {
        return null;
    }
    if (destination == null) {
        destination = new ScimGroup();
    }
    List<String> schemas = new ArrayList<String>();
    schemas.add(Constants.SCIM1_CORE_SCHEMA_ID);
    destination.setSchemas(schemas);
    destination.setDisplayName(source.getDisplayName());
    destination.setId(source.getInum());
    if (source.getMembers() != null) {
        if (source.getMembers().size() != 0) {
            List<ScimGroupMembers> members = new ArrayList<ScimGroupMembers>();
            List<String> membersList = source.getMembers();
            for (String oneMember : membersList) {
                ScimGroupMembers member = new ScimGroupMembers();
                GluuCustomPerson person = personService.getPersonByDn(oneMember);
                member.setValue(person.getInum());
                member.setDisplay(person.getDisplayName());
                members.add(member);
            }
            destination.setMembers(members);
        }
    }
    return destination;
}
Also used : GluuCustomPerson(org.gluu.oxtrust.model.GluuCustomPerson) ScimGroupMembers(org.gluu.oxtrust.model.scim.ScimGroupMembers) ArrayList(java.util.ArrayList) ScimGroup(org.gluu.oxtrust.model.scim.ScimGroup)

Example 8 with GluuCustomPerson

use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.

the class CopyUtils method patch.

public GluuCustomPerson patch(ScimPersonPatch source, GluuCustomPerson destination, boolean isUpdate) throws Exception {
    if (source == null || !isValidData(source, isUpdate)) {
        return null;
    }
    if (destination == null) {
        log.trace(" creating a new Scimperson instant ");
        destination = new GluuCustomPerson();
    }
    log.trace(" setting userName ");
    log.trace(" source.getUserName() :" + source.getUserName() + "h");
    log.trace("  userName length : " + source.getUserName().length());
    if (source.getUserName() != null && source.getUserName().length() > 0) {
        destination.setUid(source.getUserName());
    }
    log.trace(" setting givenname ");
    if (source.getName().getGivenName() != null && source.getName().getGivenName().length() > 0) {
        destination.setGivenName(source.getName().getGivenName());
    }
    log.trace(" setting famillyname ");
    if (source.getName().getFamilyName() != null && source.getName().getGivenName().length() > 0) {
        destination.setSurname(source.getName().getFamilyName());
    }
    log.trace(" setting middlename ");
    if (source.getName().getMiddleName() != null && source.getName().getMiddleName().length() > 0) {
        destination.setAttribute(OX_TRUST_MIDDLE_NAME, source.getName().getMiddleName());
    }
    log.trace(" setting honor");
    if (source.getName().getHonorificPrefix() != null && source.getName().getHonorificPrefix().length() > 0) {
        destination.setAttribute(OX_TRUSTHONORIFIC_PREFIX, source.getName().getHonorificPrefix());
    }
    if (source.getName().getHonorificSuffix() != null && source.getName().getHonorificSuffix().length() > 0) {
        destination.setAttribute(OX_TRUSTHONORIFIC_SUFFIX, source.getName().getHonorificSuffix());
    }
    log.trace(" setting displayname ");
    if (source.getDisplayName() != null && source.getDisplayName().length() > 0) {
        destination.setDisplayName(source.getDisplayName());
    }
    log.trace(" setting externalID ");
    if (source.getExternalId() != null && source.getExternalId().length() > 0) {
        destination.setAttribute(OX_TRUST_EXTERNAL_ID, source.getExternalId());
    }
    log.trace(" setting nickname ");
    if (source.getNickName() != null && source.getNickName().length() > 0) {
        destination.setAttribute(OX_TRUST_NICK_NAME, source.getNickName());
    }
    log.trace(" setting profileURL ");
    if (source.getProfileUrl() != null && source.getProfileUrl().length() > 0) {
        destination.setAttribute(OX_TRUST_PROFILE_URL, source.getProfileUrl());
    }
    // getting emails
    log.trace(" setting emails ");
    if (source.getEmails() != null && source.getEmails().size() > 0) {
        List<ScimPersonEmailsPatch> emails = source.getEmails();
        String[] emailsList = new String[source.getEmails().size()];
        String[] emailsTypes = new String[source.getEmails().size()];
        String[] emailsPrimary = new String[source.getEmails().size()];
        int emailsSize = 0;
        if (destination.getAttributes(OX_TRUST_EMAIL) != null && destination.getAttributes(OX_TRUST_EMAIL).length > 0) {
            emailsList = destination.getAttributes(OX_TRUST_EMAIL);
            emailsTypes = destination.getAttributes(OX_TRUST_EMAIL_TYPE);
            emailsPrimary = destination.getAttributes(OX_TRUST_EMAIL_PRIMARY);
        // emailsSize =
        // destination.getAttributes("oxTrustEmail").length;
        }
        boolean emailIsFound = false;
        while (emailIsFound != true) {
            if (emails.get(0).getPrimary() == "true") {
                for (String oneEmail : emailsList) {
                    if (oneEmail == emails.get(0).getValue()) {
                        if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                            emailsPrimary[emailsSize] = emails.get(0).getPrimary();
                        }
                        emailIsFound = true;
                    }
                    emailsSize++;
                }
                emailsSize = 0;
                for (String onePrimary : emailsPrimary) {
                    if (onePrimary == emails.get(0).getPrimary()) {
                        if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                            emailsPrimary[emailsSize] = "false";
                        }
                    }
                    emailsSize++;
                }
                if (emails.get(0).getValue() != null && emails.get(0).getValue().length() > 0) {
                    emailsList[emailsSize] = emails.get(0).getValue();
                }
                if (emails.get(0).getType() != null && emails.get(0).getType().length() > 0) {
                    emailsTypes[emailsSize] = emails.get(0).getType();
                }
                if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                    emailsPrimary[emailsSize] = emails.get(0).getPrimary();
                }
                emailIsFound = true;
            }
            if (emails.get(0).getPrimary() == "false") {
                emailsSize = emailsList.length;
                if (emails.get(0).getValue() != null && emails.get(0).getValue().length() > 0) {
                    emailsList[emailsSize] = emails.get(0).getValue();
                }
                if (emails.get(0).getType() != null && emails.get(0).getType().length() > 0) {
                    emailsTypes[emailsSize] = emails.get(0).getType();
                }
                if (emails.get(0).getPrimary() != null && emails.get(0).getPrimary().length() > 0) {
                    emailsPrimary[emailsSize] = emails.get(0).getPrimary();
                }
                emailIsFound = true;
            }
        }
        destination.setAttribute(OX_TRUST_EMAIL, emailsList);
        destination.setAttribute(OX_TRUST_EMAIL_TYPE, emailsTypes);
        destination.setAttribute(OX_TRUST_EMAIL_PRIMARY, emailsPrimary);
    }
    // getting addresses
    log.trace(" settting addresses ");
    if (source.getAddresses() != null && source.getAddresses().size() == 2) {
        List<ScimPersonAddressesPatch> addresses = source.getAddresses();
        String[] street = new String[source.getAddresses().size()];
        String[] formatted = new String[source.getAddresses().size()];
        String[] locality = new String[source.getAddresses().size()];
        String[] region = new String[source.getAddresses().size()];
        String[] postalCode = new String[source.getAddresses().size()];
        String[] country = new String[source.getAddresses().size()];
        String[] addressType = new String[source.getAddresses().size()];
        String[] addressPrimary = new String[source.getAddresses().size()];
        int addressSize = 0;
        if (destination.getAttributes(OX_TRUST_STREET) != null && destination.getAttributes(OX_TRUST_STREET).length > 0) {
            street = destination.getAttributes(OX_TRUST_STREET);
            formatted = destination.getAttributes(OX_TRUST_ADDRESS_FORMATTED);
            locality = destination.getAttributes(OX_TRUST_LOCALITY);
            region = destination.getAttributes(OX_TRUST_REGION);
            postalCode = destination.getAttributes(OX_TRUST_POSTAL_CODE);
            country = destination.getAttributes(OX_TRUST_COUNTRY);
            addressType = destination.getAttributes(OX_TRUST_ADDRESS_TYPE);
            addressPrimary = destination.getAttributes(OX_TRUST_ADDRESS_PRIMARY);
        // addressSize =
        // destination.getAttributes("oxTrustStreet").length;
        }
        for (String oneStreet : street) {
            if (oneStreet == addresses.get(0).getStreetAddress()) {
                if (addresses.get(1).getStreetAddress() != null && addresses.get(1).getStreetAddress().length() > 0) {
                    street[addressSize] = addresses.get(1).getStreetAddress();
                }
                if (addresses.get(1).getFormatted() != null && addresses.get(1).getFormatted().length() > 0) {
                    formatted[addressSize] = addresses.get(1).getFormatted();
                }
                if (addresses.get(1).getLocality() != null && addresses.get(1).getLocality().length() > 0) {
                    locality[addressSize] = addresses.get(1).getLocality();
                }
                if (addresses.get(1).getRegion() != null && addresses.get(1).getRegion().length() > 0) {
                    region[addressSize] = addresses.get(1).getRegion();
                }
                if (addresses.get(1).getPostalCode() != null && addresses.get(1).getPostalCode().length() > 0) {
                    postalCode[addressSize] = addresses.get(1).getPostalCode();
                }
                if (addresses.get(1).getCountry() != null && addresses.get(1).getCountry().length() > 0) {
                    country[addressSize] = addresses.get(1).getCountry();
                }
                if (addresses.get(1).getType() != null && addresses.get(1).getType().length() > 0) {
                    addressType[addressSize] = addresses.get(1).getType();
                }
                if (addresses.get(1).getPrimary() != null && addresses.get(1).getPrimary().length() > 0) {
                    addressPrimary[addressSize] = addresses.get(1).getPrimary();
                }
            }
            addressSize++;
        }
        destination.setAttribute(OX_TRUST_STREET, street);
        destination.setAttribute(OX_TRUST_LOCALITY, locality);
        destination.setAttribute(OX_TRUST_REGION, region);
        destination.setAttribute(OX_TRUST_POSTAL_CODE, postalCode);
        destination.setAttribute(OX_TRUST_COUNTRY, country);
        destination.setAttribute(OX_TRUST_ADDRESS_FORMATTED, formatted);
        destination.setAttribute(OX_TRUST_ADDRESS_PRIMARY, addressPrimary);
        destination.setAttribute(OX_TRUST_ADDRESS_TYPE, addressType);
    }
    // getting phone numbers;
    log.trace(" setting phoneNumbers ");
    if (source.getPhoneNumbers() != null && source.getPhoneNumbers().size() > 0) {
        List<ScimPersonPhonesPatch> phones = source.getPhoneNumbers();
        String[] phoneNumber = new String[source.getPhoneNumbers().size()];
        String[] phoneType = new String[source.getPhoneNumbers().size()];
        int phoneSize = 0;
        if (destination.getAttributes(OX_TRUST_PHONE_VALUE) != null && destination.getAttributes(OX_TRUST_PHONE_VALUE).length > 0) {
            phoneNumber = destination.getAttributes(OX_TRUST_PHONE_VALUE);
            phoneType = destination.getAttributes(OX_TRUST_PHONE_TYPE);
        // phoneSize =
        // destination.getAttributes("oxTrustPhoneValue").length;
        }
        for (ScimPersonPhones phone : phones) {
            if (phone.getValue() != null && phone.getValue().length() > 0) {
                phoneNumber[phoneSize] = phone.getValue();
            }
            if (phone.getType() != null && phone.getType().length() > 0) {
                phoneType[phoneSize] = phone.getType();
            }
            phoneSize++;
        }
        destination.setAttribute(OX_TRUST_PHONE_VALUE, phoneNumber);
        destination.setAttribute(OX_TRUST_PHONE_TYPE, phoneType);
    }
    // getting ims
    log.trace(" setting ims ");
    if (source.getIms() != null && source.getIms().size() > 0) {
        List<ScimPersonImsPatch> ims = source.getIms();
        String[] imValue = new String[source.getIms().size()];
        String[] imType = new String[source.getIms().size()];
        int imSize = 0;
        if (destination.getAttributes(OX_TRUST_IMS_VALUE) != null && destination.getAttributes(OX_TRUST_IMS_VALUE).length > 0) {
            imValue = destination.getAttributes(OX_TRUST_IMS_VALUE);
            imType = destination.getAttributes("oxTrustImsType");
            imSize = destination.getAttributes(OX_TRUST_IMS_VALUE).length;
        }
        for (ScimPersonIms im : ims) {
            if (im.getValue() != null && im.getValue().length() > 0) {
                imValue[imSize] = im.getValue();
            }
            if (im.getType() != null && im.getType().length() > 0) {
                imType[imSize] = im.getType();
            }
            imSize++;
        }
        destination.setAttribute(OX_TRUST_IMS_VALUE, imValue);
        destination.setAttribute("oxTrustImsType", imType);
    }
    // getting Photos
    log.trace(" setting photos ");
    if (source.getPhotos() != null && source.getPhotos().size() > 0) {
        List<ScimPersonPhotosPatch> photos = source.getPhotos();
        String[] photoType = new String[source.getPhotos().size()];
        String[] photoValue = new String[source.getPhotos().size()];
        int photoSize = 0;
        if (destination.getAttributes(OX_TRUST_PHOTOS) != null && destination.getAttributes(OX_TRUST_PHOTOS).length > 0) {
            photoType = destination.getAttributes(OX_TRUST_PHOTOS_TYPE);
            photoValue = destination.getAttributes(OX_TRUST_PHOTOS);
            photoSize = destination.getAttributes(OX_TRUST_PHOTOS_TYPE).length;
        }
        for (ScimPersonPhotos photo : photos) {
            if (photo.getType() != null && photo.getType().length() > 0) {
                photoType[photoSize] = photo.getType();
            }
            if (photo.getValue() != null && photo.getValue().length() > 0) {
                photoValue[photoSize] = photo.getValue();
            }
            photoSize++;
        }
        destination.setAttribute(OX_TRUST_PHOTOS_TYPE, photoType);
        destination.setAttribute(OX_TRUST_PHOTOS, photoValue);
    }
    if (source.getUserType() != null && source.getUserType().length() > 0) {
        destination.setAttribute(OX_TRUST_USER_TYPE, source.getUserType());
    }
    if (source.getTitle() != null && source.getTitle().length() > 0) {
        destination.setAttribute(OX_TRUST_TITLE, source.getTitle());
    }
    if (source.getPreferredLanguage() != null && source.getPreferredLanguage().length() > 0) {
        destination.setPreferredLanguage(source.getPreferredLanguage());
    }
    if (source.getLocale() != null && source.getLocale().length() > 0) {
        destination.setAttribute(OX_TRUST_LOCALE, source.getLocale());
    }
    if (source.getTimezone() != null && source.getTimezone().length() > 0) {
        destination.setTimezone(source.getTimezone());
    }
    if (source.getActive() != null && source.getActive().length() > 0) {
        destination.setAttribute(OX_TRUST_ACTIVE, source.getActive());
    }
    if (source.getPassword() != null && source.getPassword().length() > 0) {
        destination.setUserPassword(source.getPassword());
    }
    // getting user groups
    log.trace(" setting groups ");
    if (source.getGroups() != null && source.getGroups().size() > 0) {
        List<ScimPersonGroupsPatch> listGroups = source.getGroups();
        List<String> members = new ArrayList<String>();
        for (ScimPersonGroups group : listGroups) {
            members.add(groupService.getDnForGroup(group.getValue()));
        }
        destination.setMemberOf(members);
    }
    // getting roles
    log.trace(" setting roles ");
    if (source.getRoles() != null && source.getRoles().size() > 0) {
        List<ScimRolesPatch> roles = source.getRoles();
        String[] scimRole = new String[source.getRoles().size()];
        int rolesSize = 0;
        if (destination.getAttributes(OX_TRUST_ROLE) != null && destination.getAttributes(OX_TRUST_ROLE).length > 0) {
            scimRole = destination.getAttributes(OX_TRUST_ROLE);
            rolesSize = destination.getAttributes(OX_TRUST_ROLE).length;
        }
        for (ScimRoles role : roles) {
            if (role.getValue() != null && role.getValue().length() > 0) {
                scimRole[rolesSize] = role.getValue();
            }
            rolesSize++;
        }
        destination.setAttribute(OX_TRUST_ROLE, scimRole);
    }
    // getting entitlements
    log.trace(" setting entitlements ");
    if (source.getEntitlements() != null && source.getEntitlements().size() > 0) {
        List<ScimEntitlementsPatch> ents = source.getEntitlements();
        String[] listEnts = new String[source.getEntitlements().size()];
        int entsSize = 0;
        if (destination.getAttributes(OX_TRUST_ENTITLEMENTS) != null && destination.getAttributes(OX_TRUST_ENTITLEMENTS).length > 0) {
            listEnts = destination.getAttributes(OX_TRUST_ENTITLEMENTS);
            entsSize = destination.getAttributes(OX_TRUST_ENTITLEMENTS).length;
        }
        for (ScimEntitlements ent : ents) {
            if (ent.getValue() != null && ent.getValue().length() > 0) {
                listEnts[entsSize] = ent.getValue();
            }
            entsSize++;
        }
        destination.setAttribute(OX_TRUST_ENTITLEMENTS, listEnts);
    }
    // getting x509Certificates
    log.trace(" setting certs ");
    if (source.getX509Certificates() != null && source.getX509Certificates().size() > 0) {
        List<Scimx509CertificatesPatch> certs = source.getX509Certificates();
        String[] listCerts = new String[source.getX509Certificates().size()];
        int certsSize = 0;
        if (destination.getAttributes(OX_TRUSTX509_CERTIFICATE) != null && destination.getAttributes(OX_TRUSTX509_CERTIFICATE).length > 0) {
            listCerts = destination.getAttributes(OX_TRUSTX509_CERTIFICATE);
            certsSize = destination.getAttributes(OX_TRUSTX509_CERTIFICATE).length;
        }
        for (Scimx509Certificates cert : certs) {
            if (cert.getValue() != null && cert.getValue().length() > 0) {
                listCerts[certsSize] = cert.getValue();
            }
            certsSize++;
        }
        destination.setAttribute(OX_TRUSTX509_CERTIFICATE, listCerts);
    }
    // getting meta
    log.trace(" setting meta ");
    if (source.getMeta().getCreated() != null && source.getMeta().getCreated().length() > 0) {
        destination.setAttribute(OX_TRUST_META_CREATED, source.getMeta().getCreated());
    }
    if (source.getMeta().getLastModified() != null && source.getMeta().getLastModified().length() > 0) {
        destination.setAttribute(OX_TRUST_META_LAST_MODIFIED, source.getMeta().getLastModified());
    }
    if (source.getMeta().getVersion() != null && source.getMeta().getVersion().length() > 0) {
        destination.setAttribute(OX_TRUST_META_VERSION, source.getMeta().getVersion());
    }
    if (source.getMeta().getLocation() != null && source.getMeta().getLocation().length() > 0) {
        destination.setAttribute(OX_TRUST_META_LOCATION, source.getMeta().getLocation());
    }
    setGluuStatus(source, destination);
    return destination;
}
Also used : ScimEntitlements(org.gluu.oxtrust.model.scim.ScimEntitlements) ScimPersonGroupsPatch(org.gluu.oxtrust.model.scim.ScimPersonGroupsPatch) ScimPersonImsPatch(org.gluu.oxtrust.model.scim.ScimPersonImsPatch) ArrayList(java.util.ArrayList) Scimx509CertificatesPatch(org.gluu.oxtrust.model.scim.Scimx509CertificatesPatch) ScimPersonIms(org.gluu.oxtrust.model.scim.ScimPersonIms) ScimPersonPhotosPatch(org.gluu.oxtrust.model.scim.ScimPersonPhotosPatch) GluuCustomPerson(org.gluu.oxtrust.model.GluuCustomPerson) ScimRolesPatch(org.gluu.oxtrust.model.scim.ScimRolesPatch) ScimPersonPhonesPatch(org.gluu.oxtrust.model.scim.ScimPersonPhonesPatch) ScimPersonEmailsPatch(org.gluu.oxtrust.model.scim.ScimPersonEmailsPatch) Scimx509Certificates(org.gluu.oxtrust.model.scim.Scimx509Certificates) ScimRoles(org.gluu.oxtrust.model.scim.ScimRoles) ScimPersonAddressesPatch(org.gluu.oxtrust.model.scim.ScimPersonAddressesPatch) ScimPersonPhotos(org.gluu.oxtrust.model.scim.ScimPersonPhotos) ScimEntitlementsPatch(org.gluu.oxtrust.model.scim.ScimEntitlementsPatch) ScimPersonGroups(org.gluu.oxtrust.model.scim.ScimPersonGroups) ScimPersonPhones(org.gluu.oxtrust.model.scim.ScimPersonPhones)

Example 9 with GluuCustomPerson

use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.

the class CopyUtils2 method copy.

/**
	 * Copy data from GluuGroup object to ScimGroup object
	 * 
	 * @param source
	 * @param destination
	 * @return
	 * @throws Exception
	 */
public Group copy(GluuGroup source, Group destination) throws Exception {
    if (source == null) {
        return null;
    }
    if (destination == null) {
        destination = new Group();
    }
    destination.setDisplayName(source.getDisplayName());
    destination.setId(source.getInum());
    if (source.getMembers() != null) {
        if (source.getMembers().size() > 0) {
            Set<MemberRef> memberRefSet = new HashSet<MemberRef>();
            List<String> membersList = source.getMembers();
            for (String oneMember : membersList) {
                if (oneMember != null && !oneMember.isEmpty()) {
                    GluuCustomPerson gluuCustomPerson = personService.getPersonByDn(oneMember);
                    MemberRef memberRef = new MemberRef();
                    memberRef.setValue(gluuCustomPerson.getInum());
                    memberRef.setDisplay(gluuCustomPerson.getDisplayName());
                    String reference = appConfiguration.getBaseEndpoint() + "/scim/v2/Users/" + gluuCustomPerson.getInum();
                    memberRef.setReference(reference);
                    memberRefSet.add(memberRef);
                }
            }
            destination.setMembers(memberRefSet);
        }
    }
    log.trace(" getting meta ");
    Meta meta = (destination.getMeta() != null) ? destination.getMeta() : new Meta();
    if (source.getAttribute("oxTrustMetaVersion") != null) {
        meta.setVersion(source.getAttribute("oxTrustMetaVersion"));
    }
    String location = source.getAttribute("oxTrustMetaLocation");
    if (location != null && !location.isEmpty()) {
        if (!location.startsWith("https://") && !location.startsWith("http://")) {
            location = appConfiguration.getBaseEndpoint() + location;
        }
    } else {
        location = appConfiguration.getBaseEndpoint() + "/scim/v2/Groups/" + source.getInum();
    }
    meta.setLocation(location);
    if (source.getAttribute("oxTrustMetaCreated") != null && !source.getAttribute("oxTrustMetaCreated").isEmpty()) {
        try {
            DateTime dateTimeUtc = new DateTime(source.getAttribute("oxTrustMetaCreated"), DateTimeZone.UTC);
            meta.setCreated(dateTimeUtc.toDate());
        } catch (Exception e) {
            log.error(" Date parse exception (NEW format), continuing...", e);
            // For backward compatibility
            try {
                meta.setCreated(new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(source.getAttribute("oxTrustMetaCreated")));
            } catch (Exception ex) {
                log.error(" Date parse exception (OLD format)", ex);
            }
        }
    }
    if (source.getAttribute("oxTrustMetaLastModified") != null && !source.getAttribute("oxTrustMetaLastModified").isEmpty()) {
        try {
            DateTime dateTimeUtc = new DateTime(source.getAttribute("oxTrustMetaLastModified"), DateTimeZone.UTC);
            meta.setLastModified(dateTimeUtc.toDate());
        } catch (Exception e) {
            log.error(" Date parse exception (NEW format), continuing...", e);
            // For backward compatibility
            try {
                meta.setLastModified(new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(source.getAttribute("oxTrustMetaLastModified")));
            } catch (Exception ex) {
                log.error(" Date parse exception (OLD format)", ex);
            }
        }
    }
    destination.setMeta(meta);
    return destination;
}
Also used : ScimGroup(org.gluu.oxtrust.model.scim.ScimGroup) GluuGroup(org.gluu.oxtrust.model.GluuGroup) Group(org.gluu.oxtrust.model.scim2.Group) GluuCustomPerson(org.gluu.oxtrust.model.GluuCustomPerson) Meta(org.gluu.oxtrust.model.scim2.Meta) MemberRef(org.gluu.oxtrust.model.scim2.MemberRef) SimpleDateFormat(java.text.SimpleDateFormat) DateTime(org.joda.time.DateTime) JsonGenerationException(org.codehaus.jackson.JsonGenerationException) PersonRequiredFieldsException(org.gluu.oxtrust.exception.PersonRequiredFieldsException) JsonMappingException(org.codehaus.jackson.map.JsonMappingException) IOException(java.io.IOException) DuplicateEntryException(org.gluu.site.ldap.exception.DuplicateEntryException) HashSet(java.util.HashSet)

Example 10 with GluuCustomPerson

use of org.gluu.oxtrust.model.GluuCustomPerson in project oxTrust by GluuFederation.

the class CopyUtils2 method copy.

/**
	 * Copy data from Person object to GluuCustomPerson object
	 * 
	 * @param source
	 * @param destination
	 * @return
	 * @throws Exception
	 */
public GluuCustomPerson copy(Person source, GluuCustomPerson destination, List<GluuAttribute> attributes, GluuUserRole role, boolean isUpdate) {
    if (source == null || !isValidData(source, isUpdate)) {
        return null;
    }
    if (destination == null) {
        destination = new GluuCustomPerson();
    }
    if (source.getPersonAttrList() != null) {
        for (PersonAttribute personAttr : source.getPersonAttrList()) {
            GluuAttribute attribute = getAttribute(attributes, personAttr.getName());
            if (attribute == null || attribute.getEditType() == null || !containsRole(attribute.getEditType(), role))
                continue;
            destination.setAttribute(personAttr.getName(), personAttr.getValue());
        }
    }
    if (!isUpdate) {
        destination.setUid(source.getUserId());
        destination.setUserPassword(source.getPassword());
        destination.setGivenName(source.getFirstName());
        destination.setDisplayName(source.getDisplayName());
        destination.setSurname(source.getLastName());
        destination.setMail(source.getEmail());
        destination.setCommonName(source.getFirstName() + " " + source.getDisplayName());
    } else {
        if (!isEmpty(source.getFirstName()))
            destination.setGivenName(source.getFirstName());
        if (!isEmpty(source.getDisplayName()))
            destination.setDisplayName(source.getDisplayName());
        if (!isEmpty(source.getLastName()))
            destination.setSurname(source.getLastName());
        if (!isEmpty(source.getEmail()))
            destination.setMail(source.getEmail());
        if (!isEmpty(source.getFirstName()) && !isEmpty(source.getDisplayName()))
            destination.setCommonName(source.getFirstName() + " " + source.getDisplayName());
    }
    return destination;
}
Also used : GluuCustomPerson(org.gluu.oxtrust.model.GluuCustomPerson) PersonAttribute(org.gluu.oxtrust.model.PersonAttribute) GluuAttribute(org.xdi.model.GluuAttribute)

Aggregations

GluuCustomPerson (org.gluu.oxtrust.model.GluuCustomPerson)98 ArrayList (java.util.ArrayList)34 ScimPerson (org.gluu.oxtrust.model.scim.ScimPerson)27 EntryPersistenceException (org.gluu.site.ldap.persistence.exception.EntryPersistenceException)25 Test (org.testng.annotations.Test)22 ConfigurableTest (org.gluu.oxtrust.action.test.ConfigurableTest)18 Produces (javax.ws.rs.Produces)15 Response (javax.ws.rs.core.Response)14 ScimPersonGroups (org.gluu.oxtrust.model.scim.ScimPersonGroups)14 ScimPersonIms (org.gluu.oxtrust.model.scim.ScimPersonIms)14 ScimPersonPhones (org.gluu.oxtrust.model.scim.ScimPersonPhones)14 ScimPersonPhotos (org.gluu.oxtrust.model.scim.ScimPersonPhotos)14 ScimRoles (org.gluu.oxtrust.model.scim.ScimRoles)14 DuplicateEntryException (org.gluu.site.ldap.exception.DuplicateEntryException)14 PersonMeta (org.gluu.oxtrust.model.scim.PersonMeta)13 ScimEntitlements (org.gluu.oxtrust.model.scim.ScimEntitlements)13 ScimName (org.gluu.oxtrust.model.scim.ScimName)13 ScimPersonAddresses (org.gluu.oxtrust.model.scim.ScimPersonAddresses)13 ScimPersonEmails (org.gluu.oxtrust.model.scim.ScimPersonEmails)13 GluuCustomAttribute (org.gluu.oxtrust.model.GluuCustomAttribute)12