Hi Nicolay

The main use-case for exclude was to remove versions that was added to the
type level, so if you class was annotated with `@ApiVersion(V23, V24)` you
could add `@ApiVersion(exclude = V23)` on specific methods.

I think it could be added for `ALL` also, it's just not there yet. Let me
have a look tomorrow.

-- 
Morten Olav Hansen
Senior Engineer, DHIS 2
University of Oslo
http://www.dhis2.org

On Thu, Jun 9, 2016 at 4:26 PM, Nicolay Ramm <nico...@dhis2.org> wrote:

> Hi Morten,
>
> this problem surfaced when I added an endpoint for updating custom forms
> by POSTing json to /api/*/dataSets/{uid}/form
>
> This after discussing with Halvdan, I annotated the endpoint with the
> following version:
>
> @ApiVersion( value = ApiVersion.Version.ALL, exclude = ApiVersion.Version.V23 
> )
>
> I would expect this to mean that the endpoint should work for default and
> 24, but not for 23. In practice however, the endpoint works for 23 as well.
>
> To be painfully explicit, I would expect this to work:
>
> curl -u admin:district :8080/api/dataSets/BfMAe6Itzgt/form -X POST -H
> 'content-type: application/json' -d '{"display":"NORMAL"}' -v
> As well as this:
>
> curl -u admin:district :8080/api/24/dataSets/BfMAe6Itzgt/form -X POST -H
> 'content-type: application/json' -d '{"display":"NORMAL"}' -v
> But *not* this:
>
> curl -u admin:district :8080/api/23/dataSets/BfMAe6Itzgt/form -X POST -H
> 'content-type: application/json' -d '{"display":"NORMAL"}' -v
>
> This is not really a problem in this case of course. But I guess that
> adding new endpoints that shouldn't work on older versions will be a pretty
> common use case for API versioning, so this is probably a useful test case.
>
>
> Nicolay Ramm
> Front end developer, DHIS 2
> University of Oslo
> https://www.dhis2.org
>
> On Thu, Jun 9, 2016 at 10:07 AM, Morten Olav Hansen <mor...@dhis2.org>
> wrote:
>
>> Hi Halvdan
>>
>> This should be fixed now, the issue was that even though @RequestMapping
>> will default to GET (if not method is set) the annotation doesn't default
>> to GET. I'm now mapping method = {} to method = GET internally, which means
>> that your issues should be gone.
>>
>> I think there will be similar issues if you want and endpoint for
>> application/json to have a different version than application/xml, but I
>> think that is taking this versioning a bit far.
>>
>> --
>> Morten Olav Hansen
>> Senior Engineer, DHIS 2
>> University of Oslo
>> http://www.dhis2.org
>>
>> On Thu, Jun 9, 2016 at 12:51 PM, Morten Olav Hansen <mor...@dhis2.org>
>> wrote:
>>
>>>
>>> On Thu, Jun 9, 2016 at 12:45 PM, Morten Olav Hansen <mor...@dhis2.org>
>>> wrote:
>>>
>>>> Not 100% sure what you mean here, we already have POST/PUT with
>>>> different methods on / vs /24 etc (for same mapping)... but I will try it
>>>> out, maybe there are some bugs there
>>>>
>>>
>>> Hm, I made some tests around this now.. and I see there are some issues,
>>> will try to fix today or tomorrow (working on it now)
>>>
>>> --
>>> Morten Olav Hansen
>>> Senior Engineer, DHIS 2
>>> University of Oslo
>>> http://www.dhis2.org
>>>
>>
>>
>> --
>> Mailing list: https://launchpad.net/~dhis2-devs-core
>> Post to     : dhis2-devs-core@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~dhis2-devs-core
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
-- 
Mailing list: https://launchpad.net/~dhis2-devs-core
Post to     : dhis2-devs-core@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs-core
More help   : https://help.launchpad.net/ListHelp

Reply via email to