protected boolean executeAction() throws Throwable {
String mimeType = getInputStringValue( ContentOutputComponent.COMPONENT_SETTING_MIME_TYPE );
Object dataToOutput = getInputValue( ContentOutputComponent.INPUT_NAME_EXPECTED );
if ( dataToOutput != null ) {
IContentItem outputContentItem = getOutputContentItem( ContentOutputComponent.OUTPUT_NAME, mimeType );
if ( outputContentItem != null ) {
outputContentItem.setMimeType( mimeType );
OutputStream outputStream = null;
if ( dataToOutput instanceof String ) {
String theOutput = (String) dataToOutput;
if ( theOutput.length() > 0 ) {
try {
outputStream = outputContentItem.getOutputStream( getActionName() );
outputStream.write( theOutput.getBytes( LocaleHelper.getSystemEncoding() ) );
outputStream.flush();
outputStream.close();
outputContentItem.closeOutputStream();
} catch ( Exception e ) {
error( Messages.getInstance().getErrorString( "ContentOutputComponent.ERROR_0003_WRITING_OUTPUT" ), e ); //$NON-NLS-1$
return false;
}
trace( theOutput );
return true;
} else {
error( Messages.getInstance().getErrorString( "ContentOutputComponent.ERROR_0002_EMPTY_OUTPUT" ) ); //$NON-NLS-1$
return false;
}
} else if ( dataToOutput instanceof InputStream ) {
InputStream is = (InputStream) dataToOutput;
byte[] buff = new byte[1024];
int len;
outputStream = outputContentItem.getOutputStream( null );
while ( ( len = is.read( buff ) ) >= 0 ) {
outputStream.write( buff, 0, len );
}
outputStream.flush();
outputStream.close();
outputContentItem.closeOutputStream();
return true;
} else if ( dataToOutput instanceof ByteArrayOutputStream ) {
ByteArrayOutputStream baos = (ByteArrayOutputStream) dataToOutput;
outputStream = outputContentItem.getOutputStream( null );
outputStream.write( baos.toByteArray() );
outputStream.flush();
outputStream.close();
outputContentItem.closeOutputStream();
return true;
} else {
error( Messages.getInstance().getErrorString(
"ContentOutputComponent.ERROR_0007_UNKNOWN_TYPE", dataToOutput.getClass().getName() ) ); //$NON-NLS-1$
return false;