CloneHelper.javaPaquetage : org.projectforge.framework.utils
Classes : CloneHelper
Importations : 1 paquetage
package org.projectforge.framework.utils;
import java.io.*;
/**
* Pour cloner un objet incluant tous ses champs (récursif).
*
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class CloneHelper
{
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(CloneHelper.class);
/**
* Sérialise l’objet donné en ByteArray et le désérialise.
* @param origin
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T cloneBySerialization(final T origin)
{
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
final ObjectOutputStream
oos = new ObjectOutputStream(bos);
oos.writeObject(origin);
oos.flush();
oos.close();
bos.close();
} catch (final IOException ex) {
log.error("Exception rencontrée lors du clonage de l’objet '" + origin + "' : " + ex, ex);
return null;
}
final byte[] byteData = bos.toByteArray();
final ByteArrayInputStream bais = new ByteArrayInputStream(byteData);
T object;
try {
object = (T) new ObjectInputStream(bais).readObject();
return object;
} catch (final ClassNotFoundException | IOException ex) {
log.error("Exception rencontrée lors du clonage de l’objet '" + origin + "' : " + ex, ex);
return null;
}
}
}
868d6abb7 2025 -> 2026 63081666f En-têtes des fichiers source : 2024 -> 2025. 5f9bbfbd3 Correction de fautes dans le répertoire projectforge-business b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023.