Author: dhague
Date: Thu Feb  5 21:38:44 2009
New Revision: 741305

URL: http://svn.apache.org/viewvc?rev=741305&view=rev
Log:
getMessages is now implemented.  resources/props/test.properties allows you to 
specify the token & API URL to use for JUnit test.

Modified:
    incubator/esme/trunk/esme-java-client/   (props changed)
    
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/api/EsmeRestApi.java
    
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/model/Message.java
    
incubator/esme/trunk/esme-java-client/src/test/java/org/apache/esme/api/RestTest.java
    
incubator/esme/trunk/esme-java-client/src/test/resources/props/test.properties

Propchange: incubator/esme/trunk/esme-java-client/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Feb  5 21:38:44 2009
@@ -0,0 +1 @@
+target

Modified: 
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/api/EsmeRestApi.java
URL: 
http://svn.apache.org/viewvc/incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/api/EsmeRestApi.java?rev=741305&r1=741304&r2=741305&view=diff
==============================================================================
--- 
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/api/EsmeRestApi.java
 (original)
+++ 
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/api/EsmeRestApi.java
 Thu Feb  5 21:38:44 2009
@@ -8,38 +8,20 @@
 
 import java.io.ByteArrayInputStream;
 import org.apache.esme.model.Message;
-import java.io.DataOutputStream;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLEncoder;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Properties;
 
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
-import org.apache.commons.httpclient.HostConfiguration;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.ProxyClient;
-import org.apache.commons.httpclient.ProxyHost;
+import org.apache.commons.httpclient.*;
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.esme.model.Status;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+import org.w3c.dom.*;
 import org.xml.sax.SAXException;
 
 /**
@@ -69,7 +51,7 @@
 
        public void sendMsg(String message) {
                Message msg = new Message();
-               msg.setText(message);
+               msg.setBody(message);
                sendMsg(msg);
        }
 
@@ -112,7 +94,8 @@
                 throw new EsmeException(statusCode);
             }
             byte[] responseBody = method.getResponseBody();
-            logger.log(Level.INFO, "Got body, convert to BAIS");
+            logger.log(Level.INFO, "Got body: "+new 
String(responseBody,"utf-8"));
+            
             // Parse the resulting XML into a DOM
             ByteArrayInputStream statusStream = new 
ByteArrayInputStream(responseBody);
             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
@@ -120,6 +103,7 @@
             db = dbf.newDocumentBuilder();
             logger.log(Level.INFO, "Parse & create Document");
             result = db.parse(statusStream);
+            logger.log(Level.INFO,"Parsed.");
                } catch (IOException e) {
                        logger.log(Level.SEVERE,"Fatal transport error or XML 
error",e);
         } catch (SAXException e) {
@@ -140,6 +124,7 @@
 
                PostMethod method = new PostMethod(apiUrl + "/login");
                NameValuePair[] data = { new NameValuePair("token", token) };
+        method.setRequestBody(data);
                try {
             Document document = executeHttp(method);
                } finally {
@@ -180,11 +165,12 @@
                        tags+=(message.getTags()[i]);
                }
                NameValuePair[] data = {
-                       new NameValuePair("message", message.getText()),
-                       new NameValuePair("via", message.getVia()),
+                       new NameValuePair("message", message.getBody()),
+                       new NameValuePair("via", message.getSource()),
                        new NameValuePair("tags", tags),
                };
                try {
+            method.setRequestBody(data);
             Document document = executeHttp(method);
                } finally {
                        // Release the connection.
@@ -248,7 +234,10 @@
 //                <body>
 //                        Woohoo - got through the rest of the slides quite 
quickly. I can go home now.
 //                </body>
-//                <tags/>
+//                <tags>
+//                       <tag id="12" name="Tags"/>
+//                       <tag id="11" name="Compass"/>
+//                </tags>
 //        </message>
 //  </esme_api>
 
@@ -260,6 +249,8 @@
                try {
             Document document = executeHttp(method);
 
+            logger.info("Check success");
+
             String success = 
document.getDocumentElement().getAttribute("success");
             if ("false".equals(success))
             {
@@ -269,9 +260,48 @@
 
             NodeList messages =  document.getElementsByTagName("message");
 
-            // *************************************************************
-            // Major TODO - complete the parsing and the setting of messages
-            // *************************************************************
+            for (int i=0; i<messages.getLength(); i++)
+            {
+                Message msg = new Message();
+                Element nodeMessage = (Element)messages.item(i);
+
+                msg.setMessageId(nodeMessage.getAttribute("id"));
+                msg.setSource(nodeMessage.getAttribute("source"));
+                msg.setDate(nodeMessage.getAttribute("date"));
+
+                logger.info("Got message basics, now get author info");
+
+                Element nodeAuthor = 
(Element)nodeMessage.getElementsByTagName("author").item(0);
+                if (nodeAuthor != null)
+                {
+                    msg.setAuthorId(nodeAuthor.getAttribute("id"));
+                    msg.setAuthorName(nodeAuthor.getAttribute("name"));
+                    msg.setAuthorImage(nodeAuthor.getAttribute("image"));
+                }
+
+                logger.info("Got author, now get body");
+
+                Element nodeBody = 
(Element)nodeMessage.getElementsByTagName("body").item(0);
+                if (nodeBody != null)
+                {
+                    msg.setBody(nodeBody.getTextContent());
+                }
+
+                logger.info("Got body, now get tags");
+
+                NodeList nodeTags = 
(NodeList)nodeMessage.getElementsByTagName("tags");
+                ArrayList tagList = new ArrayList();
+                for (int j=0; j<nodeTags.getLength(); j++)
+                {
+                    Element nodeTag = (Element)nodeTags.item(j);
+                    tagList.add((String)nodeTag.getAttribute("name"));
+                }
+                msg.setTags((String[])tagList.toArray(msg.getTags()));
+
+                logger.info("Message: "+msg.toString());
+
+                messageList.add(msg);
+            }
 
         } finally {
                        // Release the connection.

Modified: 
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/model/Message.java
URL: 
http://svn.apache.org/viewvc/incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/model/Message.java?rev=741305&r1=741304&r2=741305&view=diff
==============================================================================
--- 
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/model/Message.java
 (original)
+++ 
incubator/esme/trunk/esme-java-client/src/main/java/org/apache/esme/model/Message.java
 Thu Feb  5 21:38:44 2009
@@ -13,9 +13,41 @@
  * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
  */
 public class Message {
-       private String text = "";
+//        <message id="1134" source="web" date="...">
+//                <author image="..." name="..." id="9"/>
+//                <body>
+//                        Woohoo - got through the rest of the slides quite 
quickly. I can go home now.
+//                </body>
+//                <tags/>
+//        </message>
+
+    private String messageId;
+       private String source = "Java API";
+    private String date;
+
+    private String authorId;
+    private String authorName;
+    private String authorImage;
+
+    private String body = "";
        private String[] tags = {};
-       private String via = "Java API";
+
+    public String toString()
+    {
+        StringBuffer tagsStr = new StringBuffer();
+        tagsStr.append("[");
+        for (int i=0; i<tags.length; i++)
+        {
+            if (i!=0) tagsStr.append(", ");
+            tagsStr.append(tags[i]);
+        }
+        tagsStr.append("]");
+
+        return "messageId="+messageId+", source="+source+", date="+date+", 
authorId="+
+                authorId+", authorName="+authorName+", 
authorImage="+authorImage+", body="+
+                body+", tags="+tagsStr.toString();
+    }
+    
        /**
         * @return
         */
@@ -26,15 +58,15 @@
        /**
         * @return
         */
-       public String getText() {
-               return text;
+       public String getBody() {
+               return body;
        }
 
        /**
         * @return
         */
-       public String getVia() {
-               return via;
+       public String getSource() {
+               return source;
        }
 
        /**
@@ -47,15 +79,55 @@
        /**
         * @param string
         */
-       public void setText(String string) {
-               text = string;
+       public void setBody(String string) {
+               body = string;
        }
 
        /**
         * @param string
         */
-       public void setVia(String string) {
-               via = string;
+       public void setSource(String string) {
+               source = string;
        }
 
+        public String getAuthorId() {
+        return authorId;
+    }
+
+    public void setAuthorId(String authorId) {
+        this.authorId = authorId;
+    }
+
+    public String getAuthorImage() {
+        return authorImage;
+    }
+
+    public void setAuthorImage(String authorImage) {
+        this.authorImage = authorImage;
+    }
+
+    public String getAuthorName() {
+        return authorName;
+    }
+
+    public void setAuthorName(String authorName) {
+        this.authorName = authorName;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public String getMessageId() {
+        return messageId;
+    }
+
+    public void setMessageId(String messageId) {
+        this.messageId = messageId;
+    }
+
 }

Modified: 
incubator/esme/trunk/esme-java-client/src/test/java/org/apache/esme/api/RestTest.java
URL: 
http://svn.apache.org/viewvc/incubator/esme/trunk/esme-java-client/src/test/java/org/apache/esme/api/RestTest.java?rev=741305&r1=741304&r2=741305&view=diff
==============================================================================
--- 
incubator/esme/trunk/esme-java-client/src/test/java/org/apache/esme/api/RestTest.java
 (original)
+++ 
incubator/esme/trunk/esme-java-client/src/test/java/org/apache/esme/api/RestTest.java
 Thu Feb  5 21:38:44 2009
@@ -1,5 +1,6 @@
 package org.apache.esme.api;
 
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import org.apache.esme.api.EsmeRestApi;
@@ -9,8 +10,8 @@
 public class RestTest extends TestCase {
 
     private static Logger logger = Logger.getLogger("org.apache.esme.api");
-
     private static String token = TestProperties.getProperty("esme-token");
+    private static String esmeServer = 
TestProperties.getProperty("esme-server");
 
     public void testStatus() throws Exception
     {
@@ -18,10 +19,13 @@
 
         logger.log(Level.INFO, "Testing message status");
 
-        EsmeRestApi esme = new EsmeRestApi("http://localhost:8080/api";);
+        EsmeRestApi esme = new EsmeRestApi(esmeServer);
         Status status = esme.getStatus();
+
         logger.log(Level.INFO, "API status is "+status);
-    }
+
+        assertNull(status); // status is null because we have not logged in
+}
 
        public void testSendMsg() throws Exception
     {
@@ -38,14 +42,39 @@
 
         logger.log(Level.INFO, "Testing message sending");
 
-        EsmeRestApi esme = new EsmeRestApi("http://localhost:8080/api";);
+        EsmeRestApi esme = new EsmeRestApi(esmeServer);
+
+        logger.log(Level.INFO, "Login with token "+token);
         esme.login(token);
 
         Status status = esme.getStatus();
+        assertNotNull(status);
         logger.log(Level.INFO, "API status is "+status);
 
         esme.sendMsg("Hello World, from Java - the status was "+status);
         
+        logger.log(Level.INFO, "Logout");
+        esme.logout();
+    }
+
+       public void testGetMessages() throws Exception
+    {
+        EsmeRestApi.debugMode = true;
+
+        logger.log(Level.INFO, "Testing getMessages");
+
+        EsmeRestApi esme = new EsmeRestApi(esmeServer);
+        esme.login(token);
+
+        Status status = esme.getStatus();
+        assertNotNull(status);
+        logger.log(Level.INFO, "API status is "+status);
+
+        List messages = esme.getMessages();
+        assertNotNull(messages);
+
+        logger.info("Got "+messages.size()+" messages from server.");
+
         esme.logout();
     }
 

Modified: 
incubator/esme/trunk/esme-java-client/src/test/resources/props/test.properties
URL: 
http://svn.apache.org/viewvc/incubator/esme/trunk/esme-java-client/src/test/resources/props/test.properties?rev=741305&r1=741304&r2=741305&view=diff
==============================================================================
--- 
incubator/esme/trunk/esme-java-client/src/test/resources/props/test.properties 
(original)
+++ 
incubator/esme/trunk/esme-java-client/src/test/resources/props/test.properties 
Thu Feb  5 21:38:44 2009
@@ -1,2 +1,3 @@
+# Substitute the values below with your own token and ESME test server details
 esme-token=XNVNYBSLXIASO2T4IVO0N0ZN4MGZPJOI
-
+esme-server=http://localhost:8080/api


Reply via email to