[jbosstools-dev] Processing JAX-RS operation URLs with parameters

Max Rydahl Andersen max.andersen at redhat.com
Tue Apr 24 02:31:56 EDT 2012


Hey Brian,

moved this to the right mailinglist.

> JBIDE-11337 is fixed in trunk. URL are now properly exported into the WS Tester. 
> Have fun ;-)
> 

cool.

>> I've been looking at the issue about the JAX-RS operation URLs with parameters (for the JIRA I can't seem to locate but I know exists) in the WS Tester. It may be JBIDE-11337, but I think that actually is related and not exactly the same. What I've run into are a few intriguing issues...
>> 
>> **Problem #1**
>> 
>> So let's say that we have a REST application, such as the Kitchen sink example. It by default has two GET methods - one without any parameters and one that takes a single id parameter. In the Project Explorer, you see the following tree:
>> 
>>   * jboss-as-kitchensink
>>      - GET /rest/members
>>      - GET /rest/members/{id:[0-9][0-9]*}
>> 
>> The "Uri Path Template" associated with the second parameterized GET (that you see in the tree) is: "/rest/members/{id:[0-9][0-9]*}"
>> 
>> When it gets translated to an actual server-based URL (when you do Run As... and test it in the WS Tester), it becomes: "http://localhost:8080/jboss-as-kitchensink/[0-9][0-9]*}"
>> 
>> Notice anything odd about the URL vs. the URI? In WSTesterClientDelegate, the computeEndpointURI method translates the URI to an Eclipse IPath object, which seems to truncate the leading part of the parameter text - "{id:" disappears, leaving an odd (and invalid) URL without the extra bits. I think this is what's actually happening with JBIDE-11337.
>> 
>> The actual URL should be: "http://localhost:8080/jboss-as-kitchensink/rest/members/{id:[0-9][0-9]*}"
>> 
>> So something is happening in that computeEndpointURI method that's doing a hatchet job on the URL. That's problem #1. If we can solve that, we can deal with the other issue which is also entertaining. 

yeah, sounds like that is fixed by xavier now.

Using IPath is not right here though - IPath obeys OS filesystem "laws" I believe ?

>> **Problem #2**
>> 
>> With a valid URL that includes the "shape" of the URL parameters as RegEx, we need the user to change it and provide his or her own value that is valid based on that Regular Expression. I'm guessing the number of parameters could be anything from none to 100, though I'm not sure why anyone would want to go that crazy. So that makes an educated guess at probably 1-5 parameters to deal with on the URL. 
>> 
>> Here are the possibilities I've come up with for handling parameter input:
>> 
>> 1) Leave it as is, showing the full URL with the parameter data as it comes out of the JAX-RS tooling.
>> 
>> 2) Pop up a dialog requesting & validating values for the named parameters included in the URL, then replace the expressions with the user-provided values. On the dialog have an option to turn off this feature and allow the user to turn it back on in the Tester Preferences (which don't exist currently).
>> 
>> Though I'm not a fan of automatically throwing dialogs in the user's face, this would present the user with the options they need at the time they need them. 
>> 
>> I'm open to suggestions on how to handle this. 

IMO, I would lave the URL as it is and then when you press Run detect this is an URL with {} stuff in it which needs to be replaced.

Show the dialog in that case and ask for input and when user press ok, remember the values for that URL, execute the generated url but keep the original URL in the dialog.

Next time I press Ok, the dialog is still shown but now remembering the values so a simply press on Ok works.

That allows rapid execution while still allowing user to actually enter values he might want changed.

At some point you could have a [ ] replace URL with generated URL checkbox that would allow for skipping the dialog since it is no longer a {} based url.

WDYT ?

>> Max, do you have any clue what that JIRA was for the URL-parameter-processing request? 

not yet, i'll find it eventually :)

/max

>> 
>> --Fitz
>> 
>> _______________________________
>> Brian Fitzpatrick (aka "Fitz")
>> Senior Software Engineer, SOA-P
>> JBoss by Red Hat
>> 
> 




More information about the jbosstools-dev mailing list