Package org.jdbf.engine.xml

Source Code of org.jdbf.engine.xml.Unmarshaller

/*
* 07/06/2003 - 14:30:00
*
* $RCSfile: Unmarshaller.java,v $ - JDBF Object Relational mapping system
*
* http://jdbf.sourceforge.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/*

$Id: Unmarshaller.java,v 1.4 2004/05/20 22:43:55 gmartone Exp $

*/

package org.jdbf.engine.xml;

import java.io.ByteArrayInputStream;
import java.util.Iterator;
import java.util.logging.Logger;
import java.util.logging.Level;

import org.jdbf.castor.Messages;
import org.jdbf.engine.reflection.ReflectionManager;
import org.jdbf.engine.basic.ObjectMapped;
import org.jdbf.engine.configuration.ConfigurationImpl;
import org.jdbf.engine.configuration.ConfigurationBuilder;

/**
* <code>Unmarshaller</code> is the class that return a java object from a
* xml representation.
*
* @author Gianni Baccari<br>
* @version $Revision: 1.4 $<br>
* last changed by $Author $
*
*/
public class Unmarshaller{
 
    /**
     * Class name
     */
    private static final String CLASS_NAME = "org.jdbf.engine.xml.Unmarshaller";

   
    /**
     * Logger object
     */
    private Logger logger;


    /**
   *
   * Creates an empty object
   *
   */
  public Unmarshaller(){
        logger = Logger.getLogger(CLASS_NAME);
    }
   
       
    /**
     * Return a ObjectMapped object from a String xml representation
     *
     * @param xml - the xml representation
     * @return ObjectMapped
     * @throws UnmarshallException
   *
     */
    public ObjectMapped getUnmarshallObject(String xml)
        throws UnmarshallException{
       
        ConfigurationImpl child;
        ObjectMapped om = null;
        logger.log(Level.INFO,Messages.message("Unmarshaller.unmarshall"));
        try{
      byte [] byteArray = xml.getBytes();
      ConfigurationImpl conf = (ConfigurationImpl)
            ConfigurationBuilder.build (
                new ByteArrayInputStream(byteArray)
            );
           
      child = (ConfigurationImpl) conf.getConfiguration("class-name");     
            logger.log(Level.FINEST,"tag class-name " + child.getValue());
      Class classFor = Class.forName(child.getValue());
      om = (ObjectMapped) classFor.newInstance();
      child = (ConfigurationImpl) conf.getConfiguration("repository-name");
            logger.log(Level.FINEST,"tag repository-name " + child.getValue());
      om.setRepositoryViewName(child.getValue());
      Iterator iter = conf.getConfigurations("attributes");     
     
            while (iter.hasNext()){
        child = (ConfigurationImpl) iter.next();
        Iterator iterChild = child.getConfigurations("attribute");       
        while (iterChild.hasNext()) {
          conf = (ConfigurationImpl) iterChild.next();
          child = (ConfigurationImpl) conf.getConfiguration("name");
          String name = child.getValue();
                    logger.log(Level.FINEST,"tag name " + name);
          child = (ConfigurationImpl) conf.getConfiguration("value");
          String value = child.getValue();
                    logger.log(Level.FINEST,"tag value " + value);
          /*
           * Bug fixing 957296 (Gmartone)
           */
          if(name.equals("OID"))
            om.setOID(value);
          else
          /*
           * End bug fixing 957296 (Gmartone)
           */
          ReflectionManager.setValueByName(om,name,value);
        }
      }
      }
      catch(Exception e){
          logger.throwing(CLASS_NAME,"getUnmarshallObject()",
                        new UnmarshallException("unmarshal.unmarshalFail",
                            om.getClassName()));

      throw new UnmarshallException("unmarshal.unmarshalFail",
                      om.getClassName()
                     );
      }
      return om;   
    }
}

/*
  $Log: Unmarshaller.java,v $
  Revision 1.4  2004/05/20 22:43:55  gmartone
  Changed for task 99073 (Coverage Javadocs) and bug fixing 957296

*/
TOP

Related Classes of org.jdbf.engine.xml.Unmarshaller

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.