On 29.11.17 14:37, Sergey Beryozkin wrote:
> Right, the transform feature is not meant to replace XSLT, it would be
> much faster for straightforward transforms at the element
> structure/namespace level but it's not a good fit for the complex
> transformations...

Indeed, we'd need something like
Collections.singletonMap("{*}*=VABSENT", "{*}*=") but that ain't
supported. We're likely going the XSLT way but it occurred to me I also
need to check whether we could tweak JAXB to unmarshall this differently.

> Note if all of these arbitrary simple elements are united by a namespace
> which does not qualify complex ones as well, then you may still be able
> to use the transform one, check the tests, there some examples how to
> use the wildcards
> 
> Sergey
> On 29/11/17 13:32, Marcel Stör wrote:
>> I think either of us doesn't understand ;-)
>>
>> Since the service provider essentially replaced the SOAP string type
>> with its own 'StringType' simple type that "VEMPTY" text content can
>> appear in any element. Hence, I need to globally replace that text in
>> every SOAP message - regardless of which XML element it is used with.
>> That's why I concluded that I can't use the standard
>> TransformationFeature.
>>
>> I was also checking whether CXF allowed to register custom
>> deserializers/mapper for a given type (i.e. from that custom XML
>> StringType to Java String) but I haven't found anything yet.
>>
>> On 29.11.17 14:22, Sergey Beryozkin wrote:
>>> You should be able to replace it:
>>>
>>> https://github.com/apache/cxf/blob/master/core/src/test/java/org/apache/cxf/staxutils/transform/InTransformReaderTest.java#L56
>>>
>>>
>>>
>>> and
>>>
>>> https://github.com/apache/cxf/blob/master/core/src/test/java/org/apache/cxf/staxutils/transform/InTransformReaderTest.java#L73
>>>
>>>
>>>
>>> You'd likely need to say that {someNs}modifiedBy has to be replaced by
>>> {someNs}modifiedBy
>>>
>>> HTH, Sergey
>>> On 29/11/17 09:22, Marcel Stör wrote:
>>>> We're consuming SOAP messages for which the string type was extended or
>>>> redefined (see at the bottom). To denote null/empty values the XML
>>>> element uses "VEMPTY" as text content.
>>>>
>>>> Example: <ns2:modifiedBy>VEMPTY</ns2:modifiedBy>
>>>>
>>>> Before the message is deserialized and mapped to the Java model we'd
>>>> like to transform "VEMPTY" to "". As this special text content can
>>>> appear in arbitrary elements I don't think the standard
>>>> TransformationFeature as per
>>>> https://cxf.apache.org/docs/transformationfeature.html#TransformationFeature-Replacingtextcontent
>>>>
>>>>
>>>> is applicable. Correct?
>>>>
>>>> I suspect we need to use the XSLT transformation, right?
>>>>
>>>> [StringType]
>>>> <xsd:simpleType name="StringType">
>>>>       <xsd:annotation>
>>>>           <xsd:documentation xml:lang="en">
>>>>               ...some documentation...
>>>>               VEMPTY if effective value is null
>>>>               ...some more documentation...
>>>>           </xsd:documentation>
>>>>       </xsd:annotation>
>>>>       <xsd:restriction base="xsd:string"/>
>>>> </xsd:simpleType>
>>>>
>>>> <xsd:element name="modifiedBy" type="st:StringType">
>>>>       <xsd:annotation>
>>>>           <xsd:documentation>
>>>>               ....
>>>>           </xsd:documentation>
>>>>       </xsd:annotation>
>>>> </xsd:element>
>>>>
>>>
>>>
>>
>>


-- 
Marcel Stör, https://frightanic.com
My PGP key: https://frightanic.com/pgp/
Couchsurfing: http://www.couchsurfing.com/people/marcelstoer
O< ascii ribbon campaign - stop html mail - http://j.mp/1OThh9L

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to