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] Created: (AMQ-2256) Unnecessary TcpTransportFactory NumberFormatException and warning
Date Mon, 18 May 2009 21:30:50 GMT
Unnecessary TcpTransportFactory NumberFormatException and warning
-----------------------------------------------------------------

                 Key: AMQ-2256
                 URL: https://issues.apache.org/activemq/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.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message