Thanks Dan,
Yep, I just started looking closer at those other XmlUtils methods last
night, particularly the descriptions:) I was confused at first because I
initially figured that the name "createElement" probably meant adding a
new element to, not replacing. Looks like I might be making more use of
the other methods, too.
-Vinh


-----Original Message-----
From: Daniel Jemiolo [mailto:[EMAIL PROTECTED] 
Sent: Thursday, November 09, 2006 5:29 AM
To: [email protected]
Subject: RE: xmlbeans and muse

Thanks, Vinh - I will do that. 

In the meantime, createElement(QName, Object) always strips the root
element when the Object is a DOM Element (check the JavaDoc). If you
want to just append the root element under the newly-created Element,
check out the JavaDoc for createElement(Document, QName, Node, boolean),
which allows you to specify this choice. 

Thanks,
Dan



"Vinh Nguyen \(vinguye2\)" <[EMAIL PROTECTED]> wrote on 11/09/2006
03:45:48 AM:

> Dan,
> I will post an issue to the XmlBeans group about #1 below.  If you 
> can, please look into #2 and let me know if it's actually a bug.  You 
> can update the JIRA issue I opened earlier today, since it relates to 
> this problem.  Thanks for your help!
> -Vinh
> 
> -----Original Message-----
> From: Vinh Nguyen (vinguye2)
> Sent: Thursday, November 09, 2006 12:40 AM
> To: [email protected]
> Subject: RE: xmlbeans and muse
> 
> Ok, I figured out the problem.  Actually, it's two problems.  The 
> following code now works, and I can send a complex type notification.

> I can also successfully deserialize it on the consumer end and rebuild

> my javabean from the xml.  The fix was a slight modification to my 
> original producer code.
> 
>        BoxDocument doc = BoxDocument.Factory.newInstance();
>        BoxType type = doc.addNewBox();
>        type.setWidth(BigInteger.valueOf(123));
>        type.setHeight(BigInteger.valueOf(123));
>        Element payload = XmlUtils.getFirstElement(doc.newDomNode());
> // fix is in this line
> 
>    NotificationProducer wsn = ...
>    wsn.publish(TOPIC_NAME, payload);
> 
> The two problems (or bugs?):
> 
> 1) XmlBeans - the XmlObject base class for all the javabeans seems to 
> have a bug with doc.getDomNode().  This method fails to preserve the 
> namespace prefix.  Calling doc.newDomeNode() seems to solve the 
> problem, and all xml artifacts seem to be preserved ok.
> 
> 2) NotificationProducer (Muse) - fails to properly handle message 
> Elements that do NOT have namespace prefixes.  The result is that the 
> notification does not get sent out, and no errors seem to be thrown at

> all.  I confirmed this when using the Element from doc.getDomNode(), 
> which returns a node WITHOUT any namespace prefixes.
> NotificationProducer will fail with this Element.  But, the Element 
> from
> doc.newDomNode() does have the prefixes, and NotificationProducer will

> then send the message element successfully.
> 
> Here's the successful test output trace:
> 
> [CLIENT TRACE] SOAP envelope contents (outgoing):
> 
> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";>
>     <soap:Header>
>         <wsa:To
> xmlns:wsa="http://www.w3.org/2005/08/addressing";>http://10.21.155.92:8
> 08 0/MuseBox/services/SimpleWsnConsumer</wsa:To>
>         <wsa:Action
>
xmlns:wsa="http://www.w3.org/2005/08/addressing";>http://docs.oasis-open.
> org/wsn/bw-2/NotificationConsumer/NotifyRequest</wsa:Action>
>         <wsa:MessageID
> xmlns:wsa="http://www.w3.org/2005/08/addressing";>uuid:8e95e926-9af1-bf
> 71
> -eb38-dba159b59146</wsa:MessageID>
>         <wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing";>
>             <wsa:ReferenceParameters
> xmlns:wsa="http://www.w3.org/2005/08/addressing"/>
> 
> <wsa:Address>http://10.21.155.92:8080/MuseBox/services/SimpleWsnProduc
> er
> </wsa:Address>
>         </wsa:From>
>     </soap:Header>
>     <soap:Body>
>         <wsnt:Notify xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2";>
>             <wsnt:NotificationMessage
>                 xmlns:box="http://cisco.com/musebox/schemas/box";
>                 xmlns:muse-wsa="http://ws.apache.org/muse/addressing";
>                 xmlns:wsa="http://www.w3.org/2005/08/addressing";
> xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2";>
>                 <wsnt:SubscriptionReference>
>                     <wsa:Address
> xmlns:wsa="http://www.w3.org/2005/08/addressing";>http://10.21.155.92:8
> 08 0/MuseBox/services/SubscriptionManager</wsa:Address>
>                     <wsa:ReferenceParameters 
> xmlns:wsa="http://www.w3.org/2005/08/addressing";>
>                         <muse-wsa:ResourceId 
> xmlns:muse-wsa="http://ws.apache.org/muse/addressing";>MuseResource-1</
> mu
> se-wsa:ResourceId>
>                     </wsa:ReferenceParameters>
>                 </wsnt:SubscriptionReference>
>                 <wsnt:Topic
> 
> Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete";
> xmlns:wsnp="http://cisco.com/musebox/wsnp";>wsnp:MyTopic2</wsnt:Topic>
>                 <wsnt:ProducerReference>
>                     <wsa:ReferenceParameters 
> xmlns:wsa="http://www.w3.org/2005/08/addressing"/>
>                     <wsa:Address
> xmlns:wsa="http://www.w3.org/2005/08/addressing";>http://10.21.155.92:8
> 08 0/MuseBox/services/SimpleWsnProducer</wsa:Address>
>                 </wsnt:ProducerReference>
>                 <wsnt:Message>
>                     <box:Box
> xmlns:box="http://cisco.com/musebox/schemas/box";>
>                         <box:width>123</box:width>
>                         <box:height>123</box:height>
>                     </box:Box>
>                 </wsnt:Message>
>             </wsnt:NotificationMessage>
>         </wsnt:Notify>
>     </soap:Body>
> </soap:Envelope>
> 
> 
> 
> -----Original Message-----
> From: Vinh Nguyen (vinguye2)
> Sent: Wednesday, November 08, 2006 3:00 PM
> To: [email protected]
> Subject: RE: xmlbeans and muse
> 
> Actually, here is the XML from doc.xmlText():
> 
> <box:Box
> xmlns:box="http://cisco.com/musebox/schemas/box";><box:width>123</box:w
> id
> th><box:height>123</box:height></box:Box>
> 
> So it looks like XmlBeans does keep the prefixes.  But when outputting

> from Muse's XmlUtils.toString(), the prefixes are lost.  I'm wondering

> if the problem is with XmlUtils, because it always seems to strip the 
> top node "Box".  Even with XmlUtils.createElement(QName,Element), it 
> seems to strip the existing element's top node when creating the new 
> one.
> 
> 
> -----Original Message-----
> From: Daniel Jemiolo [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, November 08, 2006 2:04 PM
> To: [email protected]
> Subject: RE: xmlbeans and muse
> 
> How are you setting up the subscription? I'm guessing that the message

> is not being sent out because it doesn't match a subscription filter 
> OR it the subscription is failing. Let me know what test code you're 
> using (if it's WsnTestClient or a modified version) and the
client-side trace.
> 
> Also - I notice the XmlBeans XML doesn't have prefixes in the
elements.
> In our experience, the SAAJ implementations of Axis 1.x and Axis2 do 
> not handle default namespaces and empty prefixes well, leading us to 
> hack around the issue (basically, always use prefixes). The XmlBeans 
> XML is valid, I'm just reporting troubles we've had with Axis. I want 
> to test to see if the SOAP engine is failing with a runtime exception 
> in the SOAP processor, which you don't see w/o a SOAP monitor.
> 
> Can you open a JIRA item for this and attach your WAR files (producer 
> and consumer)? That way I can debug myself and determine if it's a 
> producer, consumer, or Axis problem. Don't send it to muse-* because 
> the Apache spam filter traps any message with large attachments. I'll 
> reply to the list with any findings.
> 
> Dan
> 
> 
> "Vinh Nguyen \(vinguye2\)" <[EMAIL PROTECTED]> wrote on 11/08/2006
> 04:34:45 PM:
> 
> > Dan,
> > As a note, if I use the Element object created in the code below and

> > pass it to the NotificationProducer, the message doesn't get sent 
> > out
> at
> > all.  No errors are being thrown either, so it's difficult to figure
> out
> > the problem.
> > -Vinh
> > 
> > 
> > -----Original Message-----
> > From: Vinh Nguyen (vinguye2)
> > Sent: Wednesday, November 08, 2006 1:13 PM
> > To: [email protected]
> > Subject: RE: xmlbeans and muse
> > 
> > Thanks Dan,
> > Here's the test output.
> > 
> > 
> > Here is the XML from XmlBeans:
> > 
> > <?xml version="1.0" encoding="UTF-8"?> <Box 
> > xmlns="http://cisco.com/musebox/schemas/box";>
> >     <width>123</width>
> >     <height>123</height>
> > </Box>
> > 
> > Here is the message payload:
> > 
> > <?xml version="1.0" encoding="UTF-8"?> <wsnp:MyMessage 
> > xmlns:wsnp="http://cisco.com/musebox/wsnp";>
> >     <width xmlns="http://cisco.com/musebox/schemas/box";>123</width>
> >     <height 
> > xmlns="http://cisco.com/musebox/schemas/box";>123</height>
> > </wsnp:MyMessage>
> > 
> > Here is another way of doing the same thing:
> > 
> > <?xml version="1.0" encoding="UTF-8"?> <wsnp:MyMessage 
> > xmlns:wsnp="http://cisco.com/musebox/wsnp";>
> >     <width xmlns="http://cisco.com/musebox/schemas/box";>123</width>
> >     <height 
> > xmlns="http://cisco.com/musebox/schemas/box";>123</height>
> > </wsnp:MyMessage>
> > 
> > 
> > 
> > -----Original Message-----
> > From: Daniel Jemiolo [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, November 08, 2006 10:14 AM
> > To: [email protected]
> > Subject: RE: xmlbeans and muse
> > 
> > I'm guessing it's just a matter of DOM API usage,  but for sanity 
> > checks, try running the following code and let me know what the 
> > output
> > is:
> > 
> > 
> > BoxDocument doc = BoxDocument.Factory.newInstance();
> > BoxType type = doc.addNewBoxType();
> > type.setWidth(100);
> > type.setHeight(100);
> > 
> > Document dom = (Document)doc.getDomNode(); Element boxElement = 
> > XmlUtils.getFirstElement(dom);
> > 
> > System.out.println("Here is the XML from XmlBeans:\n"); 
> > System.out.println(XmlUtils.toString(boxElement));
> > 
> > QName name = new QName(NAMESPACE_URI, "MyMessage", PREFIX); Element 
> > payload = XmlUtils.createElement(name, boxElement);
> > 
> > System.out.println("Here is the message payload:\n"); 
> > System.out.println(XmlUtils.toString(payload));
> > 
> > Element anotherTest = XmlUtils.createElement(name); 
> > XmlUtils.moveSubTree(boxElement, anotherTest);
> > 
> > System.out.println("Here is another way of doing the same 
> > thing:\n"); System.out.println(XmlUtils.toString(anotherTest));
> > 
> > 
> > 
> > 
> > "Vinh Nguyen \(vinguye2\)" <[EMAIL PROTECTED]> wrote on 11/08/2006
> > 04:59:53 AM:
> > 
> > > I should also ask what type of objects are allowed to be passed in

> > > notification messages?  Just strings, or any Element object?  I
> tried
> > > the following code to translate my bean to an Element, but the 
> > > notification doesn't get sent out at all when creating the Element
> > this
> > > way.  No errors are thrown either, so I can't figure out what is
> wrong
> > 
> > > with the Element I'm using.  This is even when I peek into the
> Element
> > 
> > > by printing out it's namespaceURI, node name, etc., and it looks
> fine
> > to
> > > me.
> > > 
> > > QName name = new QName(NAMESPACE_URI, "MyMessage", PREFIX); 
> > > Element payload = XmlUtils.createElement(name, 
> > > ((Document)doc.getDomNode()).getDocumentElement());
> > > 
> > > 
> > > 
> > > -----Original Message-----
> > > From: Vinh Nguyen (vinguye2)
> > > Sent: Wednesday, November 08, 2006 1:06 AM
> > > To: [email protected]
> > > Subject: xmlbeans and muse
> > > 
> > > Hi all,
> > > I'm using XmlBeans with Muse for working with custom object types.
> > Can
> > > anyone help with the following code?  Basically, I'm trying to
> convert
> > a
> > > bean object to an xml Element object, which I can then pass to the

> > > NotificationsProducer to send out notifications containing a 
> > > custom object.  Then, later on the consumer side, I want to 
> > > translate the
> xml
> > 
> > > back to the bean.  The problem is how to do the conversion to an 
> > > Element.  I've tried several ways without success, or perhaps it's

> > > because after seeing various xml output forms, I'm getting 
> > > confused
> > with
> > > what the xml should look like in the console trace.  Any help is 
> > > appreciated. Thanks!
> > > -Vinh
> > > 
> > > BoxDocument doc = BoxDocument.Factory.newInstance();
> > > BoxType type = doc.addNewBoxType(); type.setWidth(100); 
> > > type.setHeight(100);
> > > 
> > > Element payload = ... ?
> > > 
> > > QName name = ...
> > > NotificationProducer np = ...
> > > np.publish(name, payload);
> > > 
> > > 
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > 
> > 
> > 
> > --------------------------------------------------------------------
> > - To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > --------------------------------------------------------------------
> > - To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > --------------------------------------------------------------------
> > - To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to