@Ragith I checked out whole patch0007, couldn't build from the root(created some dependency problems with "dependencies/orbit/axis2-json" module... some relative path dependency pom files... i'm working on it nw ). So build only "dependencies/axis2/modules/json" module, copy the generated jar to the folder called 'patch0008' under wso2dss-3.2.1/repository/components/patches Not "dependencies/orbit/ axis2-json".
@Shameera Thanks for asking that, problem is DSS json response is not uniform, so not convenient for the consumer. As an example, for a given select-query-operation there can be 3 types of responses. 1) There are no records. {"Entries";""} 2) Only one record. {"Entries":{"Entry":{"col1":"val1","col2":"val2"}}} 3) More than one records. {"Entries":{"Entry":[{"col1":"val1","col2":"val2"}, {"col1":"val3","col2":"val4"}]}} When consuming the service there are few validation checks we have to do. No1 is partially OK, simple null check. But in No2 & No3, when we are getting the value of key "Entry" we have to check whether is it an array of objects or just an object, which i think is not convenient for the consumer. So I want to come up with a uniform type of response as below. 1) {"Entries":{"Entry":[]}} 2) {"Entries":{"Entry":[{"col1":"val1","col2":"val2"}]}} 3) {"Entries":{"Entry":[{"col1":"val1","col2":"val2"}, {"col1":"val3","col2":"val4"}]}} Any thoughts? On Mon, Jul 14, 2014 at 4:28 PM, Rajith Vitharana <raji...@wso2.com> wrote: > Hi, > > I have tried with putting a jar file as a library to the > repository/conf/lib folder. But it throws an exception when initializing > axis2.xml file with class not found exception. Maybe axis2.xml get loaded > before loading the classes in lib folder. Below is the exception which was > thrown. > > [2014-07-14 16:24:48,583] FATAL > {org.wso2.carbon.core.init.CarbonServerManager} - WSO2 Carbon > initialization Failed > org.apache.axis2.AxisFault: Exception occured while loading the Axis > configuration from > /media/rajith/Office/Wso2/team/product/wso2dss-3.2.1/repository/conf/axis2/axis2.xml > at > org.wso2.carbon.core.CarbonAxisConfigurator.getAxisConfiguration(CarbonAxisConfigurator.java:190) > at > org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64) > at > org.wso2.carbon.core.CarbonConfigurationContextFactory.createNewConfigurationContext(CarbonConfigurationContextFactory.java:65) > at > org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:398) > at > org.wso2.carbon.core.init.CarbonServerManager.start(CarbonServerManager.java:219) > at > org.wso2.carbon.core.internal.CarbonCoreServiceComponent.activate(CarbonCoreServiceComponent.java:77) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) > at > org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) > at > org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) > at > org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) > at > org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) > at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) > at > org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) > at > org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107) > at > org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) > at > org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) > at > org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) > at > org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) > at > org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) > at > org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) > at > org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) > at > org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) > at > org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81) > at > org.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60) > at > org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40) > at > org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.init(DelegationServlet.java:38) > at > org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1267) > at > org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1186) > at > org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1081) > at > org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027) > at > org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) > at java.lang.Thread.run(Thread.java:662) > Caused by: org.apache.axis2.deployment.DeploymentException: > org/apache/axis2/json/JSONMMyFormatter > at > org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:775) > at > org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:236) > at > org.wso2.carbon.core.CarbonAxisConfigurator.populateAxisConfiguration(CarbonAxisConfigurator.java:308) > at > org.wso2.carbon.core.CarbonAxisConfigurator.getAxisConfiguration(CarbonAxisConfigurator.java:188) > ... 42 more > Caused by: java.lang.NoClassDefFoundError: > org/apache/axis2/json/JSONMMyFormatter > at > org.wso2.training.custom.json.JSONMyBuilder.<init>(JSONMyBuilder.java:35) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at java.lang.Class.newInstance0(Class.java:357) > at java.lang.Class.newInstance(Class.java:310) > at > org.apache.axis2.deployment.DescriptionBuilder.processMessageBuilders(DescriptionBuilder.java:230) > at > org.apache.axis2.deployment.AxisConfigBuilder.processMessageBuilders(AxisConfigBuilder.java:772) > ... 45 more > Caused by: java.lang.ClassNotFoundException: > org.apache.axis2.json.JSONMMyFormatter > at > org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:455) > at > org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) > at > org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) > at > org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > ... 54 more > > > Thanks, > > > On Mon, Jul 14, 2014 at 3:17 PM, Shameera Rathnayaka <shame...@wso2.com> > wrote: > >> Hi Rajith, >> >> Why are you asking him to build the patches , can't he work on already >> released DSs pack, Here i am trying to understand which issue Yasas trying >> to address by implementing a new JSON builder and formatter, we have plenty >> of Builders and formatters for JSON :) . May i know the real use case and >> requirement ? >> >> Thanks, >> Shameera >> >> >> On Mon, Jul 14, 2014 at 2:51 PM, Rajith Vitharana <raji...@wso2.com> >> wrote: >> >>> Hi Yasas, >>> >>> Try out creating a simple jar and put it in lib folder as shameera >>> mentioned in above reply. I have tried out the scenario I have explained to >>> you, and it worked fine for me >>> As I mentioned, have you build the whole patch from the pom.xml inside >>> patch0007 folder? >>> and have you created "patch0008" folder and copied the >>> jar(axis2-json-1.6.1-wso2v10.jar) inside >>> "patch0007/dependencies/orbit/axis2-json/target" >>> folder to the "patch0008" folder? >>> >>> Thanks, >>> >>> >>> >>> On Mon, Jul 14, 2014 at 1:50 PM, Shameera Rathnayaka <shame...@wso2.com> >>> wrote: >>> >>>> Hi Yasas, >>>> >>>> For you ClassNotFoundException, check do your axis2-json jar has >>>> required classes, BTW as i mentioned in previous reply you don't need to do >>>> any code changes to axis2 jars in order to plug your custom builders. >>>> >>>> Thanks, >>>> Shameera. >>>> >>>> >>>> On Mon, Jul 14, 2014 at 1:36 PM, Yasas Karunarathna < >>>> yasasm...@gmail.com> wrote: >>>> >>>>> Thank you for the quick responses. I checked in sources from both the >>>>> locations >>>>> >>>>> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.2.0/patches/patch0007/dependencies/axis2/modules/json/ >>>>> >>>>> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.2.0/dependencies/axis2/1.6.1-wso2v10/modules/json >>>>> >>>>> Separately build without any modifications, and put generated jar to >>>>> patch8 folder. Once I restart the server following message shows in the >>>>> console. >>>>> >>>>> "Could not start: >>>>> null(reference:file:../plugins/axis2-json_1.6.1.wso2v10.jar:15). It's >>>>> state >>>>> is uninstalled." >>>>> >>>>> After that logs the following error. >>>>> >>>>> "Caused by: java.lang.ClassNotFoundException: >>>>> org.apache.axis2.json.gson.JSONMessageHandler" >>>>> >>>>> Any work around? >>>>> >>>>> >>>>> >>>>> On Sun, Jul 13, 2014 at 11:30 PM, Shameera Rathnayaka < >>>>> shame...@wso2.com> wrote: >>>>> >>>>>> Hi Yasas, >>>>>> >>>>>> Assuming you are going to customize the JSON mapped convention >>>>>> (Standard Mapped Json support is their with Axis2),You don't need to do >>>>>> anything to axis2 jar. Implement your new JSON builder and formatter, >>>>>> then >>>>>> create a new jar(or osgi bundle) using those new classes >>>>>> and copy that jar ( or osgi bundle) to >>>>>> <DSS_HOME>/repository/components/lib ( or >>>>>> <DSS_HOME>/repository/components/dropings) directory. Finally, you need >>>>>> to >>>>>> configure your builder and formatter in axis2.xm configuration file (like >>>>>> your 3rd step). >>>>>> >>>>>> Thanks, >>>>>> Shameera. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Sun, Jul 13, 2014 at 10:35 PM, Rajith Vitharana <raji...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> Hi Yasas, >>>>>>> >>>>>>> The points you have mentioned are correct, but there are small >>>>>>> changes I would like to point out. Below are the steps you'll need to >>>>>>> follow to achieve your goal. >>>>>>> >>>>>>> 1 - There is a patch release for the "axis2-json" so you'll need to >>>>>>> check out the source from [1] instead of the svn location you have >>>>>>> mentioned. (checkout the whole "patch0007" instead of json module, so >>>>>>> that >>>>>>> it'll be easy for you to build the source.) >>>>>>> 2 - Add the classes you need to the source. >>>>>>> You'll need to extend AbstractJSONMessageFormatter in your >>>>>>> custom formatter class >>>>>>> You'll need to extend AbstractJSONOMBuilder in you custom >>>>>>> builder class >>>>>>> 3 - Build the whole patch0007. Then go to >>>>>>> "patch0007/dependencies/orbit/axis2-json/target" folder where you can >>>>>>> find >>>>>>> the osgi bundle created from "axis2-json" module. >>>>>>> 4 - Create "patch0008" folder inside >>>>>>> "DSS_HOME/repository/components/patches" folder and copy the osgi bundle >>>>>>> you found in step 3 to that folder. >>>>>>> 5 - Add "messageFormatter" and "messageBuilder" elements to the >>>>>>> "DSS_HOME/repository/conf/axis2/axis2.xml" as you have pointed out in >>>>>>> your >>>>>>> step 3. >>>>>>> 6 - Restart the server and invoke your service adding "Accept" >>>>>>> request header to the request with new content type you mentioned in >>>>>>> "axis2.xml", example would be "Accept:application/json/newformat".(You >>>>>>> can find sample of how to do it in [2]) >>>>>>> >>>>>>> [1] - >>>>>>> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.2.0/patches/patch0007/dependencies/axis2/modules/json/ >>>>>>> [2] - >>>>>>> http://janakaranabahu.blogspot.com/2013/06/return-json-response-from-wso2-dss.html >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> >>>>>>> On Sun, Jul 13, 2014 at 1:45 PM, Yasas Karunarathna < >>>>>>> yasasm...@gmail.com> wrote: >>>>>>> >>>>>>>> Hi there, >>>>>>>> >>>>>>>> I want to do a small change to the json response returned from DSS >>>>>>>> 3.2.1. I'm using JSONMessageFormatter & JSONOMBuilder in >>>>>>>> org.apache.axis2.json package.(not gson implementations) >>>>>>>> My requirements are as follows >>>>>>>> >>>>>>>> 1) Implement new JSONMessageFormatter, JSONOMBuilder etc. >>>>>>>> And additional method accepting the Mapped json response and >>>>>>>> format it accordingly, call it at the end of mapped json conversion. >>>>>>>> 2) Build axis2-json-1.6.1-wso2v10.jar adding new classes. >>>>>>>> I think this is the source used in DSS 3.2.1 : >>>>>>>> https://svn.wso2.org/repos/wso2/carbon/kernel/branches/4.2.0/dependencies/axis2/1.6.1-wso2v10/modules/json >>>>>>>> >>>>>>>> 3) State new Formatter and Builder in axis2.xml & call it with new >>>>>>>> header >>>>>>>> <messageFormatter contentType="application/json/newformat" >>>>>>>> >>>>>>>> class="org.apache.axis2.json.newJSONMessageFormatter"/> >>>>>>>> >>>>>>>> <messageBuilder contentType="application/json/newformat" >>>>>>>> >>>>>>>> class="org.apache.axis2.json.newJSONOMBuilder"/> >>>>>>>> Can anybody advice me on achieving the above requirements? >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> Thanks >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> *Yasas Karunarathna* >>>>>>>> yasasblog.wordpress.com >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Dev mailing list >>>>>>>> Dev@wso2.org >>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Rajith Vitharana >>>>>>> >>>>>>> Software Engineer, >>>>>>> WSO2 Inc. : wso2.com >>>>>>> Mobile : +94715883223 >>>>>>> Blog : http://lankavitharana.blogspot.com/ >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Dev mailing list >>>>>>> Dev@wso2.org >>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Software Engineer - WSO2 Inc.* >>>>>> *email: shameera AT wso2.com <shame...@wso2.com> , shameera AT >>>>>> apache.org <shame...@apache.org>* >>>>>> *phone: +9471 922 1454 <%2B9471%20922%201454>* >>>>>> >>>>>> *Linked in : * >>>>>> http://lk.linkedin.com/pub/shameera-rathnayaka/1a/661/561 >>>>>> *Twitter : *https://twitter.com/Shameera_R >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> Thanks >>>>> >>>>> >>>>> >>>>> *Yasas Karunarathna* >>>>> yasasblog.wordpress.com >>>>> >>>> >>>> >>>> >>>> -- >>>> *Software Engineer - WSO2 Inc.* >>>> *email: shameera AT wso2.com <shame...@wso2.com> , shameera AT >>>> apache.org <shame...@apache.org>* >>>> *phone: +9471 922 1454 <%2B9471%20922%201454>* >>>> >>>> *Linked in : *http://lk.linkedin.com/pub/shameera-rathnayaka/1a/661/561 >>>> *Twitter : *https://twitter.com/Shameera_R >>>> >>> >>> >>> >>> -- >>> Rajith Vitharana >>> >>> Software Engineer, >>> WSO2 Inc. : wso2.com >>> Mobile : +94715883223 >>> Blog : http://lankavitharana.blogspot.com/ >>> >> >> >> >> -- >> *Software Engineer - WSO2 Inc.* >> *email: shameera AT wso2.com <shame...@wso2.com> , shameera AT apache.org >> <shame...@apache.org>* >> *phone: +9471 922 1454 <%2B9471%20922%201454>* >> >> *Linked in : *http://lk.linkedin.com/pub/shameera-rathnayaka/1a/661/561 >> *Twitter : *https://twitter.com/Shameera_R >> > > > > -- > Rajith Vitharana > > Software Engineer, > WSO2 Inc. : wso2.com > Mobile : +94715883223 > Blog : http://lankavitharana.blogspot.com/ > -- Thanks *Yasas Karunarathna* yasasblog.wordpress.com
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev