[
https://issues.apache.org/jira/browse/OFBIZ-5790?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14180187#comment-14180187
]
Jacopo Cappellato commented on OFBIZ-5790:
------------------------------------------
I agree with [[email protected]] about the fact that we can use this task
(and this feature/requirement) to start cleaning and refactoring the existing
home-grown JSON code.
In order to achieve this goal, I started reviewing the existing code and some
of the open Jira tickets that could be useful.
Here are my initial findings:
# the main mechanism we have to return the *result* of a service call in JSON
is the CommonEvents.jsonResponseFromRequestAttributes(...) method that is
associated to {code}
<request-map uri="json">
<security direct-request="false"/>
<event type="java" path="org.ofbiz.common.CommonEvents"
invoke="jsonResponseFromRequestAttributes"/>
<response name="success" type="none"/>
</request-map>{code}
and can be used with a request like:{code}
<request-map uri="createExampleAjax">
<security https="true" auth="true"/>
<event type="service" invoke="createExample"/>
<response name="success" type="request" value="json"/>
<response name="error" type="request" value="json"/>
</request-map>{code}
the jsonResponseFromRequestAttributes(...) method generates the JSON response
using the net.sf.json package i.e. the JSON-lib product
(http://json-lib.sourceforge.net); the latest release of this product is
2010-12-14
# an additional dependency on JSON-lib is represented by the
toJsonObjectList(...) methods that are defined in the following classes:
EbayStoreOptions, HumanResEvents, CategoryServices, ImageManagementServices,
ProductStoreEvents; I didn't review these methods closely but we should
probably refactor them to use the same method defined in a central place (base
component)
# then we have the code (parser) in org.ofbiz.base.json that depends on JavaCC;
the only dependency we have on org.ofbiz.base.json is from JSONConverters that
implements a ConverterLoader for the conversion from the
org.ofbiz.base.json.JSON class to List, Map, Set, Short, Byte, Integer, Long,
Boolean, Float, Double; I don't think this code is used at all, nor I know how
to use it
Any hint about #3? how to use it and if it is used?
After this initial review, a draft plan could be (pending feedback from others):
# create a new JSON util class under org.ofbiz.base.json and move there the
implementation of the toJsonObjectList(...) and of the
jsonResponseFromRequestAttributes(...) methods
# implement there also the method proposed in this patch
# convert the code in the new util class from JSON-lib to Jackson
# remove the JSON parser in org.ofbiz.base.json and the JSONConverters;
# remove the JSON-lib jar
> Json string parameters as a service input are not recognized by OFBiz
> ServiceEventHandler.
> ------------------------------------------------------------------------------------------
>
> Key: OFBIZ-5790
> URL: https://issues.apache.org/jira/browse/OFBIZ-5790
> Project: OFBiz
> Issue Type: Improvement
> Affects Versions: Trunk
> Reporter: Amardeep Singh Jhajj
> Priority: Minor
> Attachments: OFBIZ-5790.patch, jackson-annotations-2.4.0.jar,
> jackson-core-2.4.2.jar, jackson-databind-2.4.2.jar
>
>
> I was trying to pass the Json string as a input to a service, but is not
> recognized by ServiceEventHandler.
> Example Json String- {"faciltyId": "WebStoreWarehouse"}
> I worked on this issue and attached a patch here. Here I have used Jackson
> Json library for parsing.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)