/*
* RHQ Management Platform
* Copyright (C) 2005-2008 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.core.domain.util.serial;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class HibernateUtil {
/**
* If the pass-in List is a Hibernate type, replace it with a java type. This is typically used
* for ensuring that we don't serialize Hibernate types.
* @param <T>
* @param list
* @return the safe list
*/
public static <T> List<T> safeList(List<T> list) {
if (null == list) {
return null;
}
return (list.getClass().getName().contains("hibernate") ? new ArrayList<T>(list) : list);
}
/**
* If the pass-in List is a Hibernate type, replace it with a java type. This is typically used
* for ensuring that we don't serialize Hibernate types.
* @param <T>
* @param set
* @return the safe set
*/
public static <T> Set<T> safeSet(Set<T> set) {
if (null == set) {
return null;
}
return (set.getClass().getName().contains("hibernate") ? new LinkedHashSet<T>(set) : set);
}
/**
* If the pass-in List is a Hibernate type, replace it with a java type. This is typically used
* for ensuring that we don't serialize Hibernate types.
* @param <T>
* @param collection
* @return the safe collection
*/
public static <T> Collection<T> safeCollection(Collection<T> collection) {
if (null == collection) {
return null;
}
return (collection.getClass().getName().contains("hibernate") ? new LinkedHashSet<T>(collection) : collection);
}
/**
* If the pass-in Map is a Hibernate type, replace it with a java type. This is typically used
* for ensuring that we don't serialize Hibernate types.
* @param <K>
* @param <V>
* @param map
* @return the safe map
*/
public static <K, V> Map<K, V> safeMap(Map<K, V> map) {
if (null == map) {
return null;
}
return (map.getClass().getName().contains("hibernate") ? new LinkedHashMap<K, V>(map) : map);
}
}