Imporing orgunits through Web API with JSON

In reference to this question

I'd like to post multiple organization units (facilities) where the upper level already exists in the system (districts).

My curl request:

<small>`        curl -d @all.json -X POST -H "Content-Type: application/json" -u admin:district `        My all.json looks like this, legit according to `

    {

        "organisationUnits": [

            {

                "code": "100229-4",

                "coordinates": [

                    35.312,

                    -5.7452

                ],

                "level": "4",

                "name": "Bahi RC",

                "parent": [

                    {

                        "id": "jbKhQuPUg8V"

                    }

                ],

                "shortName": "Bahi RC"

            },

            {

                "code": "100231-0",

                "level": "4",

                "name": "Bakwata",

                "parent": [

                    {

                        "id": "PGqrKhQZ8AA"

                    }

                ],

                "shortName": "Bakwata"

            }

        ]

    }

  `        When I post to the api/metadata endpoint, I always get  the error below (the same as Jason in the referenced post). Has something of the Metadata import process / its standard changed since August 2014?

    If I post it to the api/organisationUnits endpoint, it says successful but <small>`imported/updated/ignored/deleted`</small>        : all `0

    `

    Thank you

    David

  `

    08-Oct-2015 14:55:46.394 SEVERE [http-nio-8081-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [webapi] in context with path [] threw exception

     com.fasterxml.jackson.databind.JsonMappingException: **          Can not deserialize instance of java.lang.String out of START_ARRAY token**

     at [Source: org.apache.catalina.connector.CoyoteInputStream@92c234; line: 1, column: 56] (through reference chain: org.hisp.dhis.dxf2.metadata.MetaData["organisationUnits"]->java.util.ArrayList[0]->org.hisp.dhis.organisationunit.OrganisationUnit["coordinates"])

        at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)

        at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:835)

        at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:59)

        at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:12)

        at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap._findDeserializeAndSet2(BeanPropertyMap.java:313)

        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:291)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:335)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142)

        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)

        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)

        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)

        at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:248)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:136)

        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3562)

        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2648)

        at org.hisp.dhis.dxf2.common.JacksonUtils.fromJson(JacksonUtils.java:154)

        at org.hisp.dhis.webapi.controller.MetaDataController.importJson(MetaDataController.java:249)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

        at java.lang.reflect.Method.invoke(Unknown Source)

        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)

        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)

        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)

        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)

        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        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.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:93)

        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.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:140)

        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:115)

        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        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:107)

        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:344)

        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:82)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

        at java.lang.Thread.run(Unknown Source)

  `</small>
···

https://lists.launchpad.net/dhis2-devs/msg32117.html"http://localhost:8081/api/metaData"

http://jsonlint.com/

Hi David,

I think the problem is the coordinates part. I think it should be a plain string, e.g.

···

On Thu, Oct 8, 2015 at 3:11 PM, David Huser david.huser@swisstph.org wrote:

In reference to this question https://lists.launchpad.net/dhis2-devs/msg32117.html

I'd like to post multiple organization units (facilities) where the upper level already exists in the system (districts).



My curl request:

<small>`curl -d @all.json ["http://localhost:8081/api/metaData"](http://localhost:8081/api/metaData) -X POST -H "Content-Type: application/json" -u admin:district



  `        My all.json looks like this, legit according to [http://jsonlint.com/](http://jsonlint.com/)`



    {

        "organisationUnits": [

            {

                "code": "100229-4",

                "coordinates": [

                    35.312,

                    -5.7452

                ],

                "level": "4",

                "name": "Bahi RC",

                "parent": [

                    {

                        "id": "jbKhQuPUg8V"

                    }

                ],

                "shortName": "Bahi RC"

            },

            {

                "code": "100231-0",

                "level": "4",

                "name": "Bakwata",

                "parent": [

                    {

                        "id": "PGqrKhQZ8AA"

                    }

                ],

                "shortName": "Bakwata"

            }

        ]

    }





  `        When I post to the api/metadata endpoint, I always get  the error below (the same as Jason in the referenced post). Has something of the Metadata import process / its standard changed since August 2014?

    If I post it to the api/organisationUnits endpoint, it says successful but <small>`imported/updated/ignored/deleted`</small>        : all `0

    `

    Thank you

    David





  `

    08-Oct-2015 14:55:46.394 SEVERE [http-nio-8081-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [webapi] in context with path [] threw exception

     com.fasterxml.jackson.databind.JsonMappingException: **          Can not deserialize instance of java.lang.String out of START_ARRAY token**

     at [Source: org.apache.catalina.connector.CoyoteInputStream@92c234; line: 1, column: 56] (through reference chain: org.hisp.dhis.dxf2.metadata.MetaData["organisationUnits"]->java.util.ArrayList[0]->org.hisp.dhis.organisationunit.OrganisationUnit["coordinates"])

        at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)

        at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:835)

        at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:59)

        at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:12)

        at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap._findDeserializeAndSet2(BeanPropertyMap.java:313)

        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:291)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:335)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142)

        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)

        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)

        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)

        at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:248)

        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:136)

        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3562)

        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2648)

        at org.hisp.dhis.dxf2.common.JacksonUtils.fromJson(JacksonUtils.java:154)

        at org.hisp.dhis.webapi.controller.MetaDataController.importJson(MetaDataController.java:249)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

        at java.lang.reflect.Method.invoke(Unknown Source)

        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)

        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)

        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)

        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)

        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        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.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:93)

        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.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:140)

        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:115)

        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        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:107)

        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:344)

        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:82)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

        at java.lang.Thread.run(Unknown Source)

  `</small>

Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp

Lars Helge Øverland

Lead developer, DHIS 2

University of Oslo

Skype: larshelgeoverland

http://www.dhis2.org

I could make it work (json formatting errors) like below, maybe it helps others in the future.

<small>`{``

  ``��� "organisationUnits": [``

  ``��� {``

  ``������� "name": "Bahi RC",``

  ``��� ��� "shortName": "Bahi RC",``

  ``��� ��� "openingDate": "2015-10-01",``

  ``��� ��� "parent": {``

  ``��� ��� ���� "id": "jbKhQuPUg8V"``

  ``��� ��� �},``

  ``��� ��� "level": 4,``

  ``��� ��� "coordinates": "[36.53,-6.54]"``

  ``��� ``

  ``��� }``

  ``��� ]``

  ``}``

  `</small>
···

On 08.10.2015 15:11, David Huser wrote:

In reference to this question

  I'd like to post multiple organization units (facilities) where the upper level already exists in the system (districts).



  My curl request:

  <small>`          curl -d @all.json -X POST -H "Content-Type: application/json" -u admin:district `My all.json looks like this, legit according to `



      {

      ��� "organisationUnits": [

      ������� {

      ����������� "code": "100229-4",

      ����������� "coordinates": [

      ��������������� 35.312,

      ��������������� -5.7452

      ����������� ],

      ����������� "level": "4",

      ����������� "name": "Bahi RC",

      ����������� "parent": [

      ��������������� {

      ������������������� "id": "jbKhQuPUg8V"

      ��������������� }

      ����������� ],

      ����������� "shortName": "Bahi RC"

      ������� },

      ������� {

      ����������� "code": "100231-0",

      ����������� "level": "4",

      ����������� "name": "Bakwata",

      ����������� "parent": [

      ��������������� {

      ������������������� "id": "PGqrKhQZ8AA"

      ��������������� }

      ����������� ],

      ����������� "shortName": "Bakwata"

      ������� }

      ��� ]

      }





    `          When I post to the api/metadata endpoint, I always get� the error below (the same as Jason in the referenced post). Has something of the Metadata import process / its standard changed since August 2014?

      If I post it to the api/organisationUnits endpoint, it says successful but <small>`imported/updated/ignored/deleted`</small>          : all `0

      `

      Thank you

      David





    `

      08-Oct-2015 14:55:46.394 SEVERE [http-nio-8081-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [webapi] in context with path [] threw exception

      �com.fasterxml.jackson.databind.JsonMappingException: **            Can not deserialize instance of java.lang.String out of START_ARRAY token**

      �at [Source: org.apache.catalina.connector.CoyoteInputStream@92c234; line: 1, column: 56] (through reference chain: org.hisp.dhis.dxf2.metadata.MetaData["organisationUnits"]->java.util.ArrayList[0]->org.hisp.dhis.organisationunit.OrganisationUnit["coordinates"])

      ��� at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)

      ��� at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:835)

      ��� at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:59)

      ��� at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:12)

      ��� at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

      ��� at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

      ��� at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap._findDeserializeAndSet2(BeanPropertyMap.java:313)

      ��� at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:291)

      ��� at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:335)

      ��� at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142)

      ��� at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)

      ��� at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)

      ��� at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)

      ��� at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

      ��� at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

      ��� at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285)

      ��� at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:248)

      ��� at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:136)

      ��� at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3562)

      ��� at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2648)

      ��� at org.hisp.dhis.dxf2.common.JacksonUtils.fromJson(JacksonUtils.java:154)

      ��� at org.hisp.dhis.webapi.controller.MetaDataController.importJson(MetaDataController.java:249)

      ��� at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

      ��� at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

      ��� at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

      ��� at java.lang.reflect.Method.invoke(Unknown Source)

      ��� at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)

      ��� at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)

      ��� at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

      ��� at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)

      ��� at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)

      ��� at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

      ��� at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

      ��� at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

      ��� at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)

      ��� at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)

      ��� at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

      ��� at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)

      ��� at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

      ��� at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

      ��� at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      ��� at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

      ��� at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

      ��� at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      ��� 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.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:93)

      ��� 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.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:140)

      ��� 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:115)

      ��� at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

      ��� at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)

      ��� at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      ��� 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:107)

      ��� 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:344)

      ��� at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)

      ��� at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

      ��� at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      ��� at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:82)

      ��� at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      ��� at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

      ��� at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      ��� at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)

      ��� at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      ��� at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

      ��� at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      ��� at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

      ��� at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

      ��� at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

      ��� at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

      ��� at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

      ��� at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

      ��� at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

      ��� at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

      ��� at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

      ��� at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)

      ��� at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

      ��� at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

      ��� at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

      ��� at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)

      ��� at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)

      ��� at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)

      ��� at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

      ��� at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

      ��� at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

      ��� at java.lang.Thread.run(Unknown Source)

    `</small>
_______________________________________________ Mailing list: Post to : Unsubscribe : More help :

  <small>
    **David Huser**

    Informatics Specialist

    Swiss Centre for International Health

    Tel: +41 79 740 63 41

    Skype: dafhus

    david.huser@swisstph.org

    **Swiss Tropical and Public Health Institute**

    Socinstrasse 57, P.O. Box

    4002 Basel, Switzerland

    [www.swisstph.ch](www.swisstph.ch)

  </small>

https://lists.launchpad.net/dhis2-devs/msg32117.html"http://localhost:8081/api/metaData"

http://jsonlint.com/https://launchpad.net/~dhis2-devsdhis2-devs@lists.launchpad.nethttps://launchpad.net/~dhis2-devshttps://help.launchpad.net/ListHelp

Hi David

As Lars said, you should have the coordinates in a string, you can see the spec of GeoJSON at [1], basically what is inside OU.coordinates is the same as what is inside geometry.coordinates in GeoJSON.

You should also add “featureType”: “POINT” (since you are adding a point), there is also POLYGON / MULTI_POLYGON if you are adding polygon(s).

[1] http://geojson.org/

···

On Fri, Oct 9, 2015 at 9:16 PM, David Huser david.huser@swisstph.org wrote:

I could make it work (json formatting errors) like below, maybe it helps others in the future.





<small>`{``

  ``    "organisationUnits": [``

  ``    {``

  ``        "name": "Bahi RC",``

  ``        "shortName": "Bahi RC",``

  ``        "openingDate": "2015-10-01",``

  ``        "parent": {``

  ``             "id": "jbKhQuPUg8V"``

  ``         },``

  ``        "level": 4,``

  ``        "coordinates": "[36.53,-6.54]"``

  ``    ``

  ``    }``

  ``    ]``

  ``}``

  `</small>

On 08.10.2015 15:11, David Huser wrote:

In reference to this question https://lists.launchpad.net/dhis2-devs/msg32117.html

  I'd like to post multiple organization units (facilities) where the upper level already exists in the system (districts).



  My curl request:

  <small>`curl -d @all.json ["http://localhost:8081/api/metaData"](http://localhost:8081/api/metaData)
      -X POST -H "Content-Type: application/json" -u admin:district



    `My all.json looks like this, legit according to [](http://jsonlint.com/)[http://jsonlint.com/](http://jsonlint.com/)`



      {

          "organisationUnits": [

              {

                  "code": "100229-4",

                  "coordinates": [

                      35.312,

                      -5.7452

                  ],

                  "level": "4",

                  "name": "Bahi RC",

                  "parent": [

                      {

                          "id": "jbKhQuPUg8V"

                      }

                  ],

                  "shortName": "Bahi RC"

              },

              {

                  "code": "100231-0",

                  "level": "4",

                  "name": "Bakwata",

                  "parent": [

                      {

                          "id": "PGqrKhQZ8AA"

                      }

                  ],

                  "shortName": "Bakwata"

              }

          ]

      }





    `          When I post to the api/metadata endpoint, I always get  the error below (the same as Jason in the referenced post). Has something of the Metadata import process / its standard changed since August 2014?

      If I post it to the api/organisationUnits endpoint, it says successful but <small>`imported/updated/ignored/deleted`</small>          : all `0

      `

      Thank you

      David





    `

      08-Oct-2015 14:55:46.394 SEVERE [http-nio-8081-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [webapi] in context with path [] threw exception

       com.fasterxml.jackson.databind.JsonMappingException: **            Can not deserialize instance of java.lang.String out of START_ARRAY token**

       at [Source: org.apache.catalina.connector.CoyoteInputStream@92c234; line: 1, column: 56] (through reference chain: org.hisp.dhis.dxf2.metadata.MetaData["organisationUnits"]->java.util.ArrayList[0]->org.hisp.dhis.organisationunit.OrganisationUnit["coordinates"])

          at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)

          at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:835)

          at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:59)

          at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:12)

          at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

          at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

          at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap._findDeserializeAndSet2(BeanPropertyMap.java:313)

          at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:291)

          at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:335)

          at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142)

          at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)

          at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)

          at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)

          at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

          at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

          at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285)

          at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:248)

          at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:136)

          at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3562)

          at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2648)

          at org.hisp.dhis.dxf2.common.JacksonUtils.fromJson(JacksonUtils.java:154)

          at org.hisp.dhis.webapi.controller.MetaDataController.importJson(MetaDataController.java:249)

          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

          at java.lang.reflect.Method.invoke(Unknown Source)

          at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)

          at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)

          at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

          at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)

          at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)

          at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

          at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

          at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

          at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)

          at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)

          at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

          at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)

          at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          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.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:93)

          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.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:140)

          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:115)

          at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

          at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)

          at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

          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:107)

          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:344)

          at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:82)

          at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)

          at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

          at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

          at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

          at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)

          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

          at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

          at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)

          at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)

          at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)

          at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

          at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

          at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

          at java.lang.Thread.run(Unknown Source)

    `</small>
_______________________________________________ Mailing list: [https://launchpad.net/~dhis2-devs](https://launchpad.net/~dhis2-devs)
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : [https://launchpad.net/~dhis2-devs](https://launchpad.net/~dhis2-devs)
More help : [https://help.launchpad.net/ListHelp](https://help.launchpad.net/ListHelp)

  <small>
    **David Huser**

    Informatics Specialist

    Swiss Centre for International Health

    Tel: +41 79 740 63 41

    Skype: dafhus

    [david.huser@swisstph.org](http://david.huser@swisstph.org)



    **Swiss Tropical and Public Health Institute**

    Socinstrasse 57, P.O. Box

    4002 Basel, Switzerland

    [www.swisstph.ch](http://www.swisstph.ch)

  </small>

Mailing list: https://launchpad.net/~dhis2-devs

Post to : dhis2-devs@lists.launchpad.net

Unsubscribe : https://launchpad.net/~dhis2-devs

More help : https://help.launchpad.net/ListHelp


Morten

Yes it needs also the featureType attribute, but it didn’t work with uppercase “POINT” (the coordinates could not be loaded), it had to be “Point”. Just for completeness, the working version:

<small>`{``

  ``    "organisationUnits": [``

  ``        {``

  ``            "parent": {``

  ``                "id": "jbKhQuPUg8V"``

  ``            }, ``

  ``            "featureType": "Point", ``

  ``            "name": "Babayu", ``

  ``            "openingDate": "2015-10-15", ``

  ``            "coordinates": "[35.703,-5.639]", ``

  ``            "shortName": "Babayu"``

  ``        },``

  ``        {``

  ``            "parent": {``

  ``                "id": "jbKhQuPUg8V"``

  ``            }, ``

  ``            "featureType": "Point", ``

  ``            "name": "Babayu", ``

  ``            "openingDate": "2015-10-15", ``

  ``            "coordinates": "[35.703,-5.639]", ``

  ``            "shortName": "Babayu"``

  ``        }``

  ``    ]``

  ``}``

  `</small>
···

On 12.10.2015 04:15, Morten Olav Hansen wrote:

Hi David

      As Lars said, you should have the coordinates in a string, you can see the spec of GeoJSON at [1], basically what is inside OU.coordinates is the same as what is inside geometry.coordinates in GeoJSON.
      You should also add "featureType": "POINT" (since you are adding a point), there is also POLYGON / MULTI_POLYGON if you are adding polygon(s).

[1] http://geojson.org/

          Morten
      On Fri, Oct 9, 2015 at 9:16 PM, David Huser <david.huser@swisstph.org>
      wrote:
          I could make it work (json formatting errors) like below, maybe it helps others in the future.





          <small>`{``

            ``    "organisationUnits": [``

            ``    {``

            ``        "name": "Bahi RC",``

            ``        "shortName": "Bahi RC",``

            ``        "openingDate": "2015-10-01",``

            ``        "parent": {``

            ``             "id": "jbKhQuPUg8V"``

            ``         },``

            ``        "level": 4,``

            ``        "coordinates": "[36.53,-6.54]"``

            ``    ``

            ``    }``

            ``    ]``

            ``}``

            `</small>

On 08.10.2015 15:11, David Huser wrote:

In reference to this question https://lists.launchpad.net/dhis2-devs/msg32117.html

                I'd like to post multiple organization units (facilities) where the upper level already exists in the system (districts).



                My curl request:

                <small>`curl -d @all.json [](http://localhost:8081/api/metaData)
                    -X POST -H "Content-Type: application/json" -u admin:district `                        My all.json looks like this, legit according to [http://jsonlint.com/](http://jsonlint.com/)`



                    {

                        "organisationUnits": [

                            {

                                "code": "100229-4",

                                "coordinates": [

                                    35.312,

                                    -5.7452

                                ],

                                "level": "4",

                                "name": "Bahi RC",

                                "parent": [

                                    {

                                        "id": "jbKhQuPUg8V"

                                    }

                                ],

                                "shortName": "Bahi RC"

                            },

                            {

                                "code": "100231-0",

                                "level": "4",

                                "name": "Bakwata",

                                "parent": [

                                    {

                                        "id": "PGqrKhQZ8AA"

                                    }

                                ],

                                "shortName": "Bakwata"

                            }

                        ]

                    }





                  `                        When I post to the api/metadata endpoint, I always get  the error below (the same as Jason in the referenced post). Has something of the Metadata import process / its standard changed since August 2014?

                    If I post it to the api/organisationUnits endpoint, it says successful but <small>`imported/updated/ignored/deleted`</small>                        : all `0

                    `

                    Thank you

                    David





                  `

                    08-Oct-2015 14:55:46.394 SEVERE [http-nio-8081-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [webapi] in context with path [] threw exception

                     com.fasterxml.jackson.databind.JsonMappingException: **                          Can not deserialize instance of java.lang.String out of START_ARRAY token**

                     at [Source: org.apache.catalina.connector.CoyoteInputStream@92c234; line: 1, column: 56] (through reference chain: org.hisp.dhis.dxf2.metadata.MetaData["organisationUnits"]->java.util.ArrayList[0]->org.hisp.dhis.organisationunit.OrganisationUnit["coordinates"])

                        at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)

                        at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:835)

                        at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:59)

                        at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:12)

                        at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

                        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

                        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap._findDeserializeAndSet2(BeanPropertyMap.java:313)

                        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:291)

                        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:335)

                        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142)

                        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)

                        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)

                        at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)

                        at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:523)

                        at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:95)

                        at com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap.findDeserializeAndSet(BeanPropertyMap.java:285)

                        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:248)

                        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:136)

                        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3562)

                        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2648)

                        at org.hisp.dhis.dxf2.common.JacksonUtils.fromJson(JacksonUtils.java:154)

                        at org.hisp.dhis.webapi.controller.MetaDataController.importJson(MetaDataController.java:249)

                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

                        at java.lang.reflect.Method.invoke(Unknown Source)

                        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)

                        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)

                        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

                        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)

                        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)

                        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

                        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

                        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

                        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)

                        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)

                        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

                        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)

                        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                        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.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:93)

                        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.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:140)

                        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:115)

                        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

                        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57)

                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

                        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:107)

                        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:344)

                        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)

                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                        at org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:82)

                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                        at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)

                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

                        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

                        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

                        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

                        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

                        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

                        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

                        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

                        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

                        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)

                        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

                        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

                        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

                        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)

                        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)

                        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)

                        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

                        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

                        at java.lang.Thread.run(Unknown Source)

                  `</small>
_______________________________________________ Mailing list: [https://launchpad.net/~dhis2-devs](https://launchpad.net/%7Edhis2-devs)
Post to : dhis2-devs@lists.launchpad.net
Unsubscribe : [https://launchpad.net/~dhis2-devs](https://launchpad.net/%7Edhis2-devs)
More help : [https://help.launchpad.net/ListHelp](https://help.launchpad.net/ListHelp)

                <small> **David Huser**

                  Informatics Specialist

                  Swiss Centre for International Health

                  Tel:                         +41 79 740 63 41

                  Skype: dafhus

                  [david.huser@swisstph.org](http://david.huser@swisstph.org)



                  **Swiss Tropical and Public Health Institute**

                  Socinstrasse 57, P.O. Box

                  4002 Basel, Switzerland

                  [www.swisstph.ch](http://www.swisstph.ch)

                </small>
        _______________________________________________

        Mailing list: [https://launchpad.net/~dhis2-devs](https://launchpad.net/%7Edhis2-devs)

        Post to     : dhis2-devs@lists.launchpad.net

        Unsubscribe : [https://launchpad.net/~dhis2-devs](https://launchpad.net/%7Edhis2-devs)

        More help   : [https://help.launchpad.net/ListHelp](https://help.launchpad.net/ListHelp)

  <small>
    **David Huser**

    Informatics Specialist

    Swiss Centre for International Health

    Tel: +41 79 740 63 41

    Skype: dafhus

    david.huser@swisstph.org

    **Swiss Tropical and Public Health Institute**

    Socinstrasse 57, P.O. Box

    4002 Basel, Switzerland

    [www.swisstph.ch](www.swisstph.ch)

  </small>

“http://localhost:8081/api/metaData”