cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CXF-6666) Permit "unknown" SOAP message header elements and attributes to prevent Unmarshalling Error: unexpected element
Date Fri, 06 Nov 2015 10:25:27 GMT

     [ https://issues.apache.org/jira/browse/CXF-6666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Chris 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}} in {{DataReaderImpl}}:

1. Set the {{setEventHandler}} flag to _false_. 
2. Ensure the {{veventHandler}} field 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?

The {{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.

  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?

{{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.


> 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: Chris
>
> 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}} in
{{DataReaderImpl}}:
> 1. Set the {{setEventHandler}} flag to _false_. 
> 2. Ensure the {{veventHandler}} field 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?
> The {{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.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message