Mi tarea es crear una tubería para convertir diferentes tipos de entrada como:

  • Restaurante [JSON, XML, ...]
  • Socket [JSON, XML, ...]
  • RDBMS
  • ...

Luego, use la salida, me dan para hacer transformaciones y cosas y enviarlos a la misma u otra fuente / formato / estructura al final. ¿Hay un patrón para ayudar en esta situación y hacerlo lo más abstracto posible, por lo que puedo simplemente cambiar el objeto, sin importar la fuente y la estructura? El objeto de respuesta es siempre una forma de colección: JSONARRAY con múltiples objetos, residentes, ...

Mi idea era crear una 'Clase adaptadora', que es capaz de aceptar una cadena JSON, una cadena XML o incluso un conjunto de datos RDBMS para que pueda trabajar con este objeto adaptador y luego convertirlo de nuevo a otra estructura: JSON STRING, Dataset, ...

class AdapterClass
{
    //how could it look like?
}

class AdapterClassFactory
{
    //input
    public AdapterClass generateByJSONString(String input)
    public AdapterClass generateByXMLString(String input)
    public AdapterClass generateByResultSet(ResultSet input)
    public AdapterClass generateByCSV(String input)

    //output
    public String generateJSONString(AdapterClass input)
    public String generateXMLString(AdapterClass input)
    public ResultSet generateResultSet(AdapterClass input)
    public String generateCSV(AdapterClass input)
}

Creo que acabo de tener una especie de retraso en el cerebro, pero simplemente no entiendo la respuesta en mi cabeza. Gracias por tu ayuda.

0
Meerrettich147 27 jun. 2019 a las 12:33

1 respuesta

La mejor respuesta

¿Qué estás describiendo puede ser realizado por un marco de integración como apache camel . Puede consumir datos de diferentes fuentes resto, jdbc y muchos otro. Además, puede transformar datos a / desde cualquier formato, por lo que es altamente personalizable.

Por ejemplo, puedes construir una tubería como

Lea los datos de un punto final de descanso -> UNMARCHALL JSON a Clase POJO -> Haga una transformación -> Marshall Pojo a XML -> Enviar datos a otro servicio

1
Adrian 27 jun. 2019 a las 12:03