[ 
https://issues.apache.org/jira/browse/OPENJPA-1025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12704651#action_12704651
 ] 

Michael Dick commented on OPENJPA-1025:
---------------------------------------

I'm not sure removing the method from AbstractList is the best solution for 
released versions since we could break downstream consumers. Merely overriding 
the subList method in the appropriate subclasses seems like a better solution 
in this case. 

> AbstractResultList.subList throws UnsupportedOperationException
> ---------------------------------------------------------------
>
>                 Key: OPENJPA-1025
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1025
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: lib
>    Affects Versions: 1.2.1, 1.3.0, 2.0.0
>         Environment: 
> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/rop/AbstractResultList.java?revision=757278&view=markup,
> Seam 2.0, OpenJPA 1.2.1
>            Reporter: Julien Kronegg
>            Assignee: B.J. Reed
>             Fix For: 1.0.4, 1.2.2, 1.3.0, 2.0.0
>
>         Attachments: OPENJPA-1025-withTest.patch, OPENJPA-1025.patch, 
> OPENJPA-1025b.patch
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> AbstractResultList implements the basics for readonly result lists. When 
> calling the subList(int,int) method, the following exception is raised:
>     java.lang.UnsupportedOperationException
>     at 
> org.apache.openjpa.lib.rop.AbstractResultList.subList(AbstractResultList.java:84)
>     at 
> org.apache.openjpa.kernel.DelegatingResultList.subList(DelegatingResultList.java:308)
>     ...
> Since the subList() method contract is to create a new List from the 
> ResultList, this operation does not modify the original list: it only 
> provides a *view* on the original list (see 
> http://java.sun.com/docs/books/tutorial/collections/interfaces/list.html ). 
> This problem is also found by other users: 
> http://n2.nabble.com/DelegatingResultList.subList-not-implemented--td210389.html
> They found the (bad) workaround to build a new List (bad because this is not 
> the same as calling subList()):
>     List mySubList = new ArrayList(openjpaList).subList(from, to);
> The AbstractResultList class should be modified by one of this solution 
> (sorted by decreasing preference order):
> 1) the AbstractResultList class should extends java.util.AbstractList and the 
> subList() method should be removed (because implemented by AbstractList)
> 2) the subList() method should be implemented to return a view on the 
> original list. See java.util.AbstractList for an implementation 
> (http://www.koders.com/java/fidCFCB47A1819AB345234CC04B6A1EA7554C2C17C0.aspx?s=iso+3166
>  )
> 3) the subList() method should throw the exception with the message "this 
> method is not yet implemented. Workaround: new 
> ArrayList(openjpaList).subList(from, to)"

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to