|
What this is
Other links
The source code/* * Copyright 1999-2004 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.coyote.tomcat3; import java.io.IOException; import java.util.Locale; import org.apache.coyote.ActionCode; import org.apache.tomcat.core.Response; import org.apache.tomcat.util.buf.ByteChunk; /** The Response to connect with Coyote. * This class mostly handles the I/O between Tomcat and Coyte. * @Author Bill Barker */ class Tomcat3Response extends Response { String reportedname=null; org.apache.coyote.Response coyoteResponse=null; ByteChunk outputChunk = new ByteChunk(); boolean acknowledged=false; public Tomcat3Response() { super(); } /** Attach a Coyote Request to this request. */ public void setCoyoteResponse(org.apache.coyote.Response cRes) { coyoteResponse = cRes; headers = coyoteResponse.getMimeHeaders(); } public void init() { super.init(); } public void recycle() { super.recycle(); if(coyoteResponse != null) coyoteResponse.recycle(); outputChunk.recycle(); acknowledged=false; } // XXX What is this ? */ public void setReported(String reported) { reportedname = reported; } public void endHeaders() throws IOException { super.endHeaders(); coyoteResponse.setStatus(getStatus()); // Check that the content-length has been set. int cLen = getContentLength(); if( cLen >= 0 ) { coyoteResponse.setContentLength(cLen); } // Calls a sendHeaders callback to the protocol coyoteResponse.sendHeaders(); } public void clientFlush() throws IOException { coyoteResponse.action( ActionCode.ACTION_CLIENT_FLUSH, coyoteResponse ); } public void doWrite( byte buffer[], int pos, int count) throws IOException { if( count > 0 ) { // XXX should be an explicit callback as well. outputChunk.setBytes(buffer, pos, count); coyoteResponse.doWrite( outputChunk ); } } public void reset() throws IllegalStateException { super.reset(); if( ! included ) coyoteResponse.reset(); } public void finish() throws IOException { super.finish(); coyoteResponse.finish(); } /** * Send an acknowledgment of a request. * * @exception IOException if an input/output error occurs */ public void sendAcknowledgement() throws IOException { if( status >= 300 ) // Don't ACK on errors. acknowledged = true; // Don't ACK twice on the same request. (e.g. on a forward) if(acknowledged) return; // Ignore any call from an included servlet if (isIncluded()) return; if (isBufferCommitted()) throw new IllegalStateException (sm.getString("hsrf.error.ise")); coyoteResponse.acknowledge(); acknowledged=true; } public void setLocale(Locale locale) { if (locale == null || included) { return; // throw an exception? } this.locale = locale; coyoteResponse.setLocale(locale); contentLanguage = coyoteResponse.getContentLanguage(); // maintain Tomcat 3.3 behavior by setting the header too // and by not trying to guess the characterEncoding headers.setValue("Content-Language").setString(contentLanguage); } public void setContentType(String contentType) { if (included) { return; } coyoteResponse.setContentType(contentType); this.contentType = coyoteResponse.getContentType(); this.characterEncoding = coyoteResponse.getCharacterEncoding(); this.haveCharacterEncoding = true; // maintain Tomcat 3.3 behavior by setting the header too headers.setValue("Content-Type").setString(contentType); } } |
... this post is sponsored by my books ... | |
![]() #1 New Release! |
![]() FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.