001 // Copyright May 8, 2006 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 package org.apache.tapestry.services.impl;
015
016 import org.apache.tapestry.IRequestCycle;
017 import org.apache.tapestry.asset.AssetFactory;
018 import org.apache.tapestry.engine.IEngineService;
019 import org.apache.tapestry.markup.MarkupWriterSource;
020 import org.apache.tapestry.services.RequestLocaleManager;
021 import org.apache.tapestry.services.ResponseBuilder;
022 import org.apache.tapestry.services.ResponseContributor;
023 import org.apache.tapestry.web.WebRequest;
024 import org.apache.tapestry.web.WebResponse;
025
026 import java.io.IOException;
027 import java.util.ArrayList;
028 import java.util.List;
029
030
031 /**
032 * Handles determining dojo ajax requests.
033 *
034 * @author jkuhnert
035 */
036 public class DojoAjaxResponseContributorImpl implements ResponseContributor
037 {
038 public static final String DOJO_AJAX_HEADER = "dojo-ajax-request";
039
040 private RequestLocaleManager _localeManager;
041
042 private MarkupWriterSource _markupWriterSource;
043
044 private WebResponse _webResponse;
045
046 private WebRequest _webRequest;
047
048 private String _exceptionPageName;
049
050 private String _staleSessionPageName;
051
052 private String _staleLinkPageName;
053
054 private AssetFactory _assetFactory;
055
056 private IEngineService _pageService;
057
058 /**
059 * {@inheritDoc}
060 */
061 public ResponseBuilder createBuilder(IRequestCycle cycle)
062 throws IOException
063 {
064 List errorPages = new ArrayList();
065 errorPages.add(_exceptionPageName);
066 errorPages.add(_staleSessionPageName);
067 errorPages.add(_staleLinkPageName);
068
069 return new DojoAjaxResponseBuilder(cycle, _localeManager,
070 _markupWriterSource,
071 _webResponse, errorPages, _assetFactory,
072 _webResponse.getNamespace(), _pageService);
073 }
074
075 /**
076 * {@inheritDoc}
077 */
078 public boolean handlesResponse(IRequestCycle cycle)
079 {
080 String parm = cycle.getParameter(DOJO_AJAX_HEADER);
081
082 if (parm != null && Boolean.valueOf(parm).booleanValue())
083 return true;
084 return _webRequest.getHeader(DOJO_AJAX_HEADER) != null;
085 }
086
087 public void setLocaleManager(RequestLocaleManager localeManager)
088 {
089 _localeManager = localeManager;
090 }
091
092 public void setMarkupWriterSource(MarkupWriterSource markupWriterSource)
093 {
094 _markupWriterSource = markupWriterSource;
095 }
096
097 public void setWebResponse(WebResponse webResponse)
098 {
099 _webResponse = webResponse;
100 }
101
102 public void setWebRequest(WebRequest webRequest)
103 {
104 _webRequest = webRequest;
105 }
106
107 public void setExceptionPageName(String name)
108 {
109 _exceptionPageName = name;
110 }
111
112 public void setStaleSessionPageName(String name)
113 {
114 _staleSessionPageName = name;
115 }
116
117 public void setStaleLinkPageName(String name)
118 {
119 _staleLinkPageName = name;
120 }
121
122 public void setAssetFactory(AssetFactory factory)
123 {
124 _assetFactory = factory;
125 }
126
127 public void setPageService(IEngineService service)
128 {
129 _pageService = service;
130 }
131 }