/**
* {@inheritDoc}
*/
public void action( LdapMessageContainer<SearchResultEntryDecorator> container ) throws DecoderException
{
SearchResultEntryDecorator searchResultEntry = container.getMessage();
TLV tlv = container.getCurrentTLV();
Dn objectName = Dn.EMPTY_DN;
// Store the value.
if ( tlv.getLength() == 0 )
{
searchResultEntry.setObjectName( objectName );
}
else
{
byte[] dnBytes = tlv.getValue().getData();
String dnStr = Strings.utf8ToString( dnBytes );
try
{
objectName = new Dn( dnStr );
}
catch ( LdapInvalidDnException ine )
{
// This is for the client side. We will never decode LdapResult on the server
String msg = "The Dn " + Strings.dumpBytes( dnBytes ) + "is invalid : "
+ ine.getMessage();
LOG.error( "{} : {}", msg, ine.getMessage() );
throw new DecoderException( msg, ine );
}
searchResultEntry.setObjectName( objectName );
}
if ( IS_DEBUG )
{
LOG.debug( "Search Result Entry Dn found : {}", searchResultEntry.getObjectName() );
}
}