> > The issue here is that I cannot access/do not have rights to /api/metaData > on the source server, thus the need to use /api/organisationUnits. However > on the destination server we do have rights to /api/metaData. Agree, it > would be easier however. >
Ok, I already have an blueprint for this actually [1], which would allow you to do this.. hopefully it will make it into 2.17. > > Yeah, leaving the "pager" node in and posting it to the destination server > seems to be fine. > Good > Could you be more specific or will you document the changes/massaging > which might be required for transport between these two endpoints? > All the output from the /api/type endpoints are now driven by our new "node based" renderer system, which means we have taken full control over the output, and not directly using Jackson (JSON library for Java) annotation based object mapping anymore. We are still piggybacking on the annotations from Jackson (we are also replacing them) for now, so the format is almost 100% the same, but there might be minor issues, like the date format. The upside is that now we have full control, and this is what fuels our new ?fields= API, which allows to ask for specific properties of the stream. We have several other blueprints related to this in 2.17, e.g. [2]. [1] https://blueprints.launchpad.net/dhis2/+spec/web-api-metadata-with-acl [2] https://blueprints.launchpad.net/dhis2/+spec/web-api-node-deserializer -- Morten > Regards, > Jason > > > > > > > On Fri, Aug 15, 2014 at 8:06 AM, Morten Olav Hansen <[email protected]> > wrote: > >> The pager node should be just ignored, you might have other issues >> though.. if you are using 2.16? I'm still working on it, but the date >> format is different in /api/metadata vs /api/organisationUnits (or any >> other type), so you might have issues importing. >> >> If you just want "all", you should probably use this instead: >> /api/metadata?assumeTrue=false&organisationUnits=true >> >> We are in the middle of changing serializer/deserializer framework (with >> our custom one), so there might be small changes when you go to /api/type >> and not /api/metadata, which require that you massage the payload a bit >> before you can import. >> >> -- >> Morten >> >> >> On Fri, Aug 15, 2014 at 12:33 PM, Jason Pickering < >> [email protected]> wrote: >> >>> Just one other question (see attached code). When getting the JSON >>> response from one server, you get a "pager" node. Is there anyway to not >>> get this, or does it even matter if I post it back to "metaData" to the >>> destination server? >>> >>> Reason it has to be done this way, is that we do not have access to the >>> metaData endpoint in the source server (but do on the destination server). >>> A hack of course, but maybe there is a better way? >>> >>> Below, a simple script (no error handling) to sync orgunits from one >>> server to another (in R of course, haha). Any further suggestions would be >>> welcome. >>> >>> Regards, >>> Jason >>> >>> require(rjson) >>> require(RCurl) >>> #Modify to suit your needs >>> url.base<-"******" >>> username.base<-"******" >>> password.base<-"******" >>> url.dest<-"******" >>> username.dest<-"******" >>> password.dest<-"******" >>> >>> >>> #Get the number of pages from the source server >>> curl <- getCurlHandle() >>> curlSetOpt(cookiejar='cookies.txt',httpauth = 1L,ssl.verifypeer = FALSE, >>> curl=curl) >>> login.url<-paste0(url.base,"/dhis-web-commons/security/login.action") >>> response<-getURL(login.url, >>> userpwd=paste0(username.base,":",password.base),curl=curl) >>> url<-paste0(url.base,"api/organisationUnits.json?viewClass=export") >>> pages<-fromJSON(getURL(url,curl=curl))$pager$pageCount >>> >>> #We are going to make a few posts, so get a curl handle >>> curl.dest <- getCurlHandle() >>> curlSetOpt(cookiejar='cookies_dest.txt',httpauth = 1L,ssl.verifypeer = >>> FALSE, curl=curl.dest) >>> login.url<-paste0(url.dest,"/dhis-web-commons/security/login.action") >>> response<-getURL(login.url, >>> userpwd=paste0(username.dest,":",password.dest),curl=curl.dest) >>> >>> #Loop through each page and post to the destination server >>> for ( i in 1:pages) { >>> cat("Getting ", i, "of ",pages,"\n") >>> >>> url<-paste0(url.base,"api/organisationUnits.json?viewClass=export&page=",i) >>> response<-getURL(url,curl=curl) >>> #Get rid of the pager node. Maybe not required? >>> foo<-fromJSON(response)$organisationUnits >>> foo<-toJSON(list(organisationUnits=foo)) >>> getURL(paste0(url.dest,"api/metaData?preheatCache=false"), >>> customrequest='POST', >>> httpheader=c('Content-Type'='application/json'), >>> postfields=noquote(foo), >>> curl=curl.dest >>> ) >>> } >>> >>> >>> >>> On Fri, Aug 15, 2014 at 7:00 AM, Morten Olav Hansen <[email protected]> >>> wrote: >>> >>>> Yeah, just to clarify, every endpoint (except /api/metadata) can only >>>> take one single object. If you want to have multiple of one or more types, >>>> you will have to post them through /api/metadata endpoint. >>>> >>>> Good that you got it working :) >>>> >>>> -- >>>> Morten >>>> >>>> >>>> On Fri, Aug 15, 2014 at 11:56 AM, Jason Pickering < >>>> [email protected]> wrote: >>>> >>>>> Thanks for all the tips and code. >>>>> >>>>> Changing "orgunits" to "organisationUnits" and posting to the >>>>> /metaData endpoint seems to do the trick. >>>>> >>>>> Best regards, >>>>> Jason >>>>> >>>>> >>>>> >>>>> On Fri, Aug 15, 2014 at 12:11 AM, Jan Henrik Øverland < >>>>> [email protected]> wrote: >>>>> >>>>>> You are probably aware of this, but if there is no particular reason >>>>>> you want to post to api/organisationUnits, it will work with multiple >>>>>> orgunits if you wrap it like this >>>>>> >>>>>> { >>>>>> "organisationUnits": [ >>>>>> ..., >>>>>> ..., >>>>>> ..., >>>>>> ..., >>>>>> etc >>>>>> ] >>>>>> } >>>>>> >>>>>> and post it to api/metaData instead. >>>>>> >>>>>> >>>>>> On Thu, Aug 14, 2014 at 10:40 PM, Dan Cocos <[email protected]> wrote: >>>>>> >>>>>>> I don’t think you can post multiple, here’s some PHP code I wrote to >>>>>>> add them one by one they all had the same parent so my code is somewhat >>>>>>> less complex, you’ll have to have more arrays containing the correct >>>>>>> parent >>>>>>> and other details for your OUs. >>>>>>> >>>>>>> >>>>>>> <?php //You need to make sure to add a ROOT unit and then make >>>>>>> this set to the root user $parentId = "JFSc3tndTlI"; $instanceURL = >>>>>>> "http://localhost:8080/api/organisationUnits"; $username = "admin"; >>>>>>> $password = "district"; $countryNames = array("Angola", "Antigua >>>>>>> and Barbuda", "Asia Regional Program", "Bahamas, The", "Barbadas", >>>>>>> "Belize >>>>>>> - Carribean", "Belize - Central America", "Botswana", "Burma", >>>>>>> "Burundi", "Cambodia", "Cameroon", "Caribbean Region", "Central >>>>>>> America Region", "Central Asia Region", "China", "Democratic >>>>>>> Republic of the Congo", "Costa Rica", "Cote d'Ivoire", "Dominica", >>>>>>> "Dominican >>>>>>> Republic", "El Salvador", "Ethiopia", "Ghana", "Grenada", >>>>>>> "Guatemala", "Guyana", "Haiti", "Honduras", "India", "Indonesia", >>>>>>> "Jamaica", "Kazakhstan", "Kenya", "Kyrgyz Republic", "Laos", >>>>>>> "Lesotho", "Malawi", "Mozambique", "Namibia", "Nicaragua", "Nigeria" >>>>>>> , "Panama", "Papua New Guinea", "Russia", "Rwanda", "Saint Kitts >>>>>>> and Nevis", "Saint Lucia", "Saint Vincent and the Grenadines", "South >>>>>>> Africa", "South Sudan", "Suriname", "Swaziland", "Tajikistan", >>>>>>> "Tanzania", "Thailand", "Trinidad and Tobago", "Turkmenistan", >>>>>>> "Uganda", "Ukraine", "Uzbekistan", "Vietnam", "Zambia", "Zimbabwe"); >>>>>>> //I >>>>>>> couldn't get DHIS2 to ingest with one call with several children so >>>>>>> instead >>>>>>> I just make a bunch of calls. foreach($countryNames as $ouname){ >>>>>>> $data = array("name" => $ouname, "shortName" => $ouname, "parent" >>>>>>> => array("id" =>$parentId)); $data_string = json_encode($data); >>>>>>> $ch = curl_init($instanceURL); curl_setopt($ch, >>>>>>> CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS >>>>>>> , $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); >>>>>>> curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); >>>>>>> curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: >>>>>>> application/json', 'Content-Length: ' . strlen($data_string), 'Accept: >>>>>>> application/json', ) ); $result = curl_exec($ch); print >>>>>>> $result . "\n"; } ?> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Aug 14, 2014 at 10:29 PM, Mark Polak <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Jason, >>>>>>>> >>>>>>>> I tried to look up if it was possible to post a list and from what >>>>>>>> i can tell you can’t post a list of objects currently. >>>>>>>> >>>>>>>> But Morten would have to clarify that as i am not 100% sure if that >>>>>>>> is correct. >>>>>>>> >>>>>>>> Kind regards, >>>>>>>> >>>>>>>> Mark Polak >>>>>>>> [email protected] >>>>>>>> [email protected] >>>>>>>> +31 6 38 600 925 >>>>>>>> >>>>>>>> On 14 Aug 2014, at 21:03, Jason Pickering < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>> Unfortunately, I cannot post it a public list, but I think I may be >>>>>>>> missing some brackets etc. >>>>>>>> >>>>>>>> Basically, I need to sync some orgunits between instances with JSON >>>>>>>> (after a bit of processing). >>>>>>>> >>>>>>>> Will the below work (in theory)? I could not really find an example >>>>>>>> of POSTing multiple orgunits with JSON through the API in the docs. >>>>>>>> >>>>>>>> Regards, >>>>>>>> Jason >>>>>>>> >>>>>>>> { >>>>>>>> "orgunits": [ >>>>>>>> { >>>>>>>> "code": "XXXXX", >>>>>>>> "name": "XXXXX", >>>>>>>> "created": "2013-03-14T06:17:28.334+0000", >>>>>>>> "lastUpdated": "2014-05-27T09:45:58.804+0000", >>>>>>>> "shortName": "XXXX", >>>>>>>> "parent": { >>>>>>>> "name": "XXXX", >>>>>>>> "created": "2012-07-14T18:57:55.059+0000", >>>>>>>> "lastUpdated": "2013-09-02T08:04:08.693+0000", >>>>>>>> "href": "XXXXXXX", >>>>>>>> "id": "XXXXXX" >>>>>>>> }, >>>>>>>> "openingDate": "1900-01-01", >>>>>>>> "active": true, >>>>>>>> "contactPerson": "XXXX", >>>>>>>> "address": "XXXXXX", >>>>>>>> "email": "XXXXXX", >>>>>>>> "phoneNumber": "XXXXXX", >>>>>>>> "level": 5, >>>>>>>> "href": "XXXXXX", >>>>>>>> "id": "XXXX" >>>>>>>> } ]} >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Aug 14, 2014 at 7:22 PM, Mark Polak <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hey Jason, >>>>>>>>> >>>>>>>>> Perhaps it could also be useful if you provide the JSON you’re >>>>>>>>> sending? That might make it easier to figure out why it happened :) >>>>>>>>> >>>>>>>>> Kind regards, >>>>>>>>> >>>>>>>>> Mark Polak >>>>>>>>> [email protected] >>>>>>>>> [email protected] >>>>>>>>> >>>>>>>>> On 14 Aug 2014, at 17:25, Jason Pickering < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>> Hi Morten, >>>>>>>>> >>>>>>>>> I am trying to post some JSON to the /api/organisationUnit end >>>>>>>>> point. I think it looks OK (???) but am something does not seem to be >>>>>>>>> right. I see this exception. Could you translate for me? :) >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> Jason >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> SEVERE: Servlet.service() for servlet [webapi] in context with >>>>>>>>> path [/dhis] threw exception >>>>>>>>> com.fasterxml.jackson.databind.JsonMappingException: Can not >>>>>>>>> deserialize instance of >>>>>>>>> org.hisp.dhis.organisationunit.OrganisationUnit out >>>>>>>>> of START_ARRAY token >>>>>>>>> at [Source: >>>>>>>>> org.apache.catalina.connector.CoyoteInputStream@1d72f464; line: >>>>>>>>> 1, column: 1] >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164) >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:691) >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:685) >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromArray(BeanDeserializerBase.java:1215) >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:151) >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:126) >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2993) >>>>>>>>> at >>>>>>>>> com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2144) >>>>>>>>> at >>>>>>>>> org.hisp.dhis.dxf2.render.DefaultRenderService.fromJson(DefaultRenderService.java:79) >>>>>>>>> at >>>>>>>>> org.hisp.dhis.webapi.controller.AbstractCrudController.postJsonObject(AbstractCrudController.java:352) >>>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >>>>>>>>> Method) >>>>>>>>> at >>>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>>>>>>>> at >>>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:606) >>>>>>>>> at >>>>>>>>> org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) >>>>>>>>> at >>>>>>>>> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:685) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855) >>>>>>>>> at >>>>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:646) >>>>>>>>> at >>>>>>>>> org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) >>>>>>>>> at >>>>>>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:201) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(CustomAuthenticationFilter.java:64) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(AutomaticAccessFilter.java:113) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) >>>>>>>>> at >>>>>>>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) >>>>>>>>> at >>>>>>>>> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) >>>>>>>>> at >>>>>>>>> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) >>>>>>>>> at >>>>>>>>> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >>>>>>>>> at >>>>>>>>> org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151) >>>>>>>>> at >>>>>>>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >>>>>>>>> at >>>>>>>>> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) >>>>>>>>> at >>>>>>>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) >>>>>>>>> at >>>>>>>>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) >>>>>>>>> at >>>>>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) >>>>>>>>> at >>>>>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) >>>>>>>>> at >>>>>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) >>>>>>>>> at >>>>>>>>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) >>>>>>>>> at >>>>>>>>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) >>>>>>>>> at >>>>>>>>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) >>>>>>>>> at >>>>>>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >>>>>>>>> at >>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >>>>>>>>> at java.lang.Thread.run(Thread.java:744) >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs >>>>>>>>> Post to : [email protected] >>>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs >>>>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs >>>>>>>> Post to : [email protected] >>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs >>>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Mailing list: https://launchpad.net/~dhis2-devs >>>>>>> Post to : [email protected] >>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs >>>>>>> More help : https://help.launchpad.net/ListHelp >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Mailing list: https://launchpad.net/~dhis2-devs >>>>> Post to : [email protected] >>>>> Unsubscribe : https://launchpad.net/~dhis2-devs >>>>> More help : https://help.launchpad.net/ListHelp >>>>> >>>>> >>>> >>> >> >
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : [email protected] Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp

