> >>3. I made setObjectValue protected as we don't want to encourage the > >>setting of the value by arbitrary classes. > >I was thinking of it, as a required public function. There > is no other way > >to construct simple XML for a Header/Body element. > The problem is that the value set by setObjectValue may bear > no resemblance > to the contents of the element, so I'm afraid I'm not comfortable with > committing that as a public function. What do others think?
Hm - maybe I'll go take a look at this.... the idea is that this API is for programattic generation of XML from serializable Java stuff, and thus the contents of the XML are EXACTLY the serialized data of the Java objects. i.e. SOAPHeader myHeader = new SOAPHeader(new QName("myNS", "header1")); MessageElement e1 = new MessageElement(new QName("myNS", "anInt")); e1.setObjectValue(new Integer(55)); myHeader.addChild(e1); should generate: <SOAP:Header> <ns1:header1 xmlns:ns1="myNS"> <ns1:anInt xsi:type="xsd:int">55</ns1:anInt> </ns1:header1> </SOAP:Header> In fact to support this nicely, we should provide a MessageElement constructor that matches the SOAPHeader one (namespace, localPart, objectValue). [Oh, sorry in the examples above I shouldn't have used the QNames, since those constructors don't exist] I also think it doesn't make sense to set the object value on an element created from actual XML, so that shouldn't work. Make sense? --Glen