001 package org.apache.tapestry.services.impl; 002 003 import org.apache.tapestry.IRequestCycle; 004 import org.apache.tapestry.asset.AssetFactory; 005 import org.apache.tapestry.markup.MarkupWriterSource; 006 import org.apache.tapestry.services.RequestLocaleManager; 007 import org.apache.tapestry.services.ResponseBuilder; 008 import org.apache.tapestry.services.ResponseContributor; 009 import org.apache.tapestry.web.WebRequest; 010 import org.apache.tapestry.web.WebResponse; 011 012 import java.io.IOException; 013 014 /** 015 * Implementation of prototype javascript library XHR request sniffer. 016 */ 017 public class PrototypeResponseContributorImpl implements ResponseContributor { 018 019 public static final String PROTOTYPE_HEADER = "X-Prototype-Version"; 020 021 private RequestLocaleManager _localeManager; 022 private MarkupWriterSource _markupWriterSource; 023 private WebResponse _webResponse; 024 private WebRequest _webRequest; 025 private AssetFactory _assetFactory; 026 027 /** 028 * {@inheritDoc} 029 */ 030 public ResponseBuilder createBuilder(IRequestCycle cycle) 031 throws IOException 032 { 033 return new PrototypeResponseBuilder(cycle, _localeManager, _markupWriterSource, 034 _webResponse, _assetFactory, _webResponse.getNamespace()); 035 } 036 037 /** 038 * {@inheritDoc} 039 */ 040 public boolean handlesResponse(IRequestCycle cycle) 041 { 042 return _webRequest.getHeader(PROTOTYPE_HEADER) != null; 043 } 044 045 public void setLocaleManager(RequestLocaleManager localeManager) 046 { 047 _localeManager = localeManager; 048 } 049 050 public void setMarkupWriterSource(MarkupWriterSource markupWriterSource) 051 { 052 _markupWriterSource = markupWriterSource; 053 } 054 055 public void setWebResponse(WebResponse webResponse) 056 { 057 _webResponse = webResponse; 058 } 059 060 public void setWebRequest(WebRequest webRequest) 061 { 062 _webRequest = webRequest; 063 } 064 065 public void setAssetFactory(AssetFactory factory) 066 { 067 _assetFactory = factory; 068 } 069 }