// ======================================================================== // Copyright (C) zeroth Project Team. All rights reserved. // GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 // http://www.gnu.org/licenses/agpl-3.0.txt // ======================================================================== package zeroth.framework.standard.shared; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.Validate; /** * レイヤ共通ユーティリティ * @author nilcy */ public class CommonUtils { /** コンストラクタ */ private CommonUtils() { } /** * 非NULLチェック * @param object チェック対象オブジェクト * @return 非NULLオブジェクト * @throws NullPointerException チェック対象オブジェクトがNULLのとき */ public static <T> T notNull(final T object) { return Validate.notNull(object); } /** * NULLセーフ変換 * @param object 対象オブジェクト * @param defaultValue NULLセーフオブジェクト * @param <T> 対象オブジェクト型 * @return 対象オブジェクトがNULLのときNULLセーフオブジェクト * @see ObjectUtils#defaultIfNull(Object, Object) */ public static <T> T nullSafe(final T object, final T defaultValue) { return ObjectUtils.defaultIfNull(object, defaultValue); } /** * プロパティ一括コピー * <p> * オブジェクトの可視性は public でないとコピーできないことに注意すること。 * </p> * @param origin コピー元オブジェクト * @param destination コピー先オブジェクト * @throws StandardRuntimeException コピーできないとき */ public static void copyProperties(final Object origin, final Object destination) { try { BeanUtils.copyProperties(destination, origin); } catch (final IllegalAccessException e) { throw new StandardRuntimeException(e); } catch (final InvocationTargetException e) { throw new StandardRuntimeException(e); } } /** * プロパティ個別コピー * @param object コピー対象オブジェクト * @param name プロパティ名 * @param value プロパティ値 * @throws StandardRuntimeException コピーできないとき */ public static void copyProperty(final Object object, final String name, final Object value) { try { BeanUtils.copyProperty(object, name, value); } catch (final IllegalAccessException e) { throw new StandardRuntimeException(e); } catch (final InvocationTargetException e) { throw new StandardRuntimeException(e); } } /** * シャローコピー * @param object コピー元オブジェクト * @return シャローコピーしたオブジェクト */ public static <T extends Serializable> T shallowCopy(final T object) { return ObjectUtils.clone(object); } /** * ディープコピー * @param object コピー元オブジェクト * @return ディープコピーしたオブジェクト */ public static <T extends Serializable> T deepCopy(final T object) { return SerializationUtils.clone(object); } }