java/code/src/com/redhat/rhn/common/errors/BadParameterExceptionHandler.java | 24
+++++++--
java/code/src/com/redhat/rhn/common/errors/LookupExceptionHandler.java | 26
++++++++--
java/code/src/com/redhat/rhn/frontend/struts/RequestContext.java | 2
java/code/src/com/redhat/rhn/frontend/struts/RhnRequestProcessor.java | 5 +
java/spacewalk-java.spec | 5 +
rel-eng/packages/spacewalk-java | 2
6 files changed, 51 insertions(+), 13 deletions(-)
New commits:
commit d02751c92e478dfe572eac746d8925267345da46
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon May 6 17:48:31 2013 +0200
Automatic commit of package [spacewalk-java] release [1.10.73-1].
diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec
index 393ed32..7340a08 100644
--- a/java/spacewalk-java.spec
+++ b/java/spacewalk-java.spec
@@ -28,7 +28,7 @@ Name: spacewalk-java
Summary: Spacewalk Java site packages
Group: Applications/Internet
License: GPLv2
-Version: 1.10.72
+Version: 1.10.73
Release: 1%{?dist}
URL:
https://fedorahosted.org/spacewalk
Source0:
https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -751,6 +751,9 @@ fi
%{jardir}/postgresql-jdbc.jar
%changelog
+* Mon May 06 2013 Tomas Lestach <tlestach(a)redhat.com> 1.10.73-1
+- 924205 - enhance exception handling
+
* Sat May 04 2013 Grant Gainey <ggainey(a)redhat.com> 1.10.72-1
- A lot of JUnit cleanup
- Print stack trace in case of CSV failures.
diff --git a/rel-eng/packages/spacewalk-java b/rel-eng/packages/spacewalk-java
index 6ad77cc..92b8b20 100644
--- a/rel-eng/packages/spacewalk-java
+++ b/rel-eng/packages/spacewalk-java
@@ -1 +1 @@
-1.10.72-1 java/
+1.10.73-1 java/
commit a9c0890ef45ac9e7eed6df74880c8db299d260bc
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Fri May 3 16:41:38 2013 +0200
924205 - enhance exception handling
return proper HTTP error codes like BAD_REQUEST, FORBIDDEN
diff --git a/java/code/src/com/redhat/rhn/common/errors/BadParameterExceptionHandler.java
b/java/code/src/com/redhat/rhn/common/errors/BadParameterExceptionHandler.java
index e8924fc..5ed7b54 100644
--- a/java/code/src/com/redhat/rhn/common/errors/BadParameterExceptionHandler.java
+++ b/java/code/src/com/redhat/rhn/common/errors/BadParameterExceptionHandler.java
@@ -21,11 +21,16 @@ import com.redhat.rhn.frontend.events.TraceBackEvent;
import com.redhat.rhn.frontend.struts.RequestContext;
import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ExceptionHandler;
+import org.apache.struts.config.ExceptionConfig;
+import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
/**
* BadParameterExceptionHandler
@@ -38,10 +43,24 @@ public class BadParameterExceptionHandler extends ExceptionHandler {
/**
* {@inheritDoc}
*/
+ @Override
+ public ActionForward execute(Exception exIn, ExceptionConfig aeIn,
+ ActionMapping mappingIn, ActionForm formInstanceIn,
+ HttpServletRequest requestIn, HttpServletResponse responseIn)
+ throws ServletException {
+ exception = (BadParameterException) exIn;
+ requestIn.setAttribute("error", exception);
+ responseIn.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+ return super.execute(exception, aeIn, mappingIn, formInstanceIn, requestIn,
+ responseIn);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
protected void logException(Exception ex) {
Logger log = Logger.getLogger(BadParameterExceptionHandler.class);
log.error("Missing Parameter Error", ex);
- exception = (BadParameterException) ex;
}
protected void storeException(HttpServletRequest request, String property,
@@ -52,8 +71,5 @@ public class BadParameterExceptionHandler extends ExceptionHandler {
evt.setRequest(request);
evt.setException(exception);
MessageQueue.publish(evt);
-
- request.setAttribute("error", exception);
}
-
}
diff --git a/java/code/src/com/redhat/rhn/common/errors/LookupExceptionHandler.java
b/java/code/src/com/redhat/rhn/common/errors/LookupExceptionHandler.java
index ff48c07..8de560c 100644
--- a/java/code/src/com/redhat/rhn/common/errors/LookupExceptionHandler.java
+++ b/java/code/src/com/redhat/rhn/common/errors/LookupExceptionHandler.java
@@ -23,11 +23,16 @@ import com.redhat.rhn.frontend.events.TraceBackEvent;
import com.redhat.rhn.frontend.struts.RequestContext;
import org.apache.log4j.Logger;
+import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ExceptionHandler;
+import org.apache.struts.config.ExceptionConfig;
+import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
/**
* LookupExceptionHandler
@@ -40,10 +45,24 @@ public class LookupExceptionHandler extends ExceptionHandler {
/**
* {@inheritDoc}
*/
+ @Override
+ public ActionForward execute(Exception exIn, ExceptionConfig aeIn,
+ ActionMapping mappingIn, ActionForm formInstanceIn,
+ HttpServletRequest requestIn, HttpServletResponse responseIn)
+ throws ServletException {
+ exception = (LookupException) exIn;
+ requestIn.setAttribute("error", exception);
+ responseIn.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return super.execute(exception, aeIn, mappingIn, formInstanceIn, requestIn,
+ responseIn);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
protected void logException(Exception ex) {
Logger log = Logger.getLogger(LookupExceptionHandler.class);
- exception = (LookupException) ex;
- log.warn(exception.getMessage());
+ log.warn(ex.getMessage());
}
protected void storeException(HttpServletRequest request, String property,
@@ -57,8 +76,5 @@ public class LookupExceptionHandler extends ExceptionHandler {
evt.setException(exception);
MessageQueue.publish(evt);
}
- request.setAttribute("error", exception);
-
}
-
}
diff --git a/java/code/src/com/redhat/rhn/frontend/struts/RequestContext.java
b/java/code/src/com/redhat/rhn/frontend/struts/RequestContext.java
index 2df40c4..52fc845 100644
--- a/java/code/src/com/redhat/rhn/frontend/struts/RequestContext.java
+++ b/java/code/src/com/redhat/rhn/frontend/struts/RequestContext.java
@@ -475,7 +475,7 @@ public class RequestContext {
// " is required and must be a Long, but was '" + p
+"'");
// That one day has finally arrived! And the coders rejoiced.
throw new BadParameterException("The parameter " + paramName +
- " is required.");
+ " is required, when accessing " + request.getRequestURI());
}
return result;
}
diff --git a/java/code/src/com/redhat/rhn/frontend/struts/RhnRequestProcessor.java
b/java/code/src/com/redhat/rhn/frontend/struts/RhnRequestProcessor.java
index 587293d..2d638c9 100644
--- a/java/code/src/com/redhat/rhn/frontend/struts/RhnRequestProcessor.java
+++ b/java/code/src/com/redhat/rhn/frontend/struts/RhnRequestProcessor.java
@@ -87,7 +87,10 @@ public class RhnRequestProcessor extends RequestProcessor {
if (!AclManager.hasAcl(mapping.getAcls(), request, mapping.getMixins()))
{
//an acl evaluated to false
- PermissionException e = new PermissionException("Missing
Acl");
+ PermissionException e = new PermissionException("Missing Acl:
" +
+ mapping.getAcls() + " when accessing " +
request.getRequestURI());
+ log.error(e.getMessage());
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
request.setAttribute("error", e);
//forward to permissions error page
doForward("/errors/Permission.do", request, response);