dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #38132
Re: TrackedEntityInstance update
Hi Alan,
while perhaps not fixing the real problem, I have fixed a nullpointer
vulnerability in that method now in trunk.
Lars
On Fri, Jun 19, 2015 at 8:36 AM, Alan Hill <ahill@xxxxxxxxxx> wrote:
> OK...will do.
>
> Thanks
>
> Alan
>
> On Thu, Jun 18, 2015 at 11:34 PM, Morten Olav Hansen <mortenoh@xxxxxxxxx>
> wrote:
>
>> Hi
>>
>> I was not able to reproduce this locally. I created a simple TE with two
>> TEAs (name, gender), and I was able to both create and update these without
>> any issues. If I changed the gender to be an invalid gender, it would
>> complain back with invalid option for optionset.
>>
>> I think this is still related to your optionSet, could you please try and
>> create a new one through the UI, and a few options, and see if that works?
>>
>> --
>> Morten
>>
>> On Fri, Jun 19, 2015 at 12:24 PM, Morten Olav Hansen <mortenoh@xxxxxxxxx>
>> wrote:
>>
>>> Hm, ok. I will need to look more into this then, from the stack trace is
>>> seems related to invalid code. I will try it out here locally and see if I
>>> an reproduce.
>>>
>>> --
>>> Morten
>>>
>>> On Fri, Jun 19, 2015 at 11:59 AM, Alan Hill <ahill@xxxxxxxxxx> wrote:
>>>
>>>> Hi again and thanks so much for getting back to me so quickly.
>>>>
>>>> I'm pretty confident that all of my options have codes as per the
>>>> option set JSON:
>>>>
>>>>
>>>> - options:
>>>> [
>>>> -
>>>> {
>>>> - id: "Fnkf3CXYjtU",
>>>> - name: "northern",
>>>> - code: "1",
>>>> - created: "2015-06-18T22:27:50.583+0000",
>>>> - lastUpdated: "2015-06-18T23:51:10.554+0000",
>>>> - href: "http://localhost:8000/api/options/Fnkf3CXYjtU"
>>>> },
>>>> -
>>>> {
>>>> - id: "p6xLuMAZ6Kx",
>>>> - name: "central",
>>>> - code: "2",
>>>> - created: "2015-06-18T22:27:50.720+0000",
>>>> - lastUpdated: "2015-06-18T23:51:10.675+0000",
>>>> - href: "http://localhost:8000/api/options/p6xLuMAZ6Kx"
>>>> },
>>>> -
>>>> {
>>>> - id: "XJa5QiUzKgb",
>>>> - name: "southern",
>>>> - code: "3",
>>>> - created: "2015-06-18T22:27:50.910+0000",
>>>> - lastUpdated: "2015-06-18T23:51:10.803+0000",
>>>> - href: "http://localhost:8000/api/options/XJa5QiUzKgb"
>>>> }
>>>> ]
>>>>
>>>>
>>>> The value I'm setting is "3" which there is definitely an option for.
>>>>
>>>> Cheers
>>>>
>>>> Alan
>>>>
>>>>
>>>> On Thu, Jun 18, 2015 at 9:44 PM, Morten Olav Hansen <mortenoh@xxxxxxxxx
>>>> > wrote:
>>>>
>>>>> I was looking at the stack trace, and the code it points to, is
>>>>> checking the option.code against the value you are sending in.. but it
>>>>> seems maybe some of your options don't have code? which is required
>>>>>
>>>>> --
>>>>> Morten
>>>>>
>>>>> On Fri, Jun 19, 2015 at 11:28 AM, Alan Hill <ahill@xxxxxxxxxx> wrote:
>>>>>
>>>>>> Hi again Morten...sorry, can you clarify, where do you see that?
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Alan
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Jun 18, 2015 at 6:56 PM, Morten Olav Hansen <
>>>>>> mortenoh@xxxxxxxxx> wrote:
>>>>>>
>>>>>>> Hi Alan
>>>>>>>
>>>>>>> Seems like you have an invalid optionset, i..e an optionset without
>>>>>>> code?
>>>>>>>
>>>>>>> --
>>>>>>> Morten
>>>>>>>
>>>>>>> On Fri, Jun 19, 2015 at 7:47 AM, Alan Hill <ahill@xxxxxxxxxx> wrote:
>>>>>>>
>>>>>>>> Hi there
>>>>>>>>
>>>>>>>> *Version 2.20-SNAPSHOT, Build #19453*
>>>>>>>>
>>>>>>>> Trying to update a TrackedEntityInstance but this is failing for
>>>>>>>> attributes that have an optionSet assigned.
>>>>>>>>
>>>>>>>> I've stripped my JSON update down to a single attribute.
>>>>>>>>
>>>>>>>>
>>>>>>>> *API call:*
>>>>>>>>
>>>>>>>> PUT http://localhost:8000/api/trackedEntityInstances/gGCuCUO5Iu0
>>>>>>>>
>>>>>>>>
>>>>>>>> *JSON: Here's the json I'm sending for the update:*
>>>>>>>>
>>>>>>>> {
>>>>>>>> "trackedEntity":"An3UR3eaTTa",
>>>>>>>> "orgUnit":"FEGZA6BEAjj",
>>>>>>>> "attributes":[
>>>>>>>> {"attribute":"kxvbQMX8Yss","value":"3"}
>>>>>>>> ]
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> *Here's the TrackedEntityAttribute:*
>>>>>>>>
>>>>>>>> {
>>>>>>>>
>>>>>>>> - id: "kxvbQMX8Yss",
>>>>>>>> - created: "2015-06-18T22:27:51.242+0000",
>>>>>>>> - name: "DHS 2010 - sample domain",
>>>>>>>> - href: "
>>>>>>>> http://localhost:8000/api/trackedEntityAttributes/kxvbQMX8Yss",
>>>>>>>> - lastUpdated: "2015-06-18T22:27:51.286+0000",
>>>>>>>> - code: "DHS 2010 - v023",
>>>>>>>> - shortName: "DHS 2010 - sample domain",
>>>>>>>> - displayDescription: "sample domain",
>>>>>>>> - unique: false,
>>>>>>>> - programScope: false,
>>>>>>>> - displayInListNoProgram: false,
>>>>>>>> - orgunitScope: false,
>>>>>>>> - displayOnVisitSchedule: false,
>>>>>>>> - dataDimension: true,
>>>>>>>> - description: "sample domain",
>>>>>>>> - externalAccess: false,
>>>>>>>> - valueType: "optionSet",
>>>>>>>> - confidential: false,
>>>>>>>> - publicAccess: "rw------",
>>>>>>>> - allItems: false,
>>>>>>>> - inherit: false,
>>>>>>>> - dimension: "kxvbQMX8Yss",
>>>>>>>> - optionSetValue: true,
>>>>>>>> - displayName: "DHS 2010 - sample domain",
>>>>>>>> - displayShortName: "DHS 2010 - sample domain",
>>>>>>>> - optionSet:
>>>>>>>> {
>>>>>>>> - id: "CnFzpGPWbJg",
>>>>>>>> - name: "DHS 2010 - sample domain",
>>>>>>>> - code: "DHS 2010 - v023",
>>>>>>>> - created: "2015-06-18T22:27:51.101+0000",
>>>>>>>> - lastUpdated: "2015-06-18T23:51:10.981+0000",
>>>>>>>> - href: "http://localhost:8000/api/optionSets/CnFzpGPWbJg"
>>>>>>>> },
>>>>>>>> - access:
>>>>>>>> {
>>>>>>>> - update: true,
>>>>>>>> - externalize: false,
>>>>>>>> - write: true,
>>>>>>>> - delete: true,
>>>>>>>> - read: true,
>>>>>>>> - manage: true
>>>>>>>> },
>>>>>>>> - user:
>>>>>>>> {
>>>>>>>> - id: "M4XhsWJlIhk",
>>>>>>>> - name: "admin admin",
>>>>>>>> - created: "2015-06-18T15:26:06.062+0000",
>>>>>>>> - lastUpdated: "2015-06-18T16:07:29.473+0000",
>>>>>>>> - href: "http://localhost:8000/api/users/M4XhsWJlIhk"
>>>>>>>> },
>>>>>>>> - attributeValues: [ ],
>>>>>>>> - items: [ ],
>>>>>>>> - userGroupAccesses: [ ]
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> *Here's the OptionSet:*
>>>>>>>>
>>>>>>>> {
>>>>>>>>
>>>>>>>> - lastUpdated: "2015-06-18T23:51:10.981+0000",
>>>>>>>> - code: "DHS 2010 - v023",
>>>>>>>> - id: "CnFzpGPWbJg",
>>>>>>>> - created: "2015-06-18T22:27:51.101+0000",
>>>>>>>> - name: "DHS 2010 - sample domain",
>>>>>>>> - href: "http://localhost:8000/api/optionSets/CnFzpGPWbJg",
>>>>>>>> - publicAccess: "rw------",
>>>>>>>> - version: 0,
>>>>>>>> - externalAccess: false,
>>>>>>>> - displayName: "DHS 2010 - sample domain",
>>>>>>>> - access:
>>>>>>>> {
>>>>>>>> - update: true,
>>>>>>>> - externalize: false,
>>>>>>>> - write: true,
>>>>>>>> - delete: true,
>>>>>>>> - read: true,
>>>>>>>> - manage: true
>>>>>>>> },
>>>>>>>> - user:
>>>>>>>> {
>>>>>>>> - id: "M4XhsWJlIhk",
>>>>>>>> - name: "admin admin",
>>>>>>>> - created: "2015-06-18T15:26:06.062+0000",
>>>>>>>> - lastUpdated: "2015-06-18T16:07:29.473+0000",
>>>>>>>> - href: "http://localhost:8000/api/users/M4XhsWJlIhk"
>>>>>>>> },
>>>>>>>> - userGroupAccesses: [ ],
>>>>>>>> - options:
>>>>>>>> [
>>>>>>>> -
>>>>>>>> {
>>>>>>>> - id: "Fnkf3CXYjtU",
>>>>>>>> - name: "northern",
>>>>>>>> - code: "1",
>>>>>>>> - created: "2015-06-18T22:27:50.583+0000",
>>>>>>>> - lastUpdated: "2015-06-18T23:51:10.554+0000",
>>>>>>>> - href: "http://localhost:8000/api/options/Fnkf3CXYjtU"
>>>>>>>> },
>>>>>>>> -
>>>>>>>> {
>>>>>>>> - id: "p6xLuMAZ6Kx",
>>>>>>>> - name: "central",
>>>>>>>> - code: "2",
>>>>>>>> - created: "2015-06-18T22:27:50.720+0000",
>>>>>>>> - lastUpdated: "2015-06-18T23:51:10.675+0000",
>>>>>>>> - href: "http://localhost:8000/api/options/p6xLuMAZ6Kx"
>>>>>>>> },
>>>>>>>> -
>>>>>>>> {
>>>>>>>> - id: "XJa5QiUzKgb",
>>>>>>>> - name: "southern",
>>>>>>>> - code: "3",
>>>>>>>> - created: "2015-06-18T22:27:50.910+0000",
>>>>>>>> - lastUpdated: "2015-06-18T23:51:10.803+0000",
>>>>>>>> - href: "http://localhost:8000/api/options/XJa5QiUzKgb"
>>>>>>>> }
>>>>>>>> ]
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>> However, this fails and I see an exception in tomcat logs:
>>>>>>>>
>>>>>>>> SEVERE: Servlet.service() for servlet [webapi] in context with path
>>>>>>>> [] threw exception [Request processing failed; nested exception is
>>>>>>>> java.lang.NullPointerException] with root cause
>>>>>>>> java.lang.NullPointerException
>>>>>>>> at
>>>>>>>> org.hisp.dhis.trackedentity.TrackedEntityAttribute.isValidOptionValue(TrackedEntityAttribute.java:162)
>>>>>>>> at
>>>>>>>> org.hisp.dhis.dxf2.events.trackedentity.AbstractTrackedEntityInstanceService.validateAttributeType(AbstractTrackedEntityInstanceService.java:582)
>>>>>>>> at
>>>>>>>> org.hisp.dhis.dxf2.events.trackedentity.AbstractTrackedEntityInstanceService.checkAttributes(AbstractTrackedEntityInstanceService.java:404)
>>>>>>>> at
>>>>>>>> org.hisp.dhis.dxf2.events.trackedentity.AbstractTrackedEntityInstanceService.updateTrackedEntityInstance(AbstractTrackedEntityInstanceService.java:293)
>>>>>>>> at
>>>>>>>> org.hisp.dhis.dxf2.events.trackedentity.JacksonTrackedEntityInstanceService.updateTrackedEntityInstanceJson(JacksonTrackedEntityInstanceService.java:198)
>>>>>>>> at sun.reflect.GeneratedMethodAccessor895.invoke(Unknown
>>>>>>>> Source)
>>>>>>>> at
>>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>> at java.lang.reflect.Method.invoke(Method.java:606)
>>>>>>>> at
>>>>>>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
>>>>>>>> ...
>>>>>>>>
>>>>>>>>
>>>>>>>> Any advice greatly appreciated.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Alan
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>>>> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>>>> More help : https://help.launchpad.net/ListHelp
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> 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 <https://www.dhis2.org>
Follow ups
References