[xgws-user] Problem with WS-Messenger

Yi Huang yihuan_at_cs.indiana.edu
Tue, 27 Mar 2007 12:46:09 -0400


This is a multi-part message in MIME format.

------=_NextPart_000_0099_01C7706D.E5D387E0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi,

Thanks for reporting the bug. I have reproduced the problem and fixed =
it.

You can replace the attached YFilterInfo.java in the wsmg.adapter.XPath
package with the attached file. Recompile and restart the server.

I also updated the file on the web site with the updated file.

Thanks,

Yi

-----Original Message-----
From: xgws-user-admin_at_cs.indiana.edu =
[mailto:xgws-user-admin_at_cs.indiana.edu]
On Behalf Of Alex Piqueras
Sent: Wednesday, March 21, 2007 1:28 PM
To: Yi Huang
Cc: xgws-user_at_cs.indiana.edu
Subject: Re: [xgws-user] Problem with WS-Messenger

Hi,

When I use:

subscriptionId1 =3D
client.subscribe(producer,consumer,topic,"//content[text()=3D\"Hello\"]")=
;
client.unSubscribe(producer,subscriptionId1);

I get the next stack trace:

SubscriptionID received=3D<wse:Identifier=20
xmlns:wse=3D"http://schemas.xmlsoap.org/ws/2004/08/eventing">Xsub1_at_117449=
74308
32</wse:Identifier>
SubscriptionId=3D<wse:Identifier=20
xmlns:wse=3D"http://schemas.xmlsoap.org/ws/2004/08/eventing">Xsub1_at_117449=
74308
32</wse:Identifier>
Exception in thread "main" xsul.invoker.DynamicInfosetInvokerException:=20
HTTP server error 500 Runtime exception when processing request=20
connection2on12345 body=3D"
<html>
<head>
<title>Runtime exception when processing request connection2on12345:=20
java.lang.Integer</title>
</head>
<body>
<h1>Runtime exception when processing request connection2on12345:=20
java.lang.Integer</h1>
<p><pre>java.lang.ClassCastException: java.lang.Integer&#13;
        at=20
wsmg.adapter.XPath.YFilterInfo.removeSubscription(YFilterInfo.java:82)&#1=
3;
        at=20
wsmg.adapter.XPath.YFilterAdapter.handleUnsubscribe(YFilterAdapter.java:1=
74)
&#13;
        at=20
wsmg.processors.SubscriptionManager.removeSubscription(SubscriptionManage=
r.j
ava:548)&#13;
        at=20
wsmg.processors.SubscriptionManager.unsubscribe(SubscriptionManager.java:=
533
)&#13;
        at =
wsmg.WSMGService.executeSoapEnvelope(WSMGService.java:325)&#13;
        at=20
wsmg.xsul.XSULDedicatedBrockerService.processHttpXml(XSULDedicatedBrocker=
Ser
vice.java:180)&#13;
        at=20
xsul.processor.http.HttpDynamicInfosetProcessor.service(HttpDynamicInfose=
tPr
ocessor.java:189)&#13;
        at=20
wsmg.xsul.XSULDedicatedBrockerService.service(XSULDedicatedBrockerService=
.ja
va:257)&#13;
        at=20
xsul.processor.http.HttpDynamicInfosetProcessor$HdisServlet.service(HttpD=
yna
micInfosetProcessor.java:267)&#13;
        at=20
xsul.http_server.impl.HttpMiniServerConnection.process(HttpMiniServerConn=
ect
ion.java:183)&#13;
        at=20
xsul.http_server.impl.HttpMiniServerConnection.run(HttpMiniServerConnecti=
on.
java:112)&#13;
        at java.lang.Thread.run(Unknown Source)&#13;
</pre></p>
</body>
</html>"
        at=20
xsul.invoker.http.HttpDynamicInfosetInvoker.invokeXml(HttpDynamicInfosetI=
nvo
ker.java:369)
        at xsul.ws_addressing.WsaInvoker.sendXml(WsaInvoker.java:318)
        at=20
xsul.ws_addressing.WsaInvoker.invokeMessageOptimzed(WsaInvoker.java:233)
        at =
xsul.ws_addressing.WsaInvoker.invokeMessage(WsaInvoker.java:224)
        at=20
wsmg.CommonClientProcessing.unSubscribe(CommonClientProcessing.java:314)
        at wsmg.WseClientAPI.unSubscribe(WseClientAPI.java:53)
        at ejemplo.WseConsumer.main(WseConsumer.java:79)


However, when I use:

subscriptionId1 =3D client.subscribe(producer,consumer,topic,null);
client.unSubscribe(producer,subscriptionId1);

it works successfully. I don't know what is wrong.

Thank you for your help.

--=20
-------------------------------------------------------
Alejandro Piqueras Meseguer (apiqueras_at_dif.um.es)
Dept. Ingenier=EDa de la Informaci=F3n y las Comunicaciones
Facultad de Inform=E1tica
Universidad de Murcia=20

_______________________________________________
xgws-user mailing list
xgws-user_at_cs.indiana.edu
http://mailman.cs.indiana.edu/mailman/listinfo/xgws-user

------=_NextPart_000_0099_01C7706D.E5D387E0
Content-Type: application/octet-stream;
	name="YFilterInfo.java"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="YFilterInfo.java"

package wsmg.adapter.XPath;=0A=
=0A=
import java.util.HashMap;=0A=
import java.util.LinkedList;=0A=
import java.util.List;=0A=
=0A=
import wsmg.SoapClientFault;=0A=
import wsmg.SubscriptionState;=0A=
import wsmg.adapter.ConsumerList;=0A=
import wsmg.adapter.ConsumerListManager;=0A=
import wsmg.config.WSMGParameter;=0A=
=0A=
import edu.berkeley.cs.db.yfilter.filter.EXfilterBasic;=0A=
import edu.berkeley.cs.db.yfilter.filter.SystemGlobals;=0A=
import edu.berkeley.cs.db.yfilterplus.queryparser.Query;=0A=
import edu.berkeley.cs.db.yfilterplus.queryparser.XPQuery;=0A=
import edu.berkeley.cs.db.yfilterplus.xmltree.XMLTree;=0A=
=0A=
public class YFilterInfo {=0A=
	private EXfilterBasic yfilter=3Dnew EXfilterBasic();=0A=
	private HashMap yFilterIdToXPath=3Dnew HashMap();	=0A=
	private HashMap  yFilterIdToQuery=3Dnew HashMap();=0A=
	private HashMap  xPathToYFilterId=3Dnew HashMap();=0A=
	private ConsumerListManager consumerListmanager=3Dnew =
ConsumerListManager();=0A=
	private int index =3D 0;=0A=
	private int counter=3D0;=0A=
=0A=
	public EXfilterBasic getYfilter() {=0A=
		return yfilter;=0A=
	}=0A=
	public void setYfilter(EXfilterBasic yfilter) {=0A=
		this.yfilter =3D yfilter;=0A=
	}=0A=
	public HashMap getYFilterIdToXPath() {=0A=
		return yFilterIdToXPath;=0A=
	}=0A=
	public void setYFilterIdToXPath(HashMap filterIdToXPath) {=0A=
		yFilterIdToXPath =3D filterIdToXPath;=0A=
	}=0A=
	=0A=
	public void addXPathQuery(String xpathExpression, String subscriptionId,=0A=
			SubscriptionState subscribeRequest) {=0A=
		index++;=0A=
		counter++;=0A=
		if (WSMGParameter.debugYFilter)=0A=
			System.out.println("QueryExp=3D" + xpathExpression);		=0A=
		Integer yFilterIdObj =3D (Integer) =
xPathToYFilterId.get(xpathExpression);=0A=
		int yFilterId =3D -1;=0A=
		if (yFilterIdObj !=3D null) {=0A=
			yFilterId =3D yFilterIdObj.intValue();=0A=
		} else {=0A=
			Query query=3DXPQuery.parseQuery(xpathExpression, index);=0A=
            if(query=3D=3Dnull){=0A=
            	throw new SoapClientFault("Invalid XPath =
expression:"+xpathExpression);=0A=
            }=0A=
			if (WSMGParameter.debugYFilter)=0A=
				System.out.println("addSubscription " + xpathExpression=0A=
						+ " query :" + query);=0A=
			yFilterId =3D yfilter.addQuery(query);=0A=
			if (WSMGParameter.debugYFilter)=0A=
				yfilter.printQueryIndex();=0A=
			xPathToYFilterId.put(xpathExpression, Integer.valueOf(yFilterId));=0A=
			yFilterIdToXPath.put(new Integer(yFilterId), xpathExpression);=0A=
			yFilterIdToQuery.put(new Integer(yFilterId), =0A=
query);	=0A=
		}=0A=
		if (WSMGParameter.debugYFilter)=0A=
			System.out.println("YFilterId=3D" + yFilterId);=0A=
	=0A=
		consumerListmanager.addToConsumerList(xpathExpression,=0A=
				subscribeRequest, subscriptionId);=0A=
	}=0A=
	=0A=
	public int removeSubscription(String subscriptionId){		=0A=
=0A=
	      String =
xPath=3DconsumerListmanager.getTokenBySubscriptionId(subscriptionId);=0A=
	      int =
result=3DconsumerListmanager.removeFromConsumerList(subscriptionId, =
xPath);=0A=
	      if(result=3D=3D0){=0A=
	    	  return 0;=0A=
	      }=0A=
	      int =
currentConsumerCount=3DconsumerListmanager.getConsumerListByToken(xPath).=
size();=0A=
	      if(currentConsumerCount=3D=3D0){=0A=
	    	  Integer yFilterId=3D(Integer)xPathToYFilterId.get(xPath);=0A=
		      Query q =3D (Query) yFilterIdToQuery.get(yFilterId);=0A=
	          yfilter.deleteQuery( q,=0A=
	                           q.getQueryId(  ) );=0A=
		      yFilterIdToQuery.remove(yFilterId);=0A=
	      }=0A=
	      counter--;=0A=
		return result;=0A=
	}=0A=
	=0A=
	public List getMatchingConsumerList(String messageString){=0A=
		List matchingConsumerList=3Dnew LinkedList();=0A=
        XMLTree tree =3D new XMLTree(new =
java.io.StringReader(messageString) );=0A=
        if(WSMGParameter.debugYFilter)=0A=
        tree.print();=0A=
        yfilter.setEventSequence( tree.getEvents(  ) );=0A=
        yfilter.startParsing(  );=0A=
=0A=
        // print the matched queries //=0A=
        if ( SystemGlobals.hasQueries )=0A=
        {=0A=
        	if(WSMGParameter.debugYFilter)=0A=
           yfilter.printQueryResults( System.out );=0A=
        }=0A=
        else=0A=
        {=0A=
           System.out.println( "no match" );=0A=
           return matchingConsumerList;=0A=
        }=0A=
=0A=
		=0A=
        java.util.Iterator it =3D yfilter.getMatchedQueries(  =
).iterator(  );=0A=
        while ( it.hasNext(  ) )=0A=
        {=0A=
           Integer      qid =3D (Integer) it.next(  );=0A=
//           System.out.println("qid=3D"+qid);=0A=
=0A=
		String xpath=3D(String)yFilterIdToXPath.get(qid);=0A=
		ConsumerList consumerList =3D =
consumerListmanager.getConsumerListByToken(xpath);=0A=
=0A=
		if (consumerList !=3D null) {// has subscription to this topic=0A=
		  matchingConsumerList.addAll(consumerList.getConsumerList());=0A=
		}=0A=
        }=0A=
        yfilter.clear();	=0A=
    	return matchingConsumerList;=0A=
	}=0A=
	public int getCounter() {=0A=
		return counter;=0A=
	}=0A=
	=0A=
=0A=
	=0A=
}=0A=

------=_NextPart_000_0099_01C7706D.E5D387E0--