Author: midon
Date: Tue Jul  1 17:10:20 2008
New Revision: 673240

URL: http://svn.apache.org/viewvc?rev=673240&view=rev
Log:
create a restful service for testing purpose

Conflicts:

        
axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java

Modified:
    
ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java

Modified: 
ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java?rev=673240&r1=673239&r2=673240&view=diff
==============================================================================
--- 
ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java
 (original)
+++ 
ode/trunk/axis2-war/src/test/java/org/apache/ode/axis2/httpbinding/JettyWrapper.java
 Tue Jul  1 17:10:20 2008
@@ -58,8 +58,13 @@
         
arithmeticsContext.setContextPath("/HttpBindingTest/ArithmeticsService");
         arithmeticsContext.setHandler(new ArithmeticsServiceHandler());
 
+        ContextHandler blogContext = new ContextHandler();
+        blogContext.setContextPath("/HttpBindingTest/BlogService");
+        blogContext.setHandler(new BlogServiceHandler());
+
         handlerColl = new ContextHandlerCollection();
-        handlerColl.setHandlers(new Handler[]{arithmeticsContext});
+        Handler[] handlers = {arithmeticsContext, blogContext};
+        handlerColl.setHandlers(handlers);
 
         server.addHandler(handlerColl);
     }
@@ -232,6 +237,92 @@
     }
 
 
+    private class BlogServiceHandler extends AbstractHandler {
+
+        public void handle(String s, HttpServletRequest request, 
HttpServletResponse response, int i) throws IOException, ServletException {
+            String method = request.getMethod();
+            // actually we don't really care about this is.
+            String articleId = s.substring(s.lastIndexOf("/") + 1);
+
+            if ("GET".equalsIgnoreCase(method)) {
+                doGet(request, response, articleId);
+            } else if ("PUT".equalsIgnoreCase(method)) {
+                doPut(request, response, articleId);
+            } else if ("POST".equalsIgnoreCase(method)) {
+                doPost(request, response, articleId);
+            } else if ("DELETE".equalsIgnoreCase(method)) {
+                doDelete(request, response, articleId);
+            }
+            ((Request) request).setHandled(true);
+        }
+
+        private void doGet(HttpServletRequest request, HttpServletResponse 
response, String articleId) throws IOException {
+            // doGET must receive a custom header, just send it back and let 
the caller check the received value
+            response.setHeader("TimestampHeader", 
request.getHeader("TimestampHeader"));
+
+            response.setContentType("text/xml");
+            Document doc = DOMUtils.newDocument();
+            Element articleEl = 
doc.createElementNS("http://ode/bpel/test/blog";, "article");
+            Element idEl = doc.createElementNS("http://ode/bpel/test/blog";, 
"id");
+            Element titleEl = doc.createElementNS("http://ode/bpel/test/blog";, 
"title");
+
+            articleEl.appendChild(idEl);
+            articleEl.appendChild(titleEl);
+
+            idEl.setTextContent(articleId);
+            titleEl.setTextContent("A title with a random number " + 
System.currentTimeMillis());
+
+            response.getOutputStream().print(DOMUtils.domToString(articleEl));
+            response.setStatus(200);
+        }
+
+        private void doPost(HttpServletRequest request, HttpServletResponse 
response, String articleId) {
+            response.setHeader("Location", 
"http://examples.org/a_new_comment_on_article_"; + articleId);
+            response.setStatus(201); // Created
+        }
+
+
+        private void doPut(HttpServletRequest request, HttpServletResponse 
response, String articleId) throws IOException {
+            String faultType = request.getHeader("Fault-Type");
+            if (faultType.startsWith("500_no_body")) {
+                response.setStatus(500);
+            } else if (faultType.startsWith("500_text_body")) {
+                response.setContentType("text");
+                response.getOutputStream().print("Lorem ipsum dolor sit amet, 
consectetuer adipiscing elit.");
+                response.setStatus(500);
+            } else if (faultType.startsWith("500_unknown_xml_body")) {
+                response.setContentType("text/xml");
+                response.getOutputStream().print("<book><abstract>Lorem ipsum 
dolor sit amet, consectetuer adipiscing elit.</abstract></book>");
+                response.setStatus(500);
+            } else if (faultType.startsWith("500_expected_xml_body")) {
+                response.setContentType("text/xml");
+
+                Document doc = DOMUtils.newDocument();
+                Element faultEl = 
doc.createElementNS("http://ode/bpel/test/blog";, "fault");
+                Element timestamptEl = 
doc.createElementNS("http://ode/bpel/test/blog";, "timestamp");
+                Element detailsEl = 
doc.createElementNS("http://ode/bpel/test/blog";, "details");
+
+                faultEl.appendChild(timestamptEl);
+                faultEl.appendChild(detailsEl);
+
+                timestamptEl.setTextContent("" + System.currentTimeMillis());
+                detailsEl.setTextContent("Fake fault with the expected xml 
body.");
+
+                
response.getOutputStream().print(DOMUtils.domToString(faultEl));
+                response.setStatus(500);
+            } else {
+                response.setStatus(200);
+            }
+        }
+
+        private void doDelete(HttpServletRequest request, HttpServletResponse 
response, String articleId) {
+            response.setHeader("TimestampHeader", 
request.getHeader("TimestampHeader"));
+            response.setHeader("User-Agent", request.getHeader("User-Agent"));
+            response.setStatus(204); // No content
+        }
+    }
+
+
     public static void main(String[] args) {
         try {
             new JettyWrapper().server.start();


Reply via email to