[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