hal4j / uritemplate

Java implementation of RFC 6570 (URI template)
Apache License 2.0
3 stars 0 forks source link

{?keys*} expansion not RFC 6570 compliant with explode true #1

Closed ihodgesibm closed 2 years ago

ihodgesibm commented 2 years ago

If there is a template specified as:

/path1SF/{p1}/{p2}/{p3}{?qp2}{&qp1}{&qp3*}

where p1/qp1 is primitive, p2/qp2 a list, and p3/qp3 an object of key value pairs

when the template is expanded the result is: /path1SF/Hello/One,Two,Three/property1,zx,property2,qx?qp2=One&qp2=Two&qp2=Three&qp1=Hello&qp3=property1&qp3=zx&qp3=property2&qp3=qx

According to RFC 6570, see level 4 example {?keys*} the format of qp3 as an object of key value pairs is &property1=zx&property2=qx

So the full expansion of the template should be

/path1SF/Hello/One,Two,Three/property1,zx,property2,qx?qp2=One&qp2=Two&qp2=Three&qp1=Hello&property1=zx&property2=qx

ivan-gammel commented 2 years ago

@hurjmc thank you for reporting the first bug in this project! I will look at it on this weekend.

ihodgesibm commented 2 years ago

Thanks Ivan. Regards, Ian..

ihodgesibm commented 2 years ago

Hi @ivan-gammel,

Another related expansion issue with matrix (explode false) as follows:

Test 5 path style=matrix explode=false /path1/{;p1}/{;p2}/{;p3} /path1/;Hello/;One,Two,Three/;zx,80,dragon,32k Test Fail: should be /path1/;p1=Hello/;p2=One,Two,Three/;p3=zx,80,dragon,32k

Regards. Ian..

ivan-gammel commented 2 years ago

Both bugs fixed and will be released with v1.3.0

ihodgesibm commented 2 years ago

Thanks Ivan.