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);
}
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);
}
Aggregations