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

Daniel Kulp commented on CXF-4605:
----------------------------------


The problem is whether due to TypeErasure of the generics can we even detect #2 
or not.   In your test case, CXF was detecting it to be a map of Object -> 
Object due to the erasure.   That IS "supported" as it is treated as an 
"xsd:anyType" and the value mapped to a DOM object.  Mostly what I'm trying to 
do is to traverse the various generics information that is available to see if 
we can determine the actual type or whether the actual type isn't available and 
we just get "Object" for the type.

I've just committed a couple more changes that will try and detect if the type 
erasure is resulting in "Object" (as opposed to just being "Object" to begin 
with) and log a warning.  
                
> SortedMap is not returned when another unrelated method exists in the 
> interface
> -------------------------------------------------------------------------------
>
>                 Key: CXF-4605
>                 URL: https://issues.apache.org/jira/browse/CXF-4605
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: 2.7.0
>         Environment: Debian unstable / tomcat7 / opennjdk7
>            Reporter: Vassilis Virvilis
>            Assignee: Daniel Kulp
>             Fix For: 2.7.1
>
>         Attachments: ws-test-issue-4605.tgz, ws-test-issue-4605.tgz
>
>
>  During testing of bug 4534 I stumbled upon the following behavior. Subsets 
> of tests were passing when run standalone but failing when run in the full 
> test suite.
> So I have narrowed it down to one method that fails when another is 
> uncommented in the interface.
> Interface:
>     // uncomment this for the next method to fail
>     // public Map<String, Map<Integer, Integer>> testDirectComplexMapResult();
>     // fail -- puts data into a hashmap instead of a SortedMap if the above 
> is uncommented
>     public Map<String, SortedMap<Integer, Integer>> 
> testDirectComplexTreeMapResult();
> Implementation:
>     //@Override
>     public Map<String, Map<Integer, Integer>> testDirectComplexMapResult() {
>         final Map<String, Map<Integer, Integer>> result = new HashMap<String, 
> Map<Integer, Integer>>();
>         final TreeMap<Integer, Integer> map1 = new TreeMap<Integer, 
> Integer>();
>         map1.put(1, 3);
>         result.put("key1", map1);
>         return result;
>     }
>     @Override
>     public Map<String, SortedMap<Integer, Integer>> 
> testDirectComplexTreeMapResult() {
>         final Map<String, SortedMap<Integer, Integer>> result = new 
> HashMap<String, SortedMap<Integer, Integer>>();
>         final TreeMap<Integer, Integer> map1 = new TreeMap<Integer, 
> Integer>();
>         map1.put(1, 3);
>         map1.put(0, 2);
>         result.put("key1", map1);
>         return result;
>     }
> Client:
>     @Test
>     public void testDirectComplexTreeMapResult() {
>         final Map map = TestServiceFactory.getService()
>                 .testDirectComplexTreeMapResult();
>         log.info(map);
>         for (final Object vmap : map.values()) {
>             Assert.assertTrue(vmap instanceof SortedMap);
>         }
>     }

--
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

Reply via email to