All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.util.LineEndNormalizingWriter Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 *
 * Copyright (c) 2004-2009 Oracle Corporation.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * 
 *    Kohsuke Kawaguchi
 *
 *
 *******************************************************************************/ 

package hudson.util;

import java.io.FilterWriter;
import java.io.Writer;
import java.io.IOException;

/**
 * Finds the lone LF and converts that to CR+LF.
 *
 * 

Internet Explorer's XmlHttpRequest.responseText seems to * normalize the line end, and if we only send LF without CR, it will not * recognize that as a new line. To work around this problem, we use this filter * to always convert LF to CR+LF. * * @author Kohsuke Kawaguchi * @deprecated since 2008-05-28. moved to stapler */ public class LineEndNormalizingWriter extends FilterWriter { private boolean seenCR; public LineEndNormalizingWriter(Writer out) { super(out); } public void write(char cbuf[]) throws IOException { write(cbuf, 0, cbuf.length); } public void write(String str) throws IOException { write(str, 0, str.length()); } public void write(int c) throws IOException { if (!seenCR && c == LF) { super.write("\r\n"); } else { super.write(c); } seenCR = (c == CR); } public void write(char cbuf[], int off, int len) throws IOException { int end = off + len; int writeBegin = off; for (int i = off; i < end; i++) { char ch = cbuf[i]; if (!seenCR && ch == LF) { // write up to the char before LF super.write(cbuf, writeBegin, i - writeBegin); super.write("\r\n"); writeBegin = i + 1; } seenCR = (ch == CR); } super.write(cbuf, writeBegin, end - writeBegin); } public void write(String str, int off, int len) throws IOException { int end = off + len; int writeBegin = off; for (int i = off; i < end; i++) { char ch = str.charAt(i); if (!seenCR && ch == LF) { // write up to the char before LF super.write(str, writeBegin, i - writeBegin); super.write("\r\n"); writeBegin = i + 1; } seenCR = (ch == CR); } super.write(str, writeBegin, end - writeBegin); } private static final int CR = 0x0D; private static final int LF = 0x0A; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy