Yes as Jason mentioned it seems this is already fixed as a WUM update. The fix is already added to the support branch [1]
[1] https://github.com/wso2-support/carbon-apimgt/commit/71f321dd2221e42ba6b0a5b2f7db3ef8002898c0 On Thu, Feb 22, 2018 at 12:19 AM, Malintha Amarasinghe <malint...@wso2.com> wrote: > Hi Himasha, > > This looks like a similar issue like https://github.com/wso2/ > product-apim/issues/1607. > > On Wed, Feb 21, 2018 at 8:11 PM, Himasha Guruge <himas...@wso2.com> wrote: > >> Hi, >> >> I'm trying out [1] with Api Manager 2.1.0. I have downloaded the java SDK >> of PizzaShackAPI and tried to run APIClient main method. At first with the >> exact same code, I was getting below error. >> >> >> com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: >> Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 >> > > Normally we don't need to modify any generated code in the SDK. From the > above error what it means is the SDK *expects* a payload starting with > "{" (json object) but it received a payload starting with "[" (json array). > > What SDK decides as *expects* is what we define in the swagger: Because > the SDK is actually generated using the swagger of the API (Chamin's > article mentions the info in detail). > > If we look at the swagger definition of the /menu. > > /menu: > get: > x-auth-type: Application & Application User > x-throttling-tier: Unlimited > description: Return a list of available menu items > parameters: [] > responses: > '200': > headers: {} > * schema:* > * title: Menu* > * properties:* > * list:* > * items:* > * $ref: '#/definitions/MenuItem'* > * type: array* > * type: object* > > It specifies the response as { "list" : [ {*menu_item1} , { menu_item2 } > .. *] } etc. This is a JSON object (starting with "{"). > > But seems like what you are getting as the actual response from /menu GET > call is something like this: [ {*menu_item1} , { menu_item2 } .. *] > (without the "list" part). This is a JSON array (starting with "["). This > violates what we specified in the swagger. > > Can you fix the swagger as below from Publisher -> Edit -> Edit Source -> > Save & Publish API and try generating the SDK from Store and invoking once > again. > > /menu: > get: > x-auth-type: Application & Application User > x-throttling-tier: Unlimited > description: Return a list of available menu items > parameters: [] > responses: > '200': > description: OK. List of APIs is returned. > headers: {} > * schema:* > * type: array* > * items:* > * $ref: '#/definitions/MenuItem'* > > If this works, lets create an issue to track this to fix in a future > release. > > Thanks! > > >> To sort it out I updated defaultAPI.java code of the SDK, to return a >> List<Menu> instead, and it got sorted. (See changes below) >> >> public List<Menu> menuGet() throws ApiException { >> ApiResponse<List<Menu>> resp = menuGetWithHttpInfo(); >> return resp.getData(); >> } >> >> >> public ApiResponse<List<Menu>> menuGetWithHttpInfo() throws >> ApiException { >> com.squareup.okhttp.Call call = menuGetCall(null, null); >> Type localVarReturnType = new TypeToken<List<Menu>>(){}.getT >> ype(); >> return apiClient.execute(call, localVarReturnType); >> } >> >> >> However, now I'm getting a response but the menu list is empty. Any idea >> what could be the issue? >> >> >> [1]https://docs.wso2.com/display/AM210/Write+a+Client+Applic >> ation+Using+the+SDK#1a97b57b1791422f99d81743523b612e >> >> Thanks, >> Himasha Guruge >> Senior Software Engineer >> WS*O2* *Inc.* >> Mobile: +94 777459299 <+94%2077%20745%209299> >> himas...@wso2.com >> >> _______________________________________________ >> Dev mailing list >> Dev@wso2.org >> http://wso2.org/cgi-bin/mailman/listinfo/dev >> >> > > > -- > Malintha Amarasinghe > *WSO2, Inc. - lean | enterprise | middleware* > http://wso2.com/ > > Mobile : +94 712383306 <+94%2071%20238%203306> > -- Malintha Amarasinghe *WSO2, Inc. - lean | enterprise | middleware* http://wso2.com/ Mobile : +94 712383306
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev