You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2008/04/19 15:44:34 UTC
svn commit: r649812 -
/struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java
Author: mrdon
Date: Sat Apr 19 06:44:32 2008
New Revision: 649812
URL: http://svn.apache.org/viewvc?rev=649812&view=rev
Log:
Fixing NPE for navigations that don't involve a Struts 2 action
WW-2572
Modified:
struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java
Modified: struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java?rev=649812&r1=649811&r2=649812&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java (original)
+++ struts/struts2/trunk/plugins/jsf/src/main/java/org/apache/struts2/jsf/StrutsNavigationHandler.java Sat Apr 19 06:44:32 2008
@@ -59,28 +59,36 @@
public void handleNavigation(FacesContext facesContext, String fromAction, String outcome) {
ActionContext ctx = ActionContext.getContext();
if (outcome != null) {
- ActionConfig config = ctx.getActionInvocation().getProxy().getConfig();
- Map results = config.getResults();
-
- ResultConfig resultConfig = null;
-
- synchronized (config) {
- try {
- resultConfig = (ResultConfig) results.get(outcome);
- } catch (NullPointerException e) {
- }
- if (resultConfig == null) {
- // If no result is found for the given resultCode, try to get a wildcard '*' match.
- resultConfig = (ResultConfig) results.get("*");
- }
- }
- if (resultConfig != null) {
- ctx.getActionInvocation().setResultCode(outcome);
- } else {
- // Failing over to parent handler
- parent.handleNavigation(facesContext, fromAction, outcome);
- }
+ if (ctx == null && ctx.getActionInvocation() == null) {
+ delegateToParentNavigation(facesContext, fromAction, outcome);
+ } else {
+ ActionConfig config = ctx.getActionInvocation().getProxy().getConfig();
+ Map results = config.getResults();
+
+ ResultConfig resultConfig = null;
+
+ synchronized (config) {
+ try {
+ resultConfig = (ResultConfig) results.get(outcome);
+ } catch (NullPointerException e) {
+ }
+ if (resultConfig == null) {
+ // If no result is found for the given resultCode, try to get a wildcard '*' match.
+ resultConfig = (ResultConfig) results.get("*");
+ }
+ }
+ if (resultConfig != null) {
+ ctx.getActionInvocation().setResultCode(outcome);
+ } else {
+ delegateToParentNavigation(facesContext, fromAction, outcome);
+ }
+ }
}
}
+
+ private void delegateToParentNavigation(FacesContext facesContext, String fromAction, String outcome) {
+ // Failing over to parent handler
+ parent.handleNavigation(facesContext, fromAction, outcome);
+ }
}