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 » MB7 Handling xsi:nil differently than MB6.1

Post new topic  Reply to topic Goto page 1, 2  Next
 MB7 Handling xsi:nil differently than MB6.1 « View previous topic :: View next topic » 
Author Message
cwazpitt3
PostPosted: Wed Aug 31, 2011 5:26 am    Post subject: MB7 Handling xsi:nil differently than MB6.1 Reply with quote

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
View user's profile Send private message
lancelotlinc
PostPosted: Wed Aug 31, 2011 5:37 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
cwazpitt3
PostPosted: Wed Aug 31, 2011 5:49 am    Post subject: Re: MB7 Handling xsi:nil differently than MB6.1 Reply with quote

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
View user's profile Send private message
cwazpitt3
PostPosted: Wed Aug 31, 2011 5:50 am    Post subject: Reply with quote

Acolyte

Joined: 31 Aug 2011
Posts: 61

I meant attribute, xsi:nil is an attribute.
Back to top
View user's profile Send private message
kimbert
PostPosted: Wed Aug 31, 2011 6:02 am    Post subject: Reply with quote

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
View user's profile Send private message
cwazpitt3
PostPosted: Wed Aug 31, 2011 6:54 am    Post subject: Reply with quote

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
View user's profile Send private message
fjb_saper
PostPosted: Wed Aug 31, 2011 7:48 am    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
kimbert
PostPosted: Wed Aug 31, 2011 7:53 am    Post subject: Reply with quote

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
View user's profile Send private message
cwazpitt3
PostPosted: Wed Aug 31, 2011 7:53 am    Post subject: Reply with quote

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
View user's profile Send private message
Vitor
PostPosted: Wed Aug 31, 2011 8:00 am    Post subject: Reply with quote

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
View user's profile Send private message
cwazpitt3
PostPosted: Wed Aug 31, 2011 8:47 am    Post subject: Trace Reply with quote

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
View user's profile Send private message
kimbert
PostPosted: Wed Aug 31, 2011 2:21 pm    Post subject: Reply with quote

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
View user's profile Send private message
cwazpitt3
PostPosted: Thu Sep 01, 2011 4:57 am    Post subject: Reply with quote

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
View user's profile Send private message
kimbert
PostPosted: Thu Sep 01, 2011 7:07 am    Post subject: Reply with quote

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
View user's profile Send private message
cwazpitt3
PostPosted: Thu Sep 01, 2011 8:45 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » MB7 Handling xsi:nil differently than MB6.1
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.