¿Cuál es el papel de ClassOutline / JClass / CClass en CodeModel?

Mi pregunta se refiere a escribir complementos JAXB, en particular el modelo de código JAXB.

¿Cuál es el papel deClassOutline (y es compañeros) yJClass (y compañeros) yCClass (y compañeros)? Al mirar la lista de clases en los paquetes correspondientes, no está claro qué es el pollo y qué es el huevo.

Mi interpretación es queCClass (CPropertyInfo, CEnumConstant, ...) son creados por XJC en el primer borrador de análisis de XSD. Luego ocurre algo de magia y este modelo se transforma enJClass (JFieldVar, JEnumConstant, ...) y durante esta transformación se aplican las personalizaciones. Luego se invocan los complementos. @ClassOutline se utiliza como puente entre estos dos modelos. En conjunto parece muy complicado.

Con estos modelos paralelos, creo que la misma información se puede derivar de varias maneras. Por ejemplo, tipo de campo de clase:

JClass#fields()JFieldVar#typeJTypeCClassInfo#getProperties()CPropertyInfo#baseTypeJType

Estoy buscando una explicación detallada del ciclo de vida de los modelos mencionados anteriormente. Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta