/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.testmisc.portlet;
import com.liferay.portal.kernel.io.unsync.UnsyncByteArrayOutputStream;
import com.liferay.portal.kernel.io.unsync.UnsyncStringWriter;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.UnsyncPrintWriterPool;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import javax.portlet.RenderResponse;
import javax.portlet.filter.RenderResponseWrapper;
/**
* @author Mika Koivisto
* @author Michael Young
*/
public class TestRenderResponse extends RenderResponseWrapper {
public TestRenderResponse(RenderResponse renderResponse) {
super(renderResponse);
}
@Override
public OutputStream getPortletOutputStream() {
if (_printWriter != null) {
throw new IllegalStateException(
"Cannot obtain OutputStream because Writer is already in use");
}
if (_byteArrayOutputStream == null) {
_byteArrayOutputStream = new UnsyncByteArrayOutputStream();
}
return _byteArrayOutputStream;
}
public String getString() {
if (_string != null) {
return _string;
}
if (_byteArrayOutputStream != null) {
try {
_string = _byteArrayOutputStream.toString(StringPool.UTF8);
}
catch (UnsupportedEncodingException uee) {
uee.printStackTrace();
_string = StringPool.BLANK;
}
}
else if (_printWriter != null) {
_string = _unsyncStringWriter.toString();
}
else {
_string = StringPool.BLANK;
}
return _string;
}
@Override
public PrintWriter getWriter() {
if (_byteArrayOutputStream != null) {
throw new IllegalStateException(
"Cannot obtain Writer because OutputStream is already in use");
}
if (_printWriter == null) {
_unsyncStringWriter = new UnsyncStringWriter();
_printWriter = UnsyncPrintWriterPool.borrow(_unsyncStringWriter);
}
return _printWriter;
}
public boolean isCalledGetOutputStream() {
if (_byteArrayOutputStream != null) {
return true;
}
else {
return false;
}
}
public boolean isCalledGetWriter() {
if (_printWriter != null) {
return true;
}
else {
return false;
}
}
private UnsyncByteArrayOutputStream _byteArrayOutputStream;
private PrintWriter _printWriter;
private String _string;
private UnsyncStringWriter _unsyncStringWriter;
}