01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: * $Header:$
18: */
19: package org.apache.beehive.netui.pageflow;
20:
21: import javax.servlet.http.HttpServletResponse;
22: import java.io.IOException;
23:
24: /**
25: * Exception thrown when:
26: * <ul>
27: * <li>
28: * An action ({@link org.apache.beehive.netui.pageflow.annotations.Jpf.Action @Jpf.Action}
29: * or {@link org.apache.beehive.netui.pageflow.annotations.Jpf.SimpleAction @Jpf.SimpleAction})
30: * marked with <code>loginRequired=true</code> is hit when there is no logged-in user, or,
31: * </li>
32: * <li>
33: * An action marked with <code>rolesAllowed="</code><i>list of roles</i><code>"</code> is hit when there is
34: * no logged-in user.
35: * </li>
36: * </ul>
37: * If the requested session-ID is different than the current session-ID, the {@link LoginExpiredException}
38: * will be thrown instead of the <code>NotLoggedInException</code>.
39: */
40: public class NotLoggedInException extends PageFlowException implements
41: ResponseErrorCodeSender {
42: public NotLoggedInException(String actionName, FlowController fc) {
43: super (actionName, fc);
44: }
45:
46: protected Object[] getMessageArgs() {
47: return new Object[] { getActionName(), getFlowControllerURI() };
48: }
49:
50: public String[] getMessageParts() {
51: return new String[] { "Action ", " on page flow ",
52: " requires a current user, but there is no logged-in user." };
53: }
54:
55: public void sendResponseErrorCode(HttpServletResponse response)
56: throws IOException {
57: response.sendError(HttpServletResponse.SC_BAD_REQUEST,
58: getLocalizedMessage());
59: }
60:
61: /**
62: * Tell whether the root cause may be session expiration in cases where the requested session ID is different than
63: * the actual session ID. In this case, the answer is <code>true</code>.
64: */
65: public boolean causeMayBeSessionExpiration() {
66: return true;
67: }
68: }
|