From 5b70bd92b8d1695e80fa25f01e7f3875dea8570b Mon Sep 17 00:00:00 2001
From: ribeaudc <ribeaudc>
Date: Fri, 27 Jun 2008 11:53:45 +0000
Subject: [PATCH] change: - No need to copy the beans if they are of same type
 (we so avoid a dead loop that used to occur before this change).

SVN: 6896
---
 .../java/ch/systemsx/cisd/common/utilities/BeanUtils.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java b/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java
index e3d60310fd9..8b8aca066ca 100644
--- a/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java
+++ b/common/source/java/ch/systemsx/cisd/common/utilities/BeanUtils.java
@@ -772,7 +772,7 @@ public final class BeanUtils
         }
         final Class<T> parameterType = (Class<T>) setter.getParameterTypes()[0];
         if (parameterType.isPrimitive() || immutableTypes.contains(parameterType)
-                || parameterType.isEnum())
+                || parameterType.isEnum() || oldBean.getClass().isAssignableFrom(parameterType))
         {
             return (T) oldBean;
         } else
@@ -936,7 +936,7 @@ public final class BeanUtils
             final List<PropertyDescriptor> descriptors =
                     new ArrayList<PropertyDescriptor>(Arrays.asList(Introspector.getBeanInfo(clazz)
                             .getPropertyDescriptors()));
-            for (final Iterator<PropertyDescriptor> iter = descriptors.iterator(); iter.hasNext(); )
+            for (final Iterator<PropertyDescriptor> iter = descriptors.iterator(); iter.hasNext();)
             {
                 final PropertyDescriptor descriptor = iter.next();
                 // If no write method, remove it. For instance 'class' property does not have any
-- 
GitLab