Pregunta

¿Alguien ha visto / intentado alguna vez escribir un patrón de localización de servicios que utilice un sistema de configuración de estilo Guice?

Actualmente tengo un proyecto GWT (que usa GWT-RPC) que usa un patrón de comando en el que mi servlet RPC se parece a esto ...

public interface TransactionService extends RemoteService {

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

En mi implementación actual del método de ejecución hago esto ...

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

Lo que me gustaría hacer es encontrar una manera de deshacerme de la declaración if gigante. Necesitaría alguna forma de registrar que la clase de ActionImpl1 debería delegarse a otra implementación de TransactioNService.

¿Alguna idea? Estaba pensando en agregar entradas a un HashMap donde la clave es la clase de Acción y el valor es la Clase de ServiceImpl. Uno tengo una referencia a la clase ServiceImpl que podría usar Guice para obtener una instancia de TransactionService.

¿Fue útil?

Solución

Eche un vistazo a la clase net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry en gwt-dispatch ( http://code.google.com/p/gwt-dispatch/ ); hace exactamente lo que estás sugiriendo. Aquí está la variable miembro que almacena los manejadores:

mapa final privado < Clase < ;? extiende Action <? > > ;, ActionHandler <?,? > > manejadores;

Si desea ejecutar los controladores en el lado del servidor, utilice los componentes del lado del servidor gwt-dispatch; si se trata del lado del cliente, considere modelar su clase de despacho en DefaultActionHandlerRegistry.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top