Search in sources :

Example 1 with InvalidSchemaUpdateException

use of org.xdi.util.exception.InvalidSchemaUpdateException in project oxCore by GluuFederation.

the class SchemaService method addAttributeTypeToObjectClass.

/**
	 * Add attribute type to object class
	 * 
	 * @param objectClass
	 *            Object class name
	 * @param attributeType
	 *            Attribute type name
	 * @throws Exception
	 */
public void addAttributeTypeToObjectClass(String objectClass, String attributeType) throws Exception {
    SchemaEntry schema = getSchema();
    String objectClassDefinition = getObjectClassDefinition(schema, objectClass);
    if (objectClassDefinition == null) {
        throw new InvalidSchemaUpdateException(String.format("Can't add attributeType %s to objectClass %s because objectClass doesn't exist", attributeType, objectClass));
    }
    String newObjectClassDefinition = null;
    String attributeTypesStartPattern = "MAY ( ";
    int index = objectClassDefinition.indexOf(attributeTypesStartPattern);
    if (index != -1) {
        int index2 = objectClassDefinition.indexOf(")", index);
        newObjectClassDefinition = objectClassDefinition.substring(0, index2) + "$ " + attributeType + " " + objectClassDefinition.substring(index2);
    } else {
        attributeTypesStartPattern = "MUST objectClass ";
        index = objectClassDefinition.indexOf(attributeTypesStartPattern);
        if (index != -1) {
            int index2 = index + attributeTypesStartPattern.length();
            newObjectClassDefinition = objectClassDefinition.substring(0, index2) + "MAY ( " + attributeType + " ) " + objectClassDefinition.substring(index2);
        }
    }
    log.debug("Current object class definition:" + objectClassDefinition);
    log.debug("New object class definition:" + newObjectClassDefinition);
    if (newObjectClassDefinition == null) {
        throw new InvalidSchemaUpdateException(String.format("Invalid objectClass definition format"));
    }
    // Remove OC definition
    removeObjectClassWithDefinition(objectClassDefinition);
    // Add updated OC definition
    SchemaEntry newSchemaEntry = new SchemaEntry();
    newSchemaEntry.setDn(getDnForSchema());
    newSchemaEntry.addObjectClass(newObjectClassDefinition);
    log.debug("Adding attributeType to objectClass: {0}", newSchemaEntry);
    ldapEntryManager.merge(newSchemaEntry);
}
Also used : SchemaEntry(org.xdi.model.SchemaEntry) InvalidSchemaUpdateException(org.xdi.util.exception.InvalidSchemaUpdateException)

Example 2 with InvalidSchemaUpdateException

use of org.xdi.util.exception.InvalidSchemaUpdateException in project oxCore by GluuFederation.

the class SchemaService method removeAttributeTypeFromObjectClass.

/**
	 * Remove attribute type from object class
	 * 
	 * @param objectClass
	 *            Object class name
	 * @param attributeType
	 *            Attribute type name
	 * @throws Exception
	 */
public void removeAttributeTypeFromObjectClass(String objectClass, String attributeType) throws Exception {
    SchemaEntry schema = getSchema();
    String objectClassDefinition = getObjectClassDefinition(schema, objectClass);
    if (objectClassDefinition == null) {
        throw new InvalidSchemaUpdateException(String.format("Can't add attributeType %s to objectClass %s because objectClass doesn't exist", attributeType, objectClass));
    }
    String attributeTypePattern = "$ " + attributeType + " ";
    int index = objectClassDefinition.indexOf(attributeTypePattern);
    if (index == -1) {
        attributeTypePattern = " " + attributeType + " $";
        index = objectClassDefinition.indexOf(attributeTypePattern);
        if (index == -1) {
            attributeTypePattern = " MAY ( " + attributeType + " )";
            index = objectClassDefinition.indexOf(attributeTypePattern);
            if (index == -1) {
                throw new InvalidSchemaUpdateException(String.format("Invalid objectClass definition format"));
            }
        }
    }
    String newObjectClassDefinition = objectClassDefinition.substring(0, index) + objectClassDefinition.substring(index + attributeTypePattern.length());
    // Remove OC definition
    removeObjectClassWithDefinition(objectClassDefinition);
    // Add updated OC definition
    SchemaEntry schemaEntry = new SchemaEntry();
    schemaEntry.setDn(getDnForSchema());
    schemaEntry.addObjectClass(newObjectClassDefinition);
    log.debug("Removing attributeType from objectClass: {0}", schemaEntry);
    ldapEntryManager.merge(schemaEntry);
}
Also used : SchemaEntry(org.xdi.model.SchemaEntry) InvalidSchemaUpdateException(org.xdi.util.exception.InvalidSchemaUpdateException)

Aggregations

SchemaEntry (org.xdi.model.SchemaEntry)2 InvalidSchemaUpdateException (org.xdi.util.exception.InvalidSchemaUpdateException)2