Acabo de jugar con esto el otro día, y luché por unas horas, probando @Category
métodos y otros, hasta que encontré esto: Puede crear una propiedad de tipo Splittable
, que representa el tipo de transporte subyacente que tiene alguna codificación para booleanos/cadenas/listas/mapas. En mi caso, conozco algún tipo envolvente que supera el cable en el momento del diseño, y en función de alguna otra propiedad, otro campo puede ser cualquier cantidad de autoboyas.
Ni siquiera necesita saber el tipo de otro bean en el momento de la compilación, puede obtener valores usando los métodos Splittable
, pero si usa autobeans de todos modos, es bueno definir los datos que se envuelven.
interface Envelope {
String getStatus();
String getDataType();
Splittable getData();
}
(cabría desear Setter si el envío de datos, así como recieving - codifica un frijol en un `divisible para enviar en un sobre es incluso más fácil que descodificarlo)
El JSON enviada a través de alambre se decodifica (probablemente utilizando AutoBeanCodex
) en el tipo Envelope
, y después de que haya decidido qué tipo debe estar saliendo del método getData()
, llamar algo como esto para conseguir el objeto anidado cabo
SpecificNestedBean bean = AutoBeanCodex.decode(factory,
SpecificNestedBean.class,
env.getData()).as();
el Envelope
tipo y los tipos anidados (en factory
arriba) ni siquiera tienen que ser del mismo tipo AutoBeanFactory
. Esto podría permitirle abstraer la lectura/escritura de sobres desde la instancia de transporte genérica, y usar una fábrica específica para cada propiedad de cadena dataType
para decodificar el modelo de datos (y modelos anidados).