/**
*
*/
package org.geoserver.hibernate;
import org.geoserver.catalog.LayerGroupInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.MetadataLinkInfo;
import org.geoserver.catalog.StoreInfo;
import org.geoserver.catalog.hibernate.beans.LayerGroupInfoImplHb;
import org.geoserver.catalog.hibernate.beans.LayerInfoImplHb;
import org.geoserver.config.ContactInfo;
import org.geoserver.config.GeoServerInfo;
import org.geoserver.config.LoggingInfo;
import org.geoserver.config.hibernate.beans.ContactInfoImplHb;
import org.geoserver.config.hibernate.beans.GeoServerInfoImplHb;
import org.geoserver.config.hibernate.beans.LoggingInfoImplHb;
import org.geoserver.config.hibernate.beans.MetadataLinkInfoImplHb;
import org.geoserver.config.util.XStreamPersister;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.collections.CollectionConverter;
import com.thoughtworks.xstream.io.HierarchicalStreamDriver;
/**
* @author Francesco
*
*/
public class HibXStreamPersister extends XStreamPersister {
public HibXStreamPersister() {
super();
}
public HibXStreamPersister(HierarchicalStreamDriver streamDriver) {
super(streamDriver);
}
@Override
protected void init(XStream xs) {
super.init(xs);
xs.registerLocalConverter(impl(StoreInfo.class),
"connectionParameters", new HibernateMapConverter());
xs.registerConverter(new HibernateMapConverter());
xs.registerConverter(new HibernateListConverter(xs));
}
@Override
protected void initImplementationDefaults(XStream xs) {
super.initImplementationDefaults(xs);
xs.addDefaultImplementation(LayerInfoImplHb.class, LayerInfo.class);
xs.addDefaultImplementation(LayerGroupInfoImplHb.class,
LayerGroupInfo.class);
xs.addDefaultImplementation(ContactInfoImplHb.class, ContactInfo.class);
xs.addDefaultImplementation(GeoServerInfoImplHb.class,
GeoServerInfo.class);
xs.addDefaultImplementation(LoggingInfoImplHb.class, LoggingInfo.class);
xs.addDefaultImplementation(MetadataLinkInfoImplHb.class,
MetadataLinkInfo.class);
xs.addDefaultImplementation(
org.hibernate.collection.PersistentMap.class,
java.util.Map.class);
}
public class HibernateMapConverter extends BreifMapConverter {
public HibernateMapConverter() {
super();
}
@Override
public boolean canConvert(Class type) {
return type.equals(org.hibernate.collection.PersistentMap.class);
}
}
public class HibernateListConverter extends CollectionConverter implements
Converter {
public HibernateListConverter(XStream xs) {
super(xs.getMapper());
}
@Override
public boolean canConvert(Class type) {
return type.equals(org.hibernate.collection.PersistentList.class);
}
}
}