001: /*
002: * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/Wire.java,v 1.9 2004/06/24 21:39:52 mbecke Exp $
003: * $Revision: 480424 $
004: * $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $
005: *
006: * ====================================================================
007: *
008: * Licensed to the Apache Software Foundation (ASF) under one or more
009: * contributor license agreements. See the NOTICE file distributed with
010: * this work for additional information regarding copyright ownership.
011: * The ASF licenses this file to You under the Apache License, Version 2.0
012: * (the "License"); you may not use this file except in compliance with
013: * the License. You may obtain a copy of the License at
014: *
015: * http://www.apache.org/licenses/LICENSE-2.0
016: *
017: * Unless required by applicable law or agreed to in writing, software
018: * distributed under the License is distributed on an "AS IS" BASIS,
019: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
020: * See the License for the specific language governing permissions and
021: * limitations under the License.
022: * ====================================================================
023: *
024: * This software consists of voluntary contributions made by many
025: * individuals on behalf of the Apache Software Foundation. For more
026: * information on the Apache Software Foundation, please see
027: * <http://www.apache.org/>.
028: *
029: */
030:
031: package org.apache.commons.httpclient;
032:
033: import java.io.IOException;
034: import java.io.InputStream;
035: import java.io.ByteArrayInputStream;
036: import org.apache.commons.logging.Log;
037: import org.apache.commons.logging.LogFactory;
038:
039: /**
040: * Logs data to the wire LOG.
041: *
042: * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
043: *
044: * @since 2.0beta1
045: */
046: class Wire {
047:
048: public static Wire HEADER_WIRE = new Wire(LogFactory
049: .getLog("httpclient.wire.header"));
050:
051: public static Wire CONTENT_WIRE = new Wire(LogFactory
052: .getLog("httpclient.wire.content"));
053:
054: /** Log for any wire messages. */
055: private Log log;
056:
057: private Wire(Log log) {
058: this .log = log;
059: }
060:
061: private void wire(String header, InputStream instream)
062: throws IOException {
063: StringBuffer buffer = new StringBuffer();
064: int ch;
065: while ((ch = instream.read()) != -1) {
066: if (ch == 13) {
067: buffer.append("[\\r]");
068: } else if (ch == 10) {
069: buffer.append("[\\n]\"");
070: buffer.insert(0, "\"");
071: buffer.insert(0, header);
072: log.debug(buffer.toString());
073: buffer.setLength(0);
074: } else if ((ch < 32) || (ch > 127)) {
075: buffer.append("[0x");
076: buffer.append(Integer.toHexString(ch));
077: buffer.append("]");
078: } else {
079: buffer.append((char) ch);
080: }
081: }
082: if (buffer.length() > 0) {
083: buffer.append("\"");
084: buffer.insert(0, "\"");
085: buffer.insert(0, header);
086: log.debug(buffer.toString());
087: }
088: }
089:
090: public boolean enabled() {
091: return log.isDebugEnabled();
092: }
093:
094: public void output(InputStream outstream) throws IOException {
095: if (outstream == null) {
096: throw new IllegalArgumentException("Output may not be null");
097: }
098: wire(">> ", outstream);
099: }
100:
101: public void input(InputStream instream) throws IOException {
102: if (instream == null) {
103: throw new IllegalArgumentException("Input may not be null");
104: }
105: wire("<< ", instream);
106: }
107:
108: public void output(byte[] b, int off, int len) throws IOException {
109: if (b == null) {
110: throw new IllegalArgumentException("Output may not be null");
111: }
112: wire(">> ", new ByteArrayInputStream(b, off, len));
113: }
114:
115: public void input(byte[] b, int off, int len) throws IOException {
116: if (b == null) {
117: throw new IllegalArgumentException("Input may not be null");
118: }
119: wire("<< ", new ByteArrayInputStream(b, off, len));
120: }
121:
122: public void output(byte[] b) throws IOException {
123: if (b == null) {
124: throw new IllegalArgumentException("Output may not be null");
125: }
126: wire(">> ", new ByteArrayInputStream(b));
127: }
128:
129: public void input(byte[] b) throws IOException {
130: if (b == null) {
131: throw new IllegalArgumentException("Input may not be null");
132: }
133: wire("<< ", new ByteArrayInputStream(b));
134: }
135:
136: public void output(int b) throws IOException {
137: output(new byte[] { (byte) b });
138: }
139:
140: public void input(int b) throws IOException {
141: input(new byte[] { (byte) b });
142: }
143:
144: public void output(final String s) throws IOException {
145: if (s == null) {
146: throw new IllegalArgumentException("Output may not be null");
147: }
148: output(s.getBytes());
149: }
150:
151: public void input(final String s) throws IOException {
152: if (s == null) {
153: throw new IllegalArgumentException("Input may not be null");
154: }
155: input(s.getBytes());
156: }
157: }
|