You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by su...@apache.org on 2008/11/09 21:14:43 UTC

svn commit: r712546 - /webservices/commons/trunk/modules/transport/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java

Author: sumedha
Date: Sun Nov  9 12:14:42 2008
New Revision: 712546

URL: http://svn.apache.org/viewvc?rev=712546&view=rev
Log:
Implemented support for listServices & getOperations via a chat client

Modified:
    webservices/commons/trunk/modules/transport/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java

Modified: webservices/commons/trunk/modules/transport/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java?rev=712546&r1=712545&r2=712546&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java (original)
+++ webservices/commons/trunk/modules/transport/modules/xmpp/src/org/apache/axis2/transport/xmpp/XMPPSender.java Sun Nov  9 12:14:42 2008
@@ -19,12 +19,18 @@
 
 package org.apache.axis2.transport.xmpp;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.description.WSDL2Constants;
@@ -47,7 +53,6 @@
 import org.jivesoftware.smack.filter.PacketFilter;
 import org.jivesoftware.smack.filter.PacketTypeFilter;
 import org.jivesoftware.smack.packet.Message;
-import org.apache.axis2.description.AxisOperation;
 
 public class XMPPSender extends AbstractHandler implements TransportSender {
 	static Log log = null;
@@ -235,10 +240,76 @@
         	if(("help".compareToIgnoreCase(message.trim()) == 0)
         			|| "?".equals(message)){
         		response = prepareHelpTextForChat();        		
+        	}else if("listServices".equals(message.trim())){
+        		response = prepareServicesList(msgCtx);        		
+        	}else if (message.trim().startsWith("getOperations")){
+        		response = prepareOperationList(msgCtx,message);
+        	}else{
+        		//TODO add support for more help commands
         	}
         	sendChatMessage(msgCtx,response);    		
     	}
     }
+
+    
+    /**
+     * Prepares a list of service names deployed in current runtime
+     * @param msgCtx
+     * @return
+     */
+	private static String prepareOperationList(MessageContext msgCtx,String chatMessage) {
+		StringBuffer sb = new StringBuffer();
+		//extract service name
+		String serviceName = chatMessage.replace("getOperations", "");
+		serviceName = serviceName.replaceAll(" ", "");
+		if(log.isDebugEnabled()){
+			log.debug("Finding operations for service :"+ serviceName);	
+		}
+		
+		try {
+			AxisService service = msgCtx.getConfigurationContext().getAxisConfiguration().getService(serviceName);
+			Iterator itrOperations = service.getOperations();
+			int index = 1;
+			while(itrOperations.hasNext()){
+				AxisOperation operation = (AxisOperation)itrOperations.next();
+				//ArrayList params = operation.getParameters();
+				//Iterator itrParams = params.iterator();
+				String parameterList = "";
+				//while(itrParams.hasNext()){
+				//	Parameter param = (Parameter) itrParams.next();
+				//	parameterList = param.getName()+",";
+				//}
+				sb.append(index +"."+operation.getName().getLocalPart()+"("+parameterList+")"+"\n");
+				index++;
+			}
+		} catch (AxisFault e) {
+			log.error("Error occurred while retreiving AxisService : "+serviceName,e);
+			sb.append("Error occurred while retrieving operations for service : "+serviceName);
+		}		
+		return sb.toString();
+	}
+
+	
+    /**
+     * Prepares a list of service names deployed in current runtime
+     * @param msgCtx
+     * @return
+     */
+	private static String prepareServicesList(MessageContext msgCtx) {
+		HashMap services = msgCtx.getConfigurationContext().getAxisConfiguration().getServices();
+		StringBuffer sb = new StringBuffer();
+		if(services != null && services.size() > 0){
+			Iterator itrServiceNames = services.keySet().iterator();			
+			int index = 1;
+			while (itrServiceNames.hasNext()) {
+				String serviceName = (String) itrServiceNames.next();
+				sb.append(index+"."+serviceName+"\n");
+				index++;
+			}
+		}
+		return sb.toString();
+	}
+    
     
     /**
      * Generate help text for chat client