[ https://issues.apache.org/jira/browse/CXF-6666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christopher Leung updated CXF-6666: ----------------------------------- Description: How does one disable the strict validation on the *SOAP message header* that causes a "Unmarshalling Error: unexpected element" exception when unknown elements and attributes are encountered in the unmarshalling process. (In this case _unknown_ means that elements and attributes are present in the incoming SOAP header but do not exist in the object model.) The flow seems to be that [ReadHeadersInterceptor|https://cxf.apache.org/javadoc/latest/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.html] creates a {{DataReader}} that creates an unmarshaller. The unmarshaller determines whether the custom {{ValidationEventHandler}}, {{WSUIDValidationHandler}}, is set or not. {{WSUIDValidationHandler}} is ultimately responsible for throwing the exception. There appears to be a couple of ways at least to disable {{WSUIDValidationHandler}}. One is to set the {{setEventHandler}} flag of {{DataReaderImpl}} to false. The other is to ensure the {{veventHandler}} field of the same class is set to a more lenient custom {{ValidationEventHandler}}. I cannot determine a way in which to manipulate either of these two fields in {{DataReaderImpl}}. Is there a way to do it? {{setProperty(String prop, Object value)}} method of {{DataReaderImpl}} looks promising because it has lots of logic related to setting the ValidationEventHandler - in particular the {{set-jaxb-validation-event-handler}} property seems perfect - but unfortunately this method is not called when unmarshalling the SOAP header part, unless I'm mistaken. was: How does one disable the strict validation on the *SOAP message header* that causes a "Unmarshalling Error: unexpected element" exception when unknown elements and attributes are encountered in the unmarshalling process. (In this case _unknown_ means that elements and attributes are present in the incoming SOAP header but do not exist in the object model.) The flow seems to be that [ReadHeadersInterceptor|https://cxf.apache.org/javadoc/latest/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.html] creates a {{DataReader}} that creates an unmarshaller. The unmarshaller determines whether the custom {{ValidationEventHandler}}, {{WSUIDValidationHandler}}, is set or not. {{WSUIDValidationHandler}} is ultimately responsible for throwing the exception. There appears to be a couple of ways at least to disable {{WSUIDValidationHandler}}. One is to set the {{setEventHandler}} flag of {{DataReaderImpl}} to false. The other is to ensure the {{veventHandler}} field of the same class is set to a more lenient custom {{ValidationEventHandler}}. I cannot determine a way in which to manipulate either of these two fields in {{DataReaderImpl}}. Is there a way to do it? > Permit "unknown" SOAP message header elements and attributes to prevent > Unmarshalling Error: unexpected element > --------------------------------------------------------------------------------------------------------------- > > Key: CXF-6666 > URL: https://issues.apache.org/jira/browse/CXF-6666 > Project: CXF > Issue Type: Wish > Components: JAXB Databinding, Soap Binding > Affects Versions: 3.0.2 > Reporter: Christopher Leung > > How does one disable the strict validation on the *SOAP message header* that > causes a "Unmarshalling Error: unexpected element" exception when unknown > elements and attributes are encountered in the unmarshalling process. (In > this case _unknown_ means that elements and attributes are present in the > incoming SOAP header but do not exist in the object model.) > The flow seems to be that > [ReadHeadersInterceptor|https://cxf.apache.org/javadoc/latest/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.html] > creates a {{DataReader}} that creates an unmarshaller. The unmarshaller > determines whether the custom {{ValidationEventHandler}}, > {{WSUIDValidationHandler}}, is set or not. {{WSUIDValidationHandler}} is > ultimately responsible for throwing the exception. > There appears to be a couple of ways at least to disable > {{WSUIDValidationHandler}}. One is to set the {{setEventHandler}} flag of > {{DataReaderImpl}} to false. The other is to ensure the {{veventHandler}} > field of the same class is set to a more lenient custom > {{ValidationEventHandler}}. > I cannot determine a way in which to manipulate either of these two fields in > {{DataReaderImpl}}. Is there a way to do it? > {{setProperty(String prop, Object value)}} method of {{DataReaderImpl}} looks > promising because it has lots of logic related to setting the > ValidationEventHandler - in particular the > {{set-jaxb-validation-event-handler}} property seems perfect - but > unfortunately this method is not called when unmarshalling the SOAP header > part, unless I'm mistaken. -- This message was sent by Atlassian JIRA (v6.3.4#6332)