Hi Shameera,

Thanks for the comment.

I tried to store the nodeList in ServiceContext, it seems there is a small
issue in it.
GsonXMLStreamWriter works fine with this implementation,
but GsonXMLStreamReader is not.
org.apache.axis2.json.gson.JSONXMLStreamAPITest#xmlStreamAPITest() failed.

In the above test, it creates a SimpleHTTPServer with the axis2
configuration context.
When debugged the code, I found that ServiceContext is null, by the
time GsonXMLStreamReader
is created.

Could you please assist me on this.

Thanks,
Jayanga.


On Sat, Nov 22, 2014 at 3:26 AM, Shameera Rathnayaka <shameerai...@gmail.com
> wrote:

> Nope, xmlNode won't sent back to the client. This is intermediate
> representation of xml schema. This is introduced mainly because parse the
> xml schema for a each request will decrease the overall performance.
>
> Thanks,
> Shameera.
>
> On Sat, Nov 22, 2014 at 3:09 AM, Martin Gainty <mgai...@hotmail.com>
> wrote:
>
>> if xmlnode is already in the DOM sent to the client
>> then all he needs to do is grab the root node
>> then walk down to the xmlnode to reference the node he needs
>>
>> Martin Gainty
>>
>>
>>
>>
>> ------------------------------
>> From: shameerai...@gmail.com
>> Date: Sat, 22 Nov 2014 02:19:03 +0530
>> Subject: Re: json.gson : 'NodeMap' in ConfigurationContext doesn't get
>> cleared with service redeployment
>> To: java-user@axis.apache.org
>>
>>
>> ​Hi Jayanga,
>>
>> Create a JIRA for the above issue and you are more than welcome to
>> provide a fix for it. IMO ServiceContext would be a good place to store
>> nodeList.
>>
>> Thanks
>> Shameera. ​
>>
>> On Sat, Nov 22, 2014 at 2:11 AM, Shameera Rathnayaka <
>> shameerai...@gmail.com> wrote:
>>
>> Hi Jayanga,
>>
>> For the sake of performance, only generated node list for a service is
>> the very first time it gets a request. Then we save this nodelist against
>> it service QName. So you can safely move this nodelist to
>> serviceConfiguration level then the issue you mention will vanish. Or you
>> can introduce a way to update nodeMap by checking last update time of the
>> service.
>>
>>
>> Thanks,
>> Shameera.
>>
>>
>> On Fri, Nov 21, 2014 at 12:56 AM, Jayanga Dissanayake <
>> jsdjaya...@gmail.com> wrote:
>>
>> Hi,
>>
>> Yes. This is exactly my observation. Thanks for elaborating the above
>> implementation.
>>
>> Here the 'nodeMap' is stored in the ConfigurationContext. Why it is
>> stored in ConfigurationContext instead of ServiceContext. I think, if we
>> need to update the 'nodeMap' when the services are redeployed, it should be
>> stored in ServiceContext.
>>
>> Thanks,
>> Jayanga.
>>
>> On Thu, Nov 20, 2014 at 9:34 PM, Martin Gainty <mgai...@hotmail.com>
>> wrote:
>>
>> xmlnodes is *assumed* to be in your base configuration for nodeMap to be
>> created properly
>>
>> IF xmlnodes is nowhere to be found a NEW nodeMap IS created via
>>            Map<QName, XmlNode> newNodeMap = new HashMap<QName, XmlNode>();
>> //assumptions xmlSchemaList is a set properly by constructor
>> //elementQName is set properly by constructor
>>              xmlNodeGenerator = new XmlNodeGenerator(xmlSchemaList,
>> elementQname);
>>              mainXmlNode = xmlNodeGenerator.getMainXmlNode();
>> //get the Queue from mainXmlNode
>>              queue = xmlNodeGenerator.getQueue(mainXmlNode);
>> //put new mainxmlNode into newNodeMap and associate to elementQName
>>              newNodeMap.put(elementQname, mainXmlNode);
>> //re-insert the new Map into configContext under 'xmlnodes'
>>              configContext.setProperty(JsonConstant.XMLNODES, newNodeMap);
>>
>> ELSE elementQname (passed in from XMLStreamReader) is searched within the
>> xmlnodes
>> IF elementQName is found in xmlnodes
>>
>> //a queue is acquired from existing nodeMap created from xmlnodes
>> referenced by elementQName
>>    xmlNodeGenerator = new
>> XmlNodeGenerator().getQueue(nodeMap.get(elementQname))
>>
>> //if xmlnodes nodeMap exists but has NO elementQName entry then
>> mainXmlNode will be used:
>> //assumptions xmlSchemaList is a set properly by constructor
>> //elementQName is set properly by constructor
>>        xmlNodeGenerator = new XmlNodeGenerator(xmlSchemaList,
>> elementQname);
>>       mainXmlNode = xmlNodeGenerator.getMainXmlNode();
>> //get Queue from mainXMLNode
>>       queue = xmlNodeGenerator.getQueue(mainXmlNode);
>> //put new mainXmlNode into existing nodeMap and associate with
>> 'elementQName'
>>       nodeMap.put(elementQname, mainXmlNode);
>> //re-insert the new Map into configContext under 'xmlnodes'
>>       configContext.setProperty(JsonConstant.XMLNODES, nodeMap);
>>
>> reference the 4.2.0 branch of WS02 codebase:
>>
>> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.2.0/dependencies/axis2/1.6.1-wso2v10/modules/json/src/org/apache/axis2/json/gson/GsonXMLStreamReader.java
>>
>> does this conform to your observations?
>> Martin
>>
>> ------------------------------
>> Date: Thu, 20 Nov 2014 18:07:08 +0530
>> Subject: json.gson : 'NodeMap' in ConfigurationContext doesn't get
>> cleared with service redeployment
>> From: jsdjaya...@gmail.com
>> To: java-user@axis.apache.org
>>
>>
>> Hi All,
>>
>> I am trying out some samples with axis2 json.gson [1] implementation. In
>> my sample I have an Axis2 service which accept and sends json contents.
>> According to the json.gson implementation, it creates the 'NodeMap' in the
>> first invocation and sets it in the ConfigurationContext.
>>
>> I made some changes to the json mappings in my service and simply
>> redeploy the service without restarting the server. While doing this I
>> found out that org.apache.axis2.json.gson.GsonXMLStreamReader failed to
>> read the request. While debugging the code found out that, this is happened
>> by the un-updated 'NodeMap' in the ConfigurationContext.
>>
>> Though my service get redeployed, the 'NodeMap' doesn't get updated. Once
>> I try to access the service it tries to parse the request with old
>> 'NodeMap' and fails. ConfigurationContext doesn't get updated/invalidated
>> with service redeployment.
>>
>> So, shouldn't the 'NodeMap' be stored in a context like ServiceContext,
>>  which get refreshed with service redeployment.
>>
>> Can someone please help me to understand and solve the above issue.
>>
>> [1]
>> http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/json/src/org/apache/axis2/json/gson/
>>
>> Thanks,
>> Jayanga.
>>
>>
>>
>>
>>
>> --
>> Best Regards,
>> Shameera Rathnayaka.
>>
>> email: shameera AT apache.org , shameerainfo AT gmail.com
>> Blog : http://shameerarathnayaka.blogspot.com/
>>
>>
>>
>>
>> --
>> Best Regards,
>> Shameera Rathnayaka.
>>
>> email: shameera AT apache.org , shameerainfo AT gmail.com
>> Blog : http://shameerarathnayaka.blogspot.com/
>>
>
>
>
> --
> Best Regards,
> Shameera Rathnayaka.
>
> email: shameera AT apache.org , shameerainfo AT gmail.com
> Blog : http://shameerarathnayaka.blogspot.com/
>

Reply via email to