Hi, Just following up on this. I similarly would like to bulk delete Options, but am not successful in this either.
When POSTing to api/25/options?strategy=DELETE with this payload: { "options": [ { "id": "GNJOoVg1CdI" }, { "id": "ZPRArfldlqK" } ] } I get this returned: { "httpStatus": "Conflict", "httpStatusCode": 409, "status": "WARNING", "message": "One more more errors occurred, please see full details in import report.", "response": { "responseType": "ObjectReport", "uid": "ySD4jtmXNrG", "klass": "org.hisp.dhis.option.Option", "errorReports": [ { "message": "Missing required property `name`.", "mainKlass": "org.hisp.dhis.option.Option", "errorKlass": "java.lang.String", "errorCode": "E4000" } ] } } and POSTING to api/25/metadata?strategy=DELETE with this payload: { "options": [ { "id": "GNJOoVg1CdI" }, { "id": "ZPRArfldlqK" } ] } returns this: {"status":"ERROR","stats":{"created":0,"updated":0,"deleted":0,"ignored":2,"total":2},"typeReports":[{"klass":"org.hisp.dhis.option.Option","stats":{"created":0,"updated":0,"deleted":0,"ignored":2,"total":2},"objectReports":[{"klass":"org.hisp.dhis.option.Option","index":0,"uid":"GNJOoVg1CdI","errorReports":[{"message":"Missing required property `name`.","mainKlass":"org.hisp.dhis.option.Option","errorKlass":"java.lang.String","errorCode":"E4000"}]},{"klass":"org.hisp.dhis.option.Option","index":1,"uid":"ZPRArfldlqK","errorReports":[{"message":"Missing required property `name`.","mainKlass":"org.hisp.dhis.option.Option","errorKlass":"java.lang.String","errorCode":"E4000"}]}]}]} On Tue, Mar 7, 2017 at 12:55 PM, Lorill Crees <lcr...@2paths.com> wrote: > Hi, > > I am attempting to do a bulk deletion of ProgramDataElements via the Web > API. I am able to delete one by one by using Http DELETE: > > api/25/programDataElements/s3L7Qamxs0s > > I am not successful when attempting to POST to: > > api/25/programDataElements?strategy=DELETE > > with the payload: > > { > "programDataElements":[ > { > "id":"B6GVF8xN0QL" > }, > { > "id":"VvLbQPQH4xs" > } > ] > } > > or > > { > "programDataElements":[ > { > "programDataElement":"B6GVF8xN0QL" > }, > { > "programDataElement":"VvLbQPQH4xs" > } > ] > } > > A nullpointer is thrown in the logs (pasted below). > > I was unable to find documentation specifically for programDataElements. > Is bulk deletion even possible? If so, do I need to be doing something > differently or is this a bug? > > Thanks, > > Lorill > > Version: > 2.25 > Build revision: > 910b13a > Build date: > 2017-03-07 08:39 > > > * INFO 2017-03-07 12:53:13,559 (admin) Import:Start > (DefaultMetadataImportService.java [http-nio-8090-exec-10]) > > * INFO 2017-03-07 12:53:13,570 (admin) Import:Preheat[REFERENCE] took > 0.01 seconds (DefaultPreheatService.java [http-nio-8090-exec-10]) > > java.lang.NullPointerException > > at org.hisp.dhis.program.ProgramDataElement.getName( > ProgramDataElement.java:79) > > at org.hisp.dhis.common.BaseIdentifiableObject.getDisplayName( > BaseIdentifiableObject.java:266) > > at org.hisp.dhis.common.IdentifiableObjectUtils.getDisplayName( > IdentifiableObjectUtils.java:341) > > at org.hisp.dhis.dxf2.metadata.objectbundle.DefaultObjectBundleValidationS > ervice.validateBySchemas(DefaultObjectBundleValidationService.java:491) > > at org.hisp.dhis.dxf2.metadata.objectbundle.DefaultObjectBundleValidationS > ervice.validate(DefaultObjectBundleValidationService.java:156) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:62) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > > at java.lang.reflect.Method.invoke(Method.java:483) > > at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection > (AopUtils.java:302) > > at org.springframework.aop.framework.ReflectiveMethodInvocation. > invokeJoinpoint(ReflectiveMethodInvocation.java:190) > > at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:157) > > at org.springframework.transaction.interceptor.TransactionInterceptor$1. > proceedWithInvocation(TransactionInterceptor.java:99) > > at org.springframework.transaction.interceptor.TransactionAspectSupport. > invokeWithinTransaction(TransactionAspectSupport.java:281) > > at org.springframework.transaction.interceptor. > TransactionInterceptor.invoke(TransactionInterceptor.java:96) > > at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:179) > > at org.springframework.aop.framework.JdkDynamicAopProxy. > invoke(JdkDynamicAopProxy.java:208) > > at com.sun.proxy.$Proxy187.validate(Unknown Source) > > at org.hisp.dhis.dxf2.metadata.DefaultMetadataImportService. > importMetadata(DefaultMetadataImportService.java:119) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:62) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > > at java.lang.reflect.Method.invoke(Method.java:483) > > at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection > (AopUtils.java:302) > > at org.springframework.aop.framework.ReflectiveMethodInvocation. > invokeJoinpoint(ReflectiveMethodInvocation.java:190) > > at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:157) > > at org.springframework.transaction.interceptor.TransactionInterceptor$1. > proceedWithInvocation(TransactionInterceptor.java:99) > > at org.springframework.transaction.interceptor.TransactionAspectSupport. > invokeWithinTransaction(TransactionAspectSupport.java:281) > > at org.springframework.transaction.interceptor. > TransactionInterceptor.invoke(TransactionInterceptor.java:96) > > at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:179) > > at org.springframework.aop.framework.JdkDynamicAopProxy. > invoke(JdkDynamicAopProxy.java:208) > > at com.sun.proxy.$Proxy188.importMetadata(Unknown Source) > > at org.hisp.dhis.webapi.controller.AbstractCrudController.postJsonObject( > AbstractCrudController.java:589) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > > at sun.reflect.NativeMethodAccessorImpl.invoke( > NativeMethodAccessorImpl.java:62) > > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > > at java.lang.reflect.Method.invoke(Method.java:483) > > at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke( > InvocableHandlerMethod.java:221) > > at org.springframework.web.method.support.InvocableHandlerMethod. > invokeForRequest(InvocableHandlerMethod.java:136) > > at org.springframework.web.servlet.mvc.method.annotation. > ServletInvocableHandlerMethod.invokeAndHandle( > ServletInvocableHandlerMethod.java:110) > > at org.springframework.web.servlet.mvc.method.annotation. > RequestMappingHandlerAdapter.invokeHandlerMethod( > RequestMappingHandlerAdapter.java:817) > > at org.springframework.web.servlet.mvc.method.annotation. > RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter. > java:731) > > 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:968) > > at org.springframework.web.servlet.FrameworkServlet. > doPost(FrameworkServlet.java:870) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) > > at org.springframework.web.servlet.FrameworkServlet. > service(FrameworkServlet.java:844) > > 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:98) > > 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.SecurityContextPersistenceFilt > er.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:346) > > at org.springframework.web.filter.DelegatingFilterProxy.doFilter( > DelegatingFilterProxy.java:262) > > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:239) > > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:206) > > at org.hisp.dhis.servlet.filter.HttpUrlPatternFilter.doFilter( > HttpUrlPatternFilter.java:105) > > 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:87) > > at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFil > ter.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:110) > > 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.hibernate5.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:121) > > 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:610) > > 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.coyote.http11.Http11NioProtocol$Http11ConnectionHandler. > process(Http11NioProtocol.java:223) > > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1517) > > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > run(NioEndpoint.java:1474) > > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) > > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) > > at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( > TaskThread.java:61) > > at java.lang.Thread.run(Thread.java:745) > > > -- > Lorill Crees > Project Leader / Senior Developer > 2Paths Solutions Ltd. <http://www.2paths.com> > > lcr...@2paths.com > skype: lorill2paths > (604) 689-4123 x 15 <(604)%20689-4123> > -- Lorill Crees Project Leader / Senior Developer 2Paths Solutions Ltd. <http://www.2paths.com> lcr...@2paths.com skype: lorill2paths (604) 689-4123 x 15
_______________________________________________ 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