Java compile will remove the parameters name by default. We faced the
same problem in CXF simple frontend.
The solution could be enable the debug option in the compiler or add
annotation to the parameters.

If we decide to setting the option on the compiler, we should not only
throw exception in the runtime, but also document it.


Willem Jiang

Twitter: willemjiang
Weibo: 姜宁willem

On Thu, Jan 17, 2019 at 5:23 PM wjm wjm <zzz...@gmail.com> wrote:
>
> Scenes:
> 1.producer is springMVC dev mode
>   class QueryWrapper {
>     int x;
>     int y;
>   }
>   void method(QueryWrapper querys, int p2);
>
>   will produce swagger operation, have 3 parameters: x, y, p2
>
> 2.consumer is POJO dev mode, declare a interface:
>   interface TestIntf {
>     void method(int x, int y, int p2);
>   }
>   until now, everything is ok.
>
> 3.producer upgrade
>   class QueryWrapper {
>     int x;
>     int y;
>     int z;
>   }
>   will produce swagger operation, have 4 parameters: x,y,z,p2
>
>   in this time, old POJO consumers will have problems:
>     assign x to x, y to y, p2 to z
>   that's because we map parameters by their index
>
> to resolve the problem:
>   we need to map parameters by their name
>   this require customers change their compile argument in pom.xml to allow
> interface present method parameter name
>   if did not add compile argument, SDK can throw exception, and print how
> to add the compile argument.
>
>   any idea?

Reply via email to