This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-beanutils.git


The following commit(s) were added to refs/heads/master by this push:
     new bbfdda82 Better @throws
bbfdda82 is described below

commit bbfdda821aeea0d8199ea4f3b94e6f2b8b44ac5f
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Sat Feb 18 12:26:44 2023 -0500

    Better @throws
---
 .../beanutils2/locale/LocaleConvertUtilsBean.java  |  19 ++--
 .../commons/beanutils2/locale/LocaleConverter.java |   3 +-
 .../locale/converters/ByteLocaleConverter.java     |   2 +-
 .../locale/converters/DateLocaleConverter.java     |   2 +-
 .../locale/converters/DecimalLocaleConverter.java  |   2 +-
 .../locale/converters/DoubleLocaleConverter.java   |   4 +-
 .../locale/converters/LongLocaleConverter.java     |   4 +-
 .../locale/converters/ShortLocaleConverter.java    |   2 +-
 .../locale/converters/StringLocaleConverter.java   |   2 +-
 .../converters/locale/SqlDateLocaleConverter.java  |   3 +-
 .../converters/locale/SqlTimeLocaleConverter.java  |   3 +-
 .../locale/SqlTimestampLocaleConverter.java        |   3 +-
 .../commons/beanutils2/bugs/Jira347TestCase.java   | 124 ++++++++++-----------
 13 files changed, 91 insertions(+), 82 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsBean.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsBean.java
index 1cb78ce1..c08b1afa 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsBean.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/LocaleConvertUtilsBean.java
@@ -23,6 +23,7 @@ import java.math.BigInteger;
 import java.util.Locale;
 import java.util.Map;
 
+import org.apache.commons.beanutils2.ConversionException;
 import org.apache.commons.beanutils2.WeakFastHashMap;
 import 
org.apache.commons.beanutils2.locale.converters.BigDecimalLocaleConverter;
 import 
org.apache.commons.beanutils2.locale.converters.BigIntegerLocaleConverter;
@@ -123,7 +124,7 @@ public class LocaleConvertUtilsBean {
      * @param value The Value to be converted
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public String convert(final Object value) {
@@ -139,7 +140,7 @@ public class LocaleConvertUtilsBean {
      * @param pattern The conversion pattern
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public String convert(final Object value, final Locale locale, final 
String pattern) {
@@ -155,7 +156,7 @@ public class LocaleConvertUtilsBean {
      * @param pattern       The conversion pattern
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public String convert(final Object value, final String pattern) {
@@ -170,7 +171,7 @@ public class LocaleConvertUtilsBean {
      * @param clazz The Data type to which this value should be converted.
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public Object convert(final String value, final Class<?> clazz) {
@@ -188,7 +189,7 @@ public class LocaleConvertUtilsBean {
      * @param pattern The conversion pattern
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public Object convert(final String value, final Class<?> clazz, final 
Locale locale, final String pattern) {
@@ -222,7 +223,7 @@ public class LocaleConvertUtilsBean {
      * @param pattern The conversion pattern
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public Object convert(final String value, final Class<?> clazz, final 
String pattern) {
@@ -237,7 +238,7 @@ public class LocaleConvertUtilsBean {
         * @param clazz Java array or element class to be converted to
         * @return the converted value
         *
-         * @throws org.apache.commons.beanutils2.ConversionException if thrown 
by an
+         * @throws ConversionException if thrown by an
          * underlying Converter
         */
        public Object convert(final String[] values, final Class<?> clazz) {
@@ -255,7 +256,7 @@ public class LocaleConvertUtilsBean {
      * @param pattern The conversion pattern
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public <T> T[] convert(final String[] values, final Class<T> clazz, final 
Locale locale, final String pattern) {
@@ -286,7 +287,7 @@ public class LocaleConvertUtilsBean {
      * @param pattern The conversion pattern
      * @return the converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if thrown by 
an
+     * @throws ConversionException if thrown by an
      * underlying Converter
      */
     public <T> T[] convert(final String[] values, final Class<T> clazz, final 
String pattern) {
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/LocaleConverter.java 
b/src/main/java/org/apache/commons/beanutils2/locale/LocaleConverter.java
index e5b0212a..2a7110ce 100644
--- a/src/main/java/org/apache/commons/beanutils2/locale/LocaleConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/locale/LocaleConverter.java
@@ -17,6 +17,7 @@
 
 package org.apache.commons.beanutils2.locale;
 
+import org.apache.commons.beanutils2.ConversionException;
 import org.apache.commons.beanutils2.Converter;
 
 /**
@@ -36,7 +37,7 @@ public interface LocaleConverter<T> extends Converter<T> {
      * @param value   The input value to be converted
      * @param pattern The user-defined pattern is used for the input object 
formatting.
      * @return The converted value
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully or if the target type is not supported
+     * @throws ConversionException if conversion cannot be performed 
successfully or if the target type is not supported
      */
     <R> R convert(Class<R> type, Object value, String pattern);
 }
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/ByteLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/ByteLocaleConverter.java
index be79c0ba..e8f8095d 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/ByteLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/ByteLocaleConverter.java
@@ -60,7 +60,7 @@ public class ByteLocaleConverter extends 
DecimalLocaleConverter<Byte> {
      * @param pattern The pattern is used for the conversion
      * @return The converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      */
     @Override
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java
index 6f3ed0a9..012df7c7 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java
@@ -193,7 +193,7 @@ public class DateLocaleConverter<D extends Date> extends 
BaseLocaleConverter<D>
      * @param value   The input object to be converted
      * @param pattern The pattern is used for the conversion
      * @return the converted Date value
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing
      */
     @Override
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/DecimalLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/DecimalLocaleConverter.java
index fe2db381..29c58e40 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/DecimalLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/DecimalLocaleConverter.java
@@ -86,7 +86,7 @@ public class DecimalLocaleConverter<T extends Number> extends 
BaseLocaleConverte
      * @param value   The input object to be converted
      * @param pattern The pattern is used for the conversion
      * @return The converted value
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      */
     @Override
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/DoubleLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/DoubleLocaleConverter.java
index 03862219..c44ad8b2 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/DoubleLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/DoubleLocaleConverter.java
@@ -20,6 +20,8 @@ package org.apache.commons.beanutils2.locale.converters;
 import java.text.ParseException;
 import java.util.Locale;
 
+import org.apache.commons.beanutils2.ConversionException;
+
 /**
  * Standard {@link org.apache.commons.beanutils2.locale.LocaleConverter} 
implementation that converts an incoming locale-sensitive String into a {@link 
Double}
  * object, optionally using a default value or throwing a {@link 
org.apache.commons.beanutils2.ConversionException} if a conversion error occurs.
@@ -58,7 +60,7 @@ public class DoubleLocaleConverter extends 
DecimalLocaleConverter<Double> {
      * @param pattern The pattern is used for the conversion
      * @return The converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      */
     @Override
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/LongLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/LongLocaleConverter.java
index c0c80b76..6e88a4a1 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/LongLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/LongLocaleConverter.java
@@ -20,6 +20,8 @@ package org.apache.commons.beanutils2.locale.converters;
 import java.text.ParseException;
 import java.util.Locale;
 
+import org.apache.commons.beanutils2.ConversionException;
+
 /**
  * Standard {@link org.apache.commons.beanutils2.locale.LocaleConverter} 
implementation that converts an incoming locale-sensitive String into a {@link 
Long}
  * object, optionally using a default value or throwing a {@link 
org.apache.commons.beanutils2.ConversionException} if a conversion error occurs.
@@ -58,7 +60,7 @@ public class LongLocaleConverter extends 
DecimalLocaleConverter<Long> {
      * @param pattern The pattern is used for the conversion
      * @return The converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      * @since 1.8.0
      */
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/ShortLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/ShortLocaleConverter.java
index c462f67d..2668174f 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/ShortLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/ShortLocaleConverter.java
@@ -65,7 +65,7 @@ public class ShortLocaleConverter extends 
DecimalLocaleConverter<Short> {
      * @param pattern The pattern is used for the conversion
      * @return The converted value
      *
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      * @since 1.8.0
      */
diff --git 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java
index 15054592..a129eb9f 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/locale/converters/StringLocaleConverter.java
@@ -107,7 +107,7 @@ public class StringLocaleConverter extends 
BaseLocaleConverter<String> {
      * @param value   The input object to be converted
      * @param pattern The pattern is used for the conversion
      * @return The converted value
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs
      */
     @Override
diff --git 
a/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlDateLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlDateLocaleConverter.java
index ec8e6e80..5c67f033 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlDateLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlDateLocaleConverter.java
@@ -21,6 +21,7 @@ import java.sql.Date;
 import java.text.ParseException;
 import java.util.Locale;
 
+import org.apache.commons.beanutils2.ConversionException;
 import org.apache.commons.beanutils2.locale.converters.DateLocaleConverter;
 
 /**
@@ -62,7 +63,7 @@ public class SqlDateLocaleConverter extends 
DateLocaleConverter<Date> {
      * @param value   The input object to be converted
      * @param pattern The pattern is used for the conversion
      * @return The converted value
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      */
     @Override
diff --git 
a/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimeLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimeLocaleConverter.java
index 165143a9..a94017a8 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimeLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimeLocaleConverter.java
@@ -21,6 +21,7 @@ import java.sql.Time;
 import java.text.ParseException;
 import java.util.Locale;
 
+import org.apache.commons.beanutils2.ConversionException;
 import org.apache.commons.beanutils2.locale.converters.DateLocaleConverter;
 
 /**
@@ -62,7 +63,7 @@ public class SqlTimeLocaleConverter extends 
DateLocaleConverter<Time> {
      * @param value   The input object to be converted
      * @param pattern The pattern is used for the conversion
      * @return The converted value
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      */
     @Override
diff --git 
a/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimestampLocaleConverter.java
 
b/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimestampLocaleConverter.java
index 90937281..f95604dc 100644
--- 
a/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimestampLocaleConverter.java
+++ 
b/src/main/java/org/apache/commons/beanutils2/sql/converters/locale/SqlTimestampLocaleConverter.java
@@ -21,6 +21,7 @@ import java.sql.Timestamp;
 import java.text.ParseException;
 import java.util.Locale;
 
+import org.apache.commons.beanutils2.ConversionException;
 import org.apache.commons.beanutils2.locale.converters.DateLocaleConverter;
 
 /**
@@ -62,7 +63,7 @@ public class SqlTimestampLocaleConverter extends 
DateLocaleConverter<Timestamp>
      * @param value   The input object to be converted
      * @param pattern The pattern is used for the conversion
      * @return The converted value
-     * @throws org.apache.commons.beanutils2.ConversionException if conversion 
cannot be performed successfully
+     * @throws ConversionException if conversion cannot be performed 
successfully
      * @throws ParseException                                    if an error 
occurs parsing a String to a Number
      */
     @Override
diff --git 
a/src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java 
b/src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java
index 7067e659..f67cc67b 100644
--- a/src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java
+++ b/src/test/java/org/apache/commons/beanutils2/bugs/Jira347TestCase.java
@@ -37,56 +37,29 @@ import junit.framework.TestCase;
 public class Jira347TestCase extends TestCase {
 
     /**
-     * Tests that MappedPropertyDescriptor does not throw an exception while 
re-creating a Method reference after it has been garbage collected under the
-     * following circumstances. - a class has a property 'mappedProperty' - 
there is no getter for this property - there is method
-     * setMappedProperty(MappedPropertyTestBean,MappedPropertyTestBean)
-     *
-     * In this case getMappedWriteMethod should not throw an exception after 
the method reference has been garbage collected. It is essential that in both 
cases
-     * the same method is returned or in both cases null. If the constructor 
of the MappedPropertyDescriptor would recognize the situation (of the first 
param
-     * not being of type String) this would be fine as well.
+     * Create a new class loader instance.
      */
-    public void testMappedPropertyDescriptor_AnyArgsProperty() throws 
Exception {
-        final String className = 
"org.apache.commons.beanutils2.MappedPropertyTestBean";
-        try (final URLClassLoader loader = newClassLoader()) {
-            final Class<?> beanClass = loader.loadClass(className);
-            beanClass.newInstance();
-
-            // Sanity checks only
-            assertNotNull("ClassLoader is null", loader);
-            assertNotNull("BeanClass is null", beanClass);
-            assertNotSame("ClassLoaders should be different..", 
getClass().getClassLoader(), beanClass.getClassLoader());
-            assertSame("BeanClass ClassLoader incorrect", 
beanClass.getClassLoader(), loader);
+    private static URLClassLoader newClassLoader() throws 
MalformedURLException {
 
-            // now start the test
-            MappedPropertyDescriptor descriptor = null;
-            try {
-                descriptor = new MappedPropertyDescriptor("anyMapped", 
beanClass);
-            } catch (final IntrospectionException e) {
-                // this would be fine as well
-            }
+        final String dataFilePath = 
MemoryLeakTestCase.class.getResource("pojotests").getFile();
+        // System.out.println("dataFilePath: " + dataFilePath);
+        final String location = "file://"
+                + dataFilePath.substring(0, dataFilePath.length() - 
"org.apache.commons.beanutils2.memoryleaktests.pojotests".length());
+        // System.out.println("location: " + location);
 
-            if (descriptor != null) {
-                final String m1 = getMappedWriteMethod(descriptor);
-                forceGarbageCollection();
-                try {
-                    final String m2 = getMappedWriteMethod(descriptor);
-                    assertEquals("Method returned post garbage collection 
differs from Method returned prior to gc", m1, m2);
-                } catch (final RuntimeException e) {
-                    fail("getMappedWriteMethod threw an exception after 
garbage collection " + e);
-                }
+        final StringBuilder newString = new StringBuilder();
+        for (int i = 0; i < location.length(); i++) {
+            if (location.charAt(i) == '\\') {
+                newString.append("/");
+            } else {
+                newString.append(location.charAt(i));
             }
         }
-    }
+        final String classLocation = newString.toString();
+        // System.out.println("classlocation: " + classLocation);
 
-    /**
-     * Retrieves the string representation of the mapped write method for the 
given descriptor. This conversion is needed as there must not be strong 
reference
-     * to the Method object outside of this method as otherwise the garbage 
collector will not clean up the soft reference within the 
MappedPropertyDescriptor.
-     *
-     * @return the string representation or null if mapped write method does 
not exist
-     */
-    private String getMappedWriteMethod(final MappedPropertyDescriptor 
descriptor) {
-        final Method m = descriptor.getMappedWriteMethod();
-        return m == null ? null : m.toString();
+        final URLClassLoader theLoader = URLClassLoader.newInstance(new URL[] 
{ new URL(classLocation) }, null);
+        return theLoader;
     }
 
     /**
@@ -121,28 +94,55 @@ public class Jira347TestCase extends TestCase {
     }
 
     /**
-     * Create a new class loader instance.
+     * Retrieves the string representation of the mapped write method for the 
given descriptor. This conversion is needed as there must not be strong 
reference
+     * to the Method object outside of this method as otherwise the garbage 
collector will not clean up the soft reference within the 
MappedPropertyDescriptor.
+     *
+     * @return the string representation or null if mapped write method does 
not exist
      */
-    private static URLClassLoader newClassLoader() throws 
MalformedURLException {
+    private String getMappedWriteMethod(final MappedPropertyDescriptor 
descriptor) {
+        final Method m = descriptor.getMappedWriteMethod();
+        return m == null ? null : m.toString();
+    }
 
-        final String dataFilePath = 
MemoryLeakTestCase.class.getResource("pojotests").getFile();
-        // System.out.println("dataFilePath: " + dataFilePath);
-        final String location = "file://"
-                + dataFilePath.substring(0, dataFilePath.length() - 
"org.apache.commons.beanutils2.memoryleaktests.pojotests".length());
-        // System.out.println("location: " + location);
+    /**
+     * Tests that MappedPropertyDescriptor does not throw an exception while 
re-creating a Method reference after it has been garbage collected under the
+     * following circumstances. - a class has a property 'mappedProperty' - 
there is no getter for this property - there is method
+     * setMappedProperty(MappedPropertyTestBean,MappedPropertyTestBean)
+     *
+     * In this case getMappedWriteMethod should not throw an exception after 
the method reference has been garbage collected. It is essential that in both 
cases
+     * the same method is returned or in both cases null. If the constructor 
of the MappedPropertyDescriptor would recognize the situation (of the first 
param
+     * not being of type String) this would be fine as well.
+     */
+    public void testMappedPropertyDescriptor_AnyArgsProperty() throws 
Exception {
+        final String className = 
"org.apache.commons.beanutils2.MappedPropertyTestBean";
+        try (final URLClassLoader loader = newClassLoader()) {
+            final Class<?> beanClass = loader.loadClass(className);
+            beanClass.newInstance();
 
-        final StringBuilder newString = new StringBuilder();
-        for (int i = 0; i < location.length(); i++) {
-            if (location.charAt(i) == '\\') {
-                newString.append("/");
-            } else {
-                newString.append(location.charAt(i));
+            // Sanity checks only
+            assertNotNull("ClassLoader is null", loader);
+            assertNotNull("BeanClass is null", beanClass);
+            assertNotSame("ClassLoaders should be different..", 
getClass().getClassLoader(), beanClass.getClassLoader());
+            assertSame("BeanClass ClassLoader incorrect", 
beanClass.getClassLoader(), loader);
+
+            // now start the test
+            MappedPropertyDescriptor descriptor = null;
+            try {
+                descriptor = new MappedPropertyDescriptor("anyMapped", 
beanClass);
+            } catch (final IntrospectionException e) {
+                // this would be fine as well
             }
-        }
-        final String classLocation = newString.toString();
-        // System.out.println("classlocation: " + classLocation);
 
-        final URLClassLoader theLoader = URLClassLoader.newInstance(new URL[] 
{ new URL(classLocation) }, null);
-        return theLoader;
+            if (descriptor != null) {
+                final String m1 = getMappedWriteMethod(descriptor);
+                forceGarbageCollection();
+                try {
+                    final String m2 = getMappedWriteMethod(descriptor);
+                    assertEquals("Method returned post garbage collection 
differs from Method returned prior to gc", m1, m2);
+                } catch (final RuntimeException e) {
+                    fail("getMappedWriteMethod threw an exception after 
garbage collection " + e);
+                }
+            }
+        }
     }
 }

Reply via email to