[jira] [Created] (CXF-3526) Aegis cannot handle nested map inheritance
Aegis cannot handle nested map inheritance -- Key: CXF-3526 URL: https://issues.apache.org/jira/browse/CXF-3526 Project: CXF Issue Type: Bug Components: Aegis Databinding Affects Versions: 2.3.3 Environment: Debian GNU/Linux tomcat 6 Reporter: Vassilis Virvilis The following code fails when trying to retrieve data with the simple fronted public class ComplexMapResult extends HashMap> { } // fail returns null map value public ComplexMapResult testComplexMapResult(); How it fails. On retrieve when I try to print the resulting matrix I get INFO: client.TestClient.testComplexMapResult(TestClient.java:35): {key1=[#document: null]} where I should get a valid map for the key "key1" The following code succeeds // success public Map> testDirectComplexMapResult(); So my guess is Aegis doesn't handle the inheritance very well. Further more the following code succeeds // success public class SimpleMapResult extends HashMap { } // success public SimpleMapResult testSimpleMapResult(); so that means it handles the extension when there is no nesting I will try to attach the eclipse project for this (~7k) -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (CXF-3526) Aegis cannot handle nested map inheritance
[ https://issues.apache.org/jira/browse/CXF-3526?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis updated CXF-3526: --- Attachment: ws-test.tgz And here is the eclipse project. You will need the following jars cxf-libraries log4j commons-logging > Aegis cannot handle nested map inheritance > -- > > Key: CXF-3526 > URL: https://issues.apache.org/jira/browse/CXF-3526 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.3.3 > Environment: Debian GNU/Linux tomcat 6 >Reporter: Vassilis Virvilis > Attachments: ws-test.tgz > > > The following code fails when trying to retrieve data with the simple fronted > public class ComplexMapResult extends > HashMap> { > } > // fail returns null map value > public ComplexMapResult testComplexMapResult(); > How it fails. On retrieve when I try to print the resulting matrix I get > INFO: client.TestClient.testComplexMapResult(TestClient.java:35): > {key1=[#document: null]} > where I should get a valid map for the key "key1" > The following code succeeds > // success > public Map> testDirectComplexMapResult(); > So my guess is Aegis doesn't handle the inheritance very well. > Further more the following code succeeds > // success > public class SimpleMapResult extends HashMap { > } > // success > public SimpleMapResult testSimpleMapResult(); > so that means it handles the extension when there is no nesting > I will try to attach the eclipse project for this (~7k) -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (CXF-3527) NullPointer exception when interface contains generics
NullPointer exception when interface contains generics -- Key: CXF-3527 URL: https://issues.apache.org/jira/browse/CXF-3527 Project: CXF Issue Type: Bug Components: Aegis Databinding Affects Versions: 2.3.3 Environment: Debian GNU/Linux Tomcat6 Reporter: Vassilis Virvilis The following code fails with a NULL pointer exception in deploy. Always the same. In order to reproduce the problem you have to uncomment the method declarations otherwise the war does not deploy. What I would like in case it is not possible to make it work in Aegis due to other constraints is a better error mentioning the problematic method because right now I have to suspect all methods and play binary search to find the problematic ones. // fails with null pointer exception in deploy // public T testGeneric(Collection collection); // success public Integer testGeneric(Collection collection); // fails with null pointer exception in deploy // public Pair testReturnGenericPair(T1 first, T2 second); // fails with null pointer exception in deploy // public Pair testReturnQualifiedPair(Integer first, // String second); // fails with null pointer exception in deploy // public int testGenericPair(Pair pair); // fails with null pointer exception in deploy // public int testQualifiedPair(Pair pair); You cant find the eclipse project attached in https://issues.apache.org/jira/browse/CXF-3526 and here is the exception May 16, 2011 5:38:12 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'test': Invocation of init method failed; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:563) at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1397) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:857) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:795) at org.apache.catalina.manager
[jira] [Commented] (CXF-3526) Aegis cannot handle nested map inheritance
[ https://issues.apache.org/jira/browse/CXF-3526?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13039127#comment-13039127 ] Vassilis Virvilis commented on CXF-3526: Looks like that I missed the documentation. Do you think that it would be possible to give a warning when that happens during deploy so the user can tell when something goes wrong from the logs and not wait the runtime to see the problem. Thanks > Aegis cannot handle nested map inheritance > -- > > Key: CXF-3526 > URL: https://issues.apache.org/jira/browse/CXF-3526 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.3.3 > Environment: Debian GNU/Linux tomcat 6 >Reporter: Vassilis Virvilis >Assignee: Freeman Fang > Fix For: 2.4.1, 2.3.5 > > Attachments: ws-test.tgz > > > The following code fails when trying to retrieve data with the simple fronted > public class ComplexMapResult extends > HashMap> { > } > // fail returns null map value > public ComplexMapResult testComplexMapResult(); > How it fails. On retrieve when I try to print the resulting matrix I get > INFO: client.TestClient.testComplexMapResult(TestClient.java:35): > {key1=[#document: null]} > where I should get a valid map for the key "key1" > The following code succeeds > // success > public Map> testDirectComplexMapResult(); > So my guess is Aegis doesn't handle the inheritance very well. > Further more the following code succeeds > // success > public class SimpleMapResult extends HashMap { > } > // success > public SimpleMapResult testSimpleMapResult(); > so that means it handles the extension when there is no nesting > I will try to attach the eclipse project for this (~7k) -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] Created: (CXF-2142) HTTPS: custom keystore: regression in 2.2 from 2.1.3
HTTPS: custom keystore: regression in 2.2 from 2.1.3 Key: CXF-2142 URL: https://issues.apache.org/jira/browse/CXF-2142 Project: CXF Issue Type: Bug Affects Versions: 2.2 Environment: debian linux java jre 1.5 unstable Reporter: Vassilis Virvilis I have the following regression in https usage. My previous setup in 2.1.3 was working correctly with a custom keystore in resources. My cxf.xml was like this http://www.springframework.org/schema/beans"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:sec="http://cxf.apache.org/configuration/security"; xmlns:http="http://cxf.apache.org/transports/http/configuration"; xsi:schemaLocation="http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd";> http://lib.biovista.com/}UserSessionManagerPort.http-conduit";> .* .*_DH_anon_.* With 2.2 cxf doesn't pickup the correct keystore. It uses JRE's original keystore. Looks like that something has changed. Following Dan Kulp's advise I was able to get it working by specifying https://host.foo.com.*";> Also it worked the following so I don't need to have the same xml configuration for multiple servers https://.*.foo.com.*";> so it looks to me that now we CXF matches against urls instead of wsdl stuff (port names, ifnames etc) like name="{http://lib.foo.com/}UserSessionManagerPort.http-conduit";> ^ ^ | java package name |___ java interface -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (CXF-2142) HTTPS: custom keystore: regression in 2.2 from 2.1.3
[ https://issues.apache.org/jira/browse/CXF-2142?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis updated CXF-2142: --- Please ignore / forget about this issue. My testing was incomplete and wrong. The problem was that the cxf.xml was not being picked up and the reason for that was the absence of the spring libraries. So this is a non issue. Sorry for the noise > HTTPS: custom keystore: regression in 2.2 from 2.1.3 > > > Key: CXF-2142 > URL: https://issues.apache.org/jira/browse/CXF-2142 > Project: CXF > Issue Type: Bug >Affects Versions: 2.2 > Environment: debian linux java jre 1.5 unstable >Reporter: Vassilis Virvilis > > I have the following regression in https usage. My previous setup in 2.1.3 > was working correctly with a custom keystore in resources. My cxf.xml was > like this > http://www.springframework.org/schema/beans"; > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; > xmlns:sec="http://cxf.apache.org/configuration/security"; > xmlns:http="http://cxf.apache.org/transports/http/configuration"; > xsi:schemaLocation="http://cxf.apache.org/configuration/security > http://cxf.apache.org/schemas/configuration/security.xsd > http://cxf.apache.org/transports/http/configuration > http://cxf.apache.org/schemas/configuration/http-conf.xsd > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd";> >name="{http://lib.biovista.com/}UserSessionManagerPort.http-conduit";> > > > > > > .* > .*_DH_anon_.* > > > > > > With 2.2 cxf doesn't pickup the correct keystore. It uses JRE's original > keystore. > Looks like that something has changed. Following Dan Kulp's advise I was > able to get it working by specifying > https://host.foo.com.*";> > Also it worked the following so I don't need to have the same xml > configuration for multiple servers > https://.*.foo.com.*";> > so it looks to me that now we CXF matches against urls instead of wsdl stuff > (port names, ifnames etc) like > name="{http://lib.foo.com/}UserSessionManagerPort.http-conduit";> > ^ ^ > | java package name > |___ java interface -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Closed: (CXF-2142) HTTPS: custom keystore: regression in 2.2 from 2.1.3
[ https://issues.apache.org/jira/browse/CXF-2142?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis closed CXF-2142. -- Resolution: Invalid Please ignore / forget about this issue. My testing was incomplete and wrong. The problem was that the cxf.xml was not being picked up and the reason for that was the absence of the spring libraries. So this is a non issue. Sorry for the noise > HTTPS: custom keystore: regression in 2.2 from 2.1.3 > > > Key: CXF-2142 > URL: https://issues.apache.org/jira/browse/CXF-2142 > Project: CXF > Issue Type: Bug >Affects Versions: 2.2 > Environment: debian linux java jre 1.5 unstable >Reporter: Vassilis Virvilis > > I have the following regression in https usage. My previous setup in 2.1.3 > was working correctly with a custom keystore in resources. My cxf.xml was > like this > http://www.springframework.org/schema/beans"; > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; > xmlns:sec="http://cxf.apache.org/configuration/security"; > xmlns:http="http://cxf.apache.org/transports/http/configuration"; > xsi:schemaLocation="http://cxf.apache.org/configuration/security > http://cxf.apache.org/schemas/configuration/security.xsd > http://cxf.apache.org/transports/http/configuration > http://cxf.apache.org/schemas/configuration/http-conf.xsd > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd";> >name="{http://lib.biovista.com/}UserSessionManagerPort.http-conduit";> > > > > > > .* > .*_DH_anon_.* > > > > > > With 2.2 cxf doesn't pickup the correct keystore. It uses JRE's original > keystore. > Looks like that something has changed. Following Dan Kulp's advise I was > able to get it working by specifying > https://host.foo.com.*";> > Also it worked the following so I don't need to have the same xml > configuration for multiple servers > https://.*.foo.com.*";> > so it looks to me that now we CXF matches against urls instead of wsdl stuff > (port names, ifnames etc) like > name="{http://lib.foo.com/}UserSessionManagerPort.http-conduit";> > ^ ^ > | java package name > |___ java interface -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] [Created] (CXF-4534) SortedMap is returned as HashMap
Vassilis Virvilis created CXF-4534: -- Summary: SortedMap is returned as HashMap Key: CXF-4534 URL: https://issues.apache.org/jira/browse/CXF-4534 Project: CXF Issue Type: Bug Components: Aegis Databinding Affects Versions: 2.6.2 Environment: debian wheezy/testing, unstable Reporter: Vassilis Virvilis We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all bugs submitted by use have been fixed. Very impressive, thanks a lot. In our test suite there is a bug that has not been submitted in JIRA. A discussion about that bug can be found at http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 I decided to submit this bug anyway for documentation purposes. The problem: The problem is when the interface declares a SortedMap as an argument or as a returned value. Here is the relevant snippets. Interface - // fail -- throws exception in the server public boolean testSortedMapArgument(SortedMap map); // fail -- puts data into a hashmap instead of a SortedMap public SortedMap testSortedMapResult(); // fail -- puts data into a hashmap instead of a SortedMap public Map> testDirectComplexTreeMapResult(); Implementation -- @Override public boolean testSortedMapArgument(SortedMap map) { final Class map_class = map.getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); return klasses.contains(SortedMap.class); } @Override public SortedMap testSortedMapResult() { final SortedMap result = new TreeMap(); result.put(1, 3); result.put(0, 2); return result; } @Override public Map> testDirectComplexTreeMapResult() { final Map> result = new HashMap>(); final TreeMap map1 = new TreeMap(); map1.put(1, 3); map1.put(0, 2); result.put("key1", map1); return result; } Test Client: @Test public void testSortedMapArgument() { final SortedMap map = new TreeMap(); map.put(1, 3); map.put(0, 2); Assert.assertTrue(TestServiceFactory.getService() .testSortedMapArgument(map)); } @Test public void testSortedMapResult() { final Class map_class = ((Object) TestServiceFactory.getService() .testDirectComplexTreeMapResult()).getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); Assert.assertTrue(klasses.contains(SortedMap.class)); } @Test public void testDirectComplexTreeMapResult() { final Class map_class = ((Object) TestServiceFactory.getService() .testDirectComplexTreeMapResult().get("key1")).getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); Assert.assertTrue(klasses.contains(SortedMap.class)); } The result: --- In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very dangerous since it changes program semantics in a very subtle way. In case 1 I get an exception. Here is the server side part: @Test public void testSortedMapArgument() { final SortedMap map = new TreeMap(); map.put(1, 3); map.put(0, 2); Assert.assertTrue(TestServiceFactory.getService() .testSortedMapArgument(map)); } @Test public void testSortedMapResult() { final Class map_class = ((Object) TestServiceFactory.getService() .testDirectComplexTreeMapResult()).getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); Assert.assertTrue(klasses.contains(SortedMap.class)); } @Test public void testDirectComplexTreeMapResult() { final Class map_class = ((Object) TestServiceFactory.getService() .testDirectComplexTreeMapResult().get("key1")).getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); Assert.assertTrue(klasses.contains(SortedMap.class)); } Expected result: To safely transfer a SortedMap both ways. I would understand if due to WSDL constraints reliably transferring a sortedMap is not possible. What it would be nice is at least during the deploy time an error / warning is issued stating that fact. Right now we are getting incorrect results in a silent way or a the best case an exception at run time. -- This message i
[jira] [Updated] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis updated CXF-4534: --- Description: We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all bugs submitted by use have been fixed. Very impressive, thanks a lot. In our test suite there is a bug that has not been submitted in JIRA. A discussion about that bug can be found at http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 I decided to submit this bug anyway for documentation purposes. The problem: The problem is when the interface declares a SortedMap as an argument or as a returned value. Here is the relevant snippets. Interface - // fail -- throws exception in the server public boolean testSortedMapArgument(SortedMap map); // fail -- puts data into a hashmap instead of a SortedMap public SortedMap testSortedMapResult(); // fail -- puts data into a hashmap instead of a SortedMap public Map> testDirectComplexTreeMapResult(); Implementation -- @Override public boolean testSortedMapArgument(SortedMap map) { final Class map_class = map.getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); return klasses.contains(SortedMap.class); } @Override public SortedMap testSortedMapResult() { final SortedMap result = new TreeMap(); result.put(1, 3); result.put(0, 2); return result; } @Override public Map> testDirectComplexTreeMapResult() { final Map> result = new HashMap>(); final TreeMap map1 = new TreeMap(); map1.put(1, 3); map1.put(0, 2); result.put("key1", map1); return result; } Test Client: @Test public void testSortedMapArgument() { final SortedMap map = new TreeMap(); map.put(1, 3); map.put(0, 2); Assert.assertTrue(TestServiceFactory.getService() .testSortedMapArgument(map)); } @Test public void testSortedMapResult() { final Class map_class = ((Object) TestServiceFactory.getService() .testDirectComplexTreeMapResult()).getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); Assert.assertTrue(klasses.contains(SortedMap.class)); } @Test public void testDirectComplexTreeMapResult() { final Class map_class = ((Object) TestServiceFactory.getService() .testDirectComplexTreeMapResult().get("key1")).getClass(); final Collection klasses = Arrays.asList(map_class.getClasses()); log.info(String.format("Classes of %s are %s", map_class, klasses)); Assert.assertTrue(klasses.contains(SortedMap.class)); } The result: --- In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very dangerous since it changes program semantics in a very subtle way. In case 1 I get an exception. Here is the server side part: WARNING: Application {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: argument type mismatch while invoking public abstract boolean iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params [{0=2, 1=3}]. at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:107) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:193) at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CX
[jira] [Commented] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13471563#comment-13471563 ] Vassilis Virvilis commented on CXF-4534: I tried with apache-cxf-2.6.3-20121005.080754-29.tar.gz and all 3 problems persist. Should I try with 2.7.0 snapshot? Vassilis > SortedMap is returned as HashMap > > > Key: CXF-4534 > URL: https://issues.apache.org/jira/browse/CXF-4534 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.6.2 > Environment: debian wheezy/testing, unstable >Reporter: Vassilis Virvilis >Assignee: Daniel Kulp > Fix For: 2.5.6, 2.6.3 > > > We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all > bugs submitted by use have been fixed. Very impressive, thanks a lot. > In our test suite there is a bug that has not been submitted in JIRA. A > discussion about that bug can be found at > http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 > I decided to submit this bug anyway for documentation purposes. > The problem: > > The problem is when the interface declares a SortedMap as an argument or as a > returned value. Here is the relevant snippets. > Interface > - > {code:java} > // fail -- throws exception in the server > public boolean testSortedMapArgument(SortedMap map); > // fail -- puts data into a hashmap instead of a SortedMap > public SortedMap testSortedMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap > public Map> > testDirectComplexTreeMapResult(); > {code} > Implementation > -- > {code:java} > @Override > public boolean testSortedMapArgument(SortedMap map) { > final Class map_class = map.getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > return klasses.contains(SortedMap.class); > } > @Override > public SortedMap testSortedMapResult() { > final SortedMap result = new TreeMap Integer>(); > result.put(1, 3); > result.put(0, 2); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > map1.put(0, 2); > result.put("key1", map1); > return result; > } > {code} > Test Client: > > {code:java} > @Test > public void testSortedMapArgument() { > final SortedMap map = new TreeMap Integer>(); > map.put(1, 3); > map.put(0, 2); > Assert.assertTrue(TestServiceFactory.getService() > .testSortedMapArgument(map)); > } > @Test > public void testSortedMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult()).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > @Test > public void testDirectComplexTreeMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult().get("key1")).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > {code} > The result: > --- > In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very > dangerous since it changes program semantics in a very subtle way. > In case 1 I get an exception. Here is the server side part: > {code} > WARNING: Application > {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown > exception, unwinding now > org.apache.cxf.interceptor.Fault: argument type mismatch while invoking > public abstract boolean > iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params > [{0=2, 1=3}]. > at > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) >
[jira] [Commented] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13473050#comment-13473050 ] Vassilis Virvilis commented on CXF-4534: The fix is supposed to be applied at 2.6.3 but it still does not work for me. Tested with apache-cxf-2.6.3-20121005.080754-29.tar.gz in both server and client. Hence I am reopening the bug... If I shouldn't do this please let me know since I am not fully familiarized with CXF bug-etiquette. Could you also please tell us what is the expected behaviour? Normal transmission of SortedMap or some kind of error / warning? Anyway I didn't get any errors warnings during deploy... Thanks > SortedMap is returned as HashMap > > > Key: CXF-4534 > URL: https://issues.apache.org/jira/browse/CXF-4534 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.6.2 > Environment: debian wheezy/testing, unstable >Reporter: Vassilis Virvilis >Assignee: Daniel Kulp > Fix For: 2.5.6, 2.6.3 > > > We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all > bugs submitted by use have been fixed. Very impressive, thanks a lot. > In our test suite there is a bug that has not been submitted in JIRA. A > discussion about that bug can be found at > http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 > I decided to submit this bug anyway for documentation purposes. > The problem: > > The problem is when the interface declares a SortedMap as an argument or as a > returned value. Here is the relevant snippets. > Interface > - > {code:java} > // fail -- throws exception in the server > public boolean testSortedMapArgument(SortedMap map); > // fail -- puts data into a hashmap instead of a SortedMap > public SortedMap testSortedMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap > public Map> > testDirectComplexTreeMapResult(); > {code} > Implementation > -- > {code:java} > @Override > public boolean testSortedMapArgument(SortedMap map) { > final Class map_class = map.getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > return klasses.contains(SortedMap.class); > } > @Override > public SortedMap testSortedMapResult() { > final SortedMap result = new TreeMap Integer>(); > result.put(1, 3); > result.put(0, 2); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > map1.put(0, 2); > result.put("key1", map1); > return result; > } > {code} > Test Client: > > {code:java} > @Test > public void testSortedMapArgument() { > final SortedMap map = new TreeMap Integer>(); > map.put(1, 3); > map.put(0, 2); > Assert.assertTrue(TestServiceFactory.getService() > .testSortedMapArgument(map)); > } > @Test > public void testSortedMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult()).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > @Test > public void testDirectComplexTreeMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult().get("key1")).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > {code} > The result: > --- > In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very > dangerous since it changes program semantics in a very subtle way. > In case 1 I get an exception. Here is the server side part: > {code} > WARNING: Application > {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown > exception, unwinding now > org.apache.cxf.interceptor.Fault: argument type mismatch while invoking > public abstract boolean > iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params > [{0=2, 1=3}]. > at > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) > at > org.apache.cxf.servi
[jira] [Reopened] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis reopened CXF-4534: The fix is supposed to be applied at 2.6.3 but it still does not work for me. Tested with apache-cxf-2.6.3-20121005.080754-29.tar.gz in both server and client. Hence I am reopening the bug... If I shouldn't do this please let me know since I am not fully familiarized with CXF bug-etiquette. Could you also please tell us what is the expected behaviour? Normal transmission of SortedMap or some kind of error / warning? Anyway I didn't get any errors warnings during deploy... Thanks > SortedMap is returned as HashMap > > > Key: CXF-4534 > URL: https://issues.apache.org/jira/browse/CXF-4534 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.6.2 > Environment: debian wheezy/testing, unstable >Reporter: Vassilis Virvilis >Assignee: Daniel Kulp > Fix For: 2.5.6, 2.6.3 > > > We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all > bugs submitted by use have been fixed. Very impressive, thanks a lot. > In our test suite there is a bug that has not been submitted in JIRA. A > discussion about that bug can be found at > http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 > I decided to submit this bug anyway for documentation purposes. > The problem: > > The problem is when the interface declares a SortedMap as an argument or as a > returned value. Here is the relevant snippets. > Interface > - > {code:java} > // fail -- throws exception in the server > public boolean testSortedMapArgument(SortedMap map); > // fail -- puts data into a hashmap instead of a SortedMap > public SortedMap testSortedMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap > public Map> > testDirectComplexTreeMapResult(); > {code} > Implementation > -- > {code:java} > @Override > public boolean testSortedMapArgument(SortedMap map) { > final Class map_class = map.getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > return klasses.contains(SortedMap.class); > } > @Override > public SortedMap testSortedMapResult() { > final SortedMap result = new TreeMap Integer>(); > result.put(1, 3); > result.put(0, 2); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > map1.put(0, 2); > result.put("key1", map1); > return result; > } > {code} > Test Client: > > {code:java} > @Test > public void testSortedMapArgument() { > final SortedMap map = new TreeMap Integer>(); > map.put(1, 3); > map.put(0, 2); > Assert.assertTrue(TestServiceFactory.getService() > .testSortedMapArgument(map)); > } > @Test > public void testSortedMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult()).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > @Test > public void testDirectComplexTreeMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult().get("key1")).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > {code} > The result: > --- > In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very > dangerous since it changes program semantics in a very subtle way. > In case 1 I get an exception. Here is the server side part: > {code} > WARNING: Application > {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown > exception, unwinding now > org.apache.cxf.interceptor.Fault: argument type mismatch while invoking > public abstract boolean > iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params > [{0=2, 1=3}]. > at > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:
[jira] [Updated] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis updated CXF-4534: --- Affects Version/s: 2.7.0 > SortedMap is returned as HashMap > > > Key: CXF-4534 > URL: https://issues.apache.org/jira/browse/CXF-4534 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.6.2, 2.7.0 > Environment: debian wheezy/testing, unstable >Reporter: Vassilis Virvilis >Assignee: Daniel Kulp > > We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all > bugs submitted by use have been fixed. Very impressive, thanks a lot. > In our test suite there is a bug that has not been submitted in JIRA. A > discussion about that bug can be found at > http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 > I decided to submit this bug anyway for documentation purposes. > The problem: > > The problem is when the interface declares a SortedMap as an argument or as a > returned value. Here is the relevant snippets. > Interface > - > {code:java} > // fail -- throws exception in the server > public boolean testSortedMapArgument(SortedMap map); > // fail -- puts data into a hashmap instead of a SortedMap > public SortedMap testSortedMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap > public Map> > testDirectComplexTreeMapResult(); > {code} > Implementation > -- > {code:java} > @Override > public boolean testSortedMapArgument(SortedMap map) { > final Class map_class = map.getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > return klasses.contains(SortedMap.class); > } > @Override > public SortedMap testSortedMapResult() { > final SortedMap result = new TreeMap Integer>(); > result.put(1, 3); > result.put(0, 2); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > map1.put(0, 2); > result.put("key1", map1); > return result; > } > {code} > Test Client: > > {code:java} > @Test > public void testSortedMapArgument() { > final SortedMap map = new TreeMap Integer>(); > map.put(1, 3); > map.put(0, 2); > Assert.assertTrue(TestServiceFactory.getService() > .testSortedMapArgument(map)); > } > @Test > public void testSortedMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult()).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > @Test > public void testDirectComplexTreeMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult().get("key1")).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > {code} > The result: > --- > In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very > dangerous since it changes program semantics in a very subtle way. > In case 1 I get an exception. Here is the server side part: > {code} > WARNING: Application > {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown > exception, unwinding now > org.apache.cxf.interceptor.Fault: argument type mismatch while invoking > public abstract boolean > iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params > [{0=2, 1=3}]. > at > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) > at java.util.concurrent.FutureTask.run(FutureTask.java:166) > at > org.apache.cxf.workqueue.SynchronousExecutor.ex
[jira] [Commented] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13474877#comment-13474877 ] Vassilis Virvilis commented on CXF-4534: I also tested it with 2.7.0 > SortedMap is returned as HashMap > > > Key: CXF-4534 > URL: https://issues.apache.org/jira/browse/CXF-4534 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.6.2, 2.7.0 > Environment: debian wheezy/testing, unstable >Reporter: Vassilis Virvilis >Assignee: Daniel Kulp > > We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all > bugs submitted by use have been fixed. Very impressive, thanks a lot. > In our test suite there is a bug that has not been submitted in JIRA. A > discussion about that bug can be found at > http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 > I decided to submit this bug anyway for documentation purposes. > The problem: > > The problem is when the interface declares a SortedMap as an argument or as a > returned value. Here is the relevant snippets. > Interface > - > {code:java} > // fail -- throws exception in the server > public boolean testSortedMapArgument(SortedMap map); > // fail -- puts data into a hashmap instead of a SortedMap > public SortedMap testSortedMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap > public Map> > testDirectComplexTreeMapResult(); > {code} > Implementation > -- > {code:java} > @Override > public boolean testSortedMapArgument(SortedMap map) { > final Class map_class = map.getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > return klasses.contains(SortedMap.class); > } > @Override > public SortedMap testSortedMapResult() { > final SortedMap result = new TreeMap Integer>(); > result.put(1, 3); > result.put(0, 2); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > map1.put(0, 2); > result.put("key1", map1); > return result; > } > {code} > Test Client: > > {code:java} > @Test > public void testSortedMapArgument() { > final SortedMap map = new TreeMap Integer>(); > map.put(1, 3); > map.put(0, 2); > Assert.assertTrue(TestServiceFactory.getService() > .testSortedMapArgument(map)); > } > @Test > public void testSortedMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult()).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > @Test > public void testDirectComplexTreeMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult().get("key1")).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > {code} > The result: > --- > In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very > dangerous since it changes program semantics in a very subtle way. > In case 1 I get an exception. Here is the server side part: > {code} > WARNING: Application > {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown > exception, unwinding now > org.apache.cxf.interceptor.Fault: argument type mismatch while invoking > public abstract boolean > iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params > [{0=2, 1=3}]. > at > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) > at java.util.concurrent.FutureTask.run(FutureTask.java:
[jira] [Updated] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis updated CXF-4534: --- Attachment: ws-test-issue-4534.tgz Sure why not? Here is the test case. I have not included necessary third party libraries. The project requires cxf-libraries log4j commons-logging junit After that you do ant war and the war will be created. The TestClient will try to connect at localhost:8080 by default Thanks > SortedMap is returned as HashMap > > > Key: CXF-4534 > URL: https://issues.apache.org/jira/browse/CXF-4534 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.6.2, 2.7.0 > Environment: debian wheezy/testing, unstable >Reporter: Vassilis Virvilis >Assignee: Daniel Kulp > Attachments: ws-test-issue-4534.tgz > > > We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all > bugs submitted by use have been fixed. Very impressive, thanks a lot. > In our test suite there is a bug that has not been submitted in JIRA. A > discussion about that bug can be found at > http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 > I decided to submit this bug anyway for documentation purposes. > The problem: > > The problem is when the interface declares a SortedMap as an argument or as a > returned value. Here is the relevant snippets. > Interface > - > {code:java} > // fail -- throws exception in the server > public boolean testSortedMapArgument(SortedMap map); > // fail -- puts data into a hashmap instead of a SortedMap > public SortedMap testSortedMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap > public Map> > testDirectComplexTreeMapResult(); > {code} > Implementation > -- > {code:java} > @Override > public boolean testSortedMapArgument(SortedMap map) { > final Class map_class = map.getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > return klasses.contains(SortedMap.class); > } > @Override > public SortedMap testSortedMapResult() { > final SortedMap result = new TreeMap Integer>(); > result.put(1, 3); > result.put(0, 2); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > map1.put(0, 2); > result.put("key1", map1); > return result; > } > {code} > Test Client: > > {code:java} > @Test > public void testSortedMapArgument() { > final SortedMap map = new TreeMap Integer>(); > map.put(1, 3); > map.put(0, 2); > Assert.assertTrue(TestServiceFactory.getService() > .testSortedMapArgument(map)); > } > @Test > public void testSortedMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult()).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > @Test > public void testDirectComplexTreeMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult().get("key1")).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > {code} > The result: > --- > In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very > dangerous since it changes program semantics in a very subtle way. > In case 1 I get an exception. Here is the server side part: > {code} > WARNING: Application > {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown > exception, unwinding now > org.apache.cxf.interceptor.Fault: argument type mismatch while invoking > public abstract boolean > iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params > [{0=2, 1=3}]. > at > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) > at > org.apache.cxf.interceptor.ServiceInv
[jira] [Commented] (CXF-4534) SortedMap is returned as HashMap
[ https://issues.apache.org/jira/browse/CXF-4534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13484871#comment-13484871 ] Vassilis Virvilis commented on CXF-4534: Aah. I agree. I was fooled by my own tests. I can confirm that the mini test case now works. > SortedMap is returned as HashMap > > > Key: CXF-4534 > URL: https://issues.apache.org/jira/browse/CXF-4534 > Project: CXF > Issue Type: Bug > Components: Aegis Databinding >Affects Versions: 2.6.2, 2.7.0 > Environment: debian wheezy/testing, unstable >Reporter: Vassilis Virvilis >Assignee: Daniel Kulp > Fix For: 2.6.3, 2.7.0 > > Attachments: ws-test-issue-4534.tgz > > > We have recently upgraded to 2.6.2 and revisit our test suite. Looks like all > bugs submitted by use have been fixed. Very impressive, thanks a lot. > In our test suite there is a bug that has not been submitted in JIRA. A > discussion about that bug can be found at > http://comments.gmane.org/gmane.comp.apache.cxf.user/12388 > I decided to submit this bug anyway for documentation purposes. > The problem: > > The problem is when the interface declares a SortedMap as an argument or as a > returned value. Here is the relevant snippets. > Interface > - > {code:java} > // fail -- throws exception in the server > public boolean testSortedMapArgument(SortedMap map); > // fail -- puts data into a hashmap instead of a SortedMap > public SortedMap testSortedMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap > public Map> > testDirectComplexTreeMapResult(); > {code} > Implementation > -- > {code:java} > @Override > public boolean testSortedMapArgument(SortedMap map) { > final Class map_class = map.getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > return klasses.contains(SortedMap.class); > } > @Override > public SortedMap testSortedMapResult() { > final SortedMap result = new TreeMap Integer>(); > result.put(1, 3); > result.put(0, 2); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > map1.put(0, 2); > result.put("key1", map1); > return result; > } > {code} > Test Client: > > {code:java} > @Test > public void testSortedMapArgument() { > final SortedMap map = new TreeMap Integer>(); > map.put(1, 3); > map.put(0, 2); > Assert.assertTrue(TestServiceFactory.getService() > .testSortedMapArgument(map)); > } > @Test > public void testSortedMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult()).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > @Test > public void testDirectComplexTreeMapResult() { > final Class map_class = ((Object) TestServiceFactory.getService() > .testDirectComplexTreeMapResult().get("key1")).getClass(); > final Collection klasses = > Arrays.asList(map_class.getClasses()); > log.info(String.format("Classes of %s are %s", map_class, klasses)); > Assert.assertTrue(klasses.contains(SortedMap.class)); > } > {code} > The result: > --- > In cases 2 and 3 I get a hashmap instead of a SortedMap. This is very > dangerous since it changes program semantics in a very subtle way. > In case 1 I get an exception. Here is the server side part: > {code} > WARNING: Application > {http://iface/}TestInterface#{http://iface/}testSortedMapArgument has thrown > exception, unwinding now > org.apache.cxf.interceptor.Fault: argument type mismatch while invoking > public abstract boolean > iface.TestInterface.testSortedMapArgument(java.util.SortedMap) with params > [{0=2, 1=3}]. > at > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:166) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:140) > at > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:75) > at > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.jav
[jira] [Created] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
Vassilis Virvilis created CXF-4605: -- Summary: 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 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> testDirectComplexMapResult(); // fail -- puts data into a hashmap instead of a SortedMap if the above is uncommented public Map> testDirectComplexTreeMapResult(); Implementation: //@Override public Map> testDirectComplexMapResult() { final Map> result = new HashMap>(); final TreeMap map1 = new TreeMap(); map1.put(1, 3); result.put("key1", map1); return result; } @Override public Map> testDirectComplexTreeMapResult() { final Map> result = new HashMap>(); final TreeMap map1 = new TreeMap(); 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
[jira] [Updated] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis updated CXF-4605: --- Attachment: ws-test-issue-4605.tgz The attached project demonstrates the problem if you uncomment the other method in the interface > 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 > Attachments: 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> testDirectComplexMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap if the above > is uncommented > public Map> > testDirectComplexTreeMapResult(); > Implementation: > //@Override > public Map> testDirectComplexMapResult() { > final Map> result = new HashMap Map>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > result.put("key1", map1); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap 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
[jira] [Commented] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13490540#comment-13490540 ] Vassilis Virvilis commented on CXF-4605: Daniel, Thanks again for the quick fix. I can see that there is a apache-cxf-2.7.1-20121105.071034-21.tar.gz pre-release and the patch is 2 of November so I will try to test it later today... One question: These schema changes you mentioned what implications do they have for older versions? For example what happens if I mix 2.7.1 server with 2.6.x clients. In that case I don't mind about SortedMap but I do care about plain maps behavior... Vassilis > 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 > > > 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> testDirectComplexMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap if the above > is uncommented > public Map> > testDirectComplexTreeMapResult(); > Implementation: > //@Override > public Map> testDirectComplexMapResult() { > final Map> result = new HashMap Map>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > result.put("key1", map1); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap 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
[jira] [Reopened] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis reopened CXF-4605: Thanks a bunch as usual, I tested it with 2.7.1 snapshot 20121107 and it passes the provided test. However it still fails our internal test-suite. The only reason I bringing it up here and not another bug is that the one failure is a regression. If you want me to open it as new issue please tell me so. So the purpose of the tests is to test inheritance of complex maps. So here are the objects we are trying pass through... public class ComplexMapResult extends HashMap> { } public class ComplexTreeMapResult extends HashMap> { } The interface is // fail returns null map value in cxf-2.3.3 // works in cxf-2.6.2 // fails with exceptions in 2.7.1 public ComplexMapResult testComplexMapResult(); // this was always failing... public ComplexTreeMapResult testComplexTreeMapResult(); The server side code (implementation) is @Override public ComplexMapResult testComplexMapResult() { final ComplexMapResult result = new ComplexMapResult(); final Map map1 = new HashMap(); map1.put(1, 3); result.put("key1", map1); return result; } @Override public ComplexTreeMapResult testComplexTreeMapResult() { final ComplexTreeMapResult result = new ComplexTreeMapResult(); final TreeMap map1 = new TreeMap(); map1.put(1, 3); map1.put(0, 2); result.put("key1", map1); return result; } The client side code is: @Test public void testComplexMapResult() { log.info(TestServiceFactory.getService().testComplexMapResult()); } @Test public void testComplexTreeMapResult() { final Map map = TestServiceFactory.getService() .testComplexTreeMapResult(); log.info(map); for (final Object vmap : map.values()) { Assert.assertTrue(vmap instanceof SortedMap); } } I will update the test case... Vassilis > 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 > > > 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> testDirectComplexMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap if the above > is uncommented > public Map> > testDirectComplexTreeMapResult(); > Implementation: > //@Override > public Map> testDirectComplexMapResult() { > final Map> result = new HashMap Map>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > result.put("key1", map1); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap 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
[jira] [Commented] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13493199#comment-13493199 ] Vassilis Virvilis commented on CXF-4605: Here are the exceptions I get WARNING: Interceptor for {http://iface/}TestInterface#{http://iface/}testComplexMapResult has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not determine how to read type: {http://iface/}anyType2anyTypeHashMap at org.apache.cxf.aegis.databinding.XMLStreamDataReader.read(XMLStreamDataReader.java:58) at org.apache.cxf.aegis.databinding.XMLStreamDataReader.read(XMLStreamDataReader.java:36) at org.apache.cxf.interceptor.DocLiteralInInterceptor.getPara(DocLiteralInInterceptor.java:303) at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:127) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:801) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1590) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1488) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1307) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:464) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:367) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:89) at org.apache.cxf.frontend.ClientProxy.invoke(ClientProxy.java:81) at $Proxy21.testComplexMapResult(Unknown Source) at client.TestClient.testComplexMapResult(TestClient.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: org.apache.cxf.aegis.DatabindingException: Could not determine how to read type: {http://iface/}anyType2anyTypeHashMap at org.apache.cxf.aegis.type.basic.ObjectType.readObject(ObjectType.java:125) at org.apache.cxf.aegis.type.basic.ObjectType.readObject(ObjectType.java:141) at org.apache.cxf.aegis.type.collection.MapType.readObject(MapType.java:92) at org.apache.cxf.aegis.AegisXMLStreamDataReader.read(AegisXMLStreamDataReader.java:83) at org.apache.cxf.aegis.databinding.XMLStreamDataReader.read(XM
[jira] [Updated] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vassilis Virvilis updated CXF-4605: --- Attachment: ws-test-issue-4605.tgz I cannot reproduce the exceptions with these test cases but the results are still wrong. It returns null instead of the value map. Vassilis > 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> testDirectComplexMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap if the above > is uncommented > public Map> > testDirectComplexTreeMapResult(); > Implementation: > //@Override > public Map> testDirectComplexMapResult() { > final Map> result = new HashMap Map>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > result.put("key1", map1); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap 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
[jira] [Comment Edited] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13493203#comment-13493203 ] Vassilis Virvilis edited comment on CXF-4605 at 11/8/12 2:19 PM: - I cannot reproduce the exceptions with the update test case I attached but the results are still wrong. It returns null instead of the value map. Hope that helps Vassilis was (Author: vasvir): I cannot reproduce the exceptions with these test cases but the results are still wrong. It returns null instead of the value map. Vassilis > 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> testDirectComplexMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap if the above > is uncommented > public Map> > testDirectComplexTreeMapResult(); > Implementation: > //@Override > public Map> testDirectComplexMapResult() { > final Map> result = new HashMap Map>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > result.put("key1", map1); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap 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
[jira] [Commented] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13496058#comment-13496058 ] Vassilis Virvilis commented on CXF-4605: Daniel, Thanks a lot for your work on this. For sure I will test and report. I understand the "No this is not supported" answer. What I am saying and have said in other bug reports and in the mailing is that Aegis can: 1) work ok (as you are trying to do) 2) complain (even at run time, better in deploy time) that this is not supported 3) fail silently by corrupting data (returning HashMap instead of SortedMap) or by returning null What I am saying behavior #3 must be treated as a bug. Behavior #1, #2 are acceptable. Vassilis > 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> testDirectComplexMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap if the above > is uncommented > public Map> > testDirectComplexTreeMapResult(); > Implementation: > //@Override > public Map> testDirectComplexMapResult() { > final Map> result = new HashMap Map>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > result.put("key1", map1); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap 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
[jira] [Commented] (CXF-4605) SortedMap is not returned when another unrelated method exists in the interface
[ https://issues.apache.org/jira/browse/CXF-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13510473#comment-13510473 ] Vassilis Virvilis commented on CXF-4605: Hi there, I finally find the time to test with the apache-cxf-2.7.1-20121204.070440-41.tar.gz. All our internal tests are passing now... Thank you so much... Vassilis Virvilis > 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> testDirectComplexMapResult(); > // fail -- puts data into a hashmap instead of a SortedMap if the above > is uncommented > public Map> > testDirectComplexTreeMapResult(); > Implementation: > //@Override > public Map> testDirectComplexMapResult() { > final Map> result = new HashMap Map>(); > final TreeMap map1 = new TreeMap Integer>(); > map1.put(1, 3); > result.put("key1", map1); > return result; > } > @Override > public Map> > testDirectComplexTreeMapResult() { > final Map> result = new > HashMap>(); > final TreeMap map1 = new TreeMap 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
[jira] [Commented] (CXF-7836) Stax2 version conflict
[ https://issues.apache.org/jira/browse/CXF-7836?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16613378#comment-16613378 ] Vassilis Virvilis commented on CXF-7836: I am getting the same error as the parent but in my case I don't have cxf-rt-ws-policy in my dependencies and certainly not neethi. I depend however cxf-rt-ws-security but I can't tell why woodstox-core-asl-4.1 is getting included. I have manually prevent the woodstox-core-asl-4.1 and both server and clients are working for me so far. In my mind the correct fix is not to prevent upgrade but to figure out why these two modules (cxf-rt-ws-policy and cxf-rt-ws-security) require the older woodstox jar Thanks > Stax2 version conflict > -- > > Key: CXF-7836 > URL: https://issues.apache.org/jira/browse/CXF-7836 > Project: CXF > Issue Type: Bug > Components: Core >Affects Versions: 3.2.6 >Reporter: Michal Sabo >Assignee: Colm O hEigeartaigh >Priority: Major > Fix For: 3.2.7 > > > There is a version conflict in transitive dependencies of cxf regarding the > stax2 api. > cxf-rt-ws-policy uses the org.apache.neethi library, which is dependant on a > version *3.1.1* of stax2 api, however cxf-core and its dependency > com.fasterxml.woodstox uses a version *4.1* of stax2 api. Unfortunately, > these versions are not compatible - java.lang.NoSuchMethodError: > org.codehaus.stax2.ri.EmptyIterator.getInstance()Lorg/codehaus/stax2/ri/EmptyIterator; > Dependency resolution and the conflicting part on the last line. > {code:java} > +--- org.apache.cxf:cxf-rt-frontend-jaxws:3.2.6 > | +--- xml-resolver:xml-resolver:1.2 > | +--- org.ow2.asm:asm:5.2 > | +--- org.apache.cxf:cxf-core:3.2.6 (*) > | +--- org.apache.cxf:cxf-rt-bindings-soap:3.2.6 > | | +--- org.apache.cxf:cxf-core:3.2.6 (*) > | | +--- org.apache.cxf:cxf-rt-wsdl:3.2.6 > | | | +--- org.apache.cxf:cxf-core:3.2.6 (*) > | | | +--- wsdl4j:wsdl4j:1.6.3 > | | | \--- org.ow2.asm:asm:5.2 > | | \--- org.apache.cxf:cxf-rt-databinding-jaxb:3.2.6 > | | +--- org.apache.cxf:cxf-core:3.2.6 (*) > | | \--- org.apache.cxf:cxf-rt-wsdl:3.2.6 (*) > | +--- org.apache.cxf:cxf-rt-bindings-xml:3.2.6 > | | \--- org.apache.cxf:cxf-core:3.2.6 (*) > | +--- org.apache.cxf:cxf-rt-frontend-simple:3.2.6 > | | +--- org.apache.cxf:cxf-core:3.2.6 (*) > | | +--- org.apache.cxf:cxf-rt-bindings-soap:3.2.6 (*) > | | \--- org.apache.cxf:cxf-rt-wsdl:3.2.6 (*) > | \--- org.apache.cxf:cxf-rt-ws-addr:3.2.6 > | +--- org.apache.cxf:cxf-core:3.2.6 (*) > | +--- org.apache.cxf:cxf-rt-bindings-soap:3.2.6 (*) > | \--- org.apache.cxf:cxf-rt-ws-policy:3.2.6 > | +--- wsdl4j:wsdl4j:1.6.3 > | +--- org.apache.cxf:cxf-core:3.2.6 (*) > | \--- org.apache.neethi:neethi:3.1.1 > | \--- org.codehaus.woodstox:woodstox-core-asl:4.4.1 > | +--- javax.xml.stream:stax-api:1.0-2 > | \--- org.codehaus.woodstox:stax2-api:3.1.4 -> 4.1 > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] Created: (CXF-1758) javascript client generation barfs at generic types
javascript client generation barfs at generic types --- Key: CXF-1758 URL: https://issues.apache.org/jira/browse/CXF-1758 Project: CXF Issue Type: Bug Components: JavaScript Client Affects Versions: 2.1.2 Environment: linux debian stable (etch) tomcat 5.5.20-2etch3 Reporter: Vassilis Virvilis I managed to get a javascript client example working but it barfs in some cases. All my server classes are pojos and I am using the simple frontend (I think) with Aegis. I am very pleased with java2java communication since I can pass complex types with no annotations at all. The problematic cases are of the form. (All other cases are working with js client) public interface Service { public int open(P args); public void close(int handle); public int getValue(int handle); } My guess is it barfs in the generic P type argument. When I am trying to do http://localhost/ws/SomeService?js tomcat produces an error Aug 20, 2008 7:14:43 AM org.apache.cxf.transport.servlet.ServletController invoke WARNING: org.apache.cxf.javascript.JavascriptQueryHandler Exception caught writing response. java.lang.ClassCastException: org.apache.ws.commons.schema.XmlSchemaType cannot be cast to org.apache.ws.commons.schema.XmlSchemaComplexType at org.apache.cxf.javascript.types.SchemaJavascriptBuilder.deserializeElement(SchemaJavascriptBuilder.java:610) at org.apache.cxf.javascript.types.SchemaJavascriptBuilder.domDeserializerFunction(SchemaJavascriptBuilder.java:413) at org.apache.cxf.javascript.types.SchemaJavascriptBuilder.generateCodeForSchema(SchemaJavascriptBuilder.java:102) at org.apache.cxf.javascript.JavascriptQueryHandler.writeResponse(JavascriptQueryHandler.java:135) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:152) at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:174) at org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFServlet.java:156) at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:262) at org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:171) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Commented: (CXF-1758) javascript client generation barfs at generic types
[ https://issues.apache.org/jira/browse/CXF-1758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12625371#action_12625371 ] Vassilis Virvilis commented on CXF-1758: ok the interface is -- package com.biovista.ws.iface; public interface TestService { public int open(P args); public void close(int handle); public int getValue(int handle); } -- The implementation is -- package com.biovista.ws.impl; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class TestService implements com.biovista.ws.iface.TestService { private Log log = LogFactory.getLog(getClass()); public void close(int handle) { } public int getValue(int handle) { return 2; } public int open(P args) { log.info("args = " + args + " class = " + args.getClass()); return 0; } } -- it crashes with the same error in tomcat logs when I am requesting the javascript client (?js instead of ?wsdl) Vassilis > javascript client generation barfs at generic types > --- > > Key: CXF-1758 > URL: https://issues.apache.org/jira/browse/CXF-1758 > Project: CXF > Issue Type: Bug > Components: JavaScript Client >Affects Versions: 2.1.2 > Environment: linux debian stable (etch) tomcat 5.5.20-2etch3 >Reporter: Vassilis Virvilis >Assignee: Benson Margulies > > I managed to get a javascript client example working but it barfs in some > cases. > All my server classes are pojos and I am using the simple frontend (I think) > with Aegis. I am very pleased with java2java communication since I can pass > complex types with no annotations at all. > The problematic cases are of the form. (All other cases are working with js > client) > public interface Service { > public int open(P args); > public void close(int handle); > public int getValue(int handle); > } > My guess is it barfs in the generic P type argument. > When I am trying to do http://localhost/ws/SomeService?js tomcat produces an > error > Aug 20, 2008 7:14:43 AM org.apache.cxf.transport.servlet.ServletController > invoke > WARNING: org.apache.cxf.javascript.JavascriptQueryHandler Exception caught > writing response. > java.lang.ClassCastException: org.apache.ws.commons.schema.XmlSchemaType > cannot be cast to org.apache.ws.commons.schema.XmlSchemaComplexType > at > org.apache.cxf.javascript.types.SchemaJavascriptBuilder.deserializeElement(SchemaJavascriptBuilder.java:610) > at > org.apache.cxf.javascript.types.SchemaJavascriptBuilder.domDeserializerFunction(SchemaJavascriptBuilder.java:413) > at > org.apache.cxf.javascript.types.SchemaJavascriptBuilder.generateCodeForSchema(SchemaJavascriptBuilder.java:102) > at > org.apache.cxf.javascript.JavascriptQueryHandler.writeResponse(JavascriptQueryHandler.java:135) > at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:152) > at > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:174) > at > org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFServlet.java:156) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) > at > org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) > at > org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:262) > at > org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:192) > at > org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:171) > at java.security.AccessController.doPrivileged(Native Method) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) > at > org.apache.catalina.core.StandardCo