[ 
https://issues.apache.org/activemq/browse/SM-1700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=47719#action_47719
 ] 

rbuckland edited comment on SM-1700 at 11/30/08 5:35 PM:
--------------------------------------------------------------

Lars, 

Your fix did not fix the problem. 

The issue is when you are using an SMTP host that does not require login 
detauls (this is for the sender).

The component configured as below will cause the NullPointerException

            <mail:sender service="myns:mailSender" 
                         endpoint="mailEndpoint"
                         sender="[EMAIL PROTECTED]"
                         receiver="[EMAIL PROTECTED]"
                         connection="smtp://smtp.intranethost" />

Inside the MailSenderEndpoint, the connection is parsed using the Mailutils 
class.

      MailUtils.configure(this.connection)

So, the connection is smtp://smtp.intranethost

This then gets passed to a URI object .. 
    
     URI uri = URI.create(uriString);

On the URI object is the "query" field, but this is NULL under the above 
example, which is not checked.

See below for the patch.

[EMAIL PROTECTED] 
~/projects/042_project-sm/external-sources/servicemix-mail/trunk
$ svn diff 
Index: src/main/java/org/apache/servicemix/mail/utils/MailUtils.java
===================================================================
--- src/main/java/org/apache/servicemix/mail/utils/MailUtils.java       
(revision 721938)
+++ src/main/java/org/apache/servicemix/mail/utils/MailUtils.java       
(working copy)
@@ -139,7 +139,7 @@
             config.setFolderName("INBOX");
         }
 
 -        if (uri.getQuery().indexOf("password=") != -1) {
 +        if (uri.getQuery() != null && uri.getQuery().indexOf("password=") != 
-1) {
             // extract the password from query
             int beginIndex = uri.getQuery().indexOf("password=") + 
"password=".length();
             int endIndex = uri.getQuery().indexOf(';', beginIndex + 1) != -1 ? 
uri.getQuery()
@@ -152,7 +152,7 @@
 
         if (userInfo == null) {
             // alternative way of specifying the user name
 -            if (uri.getQuery().indexOf("user=") != -1) {
 +            if (uri.getQuery() != null && uri.getQuery().indexOf("user=") != 
-1) {
                 // extract the password from query
                 int beginIndex = uri.getQuery().indexOf("user=") + 
"user=".length();
                 int endIndex = uri.getQuery().indexOf(';', beginIndex + 1) != 
-1 ? uri.getQuery()



      was (Author: rbuckland):
    Lars, 

Your fix did not fix the problem. 

The issue is when you are using an SMTP host that does not require login 
detauls (this is for the sender).

The component configured as below will cause the NullPointerException

            <mail:sender service="myns:mailSender" 
                         endpoint="mailEndpoint"
                         sender="[EMAIL PROTECTED]"
                         receiver="[EMAIL PROTECTED]"
                         connection="smtp://smtp.intranethost" />

Inside the MailSenderEndpoint, the connection is parsed using the Mailutils 
class.

      MailUtils.configure(this.connection)

So, the connection is smtp://smtp.intranethost

This then gets passed to a URI object .. 
    
     URI uri = URI.create(uriString);

On the URI object is the "query" field, but this is NULL under the above 
example, which is not checked.

See below for the patch.

[EMAIL PROTECTED] 
~/projects/042_project-sm/external-sources/servicemix-mail/trunk
$ svn diff 
Index: src/main/java/org/apache/servicemix/mail/utils/MailUtils.java
===================================================================
--- src/main/java/org/apache/servicemix/mail/utils/MailUtils.java       
(revision 721938)
+++ src/main/java/org/apache/servicemix/mail/utils/MailUtils.java       
(working copy)
@@ -139,7 +139,7 @@
             config.setFolderName("INBOX");
         }
 
-        if (uri.getQuery().indexOf("password=") != -1) {
+        if (uri.getQuery() != null && uri.getQuery().indexOf("password=") != 
-1) {
             // extract the password from query
             int beginIndex = uri.getQuery().indexOf("password=") + 
"password=".length();
             int endIndex = uri.getQuery().indexOf(';', beginIndex + 1) != -1 ? 
uri.getQuery()
@@ -152,7 +152,7 @@
 
         if (userInfo == null) {
             // alternative way of specifying the user name
-            if (uri.getQuery().indexOf("user=") != -1) {
+            if (uri.getQuery() != null && uri.getQuery().indexOf("user=") != 
-1) {
                 // extract the password from query
                 int beginIndex = uri.getQuery().indexOf("user=") + 
"user=".length();
                 int endIndex = uri.getQuery().indexOf(';', beginIndex + 1) != 
-1 ? uri.getQuery()


  
> unable to set connection URI on sender
> --------------------------------------
>
>                 Key: SM-1700
>                 URL: https://issues.apache.org/activemq/browse/SM-1700
>             Project: ServiceMix
>          Issue Type: Bug
>          Components: servicemix-mail
>    Affects Versions: 3.3
>         Environment: Linux 2.6.27 / JDK 6
>            Reporter: Darren Davison
>            Assignee: Lars Heinemann
>             Fix For: servicemix-mail-2008.02
>
>
> Not sure whether the component is officially released yet, but I obtained it 
> from the snapshot repo today to test it.  I created the skeleton project from 
> the archetype using:
> mvn archetype:create -DarchetypeGroupId=org.apache.servicemix.tooling 
> -DarchetypeArtifactId=servicemix-mail-service-unit 
> -DarchetypeVersion=2008.01-SNAPSHOT -DartifactId=tutorial-mail-su 
> -DremoteRepositories=http://people.apache.org/repo/m2-snapshot-repository
> I edited xbean.xml to look as follows for the sender endpoint (SMTP server 
> needs no authorisation):
>     <mail:sender service="tut:mail" 
>                  endpoint="sender"
>                  sender="[EMAIL PROTECTED]"
>                  receiver="[EMAIL PROTECTED]"
>                  debugMode="false" 
>                  connection="smtp://mail.example.com" />                 
> When I try to deploy, I get the following within the error output:
> <loc-message>Error creating bean with name 
> 'org.apache.servicemix.mail.MailSenderEndpoint#0' defined in file 
> [/opt/apache-servicemix-3.3/data/smx/service-assemblies/tutorial-sa/version_2/sus/servicemix-mail/tutorial-mail-su/xbean.xml]:
>  Error setting property values; nested exception is 
> org.springframework.beans.PropertyBatchUpdateException; nested 
> PropertyAccessExceptions (1) are:
> PropertyAccessException 1: 
> org.springframework.beans.MethodInvocationException: Property 'connection' 
> threw exception; nested exception is 
> java.lang.NullPointerException</loc-message>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to