Author: michiel
Date: 2009-08-10 10:04:59 +0200 (Mon, 10 Aug 2009)
New Revision: 37630

Modified:
   
speeltuin/mihxil/webservice/mmbase/src/main/java/org/mmbase/webservice/WebServiceServlet.java
Log:
added a small new feature, a 'default webservice' which can be presented if no 
explicit ws is specified on the URL (e.g. return a list of available 
webservices)

Modified: 
speeltuin/mihxil/webservice/mmbase/src/main/java/org/mmbase/webservice/WebServiceServlet.java
===================================================================
--- 
speeltuin/mihxil/webservice/mmbase/src/main/java/org/mmbase/webservice/WebServiceServlet.java
       2009-08-10 07:49:02 UTC (rev 37629)
+++ 
speeltuin/mihxil/webservice/mmbase/src/main/java/org/mmbase/webservice/WebServiceServlet.java
       2009-08-10 08:04:59 UTC (rev 37630)
@@ -40,6 +40,8 @@
 
     protected String authenticate = "name/password";
 
+    protected String defaultService = "list.xml";
+
     @Override
     protected Map<String, Integer> getAssociations() {
         Map<String, Integer> a = super.getAssociations();
@@ -47,6 +49,16 @@
         return a;
     }
 
+
+    @Override
+    public void init() throws ServletException {
+        super.init();
+        String df = getInitParameter("defaultService");
+        if (df != null && df.length() > 0) {
+            defaultService = df;
+        }
+    }
+
     private Cloud anonymous;
 
     protected Cloud getAnonymousCloud() {
@@ -117,12 +129,19 @@
 
 
     protected void doWebService(final HttpServletRequest req, final 
HttpServletResponse res, final WebService.Type defaultType) throws 
ServletException, IOException {
-        String[] path = req.getPathInfo().split("/");
+        WebService.Type type;
+        String file;
+        {
+            String[] path = req.getPathInfo().split("/");
+            if (path.length > 1) {
+                type = path.length > 2 ? WebService.Type.valueOf(path[1]) : 
defaultType;
+                file = path.length > 2 ? path[2] : path[1];
+            } else {
+                type = WebService.Type.GET;
+                file = defaultService;
+            }
+        }
 
-        WebService.Type type = path.length > 2 ? 
WebService.Type.valueOf(path[1]) : defaultType;
-
-        String file = path.length > 2 ? path[2] : path[1];
-
         String wantedMimeType = getServletContext().getMimeType(file);
         if (wantedMimeType == null) {
             res.sendError(HttpServletResponse.SC_NOT_FOUND, "No mimetype found 
for '" + file + "'");

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to