r01f.marshalling.simple
Class MarshallerMappingsFromXMLLoader

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by r01f.marshalling.simple.MarshallerMappingsFromXMLLoader
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

 class MarshallerMappingsFromXMLLoader
extends org.xml.sax.helpers.DefaultHandler

Clase auxiliar que se encarga de cargar los mapeos de beans a partir de un XML de mapeo Obtiene una representación en memoria de la definición en XML de una jerarquia de clases. Un ejemplo del XML es: Trukos de definición de mapeos: [TRUKO 0]: Bases ----------------------------------------------------------------------------------------------------------------------------- - Para utilizar metodos get/set en una clase establecer la propiedad useAccesors='true' en la definicion de la clase - Los tipos de java.lang (String, Object, Integer, Long, Double, etc) se pueden nombrar sin utilizar el paquete o con el (indistintamente) - Las colecciones (Mapas y listas) se pueden nombrar como java.util.[tipoColecion] o simplemente como [tipoColeccion] [TRUKO 1]: Lista / mapa de objetos complejos: -------------------------------------------- Seguir los siguientes pasos: 1.- En el objeto padre que tiene como miembro la lista / mapa incluir un miembro: o bien: ... aunque tambien se puede "dejar" al marshaller que "adivine" el tipo de los elementos de la coleccion o bien: Hay dos posibilidades: a.- Los elementos de la colección estan "englobados" en un tag especifico dentro del objeto "padre" .. ... ... En este caso la definicion sera -- fromElement es el tag que engloba los elementos de la coleccion b.- Los elementos de la colección "cuelgan" directamente del tag que engloba el objeto padre .. ... ... En este caso la definicion sera -- fromElement es el tag que engloba los elementos de la coleccion, que en este caso coincide con el tag que engloba el objeto padre 2.- Incluir la definición del objeto hijo (ElementoHijoClass): ... todos los miembros ... Si se trata de un MAPA uno de los miembros del objeto hijo debe: - Opcion 1: tener el atributo isOID='true' - Opcion 2: incluir el atributo oidAccessorMethod en la definición de la clase hijo, que se utiliza para indicar cual es el método a llamar para obtener la clave para indexar cada instancia de la clase en un mapa (ej: oidAccessorMethod='getKey') Esta propiedad es util cuando el oid no se compone a partir de una un unico miembro (en cuyo caso se pondría ) sino que se compone por ejemplo concatenando los valores de varios miembros lo que va a hacer que se indexe en el mapa utilizando el valor de este miembro [TRUKO 2]: Un mapa de Strings o XMLs en el que la clave del mapa es el propio tag: --------------------------------------------------------------------------------- (en este caso además cada elemento será CDATA o no segun el valor del atributo) Ejemplo: val1 val2 [TRUKO 3]: Lista de Strings, enteros, fechas etc ------------------------------------------------ Ejemplo: 1 2 ... [TRUKO 4]: Mapas / Listas de objetos ------------------------------------ Si se tiene un Mapa/Lista en el que se pueden mezclar diferentes tipos de objetos, basta con definirlo como: ") [TRUKO 5]: Un miembro tipo fecha con formateo al serializar a XML ----------------------------------------------------------------- [TRUKO 6]: Reutilización de clases con distinto tag ----------------------------------------------------------------- Las clases: class TestObj {


Field Summary
private  java.util.Stack<BeanMap> _beansStack
           
private  java.util.Map<java.lang.String,BeanMap> _loadedBeans
           
private static java.lang.String CLASS
           
private static java.lang.String CLASSES
           
private static java.lang.String CREATEMETHOD
           
private static java.lang.String CUSTOM_MARSHALLER
           
private static java.lang.String DATATYPE
           
private static java.lang.String FROMATTRIBUTE
           
private static java.lang.String FROMELEMENT
           
private static java.lang.String ISCDATA
           
private static java.lang.String ISOID
           
private static java.lang.String ISTRANSIENT
           
private static java.lang.String MEMBER
           
private static java.lang.String NAME
           
private static java.lang.String OFELEMENTS
           
private static java.lang.String OIDACCESSORMETHOD
           
private static java.lang.String RELATION
           
private static java.lang.String USEACCESSORS
           
 
Constructor Summary
MarshallerMappingsFromXMLLoader()
           
 
Method Summary
private static void _checkBean(BeanMap newBean)
          Comprueba la validez ce la definición de un bean
private static void _checkField(FieldMap newField)
          Comprueba la validez de la definición de un miembro
 void characters(char[] buf, int offset, int len)
          Caracteres del elemento XML
 void endDocument()
          Fin del documento XML
 void endElement(java.lang.String namespaceURI, java.lang.String sName, java.lang.String qName)
          Fin de un elemento XML
 void startDocument()
          Principio del documento XML
 void startElement(java.lang.String namespaceURI, java.lang.String lName, java.lang.String qName, org.xml.sax.Attributes attrs)
          Principio de un elemento XML
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASSES

private static final java.lang.String CLASSES
See Also:
Constant Field Values

CLASS

private static final java.lang.String CLASS
See Also:
Constant Field Values

USEACCESSORS

private static final java.lang.String USEACCESSORS
See Also:
Constant Field Values

OIDACCESSORMETHOD

private static final java.lang.String OIDACCESSORMETHOD
See Also:
Constant Field Values

CUSTOM_MARSHALLER

private static final java.lang.String CUSTOM_MARSHALLER
See Also:
Constant Field Values

NAME

private static final java.lang.String NAME
See Also:
Constant Field Values

MEMBER

private static final java.lang.String MEMBER
See Also:
Constant Field Values

DATATYPE

private static final java.lang.String DATATYPE
See Also:
Constant Field Values

RELATION

private static final java.lang.String RELATION
See Also:
Constant Field Values

CREATEMETHOD

private static final java.lang.String CREATEMETHOD
See Also:
Constant Field Values

ISOID

private static final java.lang.String ISOID
See Also:
Constant Field Values

FROMATTRIBUTE

private static final java.lang.String FROMATTRIBUTE
See Also:
Constant Field Values

FROMELEMENT

private static final java.lang.String FROMELEMENT
See Also:
Constant Field Values

OFELEMENTS

private static final java.lang.String OFELEMENTS
See Also:
Constant Field Values

ISCDATA

private static final java.lang.String ISCDATA
See Also:
Constant Field Values

ISTRANSIENT

private static final java.lang.String ISTRANSIENT
See Also:
Constant Field Values

_loadedBeans

private java.util.Map<java.lang.String,BeanMap> _loadedBeans

_beansStack

private java.util.Stack<BeanMap> _beansStack
Constructor Detail

MarshallerMappingsFromXMLLoader

MarshallerMappingsFromXMLLoader()
Method Detail

startDocument

public void startDocument()
Principio del documento XML

Specified by:
startDocument in interface org.xml.sax.ContentHandler
Overrides:
startDocument in class org.xml.sax.helpers.DefaultHandler

startElement

public void startElement(java.lang.String namespaceURI,
                         java.lang.String lName,
                         java.lang.String qName,
                         org.xml.sax.Attributes attrs)
                  throws org.xml.sax.SAXException
Principio de un elemento XML

Specified by:
startElement in interface org.xml.sax.ContentHandler
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

characters

public void characters(char[] buf,
                       int offset,
                       int len)
Caracteres del elemento XML

Specified by:
characters in interface org.xml.sax.ContentHandler
Overrides:
characters in class org.xml.sax.helpers.DefaultHandler

endElement

public void endElement(java.lang.String namespaceURI,
                       java.lang.String sName,
                       java.lang.String qName)
                throws org.xml.sax.SAXException
Fin de un elemento XML

Specified by:
endElement in interface org.xml.sax.ContentHandler
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException
Fin del documento XML

Specified by:
endDocument in interface org.xml.sax.ContentHandler
Overrides:
endDocument in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

_checkBean

private static void _checkBean(BeanMap newBean)
                        throws MarshallerException
Comprueba la validez ce la definición de un bean

Parameters:
newBean - el bean
Throws:
org.xml.sax.SAXException - si el bean NO esta bien definido
MarshallerException

_checkField

private static void _checkField(FieldMap newField)
                         throws MarshallerException
Comprueba la validez de la definición de un miembro

Parameters:
newField - el miembro
Throws:
org.xml.sax.SAXException - si el bean NO está bien definido
MarshallerException