use of org.apache.directory.api.asn1.ber.tlv.TLV in project directory-ldap-api by apache.
the class StoreSaslCredentials method action.
/**
* {@inheritDoc}
*/
public void action(LdapMessageContainer<BindRequestDecorator> container) throws DecoderException {
BindRequest bindRequestMessage = container.getMessage();
// Get the Value and store it in the BindRequest
TLV tlv = container.getCurrentTLV();
// credentials
if (tlv.getLength() == 0) {
bindRequestMessage.setCredentials(Strings.EMPTY_BYTES);
} else {
bindRequestMessage.setCredentials(tlv.getValue().getData());
}
// We can have an END transition
container.setGrammarEndAllowed(true);
if (IS_DEBUG) {
LOG.debug("The credentials are : {}", Strings.dumpBytes(bindRequestMessage.getCredentials()));
}
}
use of org.apache.directory.api.asn1.ber.tlv.TLV 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.asn1.ber.tlv.TLV 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.asn1.ber.tlv.TLV 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.asn1.ber.tlv.TLV in project directory-ldap-api by apache.
the class StoreModifyDnRequestNewSuperior method action.
/**
* {@inheritDoc}
*/
public void action(LdapMessageContainer<ModifyDnRequestDecorator> container) throws DecoderException {
ModifyDnRequest modifyDnRequest = container.getMessage();
// Get the Value and store it in the modifyDNRequest
TLV tlv = container.getCurrentTLV();
// We have to handle the special case of a 0 length matched
// Dn
Dn newSuperior = Dn.EMPTY_DN;
if (tlv.getLength() == 0) {
if (modifyDnRequest.getDeleteOldRdn()) {
// This will generate a PROTOCOL_ERROR
throw new DecoderException(I18n.err(I18n.ERR_04092));
} else {
LOG.warn("The new superior is null, so we will change the entry");
}
modifyDnRequest.setNewSuperior(newSuperior);
} else {
byte[] dnBytes = tlv.getValue().getData();
String dnStr = Strings.utf8ToString(dnBytes);
try {
newSuperior = new Dn(dnStr);
} catch (LdapInvalidDnException ine) {
String msg = "Invalid new superior Dn given : " + dnStr + " (" + Strings.dumpBytes(dnBytes) + ") is invalid";
LOG.error("{} : {}", msg, ine.getMessage());
ModifyDnResponseImpl response = new ModifyDnResponseImpl(modifyDnRequest.getMessageId());
throw new ResponseCarryingException(msg, response, ResultCodeEnum.INVALID_DN_SYNTAX, modifyDnRequest.getName(), ine);
}
modifyDnRequest.setNewSuperior(newSuperior);
}
// We can have an END transition
container.setGrammarEndAllowed(true);
if (IS_DEBUG) {
LOG.debug("New superior Dn {}", newSuperior);
}
}
Aggregations