Duvida de fileUpload

Bom dia pessoal,

Eu tenho uma duvida que é o seguinte,

quando eu adiciono um documento(pdf) do fileUpload em uma lista no ManageBean por que ele apaga a lista na segunda vez que eu adiciono outro documento?

eu acho que ja tentei de tudo, mas essa lista documentos não guarda o primeiro upload quando faço o segundo upload.

segue o meu código:


//ManageBean

import br.gov.caixa.siipp.internet.util.FileByte;
import br.gov.caixa.siipp.internet.to.DocumentoTO;

private FileByte fileByte;
private ArrayList<DocumentoTO> documentos = new ArrayList<DocumentoTO>();
private DocumentoTO documentoTO = new DocumentoTO();

/**
	 * @return the documentoTO
	 */
	public DocumentoTO getDocumentoTO() {
		return documentoTO;
	}
	
	/**
	 * @param documentoTO the documentoTO to set
	 */
	public void setDocumentoTO(DocumentoTO documentoTO) {
		this.documentoTO = documentoTO;
	}

/**
	 * @return the documentos
	 */
	public ArrayList<DocumentoTO> getDocumentos() {
		return documentos;
	}

	/**
	 * @param documentos the documentos to set
	 */
	public void setDocumentos(ArrayList<DocumentoTO> documentos) {
		this.documentos = documentos;
	}

public void uploadDocumentos(UploadEvent evento) throws IOException{
		List<UploadItem> items = evento.getUploadItems();
		for(UploadItem item : items){
			fileByte = new FileByte();
			fileByte.setDados(item.getData());
			fileByte.setPath(item.getFileName());
			fileByte.setSize(item.getData().length);
			
			documentoTO.setImDocumentacao(fileByte.setBytesFromFile(fileByte.getDados()));
			documentos.add(documentoTO);
		}
	}

//documentoTO.java

import java.io.File;


public class DocumentoTO extends AbstractTO {
	private static final long serialVersionUID = 1L;

	private Long nuDocumentacao;
	private String deDocumentacao;
	private String edDocumentacao;
	private File imDocumentacao;

	/**
	 * @return the nuDocumentacao
	 */
	public Long getNuDocumentacao() {
		return nuDocumentacao;
	}

	/**
	 * @param nuDocumentacao
	 *            the nuDocumentacao to set
	 */
	public void setNuDocumentacao(Long nuDocumentacao) {
		this.nuDocumentacao = nuDocumentacao;
	}

	/**
	 * @return the deDocumentacao
	 */
	public String getDeDocumentacao() {
		return deDocumentacao;
	}

	/**
	 * @param deDocumentacao
	 *            the deDocumentacao to set
	 */
	public void setDeDocumentacao(String deDocumentacao) {
		this.deDocumentacao = deDocumentacao;
	}

	/**
	 * @return the edDocumentacao
	 */
	public String getEdDocumentacao() {
		return edDocumentacao;
	}

	/**
	 * @param edDocumentacao
	 *            the edDocumentacao to set
	 */
	public void setEdDocumentacao(String edDocumentacao) {
		this.edDocumentacao = edDocumentacao;
	}

	/**
	 * @return the imDocumentacao
	 */
	public File getImDocumentacao() {
		return imDocumentacao;
	}

	/**
	 * @param imDocumentacao
	 *            the imDocumentacao to set
	 */
	public void setImDocumentacao(File imDocumentacao) {
		this.imDocumentacao = imDocumentacao;
	}
}

//fileByte.java

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileByte {
	
	private String path;
    private long size;
    private byte[] dados;
    
    public FileByte() {
	}

	public byte[] getBytesFromFile(File file) throws IOException {
		InputStream is = new FileInputStream(file);
		long length = file.length();
		byte[] bytes = new byte[(int) length];
		int offset = 0;
		int numRead = 0;
		while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
			offset += numRead;
		}
		is.close();
		return bytes;
	}

	public File setBytesFromFile(byte[] bytes) throws IOException {
		File file = new File("new");
		if (bytes != null) {
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
			bos.write(bytes);
			bos.close();
		}
		return file;
	}

	/**
	 * @return the path
	 */
	public String getPath() {
		return path;
	}

	/**
	 * @param path the path to set
	 */
	public void setPath(String path) {
		this.path = path;
	}

	/**
	 * @return the size
	 */
	public long getSize() {
		return size;
	}

	/**
	 * @param size the size to set
	 */
	public void setSize(long size) {
		this.size = size;
	}

	/**
	 * @return the dados
	 */
	public byte[] getDados() {
		return dados;
	}

	/**
	 * @param dados the dados to set
	 */
	public void setDados(byte[] dados) {
		this.dados = dados;
	}
	
	
}

obrigado.