nevermind, I figured it out - I restored the wrong version of a file from my local history in eclipse. I fixed the problem in SVN, it'll show up in tonight's build.
Dan Daniel Jemiolo/Durham/[EMAIL PROTECTED] wrote on 03/01/2007 02:28:06 PM: > If you could turn on the SOAP tracing (set <log-level/> to FINE if it > isn't already) and show the incoming SOAP message (right before the > error), that would also help a lot. > > Dan > > > ----- Forwarded by Daniel Jemiolo/Durham/IBM on 03/01/2007 02:26 PM ----- > > Daniel Jemiolo/Durham/IBM wrote on 03/01/2007 02:21:27 PM: > > > can you send the stack trace from muse.log? > > > > thanks, > > Dan > > > > > dnguyen <[EMAIL PROTECTED]> wrote on 03/01/2007 02:02:14 PM: > > > > > > > > Hi Dan. Thanks for your efforts. With the latest nightly build, we > are now > > > able to change filters using subscription.setResourceProperty(). > However > > > when we subscribe to a producer specifying a MessageContentFilter, we > get an > > > exception: > > > > > > > > > ***************************** > > > <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://www.w3. > > > org/2005/08/addressing/role/anonymous</wsa:To> > > > <wsa:Action > > > xmlns:wsa="http://www.w3.org/2005/08/addressing">http://www.w3. > > > org/2005/08/addressing/fault</wsa:Action> > > > <wsa:MessageID > > > > xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:d65ebd52-880f-f3d0-d44f- > > > d3f4535864b9</wsa:MessageID> > > > <wsa:RelatesTo RelationshipType="wsa:Reply" > > > > xmlns:wsa="http://www.w3.org/2005/08/addressing">uuid:9e968c17-0a16-1256- > > > ade2-802745174af6</wsa:RelatesTo> > > > <wsa:From xmlns:wsa="http://www.w3.org/2005/08/addressing"> > > > > > > > <wsa:Address>http://localhost:8080/wsn-producer/services/WsResource</wsa:Address> > > > </wsa:From> > > > </soap:Header> > > > <soap:Body> > > > <soap:Fault> > > > <soap:Code> > > > <soap:Value>soap:Receiver</soap:Value> > > > </soap:Code> > > > <soap:Reason> > > > <soap:Text>[ID = 'InvalidDialect'] Subscription > filters do > > > not support the dialect > 'http://www.w3.org/TR/1999/REC-xpath-19991116'. The > > > supported dialects are: > > > http://www.w3.org/TR/1999/REC-xpath-19991116</soap:Text> > > > </soap:Reason> > > > <soap:Detail> > > > <wsnt:TopicExpressionDialectUnknownFault > > > xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"> > > > <wsrf-bf:Timestamp > > > > xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2">2007-03-01T11:13:31-06: > > > 00</wsrf-bf:Timestamp> > > > </wsnt:TopicExpressionDialectUnknownFault> > > > </soap:Detail> > > > </soap:Fault> > > > </soap:Body> > > > </soap:Envelope> > > > > > > org.apache.muse.ws.addressing.soap.SoapFault: [ID = 'InvalidDialect'] > > > Subscription filters do not support the dialect > > > 'http://www.w3.org/TR/1999/REC-xpath-19991116'. The supported dialects > are: > > > http://www.w3.org/TR/1999/REC-xpath-19991116 > > > at > > > > org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClient.java:294) > > > at > > > > org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClient.java:250) > > > at > > > org.apache.muse.ws.notification.remote.NotificationProducerClient. > > > subscribe(NotificationProducerClient.java:93) > > > at org.apache.muse.test.wsn.WsnTestClient.main(Unknown Source) > > > *************************************** > > > > > > > > > This only happens during subscription. We tried subscribing with the > > > default filter or a TopicFilter and then changing it afterwards, and > this > > > works. > > > > > > > > > > > > Daniel Jemiolo wrote: > > > > > > > > ok, two things: > > > > > > > > 1. I added a FilterSerializer and registered it as part of the WSN > > > > capability initialization. This means that you should be able to > change a > > > > subscription's filter using SetResourceProperties so long as you add > that > > > > operation to your WSDL and make sure the capability is listed in > muse.xml. > > > > > > > > 2. I updated the NotificationProducer implementation so that you can > add > > > > custom filter types. Here's what you have to do: > > > > > > > > a. Implement the Filter interface (it has one method, accepts()) to > do the > > > > message analysis you want. In your case, your Filter class will be > using > > > > custom XPath functions on the message content. > > > > > > > > b. Implement the FilterFactoryHandler interface (two methods) and > have it > > > > return a new instance of your Filter class when the XML provided has > the > > > > right dialect. It should look something like this: > > > > > > > > public MyFilterHandler implements FilterFactoryHandler > > > > { > > > > public boolean accepts(QName filterName, String > filterDialect) > > > > { > > > > return > > > > filterName.equals(WsnConstants.MESSAGE_CONTENT_QNAME) && > > > > filterDialect.equals("some URI you made up"); > > > > } > > > > > > > > public Filter newInstance(Element filterXML) > > > > { > > > > String expression = XmlUtils.extractText(filterXML); > > > > return new MyFilter(); > > > > } > > > > } > > > > > > > > c. add the handler to the FilterFactory in one of your initialize() > > > > methods: > > > > > > > > FilterFactory.getInstance().addHandler(new > MyFilterHandler()); > > > > > > > > > > > > This will make it so that your handler is queried during the > subscribe() > > > > requests and allowed to create your custom Filter objects if > appropriate. > > > > Your filter will then be used by the subscription resource to decide > what > > > > messages to send out. > > > > > > > > > > > > As a bonus, you now get to test both scenarios and let me know if > they > > > > work. :) I am taking care of the regression testing for previous > > > > projects. > > > > > > > > Dan > > > > > > > > > > > > dnguyen <[EMAIL PROTECTED]> wrote on 02/28/2007 05:06:20 > PM: > > > > > > > >> > > > >> Whoops! Sorry about that...I copied the wrong thing from the > muse.xml > > > > file. > > > >> I did use the Get capability, which is what the original post > should > > > > have > > > >> had. That did not work for me. It looked like this: > > > >> > > > >> ********************************************* > > > >> <resource-type> > > > >> <context-path>SubscriptionManager</context-path> > > > >> <wsdl> > > > >> <wsdl-file>wsdl/WS-BaseNotification-1_3.wsdl</wsdl-file> > > > >> <wsdl-port-type>wsntw:SubscriptionManager</wsdl-port-type> > > > >> </wsdl> > > > >> > > > >> <java-id-factory-class>org.apache.muse.core.routing. > > > >> CounterResourceIdFactory</java-id-factory-class> > > > >> > > > >> > > > > > <java-resource-class>org.apache.muse.ws.resource.impl.SimpleWsResource</java- > > > >> resource-class> > > > >> <capability> > > > >> > > > >> > > > > <capability-uri>http://schemas.xmlsoap. > > org/ws/2004/09/mex/GetMetadata</capability-uri> > > > >> > > > >> <java-capability-class>org.apache.muse.ws.metadata.impl. > > > >> SimpleMetadataExchange</java-capability-class> > > > >> </capability> > > > >> <capability> > > > >> > > > >> > > > > > <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Get</capability-uri> > > > >> > > > >> > <java-capability-class>org.apache.muse.ws.resource.properties.get.impl. > > > >> SimpleGetCapability</java-capability-class> > > > >> </capability> > > > >> <capability> > > > >> > > > >> > > > > > <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Set</capability-uri> > > > >> > > > >> > <java-capability-class>org.apache.muse.ws.resource.properties.set.impl. > > > >> SimpleSetCapability</java-capability-class> > > > >> </capability> > > > >> <capability> > > > >> > > > >> > > > > <capability-uri>http://docs.oasis-open. > > > org/wsn/bw-2/SubscriptionManager</capability-uri> > > > >> > > > >> <java-capability-class>org.apache.muse.ws.notification.impl. > > > >> SimpleSubscriptionManager</java-capability-class> > > > >> <init-param> > > > >> <param-name>trace-notifications</param-name> > > > >> <param-value>true</param-value> > > > >> </init-param> > > > >> </capability> > > > >> <capability> > > > >> > > > >> <capability-uri>http://docs.oasis-open. > > > >> org/wsrf/rlw-2/ImmediateResourceTermination</capability-uri> > > > >> > > > >> <java-capability-class>org.apache.muse.ws.resource.lifetime.impl. > > > >> SimpleImmediateTermination</java-capability-class> > > > >> </capability> > > > >> <capability> > > > >> > > > >> <capability-uri>http://docs.oasis-open. > > > >> org/wsrf/rlw-2/ScheduledResourceTermination</capability-uri> > > > >> > > > >> <java-capability-class>org.apache.muse.ws.resource.lifetime.impl. > > > >> SimpleScheduledTermination</java-capability-class> > > > >> </capability> > > > >> <init-param> > > > >> <param-name>validate-wsrp-schema</param-name> > > > >> <param-value>false</param-value> > > > >> </init-param> > > > >> </resource-type> > > > >> ************************************************ > > > >> > > > >> > > > >> Vinh Nguyen (vinguye2) wrote: > > > >> > > > > >> > The operation you are calling is SetResourceProperties, but you > are > > > >> > adding a Get operation to muse.xml. You need to add the correct > "Set" > > > >> > operation to muse.xml. If you are using Axis2, you also need to > add > > > > the > > > >> > appropriate action to services.xml. > > > >> > > > > >> > > > > >> > -----Original Message----- > > > >> > From: dnguyen [mailto:[EMAIL PROTECTED] > > > >> > Sent: Wednesday, February 28, 2007 1:39 PM > > > >> > To: [email protected] > > > >> > Subject: Problem updating subscription resource property. > > > >> > > > > >> > > > > >> > I am trying to update the filter in the SubscriptionClient > through the > > > >> > updateResourceProperty() method but not having any success. I > get the > > > >> > error > > > >> > below: > > > >> > > > > >> > > > > >> > ****************************** > > > >> > org.apache.muse.ws.addressing.soap.SoapFault: [ID = > > > >> > 'ActionNotSupported'] The re source at 'SubscriptionManager' does > not > > > >> > expose an operation with the WS-Action > > > >> > > > > > > 'http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResource > > > >> > PropertiesRequest' > > > >> > through any of its capabilities. > > > >> > at > > > >> > > > > > > org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClien > > > >> > t.java:279) > > > >> > at > > > >> > > > > > > org.apache.muse.core.AbstractResourceClient.invoke(AbstractResourceClien > > > >> > t.java:235) > > > >> > at > > > >> > > > > > > org.apache.muse.ws.resource.remote.WsResourceClient.setResourcePropertie > > > >> > s(WsResourceClient.java:175) > > > >> > at > > > >> > > > > > > org.apache.muse.ws.resource.remote.WsResourceClient.updateResourceProper > > > >> > ty(WsResourceClient.java:202) > > > >> > at org.apache.muse.test.wsn.WsnTestClient2.main(Unknown > > > > Source) > > > >> > ************************************ > > > >> > > > > >> > > > > >> > I then added this to the SubscriptionManager resource in the > > > >> > wsn-producer muse.xml file: > > > >> > > > > >> > > > > >> > ************************************* > > > >> > <capability> > > > >> > > > > >> > > > > > > <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Get</capability-ur > > > >> > i> > > > >> > > > > >> > > > > > > <java-capability-class>org.apache.muse.ws.resource.properties.get.impl.S > > > >> > impleGetCapability</java-capability-class> > > > >> > </capability> > > > >> > ************************************ > > > >> > > > > >> > > > > >> > But I still get the same exception. I looked in the source code > for > > > >> > anything related to SetResourceProperties but didn't find > anything > > > >> > helpful. > > > >> > I read that the WS-N spec states that the impl can throw an > exception > > > > in > > > >> > this case, but it also says this is allowed. I am not sure if > this is > > > >> > allowable in Muse, but the error message indicates it is possible > by > > > >> > adding the correct capability. Also, I am not sure I am doing > this > > > >> > right. The example I am using is below > > > >> > > > > >> > > > > >> > ******************************* > > > >> > package org.apache.muse.test.wsn; > > > >> > > > > >> > import javax.xml.namespace.QName; > > > >> > > > > >> > import java.net.InetAddress; > > > >> > import java.net.URI; > > > >> > import java.net.UnknownHostException; > > > >> > > > > >> > import org.apache.muse.ws.addressing.EndpointReference; > > > >> > import > > > >> > > org.apache.muse.ws.notification.remote.NotificationProducerClient; > > > >> > import org.apache.muse.ws.notification.remote.SubscriptionClient; > > > >> > import org.apache.muse.ws.notification.impl.*; > > > >> > import org.apache.muse.ws.notification.WsnConstants; > > > >> > import org.apache.muse.util.xml.*; > > > >> > > > > >> > > > > >> > public class WsnTestClient2 > > > >> > { > > > >> > public static URI getLocalAddress(String contextPath, int > port) > > > >> > throws UnknownHostException > > > >> > { > > > >> > String ip = InetAddress.getLocalHost().getHostAddress(); > > > >> > > > > >> > StringBuffer address = new StringBuffer(); > > > >> > address.append("http://"); > > > >> > address.append(ip); > > > >> > address.append(':'); > > > >> > address.append(port); > > > >> > > > > >> > if (contextPath.charAt(0) != '/') > > > >> > address.append('/'); > > > >> > > > > >> > address.append(contextPath); > > > >> > > > > >> > return URI.create(address.toString()); > > > >> > } > > > >> > > > > >> > public static void main(String[] args) > > > >> > { > > > >> > try > > > >> > { > > > >> > // > > > >> > // change these to point to different > applications/servers > > > >> > // > > > >> > String webAppRoot = "/isr-producer/services"; > > > >> > int producer_port = > > > >> > Integer.parseInt(System.getProperty("producer_port","8080")); > > > >> > int consumer_port = > > > >> > Integer.parseInt(System.getProperty("consumer_port","8080")); > > > >> > > > > >> > // > > > >> > // create producer EPR/client, and use it to > subscribe > > > >> > // the consumer to all messages > > > >> > // > > > >> > > > > >> > String contextPath = webAppRoot + "/IsrResource"; > > > >> > URI address = (args.length == 0) ? > > > >> > getLocalAddress(contextPath, > > > >> > producer_port) : URI.create(args[0] + contextPath); > > > >> > EndpointReference epr = new > EndpointReference(address); > > > >> > > > > >> > webAppRoot = "/isr-consumer/services"; > > > >> > contextPath = webAppRoot + "/IsrConsumer"; > > > >> > address = getLocalAddress(contextPath, > consumer_port); > > > >> > EndpointReference consumer = new > > > > EndpointReference(address); > > > >> > > > > >> > // > > > >> > // null filter == send all messages to consumer > > > >> > // > > > >> > NotificationProducerClient producer = new > > > >> > NotificationProducerClient(epr); > > > >> > producer.setTrace(true); > > > >> > > > > >> > SubscriptionClient subscription = null; > > > >> > > > > >> > while( true ) > > > >> > { > > > >> > System.out.println( "s - subscribe, u - > unsubscribe, v > > > > - > > > >> > view, q - quit" ); > > > >> > > > > >> > char choice = (char)System.in.read(); > > > >> > > > > >> > if( choice == 's' ) > > > >> > { > > > >> > subscription = producer.subscribe(consumer, > null, > > > >> > null); > > > >> > } > > > >> > else if( choice == 'u' ) > > > >> > { > > > >> > subscription.destroy(); > > > >> > } > > > >> > else if( choice == 'v' ) > > > >> > { > > > >> > > > > >> > > > > > > System.out.println(XmlUtils.toString(subscription.getResourceProperty(Ws > > > >> > nConstants.FILTER_QNAME)[0])); > > > >> > } > > > >> > else if( choice == 'f' ) > > > >> > { > > > >> > QName messageName = new > > > >> > QName("http://ws.apache.org/muse/test/wsrf", "MyTopic", "tns"); > > > >> > > > > >> > subscription.updateResourceProperty(WsnConstants.FILTER_QNAME, > new > > > >> > Object[] { new TopicFilter(messageName) }); > > > >> > } > > > >> > else if( choice == 'q' ) > > > >> > { > > > >> > break; > > > >> > } > > > >> > } > > > >> > } > > > >> > > > > >> > catch (Throwable error) > > > >> > { > > > >> > error.printStackTrace(); > > > >> > } > > > >> > } > > > >> > } > > > >> > > > > >> > -- > > > >> > View this message in context: > > > >> > > > > > > http://www.nabble.com/Problem-updating-subscription-resource-property.-t > > > >> > f3323382.html#a9239032 > > > >> > Sent from the Muse User mailing list archive at Nabble.com. > > > >> > > > > >> > > > > >> > > --------------------------------------------------------------------- > > > >> > 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] > > > >> > > > > >> > > > > >> > > > > >> > > > >> -- > > > >> View this message in context: > http://www.nabble.com/Problem-updating- > > > >> subscription-resource-property.-tf3323382.html#a9239571 > > > >> Sent from the Muse User mailing list archive at Nabble.com. > > > >> > > > >> > > > >> > --------------------------------------------------------------------- > > > >> 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] > > > > > > > > > > > > > > > > > > -- > > > View this message in context: http://www.nabble.com/Problem-updating- > > > subscription-resource-property.-tf3323382.html#a9256210 > > > Sent from the Muse User mailing list archive at Nabble.com. > > > > > > > > > --------------------------------------------------------------------- > > > 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]
