ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » XPath set-value numeric

Post new topic  Reply to topic
 XPath set-value numeric « View previous topic :: View next topic » 
Author Message
elaforc
PostPosted: Fri Oct 23, 2009 7:54 am    Post subject: XPath set-value numeric Reply with quote

Novice

Joined: 29 Sep 2009
Posts: 10

All,

I am currently using WMB 6.0.2. I am trying to write a simple message flow using a java compute node that will set the persistence to 1 in the MQMD Header using XPath. Currently my code looks as follows:

Code:

public void addPersistance(MbMessage msg) throws MbException
{
   MbElement root = msg.getRootElement();   
   root.evaluateXPath("?MQMD/?Persistence[set-value(number(1))]");
}


I pass in to addPersistance a copy of the message stored in the incoming message assembly parameter from the evaluate function.

I am currently seeing the following error in /var/log/syslog.user (I am on AIX 6):

Oct 23 10:46:38 entmqsx2 user:warn|warning WebSphere Broker v6003[798952]: (ENTCLTX2.ROF)[5912]BIP5912W: Error in parser 'MQMD' whilst writing the field named 'Persistence' to the bitstream. : ENTCLTX2.b467a577-2401-0000-0080-d41ef0a67873: /build/S600_P/src/DataFlowEngine/ImbMqmdParser.cpp: 1081: ImbMqmdParser::writeMqmd: ComIbmJniNode: ROF#FCMComposite_1_2

Oct 23 10:46:38 entmqsx2 user:err|error WebSphere Broker v6003[798952]: (ENTCLTX2.ROF)[5912]BIP2328E: A value of SQL datatype 'CHARACTER' encountered when datatype 'INTEGER' expected. : ENTCLTX2.b467a577-2401-0000-0080-d41ef0a67873: /build/S600_P/src/CommonServices/ImbValue.cpp: 965: ImbValue::typeError: :


I see that it is a type issue, but I am not sure of the proper way to tell xpath to use a numeric value. I tried just passing in set-value('1'), or set-value(1), or set-value(true) just for kicks, but I still see the same error.

Any ideas on the proper way to do this? Thanks for your help.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Fri Oct 23, 2009 9:48 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

Try using an xs: cast. Something like root.evaluateXPath("?MQMD/?Persistence[set-value(xs:integer(1))]");
Back to top
View user's profile Send private message
elaforc
PostPosted: Fri Oct 23, 2009 10:05 am    Post subject: Reply with quote

Novice

Joined: 29 Sep 2009
Posts: 10

Thanks for the response.

Doesn't look like it liked that either.

Oct 23 13:50:06 entmqsx2 user:err|error WebSphere Broker v6003[798952]: (ENTCLTX2.ROF)[5912]BIP4382E: XPath parse error at column '40' in expression '?MQMD/?Persistence[set-value(xs:integer(1))]'. : ENTCLTX2.b467a577-2401-0000-0080-d41ef0a67873: /build/S600_P/src/DataFlowEngine/PluginInterface/ImbXPathParser.y: 494: parse_expression: :

I don't know if casting helps though, because looking at the "set-value" function http://publib.boulder.ibm.com/infocenter/wmbhelp/v6r1m0/index.jsp?topic=/com.ibm.etools.mft.doc/ac30390_.htm
it says:

Quote:

This function sets the string value of the context node to the value specified in the argument. object can be any valid expression, and is converted to a string as if a call to the string function is used.

So it seems to me that no matter what you pass in, its going to cast it to a string.

Maybe XPATH isn't the way to do this?
Quote:
Back to top
View user's profile Send private message
smdavies99
PostPosted: Fri Oct 23, 2009 10:30 am    Post subject: Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

Quote:

Maybe XPATH isn't the way to do this?

Yes, ESQL makes this little job very easy
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
elaforc
PostPosted: Fri Oct 23, 2009 1:57 pm    Post subject: Reply with quote

Novice

Joined: 29 Sep 2009
Posts: 10

I determined the solution.

The proper way is as follows:

Code:


public void addPersistance(MbMessage msg) throws MbException
{                                                             
     MbElement root = msg.getRootElement();                           
     MbElement psist = (MbElement)((List)root.evaluateXPath("?MQMD/?Persistence")).get(0);
     psist.setValue(newInteger(1));                                                                 
}

Back to top
View user's profile Send private message
mqjeff
PostPosted: Fri Oct 23, 2009 2:20 pm    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

elaforc wrote:
I determined the solution.


You're welcome.
Back to top
View user's profile Send private message
elaforc
PostPosted: Mon Oct 26, 2009 5:11 am    Post subject: Reply with quote

Novice

Joined: 29 Sep 2009
Posts: 10

mqjeff wrote:
elaforc wrote:
I determined the solution.


You're welcome.


Correction, by "I determined the solution" it should read "mqjeff determined the solution and pm'ed me the answer".

Thanks for your help
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » XPath set-value numeric
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.