Domanda

Qualcuno ha mai visto / tentato di scrivere un modello di localizzatore di servizio che utilizza un sistema di configurazione in stile Guice?

Attualmente ho un progetto GWT (che utilizza GWT-RPC) che utilizza un modello di comando in cui il mio servlet RPC che assomiglia a questo ...

public interface TransactionService extends RemoteService {

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

Nella mia attuale implementazione del metodo execute lo faccio ...

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

Quello che vorrei fare è trovare un modo per sbarazzarmi dell'enorme dichiarazione if. Avrei bisogno di un modo per registrare che la classe di ActionImpl1 dovrebbe essere delegata a un'altra implementazione di TransactioNService.

Qualche idea? Stavo pensando di aggiungere solo voci a una HashMap in cui la chiave è la classe Action e il valore è la classe ServiceImpl. Uno Ho un riferimento alla classe ServiceImpl che potrei usare Guice per ottenere un'istanza di TransactionService.

È stato utile?

Soluzione

Dai un'occhiata alla classe net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry in gwt-dispatch ( http://code.google.com/p/gwt-dispatch/ ); fa esattamente quello che stai suggerendo. Ecco la variabile membro che memorizza i gestori:

Mappa finale privata < Classe < ;? estende Action <? > > ;, ActionHandler <?,? > > gestori;

Se si desidera eseguire i gestori sul lato server, utilizzare i componenti lato server gwt-dispatch; se è roba lato client, allora considera la modellazione della tua classe di dispacciamento su DefaultActionHandlerRegistry.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top