activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Lewis (JIRA)" <j...@apache.org>
Subject [jira] Reopened: (AMQ-2256) Unnecessary TcpTransportFactory NumberFormatException and warning
Date Sat, 26 Feb 2011 22:13:58 GMT

     [ https://issues.apache.org/jira/browse/AMQ-2256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Scott Lewis reopened AMQ-2256:
------------------------------


The test case is simply:

new ActiveMQConnectionFactory("tcp://localhost:61616/exampleTopic").createConnection();

The connection is created successfully, bu the NumberFormatException is still being produced
to standard error.

Although originally reported on 5.2.0, the same problem exists on 5.3.2 as well (what I happen
to be using now).

As stated in the bug, the problem is in TcpTransportFactory.createTransport.  Here is an annotated
code fragment that shows the problem (modified slightly from TcpTransportFactory.createTransport)

URI location = new URI("tcp://localhost:61616/exampleTopic");
String path = location.getPath();
// path is "/exampleTopic"
if (path != null && path.length() > 0) {
  int localPortIndex = path.indexOf(':');
// localPortIndex == -1 ...this is wrong, since //exampleTopic has no port in it
  try {
    Integer.parseInt(path.substring(localPortIndex + 1,path.length()));  
// the previous line throws NumberFormatException because path.substring(0.path.length())
does not produce a number, because path is "/exampleTopic"



> Unnecessary TcpTransportFactory NumberFormatException and warning
> -----------------------------------------------------------------
>
>                 Key: AMQ-2256
>                 URL: https://issues.apache.org/jira/browse/AMQ-2256
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 5.2.0
>         Environment: Windows XP
>            Reporter: Scott Lewis
>
> When executing TcpTransportFactory.createTransport(URI location, WireFormat wf) the following
warning is incorrectly generated:
> WARNING: path isn't a valid local location for TcpTransport to use
> java.lang.NumberFormatException: For input string: "/exampleTopic"
> 	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
> 	at java.lang.Integer.parseInt(Integer.java:447)
> 	at java.lang.Integer.parseInt(Integer.java:497)
> 	at org.apache.activemq.transport.tcp.TcpTransportFactory.createTransport(TcpTransportFactory.java:125)
> 	at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:141)
> 	at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:51)
> 	at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:80)
> 	at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:237)
> 	at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:252)
> 	at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:224)
> 	at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:172)
> ...
> With the topic name set to "/exampleTopic"
> The code responsible for this looks like:
>         URI localLocation = null;
>         String path = location.getPath();
>         // see if the path is a local URI location
>         if (path != null && path.length() > 0) {
>             int localPortIndex = path.indexOf(':');
>             try {
>                 Integer.parseInt(path.substring(localPortIndex + 1, path.length()));
>                 String localString = location.getScheme() + ":/" + path;
>                 localLocation = new URI(localString);
>             } catch (Exception e) {
>                 LOG.warn("path isn't a valid local location for TcpTransport to use",
e);
>             }
>         }
>         SocketFactory socketFactory = createSocketFactory();
>         return createTcpTransport(wf, socketFactory, location, localLocation);
>     }
> The problem seems to be that for the path="/exampleTopic", the following line:
>            int localPortIndex = path.indexOf(':');
> returns -1 (no colon and no port specified in path
> and the subsequent line:
>              Integer.parseInt(path.substring(localPortIndex + 1, path.length()));
>   
> generates the NumberFormatException (because the path does not have any integer).
> It seems that perhaps there should be some test like:
> if (localPortIndex != -1) {
> ...
> }
> I will create a patch if desired.  Just LMK.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message