morciuch    2003/06/19 16:28:20

  Modified:    src/java/org/apache/jetspeed/modules/actions JLoginUser.java
                        JetspeedAccessController.java
                        JetspeedSessionValidator.java
  Log:
  Applied necessary changes to trap Horrible Exception stack traces (see Bugzilla bug# 
20511).
  
  ShowError template (or whatever is defined as template.error in tr.props) is 
displayed which isn't much better than the stack trace itself but at least can be 
customized.
  
  Revision  Changes    Path
  1.34      +11 -1     
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JLoginUser.java
  
  Index: JLoginUser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JLoginUser.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- JLoginUser.java   7 Apr 2003 19:46:27 -0000       1.33
  +++ JLoginUser.java   19 Jun 2003 23:28:20 -0000      1.34
  @@ -77,7 +77,7 @@
   
   
   import org.apache.jetspeed.om.security.JetspeedUser;
  -
  +import org.apache.jetspeed.services.security.nosecurity.FakeJetspeedUser;
   import org.apache.jetspeed.services.rundata.JetspeedRunData;
   import org.apache.jetspeed.services.resources.JetspeedResources;
   import org.apache.jetspeed.services.JetspeedSecurity;
  @@ -272,6 +272,16 @@
                   data.getParameters().setString("username", username);
               } 
   
  +            return;
  +        }
  +        catch (Throwable other)
  +        {
  +            
data.setScreenTemplate(JetspeedResources.getString(TurbineConstants.TEMPLATE_ERROR));
  +            String message = other.getMessage() != null ? other.getMessage() : 
other.toString();
  +            data.setMessage(message);
  +            
data.setStackTrace(org.apache.turbine.util.StringUtils.stackTrace(other), other);
  +            JetspeedUser juser = new 
FakeJetspeedUser(JetspeedSecurity.getAnonymousUserName(), false);
  +            data.setUser(juser);
               return;
           }
   
  
  
  
  1.8       +34 -5     
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedAccessController.java
  
  Index: JetspeedAccessController.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedAccessController.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- JetspeedAccessController.java     7 May 2003 15:16:47 -0000       1.7
  +++ JetspeedAccessController.java     19 Jun 2003 23:28:20 -0000      1.8
  @@ -57,11 +57,15 @@
   import org.apache.turbine.util.RunData;
   import org.apache.turbine.modules.Action;
   import org.apache.turbine.util.Log;
  +import org.apache.turbine.TurbineConstants;
   
   import org.apache.jetspeed.services.rundata.JetspeedRunData;
   import org.apache.jetspeed.services.Profiler;
  +import org.apache.jetspeed.services.resources.JetspeedResources;
   import org.apache.jetspeed.om.profile.Profile;
   import org.apache.jetspeed.om.security.JetspeedUser;
  +import org.apache.jetspeed.services.security.nosecurity.FakeJetspeedUser;
  +import org.apache.jetspeed.services.JetspeedSecurity;
   
   /**
       Calls the profiler to load the requested PSML resource based on request params
  @@ -92,11 +96,36 @@
               return;
           }
   
  +        Profile newProfile = null;
  +        Profile currentProfile = null;
   
  -       // get the profile and store it in the RunData
  -        Profile newProfile = Profiler.getProfile(jdata);
  -        Profile currentProfile = jdata.getProfile();
  -
  +        try
  +        {
  +            // get the profile and store it in the RunData
  +            newProfile = Profiler.getProfile(jdata);
  +            currentProfile = jdata.getProfile();
  +        }
  +        catch (Throwable other)
  +        {
  +            
data.setScreenTemplate(JetspeedResources.getString(TurbineConstants.TEMPLATE_ERROR));
  +            String message = other.getMessage() != null ? other.getMessage() : 
other.toString();
  +            data.setMessage(message);
  +            
data.setStackTrace(org.apache.turbine.util.StringUtils.stackTrace(other), other);
  +
  +            if (currentProfile == null)
  +            {
  +                currentProfile = Profiler.createProfile();
  +            }
  +            if (newProfile == null)
  +            {
  +                newProfile = Profiler.createProfile();
  +            }
  +            if (data.getUser() == null)
  +            {
  +                JetspeedUser juser = new 
FakeJetspeedUser(JetspeedSecurity.getAnonymousUserName(), false);
  +                data.setUser(juser);
  +            }
  +        }
   
   
           if ((currentProfile == null)
  
  
  
  1.24      +14 -2     
jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedSessionValidator.java
  
  Index: JetspeedSessionValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedSessionValidator.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- JetspeedSessionValidator.java     7 May 2003 15:16:47 -0000       1.23
  +++ JetspeedSessionValidator.java     19 Jun 2003 23:28:20 -0000      1.24
  @@ -60,6 +60,7 @@
   import org.apache.turbine.util.Log;
   import org.apache.turbine.services.resources.TurbineResources;
   import org.apache.turbine.services.localization.LocalizationService;
  +import org.apache.turbine.TurbineConstants;
   
   import org.apache.jetspeed.om.security.JetspeedUser;
   import org.apache.jetspeed.services.JetspeedSecurity;
  @@ -101,7 +102,18 @@
           //FIXME: if the user is not found (this can happen, for instance,
           // if the anonymous user is not in the DB), it throws a terrible exception
           // in the user's face
  -         super.doPerform(data);         
  +        try 
  +        {
  +            super.doPerform(data);         
  +        }
  +        catch (Throwable other)
  +        {
  +            
data.setScreenTemplate(JetspeedResources.getString(TurbineConstants.TEMPLATE_ERROR));
  +            String message = other.getMessage() != null ? other.getMessage() : 
other.toString();
  +            data.setMessage(message);
  +            
data.setStackTrace(org.apache.turbine.util.StringUtils.stackTrace(other), other);
  +            return;
  +        }
        
           JetspeedUser user = (JetspeedUser)data.getUser();
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to