001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: * $Header:$
018: */
019: package org.apache.beehive.netui.pageflow;
020:
021: /**
022: * Exception that occurs when an action output has been added to a {@link Forward} that resolves to a
023: * {@link org.apache.beehive.netui.pageflow.annotations.Jpf.Forward @Jpf.Forward} annotation marked with
024: * <code>{@link org.apache.beehive.netui.pageflow.annotations.Jpf.Forward#redirect redirect}=true</code>.
025: * Action outputs may not be used on redirect forwards.
026: */
027: public class IllegalActionOutputException extends PageFlowException {
028: private String _forwardName;
029: private String _actionOutputName;
030:
031: /**
032: * Constructor.
033: *
034: * @param forwardName the name of the relevant {@link Forward}.
035: * @param actionName the name of the current action being run.
036: * @param flowController the current {@link FlowController} instance.
037: * @param actionOutputName the name of the relevant action output.
038: */
039: public IllegalActionOutputException(String forwardName,
040: String actionName, FlowController flowController,
041: String actionOutputName) {
042: super (actionName, flowController);
043: _forwardName = forwardName;
044: _actionOutputName = actionOutputName;
045: }
046:
047: /**
048: * Get the name of the relevant {@link Forward}.
049: *
050: * @return a String that is the name of the relevant {@link Forward}.
051: */
052: public String getForwardName() {
053: return _forwardName;
054: }
055:
056: /**
057: * Set the name of the relevant {@link Forward}.
058: *
059: * @param forwardName a String that is the name of the relevant {@link Forward}.
060: */
061: public void setForwardName(String forwardName) {
062: _forwardName = forwardName;
063: }
064:
065: /**
066: * Get the name of the relevant action output.
067: *
068: * @return a String that is the name of the relevant action output.
069: */
070: public String getActionOutputName() {
071: return _actionOutputName;
072: }
073:
074: /**
075: * Set the name of the relevant action output.
076: *
077: * @param actionOutputName a String that is the name of the relevant action output.
078: */
079: public void setActionOutputName(String actionOutputName) {
080: _actionOutputName = actionOutputName;
081: }
082:
083: protected Object[] getMessageArgs() {
084: return new Object[] { _forwardName, getActionName(),
085: getFlowControllerURI(), _actionOutputName };
086: }
087:
088: public String[] getMessageParts() {
089: return new String[] {
090: "The forward \"",
091: "\" on action ",
092: " in page flow ",
093: " has at least one action output (\"",
094: "\"), but is set to redirect=\"true\". Action outputs may not be used on redirect forwards." };
095: }
096:
097: /**
098: * Tell whether the root cause may be session expiration in cases where the requested session ID is different than
099: * the actual session ID. In this case, the answer is <code>false</code>.
100: */
101: public boolean causeMayBeSessionExpiration() {
102: return false;
103: }
104: }
|