
org.glassfish.pfl.dynamic.copyobject.impl.DefaultClassCopiers Maven / Gradle / Ivy
/*
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.glassfish.pfl.dynamic.copyobject.impl;
import java.util.Map ;
import java.util.Iterator ;
import org.glassfish.pfl.dynamic.copyobject.spi.ReflectiveCopyException ;
public abstract class DefaultClassCopiers
{
private DefaultClassCopiers() {}
private static ClassCopier identityClassCopier =
new ClassCopierBase( "identity" )
{
@Override
public Object createCopy(
Object source ) throws ReflectiveCopyException
{
return source ;
}
} ;
/** Return a ClassCopier that simple returns its argument as its
* result.
*/
public static ClassCopier getIdentityClassCopier()
{
return identityClassCopier ;
}
private static ClassCopier errorClassCopier =
// Set isReflective true to get better error messages.
new ClassCopierBase( "error", true )
{
@Override
public Object createCopy(
Object source ) throws ReflectiveCopyException
{
throw new ReflectiveCopyException(
"Cannot copy class " + source.getClass() ) ;
}
} ;
/** Return a ClassCopier that always raises a ReflectiveCopyException
* whenever its copy method is called.
*/
public static ClassCopier getErrorClassCopier()
{
return errorClassCopier ;
}
/** Return a ClassCopier that is suitable for instances of the Map
* interface. This should be limited to HashMap, Hashtable,
* IdentityHashMap, and TreeMap.
*/
public static ClassCopier makeMapClassCopier(
final ClassCopierFactory ccf )
{
return new ClassCopierBase( "map" )
{
@Override
public Object createCopy( Object source )
throws ReflectiveCopyException
{
try {
return source.getClass().newInstance() ;
} catch (Exception exc) {
throw new ReflectiveCopyException(
"MapCopier could not copy " + source.getClass(),
exc ) ;
}
}
private Object myCopy( Map
© 2015 - 2025 Weber Informatics LLC | Privacy Policy