/**
*
*/
package com.grendelscan.commons.http.dataHandling.containers;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.commons.lang.NotImplementedException;
import org.apache.http.entity.mime.MIME;
import org.apache.http.util.ByteArrayBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.grendelscan.commons.http.dataHandling.DataParser;
import com.grendelscan.commons.http.dataHandling.data.AbstractData;
import com.grendelscan.commons.http.dataHandling.data.Data;
import com.grendelscan.commons.http.dataHandling.data.DataUtils;
import com.grendelscan.commons.http.dataHandling.references.DataReference;
import com.grendelscan.commons.http.dataHandling.references.NameOrValueReference;
import com.grendelscan.commons.http.dataHandling.references.NamedDataContainerDataReference;
import com.grendelscan.commons.CharsetUtils;
import com.grendelscan.commons.StringUtils;
import com.grendelscan.commons.formatting.DataEncodingStream;
import com.grendelscan.commons.formatting.DataFormat;
import com.grendelscan.commons.formatting.DataFormatException;
import com.grendelscan.commons.formatting.DataFormatType;
import com.grendelscan.commons.formatting.DataFormatUtils;
/**
* @author david
*
*/
public class NamedMimeParameterDataContainer extends NamedQueryParameterDataContainer
{
private static final Logger LOGGER = LoggerFactory.getLogger(NamedMimeParameterDataContainer.class);
private static final long serialVersionUID = 1L;
public NamedMimeParameterDataContainer(DataContainer<?> parent, byte[] name, byte[] value, int transactionId, DataFormat childFormat)
{
super(parent, name, value, transactionId, childFormat);
}
/* (non-Javadoc)
* @see com.grendelscan.commons.http.dataHandling.data.Data#writeBytes(java.io.OutputStream)
*/
@Override
public void writeBytes(OutputStream out)
{
try
{
out.write(CharsetUtils.encode(MIME.DEFAULT_CHARSET, MIME.CONTENT_DISPOSITION + ": form-data; name=\""));
name.writeBytes(out);
out.write(CharsetUtils.encode(MIME.DEFAULT_CHARSET, "\"\r\n\r\n"));
value.writeBytes(out);
out.write(CharsetUtils.encode(MIME.DEFAULT_CHARSET, "\r\n"));
}
catch (IOException e)
{
LOGGER.error("Very odd problem encoding data: " + e.toString(), e);
}
}
/* (non-Javadoc)
* @see com.grendelscan.commons.http.dataHandling.containers.DataContainer#childrenDebugString()
*/
@Override
public String childrenDebugString()
{
StringBuilder sb = new StringBuilder();
sb.append("Name:\n");
sb.append(StringUtils.indentLines(name.debugString(), 1));
sb.append("\nValue:\n");
sb.append(StringUtils.indentLines(value.debugString(), 1));
return sb.toString();
}
/* (non-Javadoc)
* @see com.grendelscan.commons.http.dataHandling.data.Data#debugString()
*/
@Override
public String debugString()
{
StringBuilder sb = new StringBuilder();
sb.append("NamedMimeParameterDataContainer -\n");
sb.append(StringUtils.indentLines(abstractDataDebugString(), 1));
sb.append("\n\tChild format: ");
sb.append(childFormat.formatType);
sb.append("\n");
sb.append(StringUtils.indentLines(childrenDebugString(), 1));
return sb.toString();
}
}