¿Hay alguna manera de tener la misma clase implementada de manera diferente en el cliente que en el servidor?Implementaciones de cliente y servidor GWT de la misma clase
Para evitar el "¿Por qué quieres hacer eso?" pregunta .. Elaboraré
Estoy convirtiendo una aplicación cliente/servidor Java muy grande. Actualmente utiliza un cliente de Swing GUI y habla con el servidor a través de Spring Remoting (RPC). El uso de GWT RPC con servicios de Spring no es un problema, hay varios excelentes ejemplos disponibles y todo parece funcionar bien.
Varias clases que son comunes tanto para el cliente como para el servidor contienen datos que se transmiten hacia adelante y hacia atrás. Estas clases también contienen algún comportamiento que se implementa mediante el uso de las clases estándar de JRE. Por ejemplo, una clase contiene, analiza y formatea la fecha y la hora, incluida la zona horaria, horario de verano, etc. de una manera específica de la localidad. Podría reescribirlo/refactorizarlo, pero la aplicación supera los 10 millones de SLOC, lo que genera millones de referencias a esta clase, por lo que una reescritura importante no es rentable.
Para utilizar esto como un ejemplo, GWT proporciona una excelente compatibilidad con i18n para analizar y formatear las fechas. Pero la implementación es diferente a la forma en que JRE lo hace.
Por lo tanto, estoy buscando una forma inteligente donde pueda insertar una implementación en el shell de mi clase DateTime, dependiendo de si está en el cliente (usando GWT y JS nativo) o en el servidor (usando el JRE). ¿Hay una manera astuta de hacer esto? Tal vez usando el archivo del módulo XXXXX.gwt.xml. Estoy buscando una solución genérica.
Eso no es lo que se preguntó. Tiene varias clases que se usan en el cliente y el servidor (sí, eso normalmente se compartiría), pero estas clases contienen código JRE que no es de GWT, por lo que solo funcionarían en el servidor. – John
Hacer la misma clase pero con diferentes implementaciones hace que me duelan los ojos. Para mí eso frenará un contrato de diseño y un programador debe saber qué implementación reside debajo.¿No hay una forma de hacer una implementación de interfaz con dos clases diferentes siguiendo esa interfaz? Esa es la forma en que se resolvería tu pregunta (si me preguntas). – Sven
@John - Mencioné que no funcionaría fork para las clases que contienen código no GWT. Quizás no estaba muy claro sobre esto. – jjczopek