private static void updateComplexAttribute(SCIMObject scimObject, String parentAttributeName, SimpleAttribute typeSimpleAttribute, SimpleAttribute valueSimpleAttribute, ComplexAttribute complexAttribute) throws NotFoundException, CharonException { MultiValuedAttribute multiValuedAttribute = (MultiValuedAttribute) scimObject.getAttribute(parentAttributeName); boolean isExist = false; for (Attribute attribute : multiValuedAttribute.getAttributeValues()) { if (attribute.getType().equals(SCIMDefinitions.DataType.COMPLEX) && ((ComplexAttribute) attribute).getSubAttributesList().get(SCIMConstants.CommonSchemaConstants.TYPE) != null) { Attribute subAttribute = ((ComplexAttribute) attribute).getSubAttributesList().get(SCIMConstants.CommonSchemaConstants.TYPE); if (subAttribute != null && subAttribute.getType().equals(SCIMDefinitions.DataType.STRING)) { String typeValue = ((SimpleAttribute) subAttribute).getStringValue(); if (typeValue != null && typeValue.equals(typeSimpleAttribute.getValue())) { isExist = true; ((ComplexAttribute) attribute).getSubAttributesList().put(valueSimpleAttribute.getName(), valueSimpleAttribute); } } } } if (!isExist) { multiValuedAttribute.setAttributeValue(complexAttribute); } }
(MultiValuedAttribute) scimObject.getAttribute(parentAttributeName); multiValuedAttribute.setAttributeValue(complexAttribute); } else { (ComplexAttribute) scimObject.getAttribute(parentAttributeSchema.getName()); complexAttribute.setSubAttribute(simpleAttribute); } else {
(MultiValuedAttribute) scimObject.getAttribute(parentAttributeName); multiValuedAttribute.setAttributeValue(complexAttribute); } else {
private static void constructSCIMObjectFromSingleValuedAttributesOfLevelTwo( Map.Entry<String, String> attributeEntry, SCIMObject scimObject, String attributeName, AttributeSchema attributeSchema, AttributeSchema parentAttributeSchema) throws CharonException, BadRequestException, NotFoundException { //sub attribute of a complex attribute AttributeSchema subAttributeSchema = attributeSchema; //we assume sub attribute is simple attribute SimpleAttribute simpleAttribute = new SimpleAttribute(attributeName, AttributeUtil. getAttributeValueFromString(attributeEntry.getValue(), subAttributeSchema.getType())); DefaultAttributeFactory.createAttribute(subAttributeSchema, simpleAttribute); //check whether parent attribute exists. if (((AbstractSCIMObject) scimObject).isAttributeExist(parentAttributeSchema.getName())) { ComplexAttribute complexAttribute = (ComplexAttribute) scimObject.getAttribute(parentAttributeSchema. getName()); complexAttribute.setSubAttribute(simpleAttribute); } else { //create parent attribute and set sub attribute ComplexAttribute complexAttribute = new ComplexAttribute(parentAttributeSchema.getName()); complexAttribute.setSubAttribute(simpleAttribute); DefaultAttributeFactory.createAttribute(parentAttributeSchema, complexAttribute); ((AbstractSCIMObject) scimObject).setAttribute(complexAttribute); } }
valueSimpleAttribute, complexAttribute); } else { MultiValuedAttribute multiValuedAttribute = (MultiValuedAttribute) scimObject.getAttribute (parentAttributeName); multiValuedAttribute.setAttributeValue(complexAttribute); (ComplexAttribute) scimObject.getAttribute(parentAttributeSchema.getName()); complexAttribute.setSubAttribute(simpleAttribute); } else {