Claro meu amigo. Primeiramente gostaria de agradecer a sua ajuda. Acredita , está sendo muito importante.
Vamos lá:
1 - O Código que você postou é esse:
/*Carrega a classe que esta cadastrada na operacao*/
Class classe = Class.forName("websis.controller.as.asController");
/*Instancia a classe asController.*/
Object objeto = classe.newInstance();
/*Obter o método que retorna a instancia da classe geController*/
Method metodo = classe.getMethod("getGeController");
/*Obter a instancia gerada pela classe geController*/
Object g = metodo.invoke(objeto);
/*Obter o método gePaisSearchAll que está na classe geController*/
Method m = g.getClass().getMethod("gePaisSearchAll");
/*Obter o retorno da método gePaisSearchAll*/
retorno = (String) m.invoke(g);
return retorno;
Ele está funcionando perfeitamente. O único problema é que, quando usamos o:
Object objeto = classe.newInstance();
ele cria outra instancia da classe. Quando é criada essa nova instancia , ele não usa o framework do JSF que faz a injeção de dependencias e assim a classe executa o metódo porém em outro contexto.
De acordo com o post do Jukkinha funcionou também. Ele não cria uma nova instancia, porém ele utiliza o getController fixo e eu queria fazer isso dinamicamente. Para ser mais claro imagine o seguinte contexto:
1 - tabela do banco com as seguintes colunas:
ID : 1
Classe : br.com.nossoteste.asController
Atributo: null
Metodo: null
ID : 2
Classe : br.com.nossoteste.geController
Atributo: geController
Metodo : gePaisSearchAll
2 Quando a classe asController é instanciada pelo JSF ela injeta a geController.
3 Classe asController simples:
public class asController{
geController ge;
// gets e sets
// Executa dinamicamente o metodo
public String executa(){
tabelaDAO tab= new tabelaDAO ();
classeTabela tabModel = new classeTabela ();
tabModel = tabelaDAO.query(2); // Passando o ID.
/*Teriamos o retorno
tabModel.getId = 2
tablModel.getClasse = br.com.nossoteste.geController
tabModel.getAtributo = geController
tabModel.gePaisSearchAll.
Agora gostaria de com esses valores usar a api Reflection para rodar
esse metodo gePaisSearchAll.
*/
}
}
Galera, ficou mais claro agora a minha explicação.
Obrigado pela ajuda dos senhores. Assim como postei os códigos da TREE prometo postar a resolução desse problema, pois acredito que será de grande utilidade para todos.
Obrigado pela ajuda.
Abraços