Author: hemapani
Date: Wed Dec 15 10:46:37 2010
New Revision: 1049485

URL: http://svn.apache.org/viewvc?rev=1049485&view=rev
Log:
Fix a bug in the XMPP transport which lead to faluires when it is loaded

Modified:
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPListener.java
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPClientSidePacketListener.java
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConnectionFactory.java
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConstants.java
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPOutTransportInfo.java
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPPacketListener.java
    
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPServerCredentials.java

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPListener.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPListener.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPListener.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPListener.java
 Wed Dec 15 10:46:37 2010
@@ -19,6 +19,14 @@
 
 package org.apache.axis2.transport.xmpp;
 
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
@@ -39,20 +47,18 @@ import org.jivesoftware.smack.Roster;
 import org.jivesoftware.smack.XMPPConnection;
 import org.jivesoftware.smack.Roster.SubscriptionMode;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
 
 public class XMPPListener implements TransportListener {
+ 
+       /**
+         Uncomment this enable XMPP logging, this is useful for testing.       
+    static {
+      XMPPConnection.DEBUG_ENABLED = true;
+    }
+    **/
     private static Log log = LogFactory.getLog(XMPPListener.class);
     private ConfigurationContext configurationContext = null;
-    private String xmppServerUsername = "";
-    private String xmppServerUrl = "";
+    private XMPPServerCredentials serverCredentials;
 
     /**
      * A Map containing the connection factories managed by this, 
@@ -108,21 +114,20 @@ public class XMPPListener implements Tra
             }
 
             Iterator params = pi.getParameters().iterator();
-            XMPPServerCredentials serverCredentials = 
-               new XMPPServerCredentials();
+            serverCredentials = new XMPPServerCredentials();
             
             while (params.hasNext()) {
                 Parameter param = (Parameter) params.next();
                 if(XMPPConstants.XMPP_SERVER_URL.equals(param.getName())){
-                       xmppServerUrl = (String)param.getValue();
-                               serverCredentials.setServerUrl(xmppServerUrl);  
                
+                               
serverCredentials.setServerUrl((String)param.getValue());                       
                 }else 
if(XMPPConstants.XMPP_SERVER_USERNAME.equals(param.getName())){
-                       xmppServerUsername = (String) param.getValue();
-                       serverCredentials.setAccountName(xmppServerUsername);
+                       
serverCredentials.setAccountName((String)param.getValue());
                 }else 
if(XMPPConstants.XMPP_SERVER_PASSWORD.equals(param.getName())){
                                
serverCredentials.setPassword((String)param.getValue());                        
                 }else 
if(XMPPConstants.XMPP_SERVER_TYPE.equals(param.getName())){
-                               
serverCredentials.setServerType((String)param.getValue());                      
+                               
serverCredentials.setServerType((String)param.getValue());   
+                }else 
if(XMPPConstants.XMPP_DOMAIN_NAME.equals(param.getName())){    
+                       
serverCredentials.setDomainName((String)param.getValue());
                 }
             }
                XMPPConnectionFactory xmppConnectionFactory = new 
XMPPConnectionFactory();
@@ -158,8 +163,10 @@ public class XMPPListener implements Tra
      * @param ip
      */    
     public EndpointReference[] getEPRsForService(String serviceName, String 
ip) throws AxisFault {
+       String domainName = serverCredentials.getDomainName() == null? 
serverCredentials.getDomainName()
+                       : serverCredentials.getServerUrl();
         return new EndpointReference[]{new 
EndpointReference(XMPPConstants.XMPP_PREFIX +
-                       xmppServerUsername +"@"+ xmppServerUrl +"/" + 
serviceName)};
+                       serverCredentials.getAccountName() +"@"+ domainName 
+"/services/" + serviceName)};
     }
 
 

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java
 Wed Dec 15 10:46:37 2010
@@ -19,12 +19,15 @@
 
 package org.apache.axis2.transport.xmpp;
 
-import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Map;
+import java.util.UUID;
 
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP12Version;
+import org.apache.axiom.soap.SOAPVersion;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.client.Options;
@@ -39,7 +42,8 @@ import org.apache.axis2.description.WSDL
 import org.apache.axis2.handlers.AbstractHandler;
 import org.apache.axis2.transport.OutTransportInfo;
 import org.apache.axis2.transport.TransportSender;
-import org.apache.axis2.transport.xmpp.util.XMPPClientSidePacketListener;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.transport.xmpp.util.XMPPClientResponseManager;
 import org.apache.axis2.transport.xmpp.util.XMPPConnectionFactory;
 import org.apache.axis2.transport.xmpp.util.XMPPConstants;
 import org.apache.axis2.transport.xmpp.util.XMPPOutTransportInfo;
@@ -66,11 +70,14 @@ import org.jivesoftware.smack.packet.Mes
 
 public class XMPPSender extends AbstractHandler implements TransportSender {
        static Log log = null;
-    XMPPConnectionFactory connectionFactory;
+       
     XMPPServerCredentials serverCredentials;    
+    private XMPPClientResponseManager xmppClientSidePacketListener;
+    private XMPPConnectionFactory defaultConnectionFactory;
        
     public XMPPSender() {
         log = LogFactory.getLog(XMPPSender.class);
+        xmppClientSidePacketListener  = new XMPPClientResponseManager();
     }
     
        public void cleanup(MessageContext msgContext) throws AxisFault {       
@@ -89,20 +96,11 @@ public class XMPPSender extends Abstract
                //if connection details are available from axis configuration
                //use those & connect to jabber server(s)
                serverCredentials = new XMPPServerCredentials();
-               getConnectionDetailsFromAxisConfiguration(transportOut);        
        
-               connectionFactory = new XMPPConnectionFactory();
-               connectionFactory.connect(serverCredentials);           
+               getConnectionDetailsFromAxisConfiguration(transportOut);        
+               
+               defaultConnectionFactory = new XMPPConnectionFactory();
        }
 
-       /**
-        * Extract connection details from Client options
-        * @param msgCtx
-        */
-       private void connectUsingClientOptions(MessageContext msgCtx) throws 
AxisFault{         
-               getConnectionDetailsFromClientOptions(msgCtx);
-               connectionFactory = new XMPPConnectionFactory();
-               connectionFactory.connect(serverCredentials);
-       }
        
        public void stop() {}
 
@@ -136,22 +134,44 @@ public class XMPPSender extends Abstract
      * @throws AxisFault on error
      */
     public void sendMessage(MessageContext msgCtx, String targetAddress,
+            
         OutTransportInfo outTransportInfo) throws AxisFault {
                XMPPConnection xmppConnection = null;
                XMPPOutTransportInfo xmppOutTransportInfo = null;
+               XMPPConnectionFactory connectionFactory;
                
                //if on client side,create connection to xmpp server
-               if(!msgCtx.isServerSide()){
-                       connectUsingClientOptions(msgCtx);
+               if(msgCtx.isServerSide()){
+                   xmppOutTransportInfo = 
(XMPPOutTransportInfo)msgCtx.getProperty(org.apache.axis2.Constants.OUT_TRANSPORT_INFO);
+                   connectionFactory = 
xmppOutTransportInfo.getConnectionFactory();
+               }else{
+                   getConnectionDetailsFromClientOptions(msgCtx);
+                   connectionFactory = defaultConnectionFactory;
                }
                
+               synchronized (this) {
+            xmppConnection = connectionFactory.getXmppConnection();
+            if(xmppConnection == null){
+                connectionFactory.connect(serverCredentials);   
+                xmppConnection = connectionFactory.getXmppConnection();
+            }
+        }
+               
                Message message = new Message();
                Options options = msgCtx.getOptions();          
-       String serviceName = XMPPUtils.getServiceName(targetAddress);           
+       String serviceName = XMPPUtils.getServiceName(targetAddress);    
+       
+       SOAPVersion version = msgCtx.getEnvelope().getVersion();
+       if(version instanceof SOAP12Version){
+               message.setProperty(XMPPConstants.CONTENT_TYPE, 
HTTPConstants.MEDIA_TYPE_APPLICATION_SOAP_XML+ "; action="+ 
msgCtx.getSoapAction());
+       }else{
+               message.setProperty(XMPPConstants.CONTENT_TYPE, 
HTTPConstants.MEDIA_TYPE_TEXT_XML);
+       }
+       
        
                if (targetAddress != null) {
                        xmppOutTransportInfo = new 
XMPPOutTransportInfo(targetAddress);
-                       
xmppOutTransportInfo.setConnectionFactory(connectionFactory);
+                       
xmppOutTransportInfo.setConnectionFactory(defaultConnectionFactory);
                } else if (msgCtx.getTo() != null &&
                                !msgCtx.getTo().hasAnonymousAddress()) {
                        //TODO 
@@ -159,12 +179,11 @@ public class XMPPSender extends Abstract
                        xmppOutTransportInfo = (XMPPOutTransportInfo)
                        msgCtx.getProperty(Constants.OUT_TRANSPORT_INFO);
                }
-       
-               xmppConnection = 
xmppOutTransportInfo.getConnectionFactory().getXmppConnection();    
-               
+               try{
                if(msgCtx.isServerSide()){
                        message.setProperty(XMPPConstants.IS_SERVER_SIDE, new 
Boolean(false));
                        message.setProperty(XMPPConstants.IN_REPLY_TO, 
xmppOutTransportInfo.getInReplyTo());
+                       message.setProperty(XMPPConstants.SEQUENCE_ID, 
xmppOutTransportInfo.getSequenceID());
                }else{
                        //message is going to be processed on server side
                        message.setProperty(XMPPConstants.IS_SERVER_SIDE,new 
Boolean(true));
@@ -186,25 +205,21 @@ public class XMPPSender extends Abstract
                handleException("Connection to XMPP Server is not 
established.");               
        }
                
+       
+       
                //initialize the chat manager using connection
                ChatManager chatManager = xmppConnection.getChatManager();
-               Chat chat = 
chatManager.createChat(xmppOutTransportInfo.getDestinationAccount(), null);     
    
+               Chat chat = 
chatManager.createChat(xmppOutTransportInfo.getDestinationAccount(), null);
                
-               try 
-               {
                        boolean waitForResponse =
                                msgCtx.getOperationContext() != null &&
                                WSDL2Constants.MEP_URI_OUT_IN.equals(
                                                
msgCtx.getOperationContext().getAxisOperation().getMessageExchangePattern());
                        
-                       //int endOfXMLDeclaration = soapMessage.indexOf("?>");
-                       //String modifiedSOAPMessage = 
soapMessage.substring(endOfXMLDeclaration+2);
-
                        OMElement msgElement;                   
                        String messageToBeSent = "";
                        
-                       //TODO : need to read from a constant
-                       
if("xmpp/text".equals(xmppOutTransportInfo.getContentType())){
+                       
if(XMPPConstants.XMPP_CONTENT_TYPE_STRING.equals(xmppOutTransportInfo.getContentType())){
                                //if request is received from a chat client, 
whole soap envelope
                                //should not be sent.
                                OMElement soapBodyEle = 
msgCtx.getEnvelope().getBody();
@@ -222,12 +237,13 @@ public class XMPPSender extends Abstract
                        messageToBeSent = msgElement.toString();
                        message.setBody(messageToBeSent);
                        
-                       
-                       XMPPClientSidePacketListener 
xmppClientSidePacketListener = null;
+                       String key = null;
                        if(waitForResponse && !msgCtx.isServerSide()){
                                PacketFilter filter = new 
PacketTypeFilter(message.getClass());                         
-                               xmppClientSidePacketListener = new 
XMPPClientSidePacketListener(msgCtx);
                                
xmppConnection.addPacketListener(xmppClientSidePacketListener,filter);
+                               key = UUID.randomUUID().toString();
+                               
xmppClientSidePacketListener.listenForResponse(key, msgCtx);
+                               message.setProperty(XMPPConstants.SEQUENCE_ID, 
key);
                        }                       
 
                        chat.sendMessage(message);
@@ -236,24 +252,22 @@ public class XMPPSender extends Abstract
                        //If this is on client side, wait for the response from 
server.
                        //Is this the best way to do this?
                        if(waitForResponse && !msgCtx.isServerSide()){
-                               //TODO : need to add a timeout
-                               while(! 
xmppClientSidePacketListener.isResponseReceived()){
-                                       try {
-                                               Thread.sleep(1000);
-                                       } catch (InterruptedException e) {
-                                               log.debug("Sleep 
interrupted",e);
-                                       }               
-                               }
-                               xmppConnection.disconnect();
+                           xmppClientSidePacketListener.waitFor(key);
+                               //xmppConnection.disconnect();
+                           log.debug("Received response sucessfully");
                        }
+                       
 
                } catch (XMPPException e) {
                        log.error("Error occurred while sending the message : 
"+message.toXML(),e);
                        handleException("Error occurred while sending the 
message : "+message.toXML(),e);
-               }finally{
-                       if(!msgCtx.isServerSide()){
-                               xmppConnection.disconnect();
-                       }
+               } catch (InterruptedException e) {
+                   log.error("Error occurred while sending the message : 
"+message.toXML(),e);
+            handleException("Error occurred while sending the message : 
"+message.toXML(),e);
+        }finally{
+//                     if(xmppConnection != null && !msgCtx.isServerSide()){
+//                             xmppConnection.disconnect();
+//                     }
                }
     }  
     
@@ -360,7 +374,7 @@ public class XMPPSender extends Abstract
      * @return
      */
        private static String prepareServicesList(MessageContext msgCtx) {
-               HashMap services = 
msgCtx.getConfigurationContext().getAxisConfiguration().getServices();
+               Map services = 
msgCtx.getConfigurationContext().getAxisConfiguration().getServices();
                StringBuffer sb = new StringBuffer();
                if(services != null && services.size() > 0){
                        Iterator itrServiceNames = 
services.keySet().iterator();                        
@@ -415,6 +429,8 @@ public class XMPPSender extends Abstract
                ChatManager chatManager = xmppConnection.getChatManager();
                Chat chat = 
chatManager.createChat(xmppOutTransportInfo.getDestinationAccount(), null);     
            
                try{                    
+                   message.setProperty(XMPPConstants.SEQUENCE_ID, 
+                           xmppOutTransportInfo.getSequenceID());
                                message.setBody(responseMsg);           
                        chat.sendMessage(message);
                        log.debug("Sent message :"+message.toXML());
@@ -448,7 +464,12 @@ public class XMPPSender extends Abstract
                        Parameter serverType = 
transportOut.getParameter(XMPPConstants.XMPP_SERVER_TYPE);                      
 
                        if (serverType != null) {
                                
serverCredentials.setServerType(Utils.getParameterValue(serverType));
-                       }                       
+                       }       
+                       
+                       Parameter domainName = 
transportOut.getParameter(XMPPConstants.XMPP_DOMAIN_NAME);
+                       if (serverUrl != null) {
+                               
serverCredentials.setDomainName(Utils.getParameterValue(domainName));
+                       }
                }
        }
        
@@ -482,4 +503,4 @@ public class XMPPSender extends Abstract
         log.error(msg);
         throw new AxisFault(msg);
     }
-}
\ No newline at end of file
+}

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPClientSidePacketListener.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPClientSidePacketListener.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPClientSidePacketListener.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPClientSidePacketListener.java
 Wed Dec 15 10:46:37 2010
@@ -19,6 +19,9 @@
 
 package org.apache.axis2.transport.xmpp.util;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
 import org.apache.axis2.context.MessageContext;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.logging.Log;
@@ -27,9 +30,6 @@ import org.jivesoftware.smack.PacketList
 import org.jivesoftware.smack.packet.Message;
 import org.jivesoftware.smack.packet.Packet;
 
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
 public class XMPPClientSidePacketListener implements PacketListener {
        private static Log log = 
LogFactory.getLog(XMPPClientSidePacketListener.class);
        private MessageContext messageContext = null;
@@ -39,7 +39,9 @@ public class XMPPClientSidePacketListene
                this.messageContext = messageContext;
        }
 
-       /**
+
+
+    /**
         * This method will be triggered, when a message is arrived at client 
side
         */
        public void processPacket(Packet packet) {              

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConnectionFactory.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConnectionFactory.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConnectionFactory.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConnectionFactory.java
 Wed Dec 15 10:46:37 2010
@@ -31,13 +31,14 @@ import org.jivesoftware.smack.filter.Pac
 import org.jivesoftware.smack.filter.ToContainsFilter;
 
 import java.util.HashMap;
+import java.util.Map;
 
 public class XMPPConnectionFactory {
        private static Log log = LogFactory.getLog(XMPPConnectionFactory.class);
        private XMPPConnection xmppConnection = null;
        private PacketFilter packetFilter = null;
-       private HashMap xmppConnections = new HashMap();
-
+       private Map<String,XMPPConnectionDetails> xmppConnections = new 
HashMap<String,XMPPConnectionDetails>();
+       
        public XMPPConnectionFactory(){}
 
        /**
@@ -45,7 +46,7 @@ public class XMPPConnectionFactory {
         * @param serverCredentials
         * @throws XMPPException 
         */
-       public void connect(final XMPPServerCredentials serverCredentials) 
throws AxisFault {
+       public XMPPConnection connect(final XMPPServerCredentials 
serverCredentials) throws AxisFault {
                //XMPPConnection.DEBUG_ENABLED = true;          
                
if(XMPPConstants.XMPP_SERVER_TYPE_JABBER.equals(serverCredentials.getServerType())){
                        xmppConnection = new 
XMPPConnection(serverCredentials.getServerUrl());
@@ -64,12 +65,12 @@ public class XMPPConnectionFactory {
                        }
 
                        if(xmppConnection.isConnected()){
+                               String resource = 
serverCredentials.getResource()+ new Object().hashCode();
                                if(! xmppConnection.isAuthenticated()){
                                        try {
-                                               
xmppConnection.login(serverCredentials.getAccountName()+"@"+
-                                                               
serverCredentials.getServerUrl(), 
+                       
xmppConnection.login(serverCredentials.getAccountName(), 
                                                                
serverCredentials.getPassword(),
-                                                               
serverCredentials.getResource(),
+                                                               resource,
                                                                true);
                                        } catch (XMPPException e) {
                                                try {
@@ -78,11 +79,11 @@ public class XMPPConnectionFactory {
                                                                        
+"@"+serverCredentials.getServerUrl() 
                                                                        
+".Retrying in 2 secs",e); 
                                                        Thread.sleep(2000);
-                                                       
xmppConnection.login(serverCredentials.getAccountName()+"@"+
-                                                                       
serverCredentials.getServerUrl(), 
-                                                                       
serverCredentials.getPassword(),
-                                                                       
serverCredentials.getResource(),
-                                                                       true);
+                           
xmppConnection.login(serverCredentials.getAccountName(), 
+                                            serverCredentials.getPassword(),
+                                            resource,
+                                            true);
+                                                       
                                                } catch (InterruptedException 
e1) {
                                                        log.error("Sleep 
interrupted.",e1);
                                                } catch (XMPPException e2) {
@@ -93,12 +94,9 @@ public class XMPPConnectionFactory {
                                                }
                                        }
                                        //Listen for Message type packets from 
specified server url
-                                       //packetFilter = new AndFilter(new 
PacketTypeFilter(Message.class), 
-                                       //              new 
FromContainsFilter(serverCredentials.getServerUrl()));
                                        packetFilter = new 
FromContainsFilter(serverCredentials.getServerUrl());                           
             
                                }
-                       }               
-                       
+                       }       
                }else 
if(XMPPConstants.XMPP_SERVER_TYPE_GOOGLETALK.equals(serverCredentials.getServerType())){
                        ConnectionConfiguration connectionConfiguration = 
                                new 
ConnectionConfiguration(XMPPConstants.GOOGLETALK_URL
@@ -111,9 +109,6 @@ public class XMPPConnectionFactory {
                                                , 
serverCredentials.getPassword()
                                                
,serverCredentials.getResource(),
                                                true);
-                               //packetFilter = new AndFilter(new 
PacketTypeFilter(Message.class), 
-                               //              new 
FromContainsFilter(XMPPConstants.GOOGLETALK_FROM));
-                               //packetFilter = new 
FromContainsFilter(XMPPConstants.GOOGLETALK_FROM);
                                packetFilter = new 
ToContainsFilter("@gmail.com");
                                
                        } catch (XMPPException e1) {
@@ -129,41 +124,44 @@ public class XMPPConnectionFactory {
                        }
                        public void connectionClosedOnError(
                                        Exception e1) {
-                               log.debug("Connection to 
"+serverCredentials.getServerUrl()
+                               log.error("Connection to 
"+serverCredentials.getServerUrl()
                                                + " closed with error.",e1);
                        }
                        public void reconnectingIn(int seconds) {
-                               log.debug("Connection to 
"+serverCredentials.getServerUrl() 
+                               log.error("Connection to 
"+serverCredentials.getServerUrl() 
                                                +" failed. Reconnecting in 
"+seconds+"s");
                        }
                        public void reconnectionFailed(Exception e) {
-                               log.debug("Reconnection to 
"+serverCredentials.getServerUrl()+" failed.",e);
+                               log.error("Reconnection to 
"+serverCredentials.getServerUrl()+" failed.",e);
                        }
                        public void reconnectionSuccessful() {
                                log.debug("Reconnection to 
"+serverCredentials.getServerUrl()+" successful.");
                        }
                };
-               if(xmppConnection != null){
-                       
xmppConnection.addConnectionListener(connectionListener);                       
+               if(xmppConnection != null && xmppConnection.isConnected()){
+                       
xmppConnection.addConnectionListener(connectionListener);
+                       log.info("Connected to " 
+serverCredentials.getAccountName()+ "@" 
+                                       + serverCredentials.getServerUrl()+ 
"/"+ serverCredentials.getResource());
+               }else{
+                       log.warn(" Not Connected to " 
+serverCredentials.getAccountName()+ "@" 
+                                       + serverCredentials.getServerUrl()+ 
"/"+ serverCredentials.getResource());
                }
-       } 
-
-       public XMPPConnection getConnection(String connectionIdentifier){
-               return 
(XMPPConnection)xmppConnections.get(connectionIdentifier);
-       }
-
-
-       public XMPPConnection getXmppConnection() {
                return xmppConnection;
+       } 
+       
+       public XMPPConnection getXmppConnection(){
+           return xmppConnection;
        }
 
-       public void setXmppConnection(XMPPConnection xmppConnection) {
-               this.xmppConnection = xmppConnection;
-       }
 
        public void listen(XMPPPacketListener packetListener){
                xmppConnection.addPacketListener(packetListener,packetFilter);
        }
 
        public void stop() {}
+       
+       public class XMPPConnectionDetails{
+           XMPPConnection connection;
+           int userCount;
+       }
 }
\ No newline at end of file

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConstants.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConstants.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConstants.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPConstants.java
 Wed Dec 15 10:46:37 2010
@@ -29,6 +29,7 @@ public class XMPPConstants {  
     public static final String XMPP_SERVER_USERNAME = 
"transport.xmpp.ServerAccountUserName";
     public static final String XMPP_SERVER_PASSWORD = 
"transport.xmpp.ServerAccountPassword";    
     public static final String XMPP_SERVER_URL = "transport.xmpp.ServerUrl";
+    public static final String XMPP_DOMAIN_NAME = "transport.xmpp.domain";
     
     //Google talk attributes
     public static final String GOOGLETALK_URL = "talk.google.com";
@@ -46,8 +47,12 @@ public class XMPPConstants { 
     public static final String IN_REPLY_TO = "inReplyTo";
     public static final String SERVICE_NAME = "ServiceName";
     public static final String ACTION = "Action";
+    public static final String CONTENT_TYPE = "ContentType";
     //This is set to true, if a request message is sent through XMPPSender
     //Used to distinguish messages coming from chat clients.
     public static final String CONTAINS_SOAP_ENVELOPE = 
"transport.xmpp.containsSOAPEnvelope";
-    public static final String MESSAGE_FROM_CHAT = 
"transport.xmpp.message.from.chat";   
+    public static final String MESSAGE_FROM_CHAT = 
"transport.xmpp.message.from.chat";
+    public static final String SEQUENCE_ID = "transport.xmpp.sequenceID";  
+    
+    public static final String XMPP_CONTENT_TYPE_STRING = "xmpp/text";
 }

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPOutTransportInfo.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPOutTransportInfo.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPOutTransportInfo.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPOutTransportInfo.java
 Wed Dec 15 10:46:37 2010
@@ -34,6 +34,7 @@ public class XMPPOutTransportInfo implem
        private String inReplyTo;
        private EndpointReference from;
        private XMPPConnectionFactory connectionFactory = null;
+       private String sequenceID; 
        
        public XMPPOutTransportInfo(){
                
@@ -80,5 +81,14 @@ public class XMPPOutTransportInfo implem
 
        public String getContentType() {
                return contentType;
-       }       
+       }
+
+    public String getSequenceID() {
+        return sequenceID;
+    }
+
+    public void setSequenceID(String sequenceID) {
+        this.sequenceID = sequenceID;
+    }  
+       
 }

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPPacketListener.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPPacketListener.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPPacketListener.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPPacketListener.java
 Wed Dec 15 10:46:37 2010
@@ -21,7 +21,7 @@ package org.apache.axis2.transport.xmpp.
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.util.HashMap;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.concurrent.Executor;
 
@@ -44,6 +44,7 @@ import org.apache.axis2.description.Tran
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.axis2.transport.xmpp.XMPPSender;
 import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.axis2.util.MultipleEntryHashMap;
@@ -72,7 +73,7 @@ public class XMPPPacketListener implemen
         * This method gets triggered when server side gets a message
         */
        public void processPacket(Packet packet) {
-               log.info("Received : "+packet.toXML());
+               log.debug("Received : "+packet.toXML());
                if(packet instanceof Message){
                        workerPool.execute(new Worker(packet));                 
                }
@@ -112,7 +113,7 @@ public class XMPPPacketListener implemen
                                        
Constants.Configuration.CHARACTER_SET_ENCODING, "UTF-8");
                        msgContext.setIncomingTransportName("xmpp");
 
-                       HashMap services = 
configurationContext.getAxisConfiguration()
+                       Map services = 
configurationContext.getAxisConfiguration()
                                        .getServices();
 
                        AxisService axisService = (AxisService) 
services.get(serviceName);
@@ -146,6 +147,7 @@ public class XMPPPacketListener implemen
                        if (xmppMessageId != null) {
                                
xmppOutTransportInfo.setInReplyTo(xmppMessageId);
                        }
+                       
xmppOutTransportInfo.setSequenceID((String)message.getProperty(XMPPConstants.SEQUENCE_ID));
                        msgContext.setProperty(
                                        
org.apache.axis2.Constants.OUT_TRANSPORT_INFO,
                                        xmppOutTransportInfo);
@@ -169,7 +171,7 @@ public class XMPPPacketListener implemen
                        
                String messageBody = 
StringEscapeUtils.unescapeXml(message.getBody());
                if(msgContext.isServerSide()){
-                       log.info("Received Envelope : "+messageBody);
+                       log.debug("Received Envelope : "+messageBody);
                }
                
                InputStream inputStream = new 
ByteArrayInputStream(messageBody.getBytes());
@@ -177,7 +179,11 @@ public class XMPPPacketListener implemen
                try {
                        Object obj = 
message.getProperty(XMPPConstants.CONTAINS_SOAP_ENVELOPE); 
                        if(obj != null && ((Boolean)obj).booleanValue()){
-                               envelope = 
TransportUtils.createSOAPMessage(msgContext, inputStream, "text/xml");
+                               String contentType = 
(String)message.getProperty(XMPPConstants.CONTENT_TYPE);
+                               if(contentType == null){
+                                       throw new AxisFault("Can not Find 
Content type Property in the XMPP Message");
+                               }
+                               envelope = 
TransportUtils.createSOAPMessage(msgContext, inputStream, contentType);
                                
msgContext.setProperty(XMPPConstants.CONTAINS_SOAP_ENVELOPE, new Boolean(true));
                        }else{
                                //A text message has been received from a chat 
client
@@ -332,4 +338,4 @@ public class XMPPPacketListener implemen
                        }
                }
        }
-}
\ No newline at end of file
+}

Modified: 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPServerCredentials.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPServerCredentials.java?rev=1049485&r1=1049484&r2=1049485&view=diff
==============================================================================
--- 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPServerCredentials.java
 (original)
+++ 
axis/axis2/java/transports/trunk/modules/xmpp/src/org/apache/axis2/transport/xmpp/util/XMPPServerCredentials.java
 Wed Dec 15 10:46:37 2010
@@ -29,6 +29,7 @@ public class XMPPServerCredentials {
        private String password;                
        private String serverType;
        private String resource; 
+       private String domainName;
        
        public String getAccountName() {
                return accountName;
@@ -79,6 +80,12 @@ public class XMPPServerCredentials {
                this.serverType = serverType;
                this.resource = resource;
        }
+       public String getDomainName() {
+               return domainName;
+       }
+       public void setDomainName(String domainName) {
+               this.domainName = domainName;
+       }
        
 
 }


Reply via email to