Enhancing the element-append and drop options of InTransformReader used by 
transform feature
--------------------------------------------------------------------------------------------

                 Key: CXF-3692
                 URL: https://issues.apache.org/jira/browse/CXF-3692
             Project: CXF
          Issue Type: Improvement
          Components: Core
    Affects Versions: 2.4.1
            Reporter: Aki Yoshida
            Assignee: Aki Yoshida
             Fix For: 2.5


The current implementation is limited to 

*transform*
transform the name of an existing element from x1:e1 to x2:e2, 
from 
{code:xml} 
<x1:e1 xmlns:x1="ns1" ...>
  <x3:e3>...</x3:e3>
</x1:e1>
{code}
to
{code:xml} 
<x2:e2 xmlns:x2="ns2">
  <x3:e3>...</x3:e3>
</x2:e2>
{code}
using element property
  key="{ns1}e1" value="{ns2}e2"

*append*
wrap an existing element x1:e1 with a new element x2:e2, 
from 
{code:xml}
<x1:e1 ...>...</x1:e1>
{code}
to
{code:xml} 
<x2:e2 ...>
  <x1:e1 ...>...</x1:e1>
</x2:e2>
{code}
using append property
  key="{ns1}e1" value="{ns2}e2"


*drop*
unwrap an existing element x1:e1 from element x2:e2,
from 
{code:xml}
<x2:e2 ...>
  <x1:e1 ...>...</x1:e1>
</x2:e2>
{code}
to
{code:xml}
<x1:e1 ...>...</x1:e1>
{code}
using drop property
  value="{ns2}e2"



The enhanced implementation provides the following additional operations.

*deep-drop*
drop an existing element x2:e2 completely,
from 
{code:xml}
<x3:e3 ...>
  <x2:e2 ...>
    <x1:e1>...</x1:e1>
  </x2:e2>
  <x2:e4>...</x2:e4>
</x3:e3>
{code}
to 
{code:xml}
<x3:e3 ...>
  <x2:e4>...</x2:e4>
</x3:e3>
{code}
using transform property
  key="{ns2}e2" value=""

In contrast, the previously supported drop (or unwrap) operation can be seen as 
a shallow drop which results in
{code:xml}
<x3:e3 ...>
  <x1:e1>...</x1:e1>
  <x2:e4>...</x2:e4>
</x3:e3>
{code}
using drop property
  value="{ns2}e2"

*append-pre-include*
append a new element x2:e2 with content v2 before an existing element x1:e1,
from 
{code:xml}
<x3:e3 ...>
  <x1:e1>...</x1:e1>
</x3:e3>
{code}
to 
{code:xml}
<x3:e3 ...>
  <x2:e2>v2</x2:e2>
  <x1:e1>...</x1:e1>
</x3:e3>
{code}
using append property
  key="{ns1}e1" value="{ns2}e2:v2"

*append-post-include*
append a new element x2:e2 with content v2 inside an existing element x3:e3,
from 
{code:xml}
<x3:e3 ...>
  <x1:e1>...</x1:e1>
</x3:e3>
{code}
to 
{code:xml}
<x3:e3 ...>
  <x2:e2>v2</x2:e2>
  <x1:e1>...</x1:e1>
</x3:e3>
{code}
using append property
   key="{ns3}e3/" value="{ns2}e2:v2"

*append-post-wrap*
append a new element x2:e2 to wrap the content of an existing element x3:e3,
from 
{code:xml}
<x3:e3 ...>
  <x1:e1>...</x1:e1>
  <x2:e4>...</x2:e4>
</x3:e3>
{code}
to 
{code:xml}
<x3:e3 ...>
  <x2:e2>
    <x1:e1>...</x1:e1>
    <x2:e4>...</x2:e4>
  </x2:e2>
</x3:e3>
{code}
using append property
  key="{ns3}e3/" value="{ns2}e2"

In contrast, the previously supported append (or wrap) can be considered as 
append-pre-wrap which results in
{code:xml}
<x2:e2>
  <x3:e3 ...>
    <x1:e1>...</x1:e1>
    <x2:e4>...</x2:e4>
  </x3:e3>
</x2:e2>
{code}
using append property
  key="{ns3}e3" value="{ns2}e2"



--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to