Problema ao Passar dados do flex para o Java:ASObject

Fala galera!
Estou com um problema meio chato,como sempre com o tal do BlazeDs e seus ASobject.entao vamos lah:
Tenho uma classe (TabelaDados),a qual tem um atributo que é um arrayList de objetos de outra classe(listDependencias),passo para o Flex4 um arrayList desta classe (TabelaDados), e depois passo para o Java novamente esse arraylist.Tenho as Classes TabelaDados e Dependencia mapeadas perfeitamente em AS,porem quando preciso pegar o atributo listDependencias da Classe TabelaDados eles estao do tipo ASObject e nao consigo manipular esses dados percorrendo-os por um for!

[RPC Fault faultString=“java.lang.ClassCastException : flex.messaging.io.amf.ASObject cannot be cast to com.mv.model.Dependencia” faultCode=“Server.Processing” faultDetail=“null”]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:345]
at mx.rpc::Responder/fault()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\Responder.as:68]
at mx.rpc::AsyncRequest/fault()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:113]
at NetConnectionMessageResponder/statusHandler()[E:\dev\4.x\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:604]
at mx.messaging::MessageResponder/status()[E:\dev\4.x\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:264]

Ja tentei fazer um metodo que faz os Casting de ASObject para Objeto e depois tento fazer o casting para Dependencia

return new ASTranslator().createInstance(objetoAS, Object.class);

mas tambem nao deu certo :frowning:

Raiz do Problema:
Acredito eu (Nao Sei…) que o problema acontece porque as ArrayCollection do AS3 nao sao tipados entao quando eu devolvo esse arraylist para o java os objetos nele vao tipados como ASobject.

Alguem ja passou por essa situação?Alguma ideia,soluçao…

No meu funciona perfeitamente passando as List do Flex para o Java ou vice-versa, tente debugar seu código e também coloque suas classes ai, para analisarmos melhor, flw!

Pra mim nunca consegui…
Classe TabelaDados em AS

[RemoteClass(alias="com.mv.model.TabelaDados")]
	[Bindable]
	public class TabelaDados
	{
		public var nome:String;
		
		public var listColunas:ArrayCollection;
		
		public var listConstraints:ArrayCollection;
		
		public var listDependencias:ArrayCollection;
		
		public var selected:Boolean = false;
		
		public var listDados:ArrayCollection;
		
		public function TabelaDados()
		{
		}
	}

Classe TabelaDados em Java

public class TabelaDados implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String nome;
	
	private List<ColunaDados> listColunas;
	
	private ArrayList<ConstraintDados> listConstraints;
	
	private ArrayList<Dependencia> listDependencias;
	
	private ArrayList<Dado> listDados;
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<ColunaDados> getListColunas() {
		return listColunas;
	}

	public void setListColunas(List<ColunaDados> listColunas) {
		this.listColunas = listColunas;
	}

	public ArrayList<ConstraintDados> getListConstraints() {
		return listConstraints;
	}

	public void setListConstraints(ArrayList<ConstraintDados> listConstraints) {
		this.listConstraints = listConstraints;
	}

	public ArrayList<Dependencia> getListDependencias() {
		return listDependencias;
	}

	public void setListDependencias(ArrayList<Dependencia> listDependencias) {
		this.listDependencias = listDependencias;
	}
	
	@Override
	public String toString() {
		return this.getNome()+"\n";
	}

	public ArrayList<Dado> getListDados() {
		return listDados;
	}

	public void setListDados(ArrayList<Dado> listDados) {
		this.listDados = listDados;
	}

Classe Dependencia em AS

[RemoteClass(alias="com.mv.model.Dependencia")]
	[Bindable]
	public class Dependencia
	{		
		
		public var tipo:String;
		
		public var nomeTabela:String;
		
		public var nomeColuna:String;
		
		public var nomePrimaryKey:String;
		
		public function Dependencia()
		{
		}
	}

Classe Dependencia em Java

public class Dependencia implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String tipo;
	
	private String nomeTabela;
	
	private String nomeColuna;
	
	private String nomePrimaryKey;

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public String getNomeTabela() {
		return nomeTabela;
	}

	public void setNomeTabela(String nomeTabela) {
		this.nomeTabela = nomeTabela;
	}

	public String getNomeColuna() {
		return nomeColuna;
	}

	public void setNomeColuna(String nomeColuna) {
		this.nomeColuna = nomeColuna;
	}

	public String getNomePrimaryKey() {
		return nomePrimaryKey;
	}

	public void setNomePrimaryKey(String nomePrimaryKey) {
		this.nomePrimaryKey = nomePrimaryKey;
	}

Sao essas classes…aparentemente ta td ok a nao se q tenha mais alguma coisa para o mapeamento
Ja debuguei varias vezes o que acontece eh q no metodo java que recebe esse list de TabelaDados,o list de Dependencia vem com objetos do tipo ASObject
dai nao consigo fazer o listTabelaDados.getListDependencias() pra percorrer com um for…

Em AS não tem como tipas as ArrayCollections que nem as List em java então para percorrer uma lista você tem que fazer a conversão mais ou menos assim

for(var x:int=0; x<minhaArrayCollection.length;x++){ MinhaClasseAS minhaClasse = MinhaClasseAS(listaJogos.getItemAt(x)); //aqui você converte item por item da sua lista //mais códigos... }

se você configurou tudo certo e estiver vinculando sua List do java ao ArrayCollection do Flex isso deve dar certo.
Conferi ai e avisa!

Not…meu metodo fico assim,tentei faze akilo mas nao deu…

for(var i:int = 0;i <= listTabelas.length;i++) {
					for(var j:int = 0;j < listTabelas.getItemAt(i).listDependencias.length;j++) {
						var d:Dependencia = Dependencia(listTabelas.getItemAt(i).listDependencias.getItemAt(j));
					}
				}

mas deu erro

RangeError: Index ‘3’ specified is out of bounds.
at mx.collections::ListCollectionView/getItemAt()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:502]

Você tem uma varias listas dentro de outra lista? porque se for esta certo.

Outra coisa talvez não seja o seu problema mais já aconteceu comigo, lá na classe java conferi se o pacote de seu List é do pacote java.util, flw!

Deu certo…isso ai soh dei umas mexidas ali nos getItem e deu certo!!!
vlw…esses collection do AS3 sao mt pobre em recursos,alem do blazeDS tbm sao fraco

Brigadao ai…

[quote=vvp0]Deu certo…isso ai soh dei umas mexidas ali nos getItem e deu certo!!!
vlw…esses collection do AS3 sao mt pobre em recursos,alem do blazeDS tbm sao fraco

Brigadao ai…[/quote]

Que mexida? Também estou com este problema.

[quote=rodrigors3012]
Que mexida? Também estou com este problema.[/quote]

Rodrigo mostra suas classes e o que você quer fazer que não esteja dando certo. De preferencia crie um novo tópico.

Isso acontece, pq mesmo com o RemoteClass correto e o import é necessário q seja criada uma instância na app para o compilador levar os dados dessa classe.
No java é o mesmo, vc pode colocar pacote.*, mas só as classes usadas realmente irão ser compiladas.

Para resolver utilize um new em qq lugar mas o q acho mais elegante qd não uso um new é usar o registerClassAlias, veja mais em:
http://fabiophx.blogspot.com.br/2009/04/criacao-dinamica-de-objetos.html

[]s