1 57 58 package org.apache.soap; 59 60 import java.io.*; 61 import java.util.*; 62 import org.w3c.dom.*; 63 import org.apache.soap.util.*; 64 import org.apache.soap.util.xml.*; 65 import org.apache.soap.encoding.*; 66 import org.apache.soap.rpc.SOAPContext; 67 68 75 public class Header 76 { 77 private Vector headerEntries = null; 78 private AttributeHandler attrHandler = new AttributeHandler(); 79 80 public void setAttribute(QName attrQName, String value) 81 { 82 attrHandler.setAttribute(attrQName, value); 83 } 84 85 public String getAttribute(QName attrQName) 86 { 87 return attrHandler.getAttribute(attrQName); 88 } 89 90 public void removeAttribute(QName attrQName) 91 { 92 attrHandler.removeAttribute(attrQName); 93 } 94 95 public void declareNamespace(String nsPrefix, String namespaceURI) 96 { 97 attrHandler.declareNamespace(nsPrefix, namespaceURI); 98 } 99 100 public void setHeaderEntries(Vector headerEntries) 101 { 102 this.headerEntries = headerEntries; 103 } 104 105 public Vector getHeaderEntries() 106 { 107 return headerEntries; 108 } 109 110 public void marshall(Writer sink, NSStack nsStack, 111 XMLJavaMappingRegistry xjmr, SOAPContext ctx) 112 throws IllegalArgumentException , IOException 113 { 114 attrHandler.populateNSStack(nsStack); 115 116 String soapEnvNSPrefix = attrHandler.getUniquePrefixFromURI( 118 Constants.NS_URI_SOAP_ENV, Constants.NS_PRE_SOAP_ENV, nsStack); 119 120 if (headerEntries != null) 123 { 124 sink.write('<' + soapEnvNSPrefix + ':' + Constants.ELEM_HEADER); 125 126 attrHandler.marshall(sink, ctx); 128 129 sink.write('>' + StringUtils.lineSeparator); 130 131 for (Enumeration e = headerEntries.elements(); e.hasMoreElements();) 133 { 134 Element headerEntryEl = (Element)e.nextElement(); 135 136 Utils.marshallNode(headerEntryEl, sink); 137 138 sink.write(StringUtils.lineSeparator); 139 } 140 141 sink.write("</" + soapEnvNSPrefix + ':' + Constants.ELEM_HEADER + 142 '>' + StringUtils.lineSeparator); 143 } 144 145 nsStack.popScope(); 146 } 147 148 public static Header unmarshall(Node src, SOAPContext ctx) 149 throws IllegalArgumentException 150 { 151 Element root = (Element)src; 152 Header header = new Header(); 153 Vector headerEntries = new Vector(); 154 155 header.attrHandler = AttributeHandler.unmarshall(root, ctx); 157 158 for (Element el = DOMUtils.getFirstChildElement(root); 159 el != null; 160 el = DOMUtils.getNextSiblingElement(el)) 161 { 162 headerEntries.addElement(el); 163 } 164 165 header.setHeaderEntries(headerEntries); 166 167 return header; 168 } 169 170 public String toString() 171 { 172 StringWriter sw = new StringWriter(); 173 PrintWriter pw = new PrintWriter(sw); 174 175 pw.print("[Attributes=" + attrHandler + "] " + 176 "[HeaderEntries={"); 177 178 if (headerEntries != null) 179 { 180 for (int i = 0; i < headerEntries.size(); i++) 181 { 182 if (i > 0) 183 { 184 pw.print(", "); 185 } 186 187 pw.print("[" + headerEntries.elementAt(i) + "]"); 188 } 189 } 190 191 pw.print("}]"); 192 193 return sw.toString(); 194 } 195 } 196 | Popular Tags |