EN · DE · RU · FR · ES

#728: CloneHelper.java

projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java Type : Java · Rôle : Utilitaire · Source : projectforge-business/src/main/java/org/projectforge/framework/utils/CloneHelper.java 70 lignes · 32 code · 33 commentaires · 5 vides
Méthodes utilitaires statiques pour CloneHelper. Collection de fonctions pures sans effets secondaires, fournissant des opérations d’assistance courantes.

Structure du code

Paquetage : org.projectforge.framework.utils

Classes : CloneHelper

Importations : 1 paquetage

Code source (abrégé)

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;
    }
  }
}

Historique Git

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.