Resolution: Description:
========
BW MAPPER (Mapper activity) throws an exception when parsing the WSA addressing field MessageID (which is part of the Soap header) containing the following values (%T) or (%Z). If the value is less than %F(A to F) processing continues.
Sample Values
IRT:%Z85.018019307.4312064419
Environment:
========
BW ALL
Symptoms:
========
The following exception stack trace will be printed.
Input data invalid
at com.tibco.pe.core.TaskImpl.eval(TaskImpl.java:587)
at com.tibco.pe.core.Job.a(Job.java:712)
at com.tibco.pe.core.Job.k(Job.java:501)
at com.tibco.pe.core.JobDispatcher$JobCourier.a(JobDispatcher.java:249)
at com.tibco.pe.core.JobDispatcher$JobCourier.run(JobDispatcher.java:200)
caused by: org.xml.sax.SAXException: validation error: invalid URI: character ''%'' can only be used to begin an escape sequence ({com.tibco.xml.validation}SIMPLE_E_INVALID_URI_PERCENT) at /{http://visit.dhs.gov/visit-esb/1.0}VisitESB[1]/{http://www.w3.org/2005/08/addressing}MessageID[1]
com.tibco.xml.validation.exception.k: invalid URI: character ''%'' can only be used to begin an escape sequence
at com.tibco.xml.validation.state.glue.f.a(LegacySimpleValidator.java:77)
at com.tibco.xml.validation.state.c.a.a(ValidationJazz.java:1123)
at
Cause:
====
“<xs:element name="MessageID" type="tns:AttributedURIType"/>\“ schema restriction in “ws-addr.xsd”.
AttributedURIType extends anyURI. URI standard rfc3986 states that a valid URL cannot have % Character after F.
A percent-encoding mechanism is used to represent a data octet in a component when that octet's corresponding character is outside the allowed set or is being used as a delimiter of, or within the component. A percent-encoded octet is encoded as a character triplet, consisting of the percent character "%" followed by the two hexadecimal digits representing that octet's numeric value. For example, "%20" is the percent-encoding for the binary octet "00100000" (ABNF: %x20), which in US-ASCII corresponds to the space character (SP). Section 2.4 describes when percent-encoding and decoding is applied.
pct-encoded = "%" HEXDIG HEXDIG
The uppercase hexadecimal digits 'A' through 'F' are equivalent to the lowercase digits 'a' through 'f', respectively. If two URIs differ only in the case of hexadecimal digits used in percent-encoded octets, they are equivalent. For consistency, URI producers and normalizers should use uppercase hexadecimal digits for all percent encodings.
Resolution:
=======
This is not a BW defect. BW works as expected based on the schema restriction. MessagID should not be have % defined after F. The input data needs to be corrected. The other possible solution is to relax “ws-addr.xsd” schema.
From:
<xs:element name="MessageID" type="tns:AttributedURIType"/>
To:
<xs:element name="MessageID"/>
References:
=======
http://www.schemacentral.com/sc/xsd/t-xsd_anyURI.html
http://www.ietf.org/rfc/rfc3986.txt