[jboss-svn-commits] JBL Code SVN: r21679 - in labs/jbossrules/trunk/drools-server/src: test/java/org/drools/server and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 22 04:05:25 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-08-22 04:05:25 -0400 (Fri, 22 Aug 2008)
New Revision: 21679

Added:
   labs/jbossrules/trunk/drools-server/src/test/resources/org/drools/server/sample_request_bad.json
Modified:
   labs/jbossrules/trunk/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java
   labs/jbossrules/trunk/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java
Log:
improved error handing and reporting

Modified: labs/jbossrules/trunk/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java	2008-08-22 07:50:59 UTC (rev 21678)
+++ labs/jbossrules/trunk/drools-server/src/main/java/org/drools/server/KnowledgeStatelessServlet.java	2008-08-22 08:05:25 UTC (rev 21679)
@@ -24,6 +24,7 @@
 import org.drools.common.InternalRuleBase;
 
 import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.converters.ConversionException;
 import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
 
 /**
@@ -62,14 +63,24 @@
 			resp.sendError(HttpServletResponse.SC_BAD_REQUEST, "URI needs to be of the form /knowledgebase/{configName}");
 			return;
 		}
-		RuleBase rb =  getRuleBase(m.group(1));
-		if (contentType != null && (contentType.indexOf("json") > -1)) {
-			//do json version
-			doService(getInputStream(request), getOutputStream(resp), rb, true);
-		} else {
-			//xml version
-			doService(getInputStream(request), getOutputStream(resp), rb, false);
+		String conf = m.group(1);
+		RuleBase rb =  getRuleBase(conf);
+		if (rb == null) {
+			resp.sendError(HttpServletResponse.SC_NOT_FOUND, "The rulebase [" + conf + "] was not found or not valid.");
+			return;
 		}
+		try {
+			if (contentType != null && (contentType.indexOf("json") > -1)) {
+				//do json version
+				doService(getInputStream(request), getOutputStream(resp), rb, true);
+			} else {
+				//xml version
+				doService(getInputStream(request), getOutputStream(resp), rb, false);
+			}
+		} catch (ConversionException e) {
+			e.printStackTrace();
+			resp.sendError(HttpServletResponse.SC_NOT_ACCEPTABLE, "Unable to convert. Error: " + e.getMessage() );
+		}
 	}
 
 
@@ -87,8 +98,13 @@
 		} else {
 			synchronized (cachedAgents) {
 				if (!cachedAgents.containsKey(configName)) {
-					RuleAgent ag = RuleAgent.newRuleAgent("/" + configName + ".properties");
-					cachedAgents.put(configName, ag);
+					 try {
+						RuleAgent ag = RuleAgent.newRuleAgent("/" + configName + ".properties");
+						cachedAgents.put(configName, ag);
+					 } catch (NullPointerException npe) {
+						 npe.printStackTrace();
+						 return null;
+					 }
 				}
 				return cachedAgents.get(configName).getRuleBase();
 			}

Modified: labs/jbossrules/trunk/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java	2008-08-22 07:50:59 UTC (rev 21678)
+++ labs/jbossrules/trunk/drools-server/src/test/java/org/drools/server/KnowledgeServiceServletTest.java	2008-08-22 08:05:25 UTC (rev 21679)
@@ -68,6 +68,20 @@
 			//assertTrue(resp.redirect.endsWith("index.jsp"));
 
 
+			//check bad
+			serv.doPost(new MockHttpRequest("something/knowledgebase/XXX", "application/json"), resp);
+			assertEquals(HttpServletResponse.SC_NOT_FOUND, resp.errorCode);
+
+
+			//check bad request
+			resp = new MockHTTPResponse();
+			serv.inputStream = getClass().getResourceAsStream("sample_request_bad.json");
+			outStream = new ByteArrayOutputStream();
+			serv.outputStream = outStream;
+			serv.doPost(new MockHttpRequest("something/knowledgebase/testservice", "application/json"), resp);
+			assertEquals(HttpServletResponse.SC_NOT_ACCEPTABLE, resp.errorCode);
+
+
 		} finally {
 			source.delete();
 		}

Added: labs/jbossrules/trunk/drools-server/src/test/resources/org/drools/server/sample_request_bad.json
===================================================================
--- labs/jbossrules/trunk/drools-server/src/test/resources/org/drools/server/sample_request_bad.json	                        (rev 0)
+++ labs/jbossrules/trunk/drools-server/src/test/resources/org/drools/server/sample_request_bad.json	2008-08-22 08:05:25 UTC (rev 21679)
@@ -0,0 +1,8 @@
+{"knowledgebase-request":{"globals":{"named-fact":{"id":"prs",
+"fact":{"@class":"org.drools.Personx",
+"name":"Jo"}}},
+"inOutFacts":{"named-fact":{"id":"result",
+"fact":{"@class":"something.Result"}}},
+"inFacts":{"anon-fact":{"fact":{"@class":"something.Car",
+"name":"saab",
+"type":"wagon"}}}}}
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-server/src/test/resources/org/drools/server/sample_request_bad.json
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list