use of org.apache.directory.api.ldap.model.message.CompareRequest in project directory-ldap-api by apache.
the class InitCompareRequest method action.
/**
* {@inheritDoc}
*/
public void action(LdapMessageContainer<CompareRequestDecorator> container) {
// Now, we can allocate the CompareRequest Object
CompareRequest internalCompareRequest = new CompareRequestImpl();
internalCompareRequest.setMessageId(container.getMessageId());
CompareRequestDecorator compareRequest = new CompareRequestDecorator(container.getLdapCodecService(), internalCompareRequest);
container.setMessage(compareRequest);
LOG.debug("Compare Request");
}
use of org.apache.directory.api.ldap.model.message.CompareRequest in project directory-ldap-api by apache.
the class StoreCompareRequestAssertionValue method action.
/**
* {@inheritDoc}
*/
public void action(LdapMessageContainer<CompareRequestDecorator> container) {
// Get the CompareRequest Object
CompareRequest compareRequest = container.getMessage();
// Get the Value and store it in the CompareRequest
TLV tlv = container.getCurrentTLV();
// We have to handle the special case of a 0 length value
if (tlv.getLength() == 0) {
compareRequest.setAssertionValue("");
} else {
if (container.isBinary(compareRequest.getAttributeId())) {
compareRequest.setAssertionValue(tlv.getValue().getData());
if (IS_DEBUG) {
LOG.debug("Comparing attribute value {}", Strings.dumpBytes(compareRequest.getAssertionValue().getBytes()));
}
} else {
compareRequest.setAssertionValue(Strings.utf8ToString(tlv.getValue().getData()));
if (LOG.isDebugEnabled()) {
LOG.debug("Comparing attribute value {}", compareRequest.getAssertionValue());
}
}
}
// We can have an END transition
container.setGrammarEndAllowed(true);
}
use of org.apache.directory.api.ldap.model.message.CompareRequest in project directory-ldap-api by apache.
the class StoreCompareRequestAttributeDesc method action.
/**
* {@inheritDoc}
*/
public void action(LdapMessageContainer<CompareRequestDecorator> container) throws DecoderException {
// Get the CompareRequest Object
CompareRequest compareRequest = container.getMessage();
// Get the Value and store it in the CompareRequest
TLV tlv = container.getCurrentTLV();
// Dn
if (tlv.getLength() == 0) {
String msg = I18n.err(I18n.ERR_04093);
LOG.error(msg);
CompareResponseImpl response = new CompareResponseImpl(compareRequest.getMessageId());
throw new ResponseCarryingException(msg, response, ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, compareRequest.getName(), null);
}
String type = Strings.utf8ToString(tlv.getValue().getData());
compareRequest.setAttributeId(type);
if (IS_DEBUG) {
LOG.debug("Comparing attribute description {}", compareRequest.getAttributeId());
}
}
use of org.apache.directory.api.ldap.model.message.CompareRequest in project directory-ldap-api by apache.
the class StoreCompareRequestEntryName method action.
/**
* {@inheritDoc}
*/
public void action(LdapMessageContainer<CompareRequestDecorator> container) throws DecoderException {
CompareRequest compareRequest = container.getMessage();
// Get the Value and store it in the CompareRequest
TLV tlv = container.getCurrentTLV();
Dn entry;
// Dn
if (tlv.getLength() == 0) {
// This will generate a PROTOCOL_ERROR
throw new DecoderException(I18n.err(I18n.ERR_04089));
} else {
byte[] dnBytes = tlv.getValue().getData();
String dnStr = Strings.utf8ToString(dnBytes);
try {
entry = new Dn(dnStr);
} catch (LdapInvalidDnException ine) {
String msg = "Invalid Dn given : " + dnStr + " (" + Strings.dumpBytes(dnBytes) + ") is invalid";
LOG.error("{} : {}", msg, ine.getMessage());
CompareResponseImpl response = new CompareResponseImpl(compareRequest.getMessageId());
throw new ResponseCarryingException(msg, response, ResultCodeEnum.INVALID_DN_SYNTAX, Dn.EMPTY_DN, ine);
}
compareRequest.setName(entry);
}
if (IS_DEBUG) {
LOG.debug("Comparing Dn {}", entry);
}
}
use of org.apache.directory.api.ldap.model.message.CompareRequest in project directory-ldap-api by apache.
the class LdapNetworkConnection method compare.
/**
* {@inheritDoc}
*/
@Override
public boolean compare(Dn dn, String attributeName, byte[] value) throws LdapException {
CompareRequest compareRequest = new CompareRequestImpl();
compareRequest.setName(dn);
compareRequest.setAttributeId(attributeName);
compareRequest.setAssertionValue(value);
CompareResponse compareResponse = compare(compareRequest);
return processResponse(compareResponse);
}
Aggregations