citrus-simulator icon indicating copy to clipboard operation
citrus-simulator copied to clipboard

Simulator does not support exploded parameters

Open tschlat opened this issue 4 years ago • 2 comments

When providing exploded query parameters in a message for the simulator, an exception is thrown caused by the algorithm that collects the queryParams for the message.

Regards, Thorsten

java.lang.IllegalStateException: Duplicate key productCharacteristic (attempted merging values 107 and 108) at java.base/java.util.stream.Collectors.duplicateKeyException(Collectors.java:133) ~[na:na] at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180) ~[na:na] at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) ~[na:na] at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[na:na] at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[na:na] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[na:na] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[na:na] at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[na:na] at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[na:na] at com.consol.citrus.http.message.HttpMessage.queryParams(HttpMessage.java:200) ~[citrus-http-2.8.0.jar!/:na] at com.consol.citrus.http.controller.HttpMessageController.handleRequestInternal(HttpMessageController.java:140) ~[citrus-http-2.8.0.jar!/:na] at com.consol.citrus.http.controller.HttpMessageController.handleGetRequest(HttpMessageController.java:59) ~[citrus-http-2.8.0.jar!/:na] at jdk.internal.reflect.GeneratedMethodAccessor204.invoke(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.1.17.RELEASE.jar!/:5.1.17.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.17.RELEASE.jar!/:5.1.17.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.1.17.RELEASE.jar!/:5.1.17.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) ~[spring-webmvc-5.1.17.RELEASE.jar!/:5.1.17.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-5.1.17.RELEASE.jar!/:5.1.17.RELEASE]

tschlat avatar Jun 08 '21 05:06 tschlat

@svettwer @christophd Hi we @Postfinance would like to submitt a fix for this issues. The fix would change a Map to something that allows duplicated entries like List<Pair<String, String>>. This would also mean changing contract for the com.consol.citrus.http.message.HttpMessage#getQueryParams with all consequent changes. What is your opnion is it acceptable?

sosunovass avatar Aug 09 '21 11:08 sosunovass

Fixed with (#583) Exchanged ArrayList with LinkedList : 6cd451ac20bda272fb0acf01181896168d5d54e0 | Thu Mar 28 11:00:42 CET 2019 | Sven Hettwer | (#583) Exchanged ArrayList with LinkedList

sosunovass avatar Aug 10 '21 09:08 sosunovass