1 20 21 package org.apache.directory.ldapstudio.dsmlv2.reponse; 22 23 24 import javax.naming.NamingEnumeration ; 25 import javax.naming.NamingException ; 26 import javax.naming.directory.Attribute ; 27 import javax.naming.directory.Attributes ; 28 29 import org.apache.directory.ldapstudio.dsmlv2.DsmlDecorator; 30 import org.apache.directory.ldapstudio.dsmlv2.ParserUtils; 31 import org.apache.directory.shared.ldap.codec.LdapMessage; 32 import org.apache.directory.shared.ldap.codec.search.SearchResultEntry; 33 import org.dom4j.Element; 34 import org.dom4j.Namespace; 35 import org.dom4j.QName; 36 37 38 44 public class SearchResultEntryDsml extends LdapResponseDecorator implements DsmlDecorator 45 { 46 52 public SearchResultEntryDsml( LdapMessage ldapMessage ) 53 { 54 super( ldapMessage ); 55 } 56 57 58 61 public int getMessageType() 62 { 63 return instance.getMessageType(); 64 } 65 66 67 70 public Element toDsml( Element root ) 71 { 72 Element element = root.addElement( "searchResultEntry" ); 73 SearchResultEntry searchResultEntry = ( SearchResultEntry ) instance; 74 element.addAttribute( "dn", searchResultEntry.getObjectName().toString() ); 75 76 Attributes attributes = searchResultEntry.getPartialAttributeList(); 77 NamingEnumeration ne = attributes.getAll(); 78 79 while ( ne.hasMoreElements() ) 81 { 82 Attribute attribute = ( Attribute ) ne.nextElement(); 83 84 Element attributeElement = element.addElement( "attr" ); 85 attributeElement.addAttribute( "name", attribute.getID() ); 86 87 try 89 { 90 NamingEnumeration ne2 = attribute.getAll(); 91 92 while ( ne2.hasMoreElements() ) 93 { 94 Object value = ne2.nextElement(); 95 96 if ( ParserUtils.needsBase64Encoding( value ) ) 97 { 98 Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI ); 99 Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI ); 100 attributeElement.getDocument().getRootElement().add( xsdNamespace ); 101 attributeElement.getDocument().getRootElement().add( xsiNamespace ); 102 103 Element valueElement = attributeElement.addElement( "value" ).addText( 104 ParserUtils.base64Encode( value ) ); 105 valueElement 106 .addAttribute( new QName( "type", xsiNamespace ), ParserUtils.XSD + ":" + ParserUtils.BASE64BINARY ); 107 } 108 else 109 { 110 attributeElement.addElement( "value" ).addText( value.toString() ); 111 } 112 } 113 } 114 catch ( NamingException e ) 115 { 116 } 117 } 118 119 return element; 120 } 121 } 122 | Popular Tags |