/*
* XMLIORegistry.java
*/
package org.freehep.xml.io;
/**
* Interface of an XMLIORegistry. The XMLIOFactories used
* in the restore procedure of an object and the XMLIOProxyes
* should be register to an XMLIORegistry that should be set
* in the XMLIOManager passed to the restore method.
*
* @author turri
* @version 1.0
*/
public interface XMLIORegistry
{
/**
* Register an XMLIOFactory or an XMLIOProxy to this Registry.
* @param obj Either an XMLIOFactory or an XMLIOProxy to be registered.
* @throws An IllegalArgumentException if the object does not implement
* either XMLIOFactory or XMLIOProxy.
*
*/
void register( Object obj ) throws IllegalArgumentException;
/**
* Get the appropriate XMLIOFactory to create the object
* that wrote the xml node. The XMLIOFactory identification string
* is attached to the node's attribute <code>xmlioFactory<\code>.
* If this attribute is not present, the node name is taken as
* the identification string. The identification string is
* assigned by the XMLIOManager by using the object's final
* part of the Class name.
* @param objClass The Class of the object to be created.
* @return The corresponding XMLIOFactory.
* @throws IllegalArgumentException if the XMLIOFactory does not exist.
*
*/
XMLIOFactory getXMLIOFactory( Class objClass ) throws IllegalArgumentException;
/**
* Get the appropriate XMLIOProxy to restore the object
* that wrote the xml node. The XMLIOProxy identification string
* is the node name. The identification string is
* assigned by the XMLIOManager by using the object's final
* part of the Class name.
* @param objClass The Class of the object to be restored.
* @return The corresponding XMLIOProxy.
* @throws IllegalArgumentException if the XMLIOProxy does not exist.
*
*/
XMLIOProxy getXMLIOProxy( Class objClass ) throws IllegalArgumentException;
/**
* Get the identification string corresponding to a Class.
* @param clName The Class.
* @return The identification String.
*
*/
String getClassId( Class clName );
/**
* Get the Class corresponding to an identification String.
* @param objName The object's identification String.
* @return The corresponding Class.
*
*/
Class getIdClass( String objName );
}