Pergunta

Alguém já viu / tentou escrever um padrão de localizador de serviço que utiliza um sistema de configuração estilo Guice?

Atualmente tenho um projeto GWT (que acontece de usar o GWT-RPC) que usa um padrão de comando na qual o meu servlet RPC que se parece com isso ...

public interface TransactionService extends RemoteService {

    <T extends Response> T execute(Action<T> action);
}

Na minha implementação atual do método execute eu faço isso ...

if(action instanceof SomeActionImpl){
  doSomeActionImpl((SomeActionImpl)action);
}else if(action instanceof SomeActionImpl2){
  doSomeActionImpl2((SomeActionImpl2)action);
}

O que eu gostaria de fazer é descobrir uma maneira de se livrar do gigante if. Eu precisaria de alguma forma de registrar essa classe de ActionImpl1 deve ser delegada a outra implementação do TransactioNService.

Todas as idéias? Eu estava pensando em apenas adicionando entradas para um HashMap, onde a chave é a classe do Ação eo valor é classe do ServiceImpl. Que eu tenho uma referência para a classe ServiceImpl eu poderia usar Guice para obter uma instância de TransactionService.

Foi útil?

Solução

Dê uma olhada na classe net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry no GWT-expedição ( http://code.google.com/p/gwt-dispatch/ ); ele faz exatamente o que você está sugerindo. Aqui é a variável de membro que armazena os manipuladores:

Mapa final privado >, ActionHandler > manipuladores;?

Se você quiser executar os manipuladores no lado do servidor, em seguida, usar os componentes do lado do servidor gwt-expedição; Se é coisa do lado do cliente, em seguida, considerar a modelagem de sua classe envio em DefaultActionHandlerRegistry.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top