[ 
https://issues.apache.org/jira/browse/ODE-960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16752305#comment-16752305
 ] 

Vitaliy Tkachenko edited comment on ODE-960 at 1/28/19 10:22 AM:
-----------------------------------------------------------------

Hello!

Could you please get me some link to a specification which describes that this 
is proper behavior what is required by this fix? I actually can't say this is 
obviously expected.

In the last expression from the attached testProcess.bpel the effective formula 
is:

$extPLRequest.parameters/ns:userIdin

This means that the full userIdin node and its subnodes should be replaced with 
new value. If new value doesn't contain the corresponding attribute 
(testUserIdAttribute) which is subnode of the replaced node effectively then it 
is correct behavior that it is removed along with the whole userIdin node 
replacement. In case if user wants to access the inner node text (which is 
meant as "text node" in the XPath specification) there is the special text() 
function which selects only text node to be accessed and the lvalue should be 
as the following:

$extPLRequest.parameters/ns:userIdin/text()

Exactly this selection means access to userIdin's text content only (userIdin's 
node text subnode) thus only inner text should be replaced. But in the case 
above without of the text() function the behavior appears correct and the fix 
brings improper behavior not fix.


was (Author: virtualvat):
Hello!

Could you please get me some link to a specification which describes that this 
is proper behavior what is required by this fix? I actually can't say this is 
obviously expected.

In the last expression from the attached testProcess.bpel the effective formula 
is:

$extPLRequest.parameters/ns:userIdin

This means that the full userIdin node and its subnodes should be replaced with 
new value. If new value doesn't contain the corresponding attribute 
(testUserIdAttribute) which subnode of the replaced node effectively then it is 
correct behavior that it is removed along with the whole userIdin node 
replacement. In case if user wants to access the inner node text only the 
special text() function exists so the lvalue should be as the following:

$extPLRequest.parameters/ns:userIdin/text()

This means access to userIdin's text content only not the hole node it its 
substructure thus only inner text should be replaced. But in the case above 
without of the text() function the behavior appears correct to me and the fix 
brings improper behavior not fix.

> Attribute of a xml element is missing after an <assign/> a value for that xml 
> element
> -------------------------------------------------------------------------------------
>
>                 Key: ODE-960
>                 URL: https://issues.apache.org/jira/browse/ODE-960
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Runtime
>    Affects Versions: 1.3.5, 1.4
>         Environment: ode-axis2-war-1.4-SNAPSHOT
>            Reporter: Denis Weerasiri
>            Assignee: Tammo van Lessen
>            Priority: Major
>              Labels: patch
>             Fix For: 1.3.6, 1.4
>
>         Attachments: ODE-960.patch, testXPathAttribute.zip
>
>
> How to reproduce the issue: 
> 1. Deploy the attached testXPathAttribute.zip 
> 2. Invoke it with 
> <body> 
>    <p:testProcessRequest xmlns:p="http://eclipse.org/bpel/sample";> 
>       <p:input>1</p:input> 
>    </p:testProcessRequest> 
> </body> 
> 3. Check the variable value of "extPLRequest" 
> 4. It should have been something like 
> <message> 
>    <parameters> 
>       <getRewardTransRecord xmlns="http://ws.wso2.org/dataservice"; 
> testAttribute="testAttributeValue"> 
>          <ns1:userIdin testUserIdAttribute="testValue" 
> xmlns:ns1="http://ws.wso2.org/dataservice";>1</ns1:userIdin> 
>          <ns1:countIn 
> xmlns:ns1="http://ws.wso2.org/dataservice";>9</ns1:countIn> 
>       </getRewardTransRecord> 
>    </parameters> 
> </message> 
> But the real value is 
> <message> 
>    <parameters> 
>       <getRewardTransRecord xmlns="http://ws.wso2.org/dataservice"; 
> testAttribute="testAttributeValue"> 
>          <ns1:userIdin 
> xmlns:ns1="http://ws.wso2.org/dataservice";>1</ns1:userIdin> 
>          <ns1:countIn 
> xmlns:ns1="http://ws.wso2.org/dataservice";>9</ns1:countIn> 
>       </getRewardTransRecord> 
>    </parameters> 
> </message> 
> So the attribute is missing. 
> Regards, 
> Denis Weerasiri 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to