/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.portal.instruction;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import org.apache.commons.codec.binary.Base64;
/**
* Created by rmy - Date: Nov 18, 2009
*/
public abstract class PostProcessInstruction
implements Externalizable
{
private final PostProcessInstructionType type;
private boolean disableOutputEscaping = false;
private boolean doUrlEncodeResult = false;
public PostProcessInstruction( PostProcessInstructionType type )
{
this.type = type;
}
public final String serialize()
throws IOException
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream dout = new ObjectOutputStream( out );
writeExternal( dout );
dout.close();
out.close();
return new String( Base64.encodeBase64( out.toByteArray() ) );
}
public final void deserialize( String value )
throws IOException, ClassNotFoundException
{
ByteArrayInputStream in = new ByteArrayInputStream( Base64.decodeBase64( value.getBytes() ) );
ObjectInputStream din = new ObjectInputStream( in );
readExternal( din );
in.close();
din.close();
}
public final PostProcessInstructionType getType()
{
return type;
}
protected void writeString( ObjectOutput out, String value )
throws IOException
{
out.writeUTF( value );
}
protected void writeBoolean( ObjectOutput out, boolean value )
throws IOException
{
out.writeBoolean( value );
}
protected void writeStringArray( ObjectOutput out, String[] array )
throws IOException
{
out.writeInt( array.length );
for ( String element : array )
{
out.writeUTF( element );
}
}
protected String readString( ObjectInput in )
throws IOException
{
return in.readUTF();
}
protected boolean readBoolean( ObjectInput in )
throws IOException
{
return in.readBoolean();
}
protected String[] readStringArray( ObjectInput in )
throws IOException
{
String[] array = new String[in.readInt()];
for ( int i = 0; i < array.length; i++ )
{
array[i] = in.readUTF();
}
return array;
}
public boolean doDisableOutputEscaping()
{
return disableOutputEscaping;
}
public void setDisableOutputEscaping( boolean disableOutputEscaping )
{
this.disableOutputEscaping = disableOutputEscaping;
}
public boolean doUrlEncodeResult()
{
return doUrlEncodeResult;
}
public void setDoUrlEncodeResult( boolean doUrlEncodeResult )
{
this.doUrlEncodeResult = doUrlEncodeResult;
}
}