Hi Morten, Sure. Does this mean that both of those should be possible? Here are the tickets:
https://jira.dhis2.org/browse/DHIS2-1241 https://jira.dhis2.org/browse/DHIS2-1242 Thanks, Lorill On Thu, Mar 9, 2017 at 3:40 PM, Morten Olav Hansen <mor...@dhis2.org> wrote: > Hi Lorill > > Would you mind filing an issue in JIRA? > > -- > Morten Olav Hansen > Senior Engineer, DHIS 2 > University of Oslo > http://www.dhis2.org > > On Fri, Mar 10, 2017 at 4:16 AM, Lorill Crees <lcr...@2paths.com> wrote: > >> 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","errorKla >> ss":"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","errorKla >> ss":"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(ProgramData >>> Element.java:79) >>> >>> at org.hisp.dhis.common.BaseIdentifiableObject.getDisplayName(B >>> aseIdentifiableObject.java:266) >>> >>> at org.hisp.dhis.common.IdentifiableObjectUtils.getDisplayName( >>> IdentifiableObjectUtils.java:341) >>> >>> at org.hisp.dhis.dxf2.metadata.objectbundle.DefaultObjectBundle >>> ValidationService.validateBySchemas(DefaultObjectBundleValid >>> ationService.java:491) >>> >>> at org.hisp.dhis.dxf2.metadata.objectbundle.DefaultObjectBundle >>> ValidationService.validate(DefaultObjectBundleValidationServ >>> ice.java:156) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >>> ssorImpl.java:62) >>> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:483) >>> >>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>> gReflection(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.TransactionInter >>> ceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) >>> >>> at org.springframework.transaction.interceptor.TransactionAspec >>> tSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor.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.imp >>> ortMetadata(DefaultMetadataImportService.java:119) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >>> ssorImpl.java:62) >>> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:483) >>> >>> at org.springframework.aop.support.AopUtils.invokeJoinpointUsin >>> gReflection(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.TransactionInter >>> ceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) >>> >>> at org.springframework.transaction.interceptor.TransactionAspec >>> tSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) >>> >>> at org.springframework.transaction.interceptor.TransactionInter >>> ceptor.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.postJ >>> sonObject(AbstractCrudController.java:589) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> >>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >>> ssorImpl.java:62) >>> >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >>> thodAccessorImpl.java:43) >>> >>> at java.lang.reflect.Method.invoke(Method.java:483) >>> >>> at org.springframework.web.method.support.InvocableHandlerMetho >>> d.doInvoke(InvocableHandlerMethod.java:221) >>> >>> at org.springframework.web.method.support.InvocableHandlerMetho >>> d.invokeForRequest(InvocableHandlerMethod.java:136) >>> >>> at org.springframework.web.servlet.mvc.method.annotation.Servle >>> tInvocableHandlerMethod.invokeAndHandle(ServletInvocableHand >>> lerMethod.java:110) >>> >>> at org.springframework.web.servlet.mvc.method.annotation.Reques >>> tMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHan >>> dlerAdapter.java:817) >>> >>> at org.springframework.web.servlet.mvc.method.annotation.Reques >>> tMappingHandlerAdapter.handleInternal(RequestMappingHandlerA >>> dapter.java:731) >>> >>> at org.springframework.web.servlet.mvc.method.AbstractHandlerMe >>> thodAdapter.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.processRequ >>> est(FrameworkServlet.java:968) >>> >>> at org.springframework.web.servlet.FrameworkServlet.doPost(Fram >>> eworkServlet.java:870) >>> >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) >>> >>> at org.springframework.web.servlet.FrameworkServlet.service(Fra >>> meworkServlet.java:844) >>> >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:291) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:206) >>> >>> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilte >>> r.java:52) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:239) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:206) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:330) >>> >>> at org.springframework.security.web.access.intercept.FilterSecu >>> rityInterceptor.invoke(FilterSecurityInterceptor.java:118) >>> >>> at org.springframework.security.web.access.intercept.FilterSecu >>> rityInterceptor.doFilter(FilterSecurityInterceptor.java:84) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.access.ExceptionTranslation >>> Filter.doFilter(ExceptionTranslationFilter.java:113) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.session.SessionManagementFi >>> lter.doFilter(SessionManagementFilter.java:103) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.authentication.AnonymousAut >>> henticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.servletapi.SecurityContextH >>> olderAwareRequestFilter.doFilter(SecurityContextHolderAwareR >>> equestFilter.java:154) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.savedrequest.RequestCacheAw >>> areFilter.doFilter(RequestCacheAwareFilter.java:45) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.authentication.www.BasicAut >>> henticationFilter.doFilter(BasicAuthenticationFilter.java:201) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:98) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.authentication.AbstractAuth >>> enticationProcessingFilter.doFilter(AbstractAuthenticationPr >>> ocessingFilter.java:199) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.authentication.AbstractAuth >>> enticationProcessingFilter.doFilter(AbstractAuthenticationPr >>> ocessingFilter.java:199) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doF >>> ilter(CustomAuthenticationFilter.java:64) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.oauth2.provider.authentication. >>> OAuth2AuthenticationProcessingFilter.doFilter(OAuth2Authenti >>> cationProcessingFilter.java:140) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.authentication.logout.Logou >>> tFilter.doFilter(LogoutFilter.java:110) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter >>> (AutomaticAccessFilter.java:115) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.header.HeaderWriterFilter.d >>> oFilterInternal(HeaderWriterFilter.java:57) >>> >>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>> (OncePerRequestFilter.java:107) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.context.request.async.WebAs >>> yncManagerIntegrationFilter.doFilterInternal(WebAsyncManager >>> IntegrationFilter.java:50) >>> >>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>> (OncePerRequestFilter.java:107) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.context.SecurityContextPers >>> istenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) >>> >>> at org.springframework.security.web.FilterChainProxy$VirtualFil >>> terChain.doFilter(FilterChainProxy.java:342) >>> >>> at org.springframework.security.web.FilterChainProxy.doFilterIn >>> ternal(FilterChainProxy.java:192) >>> >>> at org.springframework.security.web.FilterChainProxy.doFilter(F >>> ilterChainProxy.java:160) >>> >>> at org.springframework.web.filter.DelegatingFilterProxy.invokeD >>> elegate(DelegatingFilterProxy.java:346) >>> >>> at org.springframework.web.filter.DelegatingFilterProxy.doFilte >>> r(DelegatingFilterProxy.java:262) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:239) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:206) >>> >>> at org.hisp.dhis.servlet.filter.HttpUrlPatternFilter.doFilter(H >>> ttpUrlPatternFilter.java:105) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:239) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:206) >>> >>> at org.springframework.web.filter.ShallowEtagHeaderFilter.doFil >>> terInternal(ShallowEtagHeaderFilter.java:87) >>> >>> at org.hisp.dhis.servlet.filter.ExcludableShallowEtagHeaderFilt >>> er.doFilterInternal(ExcludableShallowEtagHeaderFilter.java:110) >>> >>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>> (OncePerRequestFilter.java:107) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:239) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:206) >>> >>> at org.springframework.orm.hibernate5.support.OpenSessionInView >>> Filter.doFilterInternal(OpenSessionInViewFilter.java:151) >>> >>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>> (OncePerRequestFilter.java:107) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:239) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:206) >>> >>> at org.springframework.web.filter.CharacterEncodingFilter.doFil >>> terInternal(CharacterEncodingFilter.java:121) >>> >>> at org.springframework.web.filter.OncePerRequestFilter.doFilter >>> (OncePerRequestFilter.java:107) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.internalDoFi >>> lter(ApplicationFilterChain.java:239) >>> >>> at org.apache.catalina.core.ApplicationFilterChain.doFilter(App >>> licationFilterChain.java:206) >>> >>> at org.apache.catalina.core.StandardWrapperValve.invoke(Standar >>> dWrapperValve.java:219) >>> >>> at org.apache.catalina.core.StandardContextValve.invoke(Standar >>> dContextValve.java:106) >>> >>> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(A >>> uthenticatorBase.java:502) >>> >>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHo >>> stValve.java:142) >>> >>> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo >>> rtValve.java:79) >>> >>> at org.apache.catalina.valves.AbstractAccessLogValve.invoke(Abs >>> tractAccessLogValve.java:610) >>> >>> at org.apache.catalina.core.StandardEngineValve.invoke(Standard >>> EngineValve.java:88) >>> >>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd >>> apter.java:518) >>> >>> at org.apache.coyote.http11.AbstractHttp11Processor.process(Abs >>> tractHttp11Processor.java:1091) >>> >>> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler >>> .process(AbstractProtocol.java:668) >>> >>> at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionH >>> andler.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(N >>> ioEndpoint.java:1474) >>> >>> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool >>> Executor.java:1142) >>> >>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo >>> lExecutor.java:617) >>> >>> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.r >>> un(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 <(604)%20689-4123> >> >> _______________________________________________ >> 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 >> >> > -- 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