use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.
the class LdapNetworkConnection method loadSchema.
/**
* loads schema using the specified schema loader
*
* @param loader the {@link SchemaLoader} to be used to load schema
* @throws LdapException If the schema loading failed
*/
public void loadSchema(SchemaLoader loader) throws LdapException {
try {
SchemaManager tmp = new DefaultSchemaManager(loader);
tmp.loadAllEnabled();
if (!tmp.getErrors().isEmpty() && loader.isStrict()) {
String msg = I18n.err(I18n.ERR_03204_ERROR_LOADING_SCHEMA);
if (LOG.isErrorEnabled()) {
LOG.error("{} {}", msg, Strings.listToString(tmp.getErrors()));
}
throw new LdapException(msg);
}
schemaManager = tmp;
// Change the container's BinaryDetector
ldapSession.setAttribute(LdapDecoder.MESSAGE_CONTAINER_ATTR, new LdapMessageContainer<MessageDecorator<? extends Message>>(codec, new SchemaBinaryAttributeDetector(schemaManager)));
} catch (LdapException le) {
throw le;
} catch (Exception e) {
LOG.error(I18n.err(I18n.ERR_03205_FAIL_LOAD_SCHEMA), e);
throw new LdapException(e);
}
}
use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.
the class LdapNetworkConnection method bind.
/**
* Bind to the server using a DigestMd5Request object.
*
* @param request The DigestMd5Request POJO containing all the needed parameters
* @return A LdapResponse containing the result
* @throws LdapException if some error occurred
*/
public BindResponse bind(SaslDigestMd5Request request) throws LdapException {
if (request == null) {
String msg = I18n.msg(I18n.MSG_03204_NULL_REQUEST);
LOG.debug(msg);
throw new IllegalArgumentException(msg);
}
BindFuture bindFuture = bindAsync(request);
// Get the result from the future
try {
// Read the response, waiting for it if not available immediately
// Get the response, blocking
BindResponse bindResponse = bindFuture.get(timeout, TimeUnit.MILLISECONDS);
if (bindResponse == null) {
// We didn't received anything : this is an error
if (LOG.isErrorEnabled()) {
LOG.error(I18n.err(I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind"));
}
throw new LdapException(TIME_OUT_ERROR);
}
if (bindResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
authenticated.set(true);
// Everything is fine, return the response
if (LOG.isDebugEnabled()) {
LOG.debug(I18n.msg(I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse));
}
} else {
// We have had an error
if (LOG.isDebugEnabled()) {
LOG.debug(I18n.msg(I18n.MSG_03201_BIND_FAIL, bindResponse));
}
}
return bindResponse;
} catch (Exception ie) {
// Catch all other exceptions
LOG.error(NO_RESPONSE_ERROR, ie);
throw new LdapException(NO_RESPONSE_ERROR, ie);
}
}
use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.
the class LdifAnonymizer method anonymizeFile.
/**
* Anonymize a LDIF
*
* @param ldifFile The ldif file to anonymize
* @param writer The Writer to use to write the result
* @throws LdapException If we got some LDAP related exception
* @throws IOException If we had some issue during some IO operations
*/
public void anonymizeFile(String ldifFile, Writer writer) throws LdapException, IOException {
File inputFile = new File(ldifFile);
if (!inputFile.exists()) {
println("Cannot open file " + ldifFile);
return;
}
LdifReader ldifReader = new LdifReader(inputFile, schemaManager);
int count = 0;
List<LdifEntry> errors = new ArrayList<>();
List<String> errorTexts = new ArrayList<>();
try {
for (LdifEntry ldifEntry : ldifReader) {
count++;
try {
if (ldifEntry.isEntry() && !ldifEntry.isChangeAdd()) {
// process a full entry. Add changes aren't processed here.
Entry newEntry = anonymizeEntry(ldifEntry);
writer.write(LdifUtils.convertToLdif(newEntry));
writer.write("\n");
} else if (ldifEntry.isChangeDelete()) {
// A Delete operation
LdifEntry newLdifEntry = anonymizeChangeDelete(ldifEntry);
if (ldifEntry != null) {
writer.write(newLdifEntry.toString());
writer.write("\n");
}
} else if (ldifEntry.isChangeAdd()) {
// A Add operation
LdifEntry newLdifEntry = anonymizeChangeAdd(ldifEntry);
if (ldifEntry != null) {
writer.write(newLdifEntry.toString());
writer.write("\n");
}
} else if (ldifEntry.isChangeModify()) {
// A Modify operation
LdifEntry newLdifEntry = anonymizeChangeModify(ldifEntry);
if (ldifEntry != null) {
writer.write(newLdifEntry.toString());
writer.write("\n");
}
} else if (ldifEntry.isChangeModDn() || ldifEntry.isChangeModRdn()) {
// A MODDN operation
LdifEntry newLdifEntry = anonymizeChangeModDn(ldifEntry);
if (ldifEntry != null) {
writer.write(newLdifEntry.toString());
writer.write("\n");
}
}
System.out.print('.');
if (count % 100 == 0) {
println();
}
} catch (Exception e) {
System.out.print('*');
if (count % 100 == 0) {
println();
}
errors.add(ldifEntry);
errorTexts.add(e.getMessage());
}
}
println();
if (!errors.isEmpty()) {
println("There are " + errors.size() + " bad entries");
int i = 0;
for (LdifEntry ldifEntry : errors) {
println("---------------------------------------------------");
println("error : " + errorTexts.get(i));
println(ldifEntry.getDn().toString());
i++;
}
}
} finally {
println();
if (!errors.isEmpty()) {
println("There are " + errors.size() + " bad entries");
}
println("Nb entries : " + count);
ldifReader.close();
}
}
use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.
the class SchemaAwareEntryTest method createEntry.
/**
* Helper method which creates an entry with 4 attributes.
*/
private Entry createEntry() {
try {
Entry entry = new DefaultEntry(exampleDn);
Attribute attrOC = new DefaultAttribute("objectClass", "top", "person");
Attribute attrCN = new DefaultAttribute("cn", "test1", "test2");
Attribute attrSN = new DefaultAttribute("sn", "Test1", "Test2");
Attribute attrPWD = new DefaultAttribute("userPassword", BYTES1, BYTES2);
entry.put(attrOC, attrCN, attrSN, attrPWD);
return entry;
} catch (LdapException ne) {
// Do nothing
return null;
}
}
use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.
the class SearchRequestTest method testRequestWithAttributes1Attribute.
/**
* Test parsing of a request with an Attributes element with 1 Attribute element
* @throws NamingException
*/
@Test
public void testRequestWithAttributes1Attribute() throws LdapException {
Dsmlv2Parser parser = null;
try {
parser = newParser();
parser.setInput(SearchRequestTest.class.getResource("request_with_attributes_1_attribute.xml").openStream(), "UTF-8");
parser.parse();
} catch (Exception e) {
fail(e.getMessage());
}
SearchRequest searchRequest = (SearchRequest) parser.getBatchRequest().getCurrentRequest();
List<String> attributes = searchRequest.getAttributes();
assertEquals(1, attributes.size());
String attribute = attributes.get(0);
assertEquals("sn", attribute);
}
Aggregations