1 20 21 package org.apache.directory.ldapstudio.dsmlv2.reponse; 22 23 import org.apache.directory.ldapstudio.dsmlv2.DsmlDecorator; 24 import org.apache.directory.ldapstudio.dsmlv2.ParserUtils; 25 import org.apache.directory.shared.ldap.codec.LdapMessage; 26 import org.apache.directory.shared.ldap.codec.extended.ExtendedResponse; 27 import org.dom4j.Element; 28 import org.dom4j.Namespace; 29 import org.dom4j.QName; 30 31 32 38 public class ExtendedResponseDsml extends LdapResponseDecorator implements DsmlDecorator 39 { 40 46 public ExtendedResponseDsml( LdapMessage ldapMessage ) 47 { 48 super( ldapMessage ); 49 } 50 51 52 55 public int getMessageType() 56 { 57 return instance.getMessageType(); 58 } 59 60 61 64 public Element toDsml( Element root ) 65 { 66 Element element = root.addElement( "extendedResponse" ); 67 ExtendedResponse extendedResponse = ( ExtendedResponse ) instance; 68 69 LdapResultDsml ldapResultDsml = new LdapResultDsml( extendedResponse.getLdapResult(), instance ); 71 ldapResultDsml.toDsml( element ); 72 73 String responseName = extendedResponse.getResponseName(); 75 if ( responseName != null ) 76 { 77 element.addElement( "responseName").addText( responseName ); 78 } 79 80 Object response = extendedResponse.getResponse(); 82 if ( response != null ) 83 { 84 if ( ParserUtils.needsBase64Encoding( response ) ) 85 { 86 Namespace xsdNamespace = new Namespace( ParserUtils.XSD, ParserUtils.XML_SCHEMA_URI ); 87 Namespace xsiNamespace = new Namespace( ParserUtils.XSI, ParserUtils.XML_SCHEMA_INSTANCE_URI ); 88 element.getDocument().getRootElement().add( xsdNamespace ); 89 element.getDocument().getRootElement().add( xsiNamespace ); 90 91 Element responseElement = element.addElement( "response").addText( ParserUtils.base64Encode( response ) ); 92 responseElement.addAttribute( new QName("type", xsiNamespace), ParserUtils.XSD + ":" + ParserUtils.BASE64BINARY ); 93 } 94 else 95 { 96 element.addElement( "response").addText( response.toString() ); 97 } 98 } 99 100 return element; 101 } 102 } 103 | Popular Tags |