You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Ian Dickinson (JIRA)" <ji...@apache.org> on 2012/11/25 01:30:58 UTC

[jira] [Commented] (JENA-353) RDFList.append doc indicates a copy is created not always so.

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

Ian Dickinson commented on JENA-353:
------------------------------------

What's the use case when this makes a difference? The documentation is correct: when you do

    L1.append( L2 )

where L1 == nil, the post-condition remains true that neither list has a different set of triples than it did before the append operation. If your application needs to copy the list so that the appended list (or the original) can be side-effected by other code, you have `RDFList.copy`. I'm happy to consider changes to the current contract, but the motivation needs to be clearer. Copying a list is potentially an expensive operation, so it should be very clear to the caller when it is going to take place.
                
> RDFList.append doc indicates a copy is created not always so.
> -------------------------------------------------------------
>
>                 Key: JENA-353
>                 URL: https://issues.apache.org/jira/browse/JENA-353
>             Project: Apache Jena
>          Issue Type: Bug
>    Affects Versions: Jena 2.7.4
>            Reporter: Claude Warren
>
> Documentation for RDFList.append() indicates that a copy is created, both lists are merged into the copy and the copy returned so as to be "non side-effecting operation on either this list or the given list"
> However, in the case where this list is empty the other list is returned.  I believe copy of the other should be returned in this case.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Re: [jira] [Commented] (JENA-353) RDFList.append doc indicates a copy is created not always so.

Posted by Claude Warren <cl...@xenei.com>.
Ian,

My issue is that the contract as spelled out in the documentation is
not always kept.  From the documentation I would assume that a copy is
returned thus I can execute:

L3 = L1.append( L2 );
L3.removeHead()

and not have L1 or L2 affected.

However if L1==nill

then L3.removeHead() removes the head of L2.

conversely, from the documentation I would expect that

L3 = L1.append( L2 );
L2.removeHead()

would not impact L3 but it does in the case where L1=nill

Disclaimer:  I am new to the RDFList construct so perhaps I am missing
something.

-- Claude


On Sun, Nov 25, 2012 at 12:30 AM, Ian Dickinson (JIRA) <ji...@apache.org> wrote:
>
>     [ https://issues.apache.org/jira/browse/JENA-353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13503443#comment-13503443 ]
>
> Ian Dickinson commented on JENA-353:
> ------------------------------------
>
> What's the use case when this makes a difference? The documentation is correct: when you do
>
>     L1.append( L2 )
>
> where L1 == nil, the post-condition remains true that neither list has a different set of triples than it did before the append operation. If your application needs to copy the list so that the appended list (or the original) can be side-effected by other code, you have `RDFList.copy`. I'm happy to consider changes to the current contract, but the motivation needs to be clearer. Copying a list is potentially an expensive operation, so it should be very clear to the caller when it is going to take place.
>
>> RDFList.append doc indicates a copy is created not always so.
>> -------------------------------------------------------------
>>
>>                 Key: JENA-353
>>                 URL: https://issues.apache.org/jira/browse/JENA-353
>>             Project: Apache Jena
>>          Issue Type: Bug
>>    Affects Versions: Jena 2.7.4
>>            Reporter: Claude Warren
>>
>> Documentation for RDFList.append() indicates that a copy is created, both lists are merged into the copy and the copy returned so as to be "non side-effecting operation on either this list or the given list"
>> However, in the case where this list is empty the other list is returned.  I believe copy of the other should be returned in this case.
>
> --
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA administrators
> For more information on JIRA, see: http://www.atlassian.com/software/jira