cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sebastian Hoß (JIRA) <j...@apache.org>
Subject [jira] [Created] (CXF-7210) StringIndexOutOfBoundsException during construction of failover request
Date Wed, 11 Jan 2017 12:38:58 GMT
Sebastian Hoß created CXF-7210:
----------------------------------

             Summary: StringIndexOutOfBoundsException during construction of failover request
                 Key: CXF-7210
                 URL: https://issues.apache.org/jira/browse/CXF-7210
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS
            Reporter: Sebastian Hoß
            Priority: Trivial


In {{AbstractClient}} we [have the following|https://github.com/apache/cxf/blob/master/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java#L650]:

{code}
UriBuilder builder = new UriBuilderImpl().uri(newBaseURI);
String basePath = reqURIPath.startsWith(baseURIPath) ? baseURIPath : getBaseURI().getRawPath();

builder.path(reqURIPath.equals(basePath) ? "" : reqURIPath.substring(basePath.length()));
{code}

This covers two out of three potential cases:

1) {{baseURIPath}} and {{reqURIPath}} have the same value which will result in only the base
path being added to the builder.
2) {{baseURIPath}} and {{reqURIPath}} have a different value in which case the builder will
get the base path and and everything from the request path that is not already included in
the base path.

What's missing (and what is causing the exception below) is that the base path might be longer
than the request path in which case {{reqURIPath.substring(basePath.length())}} throws the
following stack trace:

{code}
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -7
  at java.lang.String.substring(String.java:1875)
  at org.apache.cxf.jaxrs.client.AbstractClient.calculateNewRequestURI(AbstractClient.java:652)
  at org.apache.cxf.jaxrs.client.AbstractClient.calculateNewRequestURI(AbstractClient.java:642)
  at org.apache.cxf.jaxrs.client.AbstractClient.retryInvoke(AbstractClient.java:688)
  at org.apache.cxf.jaxrs.client.AbstractClient$RetryableImpl.invoke(AbstractClient.java:1174)
  at org.apache.cxf.clustering.FailoverTargetSelector.performFailover(FailoverTargetSelector.java:207)
  at org.apache.cxf.clustering.FailoverTargetSelector.complete(FailoverTargetSelector.java:166)
  at org.talend.esb.servicelocator.cxf.internal.LocatorTargetSelector.complete(LocatorTargetSelector.java:57)
  at org.apache.cxf.jaxrs.client.AbstractClient.preProcessResult(AbstractClient.java:575)
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message