|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectr01f.marshalling.simple.SimpleMarshallerMappings
public class SimpleMarshallerMappings
Se encarga de construir un modelo de objetos en memoria que tiene la información para realizar el marshalling / unmarshalling de
XML a objetos y viceversa
Esta información de mapeo se puede obtener de dos formas:
- Con un XML de definición del mapeo (ver MarshallerMappingsFromXMLLoader)
- Desde anotaciones en las clases java (ver MarshallerMappingsFromAnnotationsLoader)
IMPORTANTE!! (ver SimpleMarshallerBase, SimpleMarshallerSingleUseImpl y SimpleMarshallerReusableImpl
- Si se van a hacer muchas operaciones de marshalling/unmarshalling, conviene
CACHEAR este objeto, es decir, que este objeto sea UNICO, puesto que se
reutiliza una y otra vez
Ej: persistencia de objetos en BBDD en formato XML: se está continuamente transformando
objetos a XML... es NECESARIO cachear el mapeo
- Si únicamente se va a hacer UNA OPERACIÓN de marshalling/unmarshalling sobre
un determinado tipo de objeto, NO tiene sentido mantener una cache de la definición
del mapeo.
Ej: carga de configuración de un XML: se pasa el XML a objetos y lo que se cachean
con los objetos... NO es necesario volver a pasar de XML a objetos
Internamente se utilizan dos clases auxiliares:
- BeanMap: Modela una clase (nombre, paquete, miembros, tag por defecto de la que procede, etc)
- FieldMap: Modela un miembro de una clase (nombre, tag del que procede, etc)
Al final en memoria se tiene una estructura como la siguiente:
Clase1
|_ Miembro 1 (String)
|_ Miembro 2 (Clase 3) --------|
|_ Miembro 3 (Clase 2) ----| |
| |
| |
|--------------------------| |
Clase 2 |
|_ Miembro 1 (String) |
|_ Miembro 2 (Clase 3) ----| |
| |
| |
|--------------------------| |
|------------------------------|
|
Clase 3
|_ Miembro 1 (Long)
|_ Miembro 2 (String)
| Field Summary | |
|---|---|
private java.util.Map<java.lang.String,BeanMap> |
_beanMappingsByEnclosingXmlElement
Mapa que contiene las clases relacionadas con el tag XML (se va rellenando a medida que se necesita saber que bean está "englobado" por un tag: método getBeanMapFromXmlTag) |
private java.util.Map<java.lang.String,BeanMap> |
_beanMappingsByType
Mapa que contiene las clases relacionadas con su nombre (se va rellenando a medida que se cargan los mapeos: métodos loadFrom...) |
| Constructor Summary | |
|---|---|
SimpleMarshallerMappings()
|
|
| Method Summary | |
|---|---|
private void |
_cacheBeansMappings(java.util.Map<java.lang.String,BeanMap> loadedBeans)
Pone los beans cargados en la cache |
private static java.util.Map<java.lang.String,BeanMap> |
_loadFromXML(java.io.InputStream mapXmlIS,
java.nio.charset.Charset charset)
Carga el mapa de clases desde su definición en XML |
(package private) static void |
connectBeanMappings(java.util.Map<java.lang.String,BeanMap> beansMappings)
Conecta el objeto BeanMap en los miembros FieldMap de tipo objeto o colección
Este proceso hay que hacerlo DESPUES de cargar todos los beans (tanto en MarshallerMappingsFromAnnotationsLoader como en MarshallerMappingsFromXMLLoader) |
java.lang.String |
debugInfo()
Devuelve información de depuracion |
BeanMap |
getBeanMapFromClassName(java.lang.String beanName)
Obtiene la definición de una clase a partir del nombre de la clase |
BeanMap |
getBeanMapFromXmlTag(java.lang.String tagName)
Obtiene la definición de una clase a partir del tag xml |
void |
loadFromAnnotatedClasses(java.lang.Class<?>... annotatedTypes)
Carga el mapa de clases desde su definición en base a anotaciones en las propias clases java |
void |
loadFromMappingDef(java.io.InputStream mapIS)
Añade los mapeos desde el stream que se pasa como parametro |
void |
loadFromMappingDefFiles(java.io.File mapFile)
Añade los mapeos del fichero que se pasa como parametro |
void |
loadFromMappingDefFiles(java.lang.String filePath)
Añade los mapeos del fichero cuya ruta (que tiene que ser accesible en el classPath) se pasa como parametro |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private java.util.Map<java.lang.String,BeanMap> _beanMappingsByType
private java.util.Map<java.lang.String,BeanMap> _beanMappingsByEnclosingXmlElement
| Constructor Detail |
|---|
public SimpleMarshallerMappings()
| Method Detail |
|---|
public BeanMap getBeanMapFromClassName(java.lang.String beanName)
beanName - Nombre de la clasepublic BeanMap getBeanMapFromXmlTag(java.lang.String tagName)
tagName - Tag XML en el que se define la clase
public void loadFromAnnotatedClasses(java.lang.Class<?>... annotatedTypes)
throws MarshallerException
loadFromAnnotatedClasses in interface MarshallerMappingsannotatedTypes - tipo(s) desde los que empezar a buscar anotaciones
NOTA: No es necesario indicar TODOS los tipos sino únicamente el raíz (o raíces si se van a mapear distintos tipos raíz inconexos)
MarshallerException - si no se puede cargar el mapeo
public void loadFromMappingDefFiles(java.lang.String filePath)
throws MarshallerException
MarshallerMappings
loadFromMappingDefFiles in interface MarshallerMappingsMarshallerException - si el fichero de mapeo es incorrecto
public void loadFromMappingDef(java.io.InputStream mapIS)
throws MarshallerException
MarshallerMappings
loadFromMappingDef in interface MarshallerMappingsmapIS - el stream con la definición del mapeo
MarshallerException - si el mapeo es incorrecto o no se puede cargar
public void loadFromMappingDefFiles(java.io.File mapFile)
throws MarshallerException
mapFile - fichero con los mapeos
MarshallerException - si el fichero de mapeos es incorrecto
private static java.util.Map<java.lang.String,BeanMap> _loadFromXML(java.io.InputStream mapXmlIS,
java.nio.charset.Charset charset)
throws MarshallerException
mapXmlIS - InputStream al XML de mapeocharset - el charset del fichero de mapeo
org.xml.sax.SAXException - si no se puede cargar el mapeo
MarshallerExceptionpublic java.lang.String debugInfo()
MarshallerMappings
debugInfo in interface MarshallerMappingsprivate void _cacheBeansMappings(java.util.Map<java.lang.String,BeanMap> loadedBeans)
loadedBeans - los beans cargados
static void connectBeanMappings(java.util.Map<java.lang.String,BeanMap> beansMappings)
throws MarshallerException
BeanMap en los miembros FieldMap de tipo objeto o colección
Este proceso hay que hacerlo DESPUES de cargar todos los beans (tanto en MarshallerMappingsFromAnnotationsLoader como en MarshallerMappingsFromXMLLoader)
beansMappings - los mapeos de beans
MarshallerException - si hay algún error al hacer las conexiones
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||