Author |
Message
|
cwazpitt3 |
Posted: Wed Aug 31, 2011 5:26 am Post subject: MB7 Handling xsi:nil differently than MB6.1 |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
I have isolated this problem down to a simple flow that consists of a file input node parsed to an SOAP/XMLNSC message set, a mapping node that maps the input XML to an output XML, and a file output node. The issue arises when the source XML contains a xsi:nil attribute as follows:
<p757:test xsi:nil="true" />
When it goes through the message map, this is the mapping (a straight mapping). It goes from the source field test, to the test2/ID field in the target.
$source/intf:getRecentChangesResponse/intf:getRecentChangesReturn/tns2:main/tns2:test2
When it comes out of the mapping node, the element used to be just excluded completely (in MB 6.1), but now in MB 7, the output is as follows:
<ens:test2>
<ens:ID><xsi:nil>true</xsi:nil></ens:ID>
</ens:test2>
It seems to be interpreting the nil as a value instead of null. From what I have read, the XMLNSC parser should treat this as null. From everything I can see on my message sets appear to be correct. Nothing has changed from when it used to work in MB 6.1.
Is this the correct behavior or something I have done wrong? The only thing I can think of is that this is something that might have either been broken in MB 6.1 and is fixed now, or a bug in 7.0.0.2 (the version we are on). Any ideas or thoughts? If more information is required, I can provide. Thanks for any help you can offer.
Last edited by cwazpitt3 on Wed Aug 31, 2011 5:47 am; edited 2 times in total |
|
Back to top |
|
 |
lancelotlinc |
Posted: Wed Aug 31, 2011 5:37 am Post subject: |
|
|
 Jedi Knight
Joined: 22 Mar 2010 Posts: 4941 Location: Bloomington, IL USA
|
Its related to the XMLNSC parser operation.
When validation is turned on, if an element in the input document has an xsi:nil attribute with the value ‘true', and the ‘nillable' property of the element definition in the XML schema is set to ‘true', the XMLNSC parser sets the value of the message tree element to NULL.
Kimbert could probably give a more detailed explanation. _________________ http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER |
|
Back to top |
|
 |
cwazpitt3 |
Posted: Wed Aug 31, 2011 5:49 am Post subject: Re: MB7 Handling xsi:nil differently than MB6.1 |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
cwastchak wrote: |
<ens:test2>
<ens:ID><xsi:nil>true</xsi:nil></ens:ID>
</ens:test2>
|
I edited the post as this is actually the XML that is generated when we run the entire flow, not my isolated solution. This doesn't even seem like valid XML because xsi:nil is supposed to be an element, right? |
|
Back to top |
|
 |
cwazpitt3 |
Posted: Wed Aug 31, 2011 5:50 am Post subject: |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
I meant attribute, xsi:nil is an attribute. |
|
Back to top |
|
 |
kimbert |
Posted: Wed Aug 31, 2011 6:02 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
There are a few things that don't make sense here. Please can you:
- put a Trace node before the Mapping node
- put a Trace node after the Mapping node
- make sure that you are accurately quoting the input XML and output XML ( 'p757:test' is not the same as 'tns2:test2' ).
I may need to ask you for a user trace as well, but let's see how the trace node output looks first. |
|
Back to top |
|
 |
cwazpitt3 |
Posted: Wed Aug 31, 2011 6:54 am Post subject: |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
kimbert wrote: |
- make sure that you are accurately quoting the input XML and output XML ( 'p757:test' is not the same as 'tns2:test2' ). |
Kimbert,
The reason you see that is because I changed the elements quickly to deidentify the data. I would be happy to provide you a trace, but I would rather not do it on the public forum. Is there any other way I can get it to you? |
|
Back to top |
|
 |
fjb_saper |
Posted: Wed Aug 31, 2011 7:48 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
cwastchak wrote: |
kimbert wrote: |
- make sure that you are accurately quoting the input XML and output XML ( 'p757:test' is not the same as 'tns2:test2' ). |
Kimbert,
The reason you see that is because I changed the elements quickly to deidentify the data. I would be happy to provide you a trace, but I would rather not do it on the public forum. Is there any other way I can get it to you? |
Have you tried the email button at the bottom of his post?  _________________ MQ & Broker admin |
|
Back to top |
|
 |
kimbert |
Posted: Wed Aug 31, 2011 7:53 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
I'm not asking you to post your actual data. The flow is very, very simple, so create a small test message that shows the problem, and post the trace output for that. |
|
Back to top |
|
 |
cwazpitt3 |
Posted: Wed Aug 31, 2011 7:53 am Post subject: |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
fjb_saper wrote: |
cwastchak wrote: |
kimbert wrote: |
- make sure that you are accurately quoting the input XML and output XML ( 'p757:test' is not the same as 'tns2:test2' ). |
Kimbert,
The reason you see that is because I changed the elements quickly to deidentify the data. I would be happy to provide you a trace, but I would rather not do it on the public forum. Is there any other way I can get it to you? |
Have you tried the email button at the bottom of his post?  |
If you're talking about "PM" button, it says PM is disabled on this board. If there is some other email button I dont know of, please point me in the right direction. |
|
Back to top |
|
 |
Vitor |
Posted: Wed Aug 31, 2011 8:00 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
cwastchak wrote: |
If you're talking about "PM" button, it says PM is disabled on this board. |
It is.
cwastchak wrote: |
If there is some other email button I dont know of, please point me in the right direction. |
There is. But I believe only us moderators can see it (a fact I've forgotten a few times with various board features!). _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
cwazpitt3 |
Posted: Wed Aug 31, 2011 8:47 am Post subject: Trace |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
Apologies for the long post, but this might all be relevant. This is in the real flow, so it starts with a SOAP call and then down the road it calls the mapping node. I think the issue is that somewhere in between the xsi:nil goes from an attribute to an element. This is not my code, so I am working on figuring out where that is, but thought I would post anyhow.
Thanks!
AFTER SOAP
Code: |
( ['SOAPRoot' : 0x8e1b1630]
(0x01000000:Name ):Properties = ( ['SOAPPROPERTYPARSER' : 0x830b5740]
(0x03000000:NameValue):MessageSet = 'OUR_MessageSet' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2011-08-31 16:33:31.860838' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = 'text/xml; charset=utf-8' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name ):HTTPResponseHeader = ( ['WSRSPHDR' : 0x8dc099d0]
(0x03000000:NameValue):X-Original-HTTP-Status-Line = 'HTTP/1.1 200 OK' (CHARACTER)
(0x03000000:NameValue):X-Original-HTTP-Status-Code = 200 (INTEGER)
(0x03000000:NameValue):Date = 'Wed, 31 Aug 2011 16:34:03 GMT' (CHARACTER)
(0x03000000:NameValue):Server = 'Apache' (CHARACTER)
(0x03000000:NameValue):Content-Length = '1155' (CHARACTER)
(0x03000000:NameValue):Keep-Alive = 'timeout=5, max=50' (CHARACTER)
(0x03000000:NameValue):Connection = 'Keep-Alive' (CHARACTER)
(0x03000000:NameValue):Content-Type = 'text/xml; charset=utf-8' (CHARACTER)
(0x03000000:NameValue):Content-Language = 'en-US' (CHARACTER)
)
(0x01000000:Folder):SOAP = ( ['SOAP' : 0x8ddc82b0]
(0x01000000:Folder):Context = ( ['xmlnsc' : 0x8dc76130]
(0x03000100:Attribute ):operation = 'getRecentChanges' (CHARACTER)
(0x03000100:Attribute ):operationType = 'REQUEST_RESPONSE' (CHARACTER)
(0x03000100:Attribute ):portType = 'xxxxx' (CHARACTER)
(0x03000100:Attribute ):portTypeNamespace = 'http://someurl.com' (CHARACTER)
(0x03000100:Attribute ):port = 'xxxxx' (CHARACTER)
(0x03000100:Attribute ):service = 'xxxxxService' (CHARACTER)
(0x03000100:Attribute ):fileName = 'our.wsdl' (CHARACTER)
(0x03000000:PCDataField):SOAP_Version = '1.1' (CHARACTER)
(0x01000000:Folder ):Namespace = (
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:soapenv = 'http://schemas.xmlsoap.org/soap/envelope/' (CHARACTER)
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:soapenc = 'http://schemas.xmlsoap.org/soap/encoding/' (CHARACTER)
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:xsd = 'http://www.w3.org/2001/XMLSchema' (CHARACTER)
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:xsi = 'http://www.w3.org/2001/XMLSchema-instance' (CHARACTER)
)
)
(0x01000000:Folder):Header =
(0x01000000:Folder):Body = ( ['xmlnsc' : 0x8dc76130]
(0x01000000:Folder)http://someurl.com:getRecentChangesResponse = (
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:p563 = 'http://someurl.com' (CHARACTER)
(0x01000000:Folder )http://someurl.com:getRecentChangesReturn = (
(0x03000102:NamespaceDecl)http://www.w3.org/2000/xmlns/:p757 = 'http://someurl.com' (CHARACTER)
(0x03000000:PCDataField )http://someurl.com:wasSuccessful = 'true' (CHARACTER)
(0x01000000:Folder )http://someurl.com:pas = (
(0x03000000:PCDataField)http://someurl.com:id = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:activeFlag = 'Y' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:businessName = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:address1 = 'c/o xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:address2 = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:city = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:stateCode = 'MS' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:zipCode = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:status = 'No Quote - Red' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:orgFlag = 'N' (CHARACTER)
(0x01000000:Folder )http://someurl.com:affiliatedPlan = (
(0x03000100:Attribute)http://www.w3.org/2001/XMLSchema-instance:nil = TRUE (BOOLEAN)
)
)
(0x03000000:PCDataField )http://someurl.com:currentTimestamp = '2011-08-31 12:34:03' (CHARACTER)
)
)
)
)
)
|
BEFORE MAPPING NODE
Code: |
( ['SOAPRoot' : 0x85134760]
(0x01000000:Name ):Properties = ( ['MQPROPERTYPARSER' : 0x806c11c0]
(0x03000000:NameValue):MessageSet = 'OUR_MessageSet' (CHARACTER)
(0x03000000:NameValue):MessageType = '' (CHARACTER)
(0x03000000:NameValue):MessageFormat = '' (CHARACTER)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2011-08-31 16:33:31.860838' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = 'text/xml; charset=utf-8' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name ):HTTPResponseHeader = ( ['WSRSPHDR' : 0x8028b300]
(0x03000000:NameValue):X-Original-HTTP-Status-Line = 'HTTP/1.1 200 OK' (CHARACTER)
(0x03000000:NameValue):X-Original-HTTP-Status-Code = 200 (INTEGER)
(0x03000000:NameValue):Date = 'Wed, 31 Aug 2011 16:34:03 GMT' (CHARACTER)
(0x03000000:NameValue):Server = 'Apache' (CHARACTER)
(0x03000000:NameValue):Content-Length = '1155' (CHARACTER)
(0x03000000:NameValue):Keep-Alive = 'timeout=5, max=50' (CHARACTER)
(0x03000000:NameValue):Connection = 'Keep-Alive' (CHARACTER)
(0x03000000:NameValue):Content-Type = 'text/xml; charset=utf-8' (CHARACTER)
(0x03000000:NameValue):Content-Language = 'en-US' (CHARACTER)
)
(0x01000000:Folder):XMLNSC = ( ['xmlnsc' : 0x8028b5f0]
(0x01000000:Folder)http://someurl.com:getRecentChangesResponse = (
(0x01000000:Folder)http://someurl.com:getRecentChangesReturn = (
(0x01000000:Folder)http://someurl.com:pas = (
(0x03000000:PCDataField)http://someurl.com:id = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:activeFlag = 'Y' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:businessName = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:address1 = 'c/o xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:address2 = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:city = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:stateCode = 'MS' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:zipCode = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:status = 'No Quote - Red' (CHARACTER)
(0x03000000:PCDataField)http://someurl.com:orgFlag = 'N' (CHARACTER)
(0x01000000:Folder )http://someurl.com:affiliatedPlan = (
(0x03000000:PCDataField)http://www.w3.org/2001/XMLSchema-instance:nil = TRUE (BOOLEAN)
)
)
)
)
)
)
|
AFTER MAPPING NODE
Code: |
( ['SOAPRoot' : 0x8d8ab360]
(0x01000000:Name ):Properties = ( ['MQPROPERTYPARSER' : 0x8e12a620]
(0x03000000:NameValue):MessageSet = 'SFA_SFDC' (CHARACTER)
(0x03000000:NameValue):MessageType = '{urn:enterprise.soap.sforce.com}:upsert' (CHARACTER)
(0x03000000:NameValue):MessageFormat = 'XML1' (CHARACTER)
(0x03000000:NameValue):Encoding = 273 (INTEGER)
(0x03000000:NameValue):CodedCharSetId = 1208 (INTEGER)
(0x03000000:NameValue):Transactional = FALSE (BOOLEAN)
(0x03000000:NameValue):Persistence = FALSE (BOOLEAN)
(0x03000000:NameValue):CreationTime = GMTTIMESTAMP '2011-08-31 16:33:31.860838' (GMTTIMESTAMP)
(0x03000000:NameValue):ExpirationTime = -1 (INTEGER)
(0x03000000:NameValue):Priority = 0 (INTEGER)
(0x03000000:NameValue):ReplyIdentifier = X'000000000000000000000000000000000000000000000000' (BLOB)
(0x03000000:NameValue):ReplyProtocol = 'MQ' (CHARACTER)
(0x03000000:NameValue):Topic = NULL
(0x03000000:NameValue):ContentType = 'text/xml; charset=utf-8' (CHARACTER)
(0x03000000:NameValue):IdentitySourceType = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceToken = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
(0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedType = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedToken = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
(0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
)
(0x01000000:Name ):HTTPResponseHeader = ( ['WSRSPHDR' : 0x830b4ee0]
(0x03000000:NameValue):X-Original-HTTP-Status-Line = 'HTTP/1.1 200 OK' (CHARACTER)
(0x03000000:NameValue):X-Original-HTTP-Status-Code = 200 (INTEGER)
(0x03000000:NameValue):Date = 'Wed, 31 Aug 2011 16:34:03 GMT' (CHARACTER)
(0x03000000:NameValue):Server = 'Apache' (CHARACTER)
(0x03000000:NameValue):Content-Length = '1155' (CHARACTER)
(0x03000000:NameValue):Keep-Alive = 'timeout=5, max=50' (CHARACTER)
(0x03000000:NameValue):Connection = 'Keep-Alive' (CHARACTER)
(0x03000000:NameValue):Content-Type = 'text/xml; charset=utf-8' (CHARACTER)
(0x03000000:NameValue):Content-Language = 'en-US' (CHARACTER)
)
(0x01000000:Folder):XMLNSC = ( ['xmlnsc' : 0x830b51d0]
(0x01000000:Folder)urn:enterprise.soap.sforce.com:upsert = (
(0x03000000:PCDataField )urn:enterprise.soap.sforce.com:externalIDFieldName = 'ID__c' (CHARACTER)
(0x01000000:Folder )urn:enterprise.soap.sforce.com:sObjects = (
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:fieldsToNull = 'Affiliated_Blue_Plan__c' (CHARACTER)
(0x01000000:Folder )urn:sobject.enterprise.soap.sforce.com:Affiliated_Blue_Plan__r = (
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:ID__c = NULL
(
(0x03000000:PCDataField)http://www.w3.org/2001/XMLSchema-instance:nil = TRUE (BOOLEAN)
)
)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:BillingCity = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:BillingPostalCode = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:BillingState = 'MS' (CHARACTER)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:BillingStreet = 'c/o xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:Vendor_Status__c = 'Active' (CHARACTER)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:Name = 'xxxxxxxx' (CHARACTER)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:ID__c = 'xxxxxxxx' (CHARACTER)
(0x01000000:Folder )urn:sobject.enterprise.soap.sforce.com:Owner = (
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:Email = 'xxxxx' (CHARACTER)
)
(0x01000000:Folder )urn:sobject.enterprise.soap.sforce.com:RecordType = (
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:Name = 'Vendor Account' (CHARACTER)
)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:Organization_Indicator__c = 'No' (CHARACTER)
(0x03000000:PCDataField)urn:sobject.enterprise.soap.sforce.com:Status__c = 'No Quote - Red' (CHARACTER)
(0x03000100:Attribute )http://www.w3.org/2001/XMLSchema-instance:type = 'ens:Account' (CHARACTER)
)
(0x03000102:NamespaceDecl)xmlns:xsi = 'http://www.w3.org/2001/XMLSchema-instance' (CHARACTER)
(0x03000102:NamespaceDecl)xmlns:ens = 'urn:sobject.enterprise.soap.sforce.com' (CHARACTER)
)
)
) |
|
|
Back to top |
|
 |
kimbert |
Posted: Wed Aug 31, 2011 2:21 pm Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
This is in the real flow |
Ah. I guessed that you might not be telling *all* of the story...
Quote: |
I think the issue is that somewhere in between the xsi:nil goes from an attribute to an element. |
Yes, that's what I think too. I never did believe that the mapping node was doing that.
Quote: |
This is not my code, so I am working on figuring out where that is |
Put Trace nodes into the flow, and look for the change. That will isolate one node. If the flow makes use of Environment or LocalEnvironment then don't forget to include those trees in the trace node's pattern.
It might be possible ( and quicker ) to do this using the flow debugger, but you will need to be able to look at the field type on each element in the message tree. |
|
Back to top |
|
 |
cwazpitt3 |
Posted: Thu Sep 01, 2011 4:57 am Post subject: |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
Thanks Kimbert, I did as you said and narrowed it down to a compute node that was not maintaining the XMLNSC domain as it should. With some minor changes, it worked.
I do have a question though, is there any way without using the is-null() function to tell the mapping node that if you see a nill, then skip the element? Is there a setting I am missing on the message set, or is this always going to happen if the message set element of the target is set to nillable="true"? These message sets were generated from WSDL's and not much we can do about them since we don't own them, but I thought I would ask for clarification. |
|
Back to top |
|
 |
kimbert |
Posted: Thu Sep 01, 2011 7:07 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Glad you found it. That would have been my guess, but I didn't want to make assumptions.
Quote: |
is there any way without using the is-null() function to tell the mapping node that if you see a nill, then skip the element? |
No - NULL is a value, just like any other value. You can make the behaviour of a map depend on the element's value, but there is nothing special about the value 'NULL'.
Quote: |
or is this always going to happen if the message set element of the target is set to nillable="true"? |
Not sure what 'this' is...but I think the XMLNSC parser is 'working as designed', and behaving exactly as described in the infocenter.
Presumably, these elements are being mapped and you don't want them mapped. But I can't work out whether you see this as a change of behaviour between v6.1 and v7, or just an awkwardness in your flow that happens regardless of the version. |
|
Back to top |
|
 |
cwazpitt3 |
Posted: Thu Sep 01, 2011 8:45 am Post subject: |
|
|
Acolyte
Joined: 31 Aug 2011 Posts: 61
|
kimbert wrote: |
But I can't work out whether you see this as a change of behaviour between v6.1 and v7, or just an awkwardness in your flow that happens regardless of the version. |
Ya, this was going to be my next question, why did it work before? Did the XMLNSC parser receive a good update with v7? |
|
Back to top |
|
 |
|