001 // Copyright 2008, 2009, 2010, 2011 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry5.services;
016
017 import org.apache.tapestry5.EventContext;
018 import org.apache.tapestry5.TapestryConstants;
019 import org.apache.tapestry5.internal.TapestryInternalUtils;
020 import org.apache.tapestry5.internal.structure.PageResetListener;
021
022 /**
023 * Used with {@link org.apache.tapestry5.services.PageRenderRequestHandler} and
024 * {@link org.apache.tapestry5.services.PageRenderRequestFilter} to define the logical page name and
025 * activation context for the request.
026 */
027 public class PageRenderRequestParameters
028 {
029 private final String logicalPageName;
030
031 private final EventContext activationContext;
032
033 /**
034 * @since 5.2.0
035 */
036 private final boolean loopback;
037
038 /**
039 * @deprecated Use {@link #PageRenderRequestParameters(String, EventContext, boolean)}.
040 */
041 public PageRenderRequestParameters(String logicalPageName, EventContext activationContext)
042 {
043 this(logicalPageName, activationContext, false);
044 }
045
046 /**
047 * @since 5.2.0
048 */
049 public PageRenderRequestParameters(String logicalPageName, EventContext activationContext, boolean loopback)
050 {
051 assert logicalPageName != null;
052 assert activationContext != null;
053 this.logicalPageName = logicalPageName;
054 this.activationContext = activationContext;
055 this.loopback = loopback;
056 }
057
058 /**
059 * Returns a {@linkplain ComponentClassResolver#canonicalizePageName(String) canonicalized} version of the page
060 * name.
061 */
062 public String getLogicalPageName()
063 {
064 return logicalPageName;
065 }
066
067 public EventContext getActivationContext()
068 {
069 return activationContext;
070 }
071
072 @Override
073 public boolean equals(Object obj)
074 {
075 if (this == obj)
076 return true;
077
078 if (obj == null || getClass() != obj.getClass())
079 return false;
080
081 PageRenderRequestParameters other = (PageRenderRequestParameters) obj;
082
083 return loopback == other.loopback && logicalPageName.equals(other.logicalPageName)
084 && TapestryInternalUtils.isEqual(activationContext, other.activationContext);
085 }
086
087 /**
088 * Is this request a loopback (a request for the same page that rendered it in the first place)?
089 *
090 * @see TapestryConstants#PAGE_LOOPBACK_PARAMETER_NAME
091 * @see PageResetListener
092 * @since 5.2.0
093 */
094 public boolean isLoopback()
095 {
096 return loopback;
097 }
098
099 @Override
100 public String toString()
101 {
102 return String.format("PageRenderRequestParameters[%s]", logicalPageName);
103 }
104 }