JRBeanCollectionDataSource

Ola boa tarde estou criando um relatorio estilo ‘orcamento de vendas’ que nele tenho os dados da empresa os dados do cliente e dados dos
produtos, e estou usando o JRBeanCollectionDataSource como datasource… porem estou tendo problemas com o meu subrelatorio que
nele deveria conter os produtos, segue informacoes . o relatorio principal ele preenche corretamente, porem o subreport q esta na banda detail ( o subreport dexei com 2 bandas Detail e Nodata).

Eu faco a leitura de um txt lendo ele linha a linha e cada linha armazeno numa variave, a linha dos produtos tenho varios produtos separados por um VAL_MARK
por exemplo: 0001;0002; da mesma forma tenho as desricoes dos produtos produto1;produto2;

Para criar o subreport usando o wizard do Ireport (4.1.3) Fiz os seguintes passos
1º Create a new report
2º Selecionei blank a4
3º Conections/Data Source Usei a mesma definida no relatorio master
4º Fiedls e Grop By dexei em branco ( nao traz nada)
5º Subreport exp Store the directory name in a paramentrer
6º Conetion exp Use the same Conection used to fill the master report
#Código

public class JOrcamento { 
private DadosOrcamento dadosOrcamento; 
private Cliente cliente; 
private CondicaoPagamento condicaoPagamento; 
private Loja loja; 
private Outros outros; 
private ArrayList<Produtos> produtos; 
private Totais totais; 
public ArrayList<Produtos> getProdutos() { 
return produtos; 
} 

public void setProdutos(ArrayList<Produtos> produtos) { 
this.produtos = produtos; 
} 
} 

Classe principal

public class principal { 
.... 
Produtos produtotemp = new Produtos(); 
produtotemp.setPro_codigo(dados[Constantes.EMAIL$PRO_CODIGO]); 
produtotemp.setPro_descricao(dados[Constantes.EMAIL$PRO_DESCRICAO]); 
String[] array_codigo = produtotemp.getPro_codigo().split( 
Character.toString(Constantes.VAL_MARK)); 
String[] array_descricao = produtotemp.getPro_descricao().split( 
Character.toString(Constantes.VAL_MARK)); 
int TotalProd = Integer.parseInt(array_item.length + ) - 1; 
ArrayList<Produtos> listaprodutos = new ArrayList<Produtos>(); 
for (int prod = 0; prod <= TotalProd; prod++) { 
Produtos produto = new Produtos(); 
produto.setPro_codigo(array_codigo[prod]); 
produto.setPro_ref_embalagem(array_referencia[prod]); 
produto.setPro_descricao(array_descricao[prod]); 
listaprodutos.add(produto); 
} 

.... 
JOrcamento jOrcamento = new JOrcamento(); 
jOrcamento.setDadosOrcamento(dadosorcamento); 
jOrcamento.setLoja(loja); 
jOrcamento.setCliente(cliente); 
jOrcamento.setProdutos(listaprodutos); 
jOrcamento.setTotais(total); 
jOrcamento.setOutros(outro); 
jOrcamento.setCondicaoPagamento(condpagamento); 
Collection<JOrcamento> lista = new ArrayList<JOrcamento>(); 
lista.add(jOrcamento); 
JRDataSource jrds = new JRBeanCollectionDataSource(lista); 
} 

No ireport criei um report defindo meu datasource como o JOrcamento,
ao clicar em read atributes me traz
cliente (br.com.saci.Cliente)
condicaoPagamento (br.com.saci.CondicaoPagamento)
dadosOrcamento (br.com.saci.DadosOrcamento)
loja (br.com.saci.Loja)
outros (br.com.saci.Outros)
produtos (java.util.ArrayList)
totais (br.com.saci.Totais)
Com isso eu acesso por exemplo os fiedls no relatorio
$F{loja}.getLj_razao_social() e traz os dados normalmente, na band
detail eu fiz a chamada para um subreport soh q de vez eu ler
br.com.saci.JOrcamento eu li br.com.saci.Produtos, ae q nada funciona
mais dentro do subreport