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:808
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-bf71
-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/SimpleWsnProducer
</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:808
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:808
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:wid
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]

Reply via email to