use of org.apache.directory.api.ldap.model.schema.AttributeType in project directory-ldap-api by apache.
the class LdifAnonymizer method anonymizeAva.
/**
* Anonymize an AVA
*/
private Ava anonymizeAva(Ava ava) throws LdapInvalidDnException, LdapInvalidAttributeValueException {
Value value = ava.getValue();
AttributeType attributeType = ava.getAttributeType();
Value anonymizedValue = valueMap.get(value);
Ava anonymizedAva;
if (anonymizedValue == null) {
Attribute attribute = new DefaultAttribute(attributeType);
attribute.add(value);
Anonymizer anonymizer = attributeAnonymizers.get(attribute.getAttributeType().getOid());
if (value.isHumanReadable()) {
if (anonymizer == null) {
anonymizedAva = new Ava(schemaManager, ava.getType(), value.getValue());
} else {
Attribute anonymizedAttribute = anonymizer.anonymize(valueMap, valueSet, attribute);
anonymizedAva = new Ava(schemaManager, ava.getType(), anonymizedAttribute.getString());
}
} else {
if (anonymizer == null) {
anonymizedAva = new Ava(schemaManager, ava.getType(), value.getBytes());
} else {
Attribute anonymizedAttribute = anonymizer.anonymize(valueMap, valueSet, attribute);
anonymizedAva = new Ava(schemaManager, ava.getType(), anonymizedAttribute.getBytes());
}
}
} else {
if (value.isHumanReadable()) {
anonymizedAva = new Ava(schemaManager, ava.getType(), anonymizedValue.getValue());
} else {
anonymizedAva = new Ava(schemaManager, ava.getType(), anonymizedValue.getBytes());
}
}
return anonymizedAva;
}
use of org.apache.directory.api.ldap.model.schema.AttributeType in project directory-ldap-api by apache.
the class LdifAnonymizer method anonymizeChangeModify.
/**
* Anonymize a Modify change
*/
private LdifEntry anonymizeChangeModify(LdifEntry ldifEntry) throws LdapException {
Dn entryDn = ldifEntry.getDn();
LdifEntry newLdifEntry = new LdifEntry(schemaManager);
newLdifEntry.setChangeType(ChangeType.Modify);
// Process the DN first
Dn anonymizedDn = anonymizeDn(entryDn);
newLdifEntry.setDn(anonymizedDn);
// Now, process the entry's attributes
for (Modification modification : ldifEntry.getModifications()) {
Attribute attribute = modification.getAttribute();
AttributeType attributeType = schemaManager.getAttributeType(attribute.getId());
if (attributeType == null) {
System.out.println("\nUnknown AttributeType : " + attribute.getId() + " for entry " + entryDn);
return null;
}
attribute.apply(attributeType);
// Deal with the special case of a DN syntax
if (attributeType.getSyntax().getSyntaxChecker() instanceof DnSyntaxChecker) {
Value[] anonymizedValues = new Value[attribute.size()];
int pos = 0;
for (Value dnValue : modification.getAttribute()) {
Dn dn = new Dn(schemaManager, dnValue.getValue());
Dn newdDn = anonymizeDn(dn);
anonymizedValues[pos++] = new Value(newdDn.toString());
}
Modification anonymizedModification = new DefaultModification(modification.getOperation(), attributeType, anonymizedValues);
newLdifEntry.addModification(anonymizedModification);
} else {
Anonymizer anonymizer = attributeAnonymizers.get(attributeType.getOid());
if (anonymizer == null) {
newLdifEntry.addModification(modification);
} else {
Attribute anonymizedAttribute = anonymizer.anonymize(valueMap, valueSet, attribute);
Modification anonymizedModification = new DefaultModification(modification.getOperation(), anonymizedAttribute);
newLdifEntry.addModification(anonymizedModification);
}
}
}
return newLdifEntry;
}
use of org.apache.directory.api.ldap.model.schema.AttributeType in project directory-ldap-api by apache.
the class LdifAnonymizer method anonymizeEntry.
/**
* Anonymize the full entry
*/
private Entry anonymizeEntry(LdifEntry ldifEntry) throws LdapException {
Entry entry = ldifEntry.getEntry();
Entry newEntry = new DefaultEntry(schemaManager);
// Process the DN first
Dn entryDn = entry.getDn();
Dn anonymizedDn = anonymizeDn(entryDn);
// Now, process the entry's attributes
for (Attribute attribute : entry) {
AttributeType attributeType = attribute.getAttributeType();
// Deal with the special case of DN
if (attributeType.getSyntax().getSyntaxChecker() instanceof DnSyntaxChecker) {
for (Value dnValue : attribute) {
Dn dn = new Dn(schemaManager, dnValue.getValue());
Dn newdDn = anonymizeDn(dn);
newEntry.add(attributeType, newdDn.toString());
}
} else // Deal with the special case of a NameAndOptionalUID
if (attributeType.getSyntax().getSyntaxChecker() instanceof NameAndOptionalUIDSyntaxChecker) {
for (Value dnValue : attribute) {
// Get rid of the # part (UID)
String valueStr = dnValue.getValue();
int uidPos = valueStr.indexOf('#');
String uid = null;
if (uidPos != -1) {
uid = valueStr.substring(uidPos + 1);
valueStr = valueStr.substring(0, uidPos);
}
Dn dn = new Dn(schemaManager, valueStr);
Dn newDn = anonymizeDn(dn);
String newDnStr = newDn.toString();
if (uid != null) {
newDnStr = newDnStr + '#' + uid;
}
newEntry.add(attributeType, newDnStr);
}
} else {
Anonymizer anonymizer = attributeAnonymizers.get(attribute.getAttributeType().getOid());
if (anonymizer == null) {
newEntry.add(attribute);
} else {
Attribute anonymizedAttribute = anonymizer.anonymize(valueMap, valueSet, attribute);
if (anonymizedAttribute != null) {
newEntry.add(anonymizedAttribute);
}
}
}
}
newEntry.setDn(anonymizedDn);
return newEntry;
}
use of org.apache.directory.api.ldap.model.schema.AttributeType in project directory-ldap-api by apache.
the class SchemaAwareAttributeTest method testContains.
/**
* Test the contains() method
*/
@Test
public void testContains() throws Exception {
AttributeType at = TestEntryUtils.getIA5StringAttributeType();
DefaultAttribute attr = new DefaultAttribute(at);
attr.add("Test 1");
attr.add("Test 2");
attr.add("Test 3");
assertTrue(attr.contains("test 1"));
assertTrue(attr.contains("Test 2"));
assertTrue(attr.contains("TEST 3"));
}
use of org.apache.directory.api.ldap.model.schema.AttributeType in project directory-ldap-api by apache.
the class SchemaAwareAttributeTest method testAddTwoValue.
@Test
public void testAddTwoValue() throws Exception {
AttributeType at = TestEntryUtils.getIA5StringAttributeType();
DefaultAttribute attr = new DefaultAttribute(at);
// Add String values
attr.add("test");
attr.add("test2");
assertEquals(2, attr.size());
assertTrue(attr.getAttributeType().getSyntax().isHumanReadable());
Set<String> expected = new HashSet<String>();
expected.add("test");
expected.add("test2");
for (Value val : attr) {
if (expected.contains(val.getValue())) {
expected.remove(val.getValue());
} else {
fail();
}
}
assertEquals(0, expected.size());
}
Aggregations