Hi
I'm using the wsn-producer / wsn-consumer samples and I've noticed that
the SubscriptionReference element in the NotificationMessage produced by
the producer is missing (I need it to correlate a particular event
received to a subscription). In fact the message looks as follows:
<wsnt:NotificationMessage
xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"
xmlns:alar="http://italtel.com/specs/wsn/alarmHeader"
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:Topic
Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Concrete"
xmlns:tns="http://italtel.org/specs/wsn/topics">tns:dummyTopic</wsnt:Top
ic>
<wsnt:ProducerReference>
<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>
<wsa:Address
xmlns:wsa="http://www.w3.org/2005/08/addressing">http://127.0.0.1:8080/P
roducer/services/Producer</wsa:Address>
</wsnt:ProducerReference>
<wsnt:Message>
...
</wsnt:Message>
</wsnt:NotificationMessage>
Then I found out that SimpleNotificationProducer::publish (QName
topicName, Element content) doesn't set the SubscriptionReference so I
added the following instruction to do that:
message.setSubscriptionReference(sub.getWsResource().getEndpointReferenc
e());
After this patch the outgoing notification message correctly contains
the subscription reference (the whole SOAP message is logged by
wsn-producer):
<wsnt:Notify xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2">
<wsnt:NotificationMessage
xmlns:alar="http://italtel.com/specs/wsn/alarmHeader"
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://127.0.0.1:8080/P
roducer/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:tns="http://italtel.org/specs/wsn/topics">tns:dummyTopic</wsnt:Top
ic>
<wsnt:ProducerReference>
<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>
<wsa:Address
xmlns:wsa="http://www.w3.org/2005/08/addressing">http://127.0.0.1:8080/P
roducer/services/Producer</wsa:Address>
</wsnt:ProducerReference>
<wsnt:Message>
...
</wsnt:Message>
</wsnt:NotificationMessage>
Now the problem is that the ingoing notification message (the message
received by wsn-consumer) doesn't contain the SubscriptionReference
element and this is clear because the consumer logs the message received
in
ConsumerCapabilityImpl::process (NotificationMessage message).
Could anyone help me?
Thanks
Francesco