[
https://issues.apache.org/jira/browse/HTTPCORE-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12514778
]
Nels N. Nelson commented on HTTPCORE-104:
-----------------------------------------
Hello Oleg, Roland,
Thanks for your time with this issue.
I too would indeed like to be able to make my app be portable to the Java
ME platform. I know of at least one "competing" application in particular that
is compatible with 1.3, which is why I planned to make my project also be
portable to 1.3. I was not going to refactor my project to work with 1.3 until
much later, but since the changes I suggested will *never* be implemented, and
for good reasons, it seems prudent to refactor my project right away.
I am currently researching query string handling techniques that meet this
portability requirement, but I would prefer to use any code that already exists
in, or is based on, or is related to, the httpcore project. Do you happen to
know of anything like that already?
-Nels
> Handler Registry Should Match Using Regular Expressions
> -------------------------------------------------------
>
> Key: HTTPCORE-104
> URL: https://issues.apache.org/jira/browse/HTTPCORE-104
> Project: HttpComponents Core
> Issue Type: Improvement
> Components: HttpCore
> Affects Versions: 4.0-alpha4, 4.0-alpha5, 4.0-alpha6, 4.0-beta1, 4.0-rc1
> Reporter: Nels N. Nelson
> Fix For: 4.0-alpha6
>
>
> Hello!
> In HttpRequestHandlerRegistry, the method matchUriRequestPattern(final String
> pattern, final String requestUri) uses what is, in my opinion, a poor
> strategy for pattern matching.
> This method is better and provides more flexibility to developers trying to
> add new Handlers:
> <code>
> protected boolean matchUriRequestPattern(final String pattern,
> final URI requestUri)
> {
> try {
> String path = requestUri.getPath();
> Pattern p = Pattern.compile(pattern);
> Matcher matcher = p.matcher(path);
> return matcher.matches();
> }
> catch (java.util.regex.PatternSyntaxException ex) {
> return false;
> }
> }
> </code>
> These changes would make this code far more accurate:
> <code>
> protected void doService(
> final HttpRequest request,
> final HttpResponse response,
> final HttpContext context) throws HttpException, IOException {
> HttpRequestHandler handler = null;
> if (this.handlerResolver != null) {
> URI requestURI = request.getRequestLine().getUri();
> handler = this.handlerResolver.lookup(requestURI);
> }
> if (handler != null) {
> handler.handle(request, response, context);
> } else {
> response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED);
> }
> }
> </code>
> These changes would allow developers to add new custom handlers in this way:
> <code>
> String pattern = ".*\\.extension";
> HttpRequestHandler handler = new HttpServletHandler(...);
> HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry();
> reqistry.register(pattern, handler);
> </code>
> Currently, my version of the HttpComponents core software uses
> <code>URI</code> to represent the <code>requestURI</code> parameter
> throughout the code. This has provided greater convenience, error handling
> (in the instantiation of the <code>BasicRequestLine</code> class, for
> instance), and flexibility of extension. I can enumerate the specifics on
> this, if necessary, but I believe that would be a discussion for a separate
> Jira Issue, which I will happily create, if I am convinced that its priority
> would be at least major, which currently, I am not. Such a change would
> cause several changes throughout multiple classes, stemming from changes to
> the <code>RequestLine</code> interface as follows:
> <code>
> public interface RequestLine {
> String getMethod();
> HttpVersion getHttpVersion();
> URI getUri();
>
> }
> </code>
> Thanks for your attention to this issue.
> -Nels
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]