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 }