*/
public Element toDsml( Element root )
{
Element element = super.toDsml( root );
SearchRequest request = ( SearchRequest ) getDecorated();
// Dn
if ( request.getBase() != null )
{
element.addAttribute( "dn", request.getBase().getName() );
}
// Scope
SearchScope scope = request.getScope();
if ( scope != null )
{
if ( scope == SearchScope.OBJECT )
{
element.addAttribute( "scope", "baseObject" );
}
else if ( scope == SearchScope.ONELEVEL )
{
element.addAttribute( "scope", "singleLevel" );
}
else if ( scope == SearchScope.SUBTREE )
{
element.addAttribute( "scope", "wholeSubtree" );
}
}
// DerefAliases
AliasDerefMode derefAliases = request.getDerefAliases();
switch ( derefAliases )
{
case NEVER_DEREF_ALIASES:
element.addAttribute( "derefAliases", "neverDerefAliases" );
break;
case DEREF_ALWAYS:
element.addAttribute( "derefAliases", "derefAlways" );
break;
case DEREF_FINDING_BASE_OBJ:
element.addAttribute( "derefAliases", "derefFindingBaseObj" );
break;
case DEREF_IN_SEARCHING:
element.addAttribute( "derefAliases", "derefInSearching" );
break;
default:
throw new IllegalStateException( "Unexpected deref alias mode " + derefAliases );
}
// SizeLimit
if ( request.getSizeLimit() != 0L )
{
element.addAttribute( "sizeLimit", "" + request.getSizeLimit() );
}
// TimeLimit
if ( request.getTimeLimit() != 0 )
{
element.addAttribute( "timeLimit", "" + request.getTimeLimit() );
}
// TypesOnly
if ( request.getTypesOnly() )
{
element.addAttribute( "typesOnly", "true" );
}
// Filter
Element filterElement = element.addElement( "filter" );
toDsml( filterElement, request.getFilter() );
// Attributes
List<String> attributes = request.getAttributes();
if ( attributes.size() > 0 )
{
Element attributesElement = element.addElement( "attributes" );