20.02.2015 Views

ESTADO DEL ARTE - LITE - Universidad Rey Juan Carlos

ESTADO DEL ARTE - LITE - Universidad Rey Juan Carlos

ESTADO DEL ARTE - LITE - Universidad Rey Juan Carlos

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capítulo 7. DISEÑO 81<br />

Para realizar la serialización, desde la clase UtilizaObjectsClase se llama al<br />

método estático toXML de la clase Clase2XML, a este método se le pasa como<br />

parámetros un objeto de la clase a serializar (Clase) y un flujo de salida donde se<br />

almacenará el documento XML a generar. La clase Clase2XML utilizará el XMLWriter<br />

para escribir las distintas etiquetas y atributos del XML con su valor. La clase<br />

XMLGeneralPersistenceManager será utilizada para serializar el contenido de una<br />

etiqueta XML (correspondiente a un objeto de una clase que no pertenece a la API<br />

estándar de Java o a otra API externa y de la que sí tenemos el código fuente de Java),<br />

delegándola a otra clase cuyo nombre será buscada mediante el nombre de la clase<br />

seguido por 2XML. Por ejemplo, si estamos serializando una clase Mesa mediante la<br />

clase Mesa2XML y, en un momento dado, nos encontramos con un atributo que alberga<br />

objetos de la clase Silla, entonces se buscará la clase Silla2XML para que, al delegar a<br />

esta, generase la serialización de su etiqueta.<br />

En el caso de la deserialización, desde la clase UtilizaObjectsClase se llama al<br />

método estático fromXML de la clase Clase2XML (Figura 26), este método devolverá el<br />

objeto de la clase correspondiente que proviene de la deserialización del documento<br />

XML, el cual se pasa como parámetro en un flujo de entrada. Para la lectura del<br />

documento XML se utiliza SAX, como ya se ha comentado, redefiniendo en la clase<br />

SAXParserManager los métodos startElement(…), endElement(…), characters(…), etc.<br />

que llamarán a los métodos con el mismo nombre de Clase2XML. De esta manera, para<br />

cada nueva aparición de una etiqueta se procesará como corresponda, almacenando su<br />

valor en el atributo correspondiente del objeto a deserializar.<br />

Al igual que en el caso de la serialización, si se obtiene una etiqueta XML de un<br />

atributo delegado en la serialización, se procederá a delegar (mediante el método<br />

delegateParsing(…)) la lectura del documento XML a la correspondiente clase<br />

Clase2XML (obtenida de la misma forma que en la serialización) de ese atributo. Al<br />

terminar su procesado, esta clase devolverá el control a la clase padre mediante la<br />

instrucción finishedParsing(), y el padre obtendrá el valor del objeto creado en la<br />

delegación mediante el método getObject(), para luego asignar el valor al atributo del<br />

objeto que estamos deserializando.<br />

Gracias a esta delegación del proceso, la serialización y deserialización se realizan<br />

de una forma más simple y estructurada, ya que se organizan por módulos que pueden<br />

ser utilizados en otras serializaciones donde intervengan las clases.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!