From 240e27e0b4ffa648bd44b3cdef29ceb5d33cac22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hakan=20=C3=96zler?= Date: Sun, 25 Feb 2024 14:30:26 +0300 Subject: [PATCH] produce classCastException --- src/main/java/com/poiji/util/ReflectUtil.java | 2 +- src/test/java/com/poiji/util/ReflectUtilTest.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/poiji/util/ReflectUtil.java b/src/main/java/com/poiji/util/ReflectUtil.java index aeb9a8d..278c3d0 100644 --- a/src/main/java/com/poiji/util/ReflectUtil.java +++ b/src/main/java/com/poiji/util/ReflectUtil.java @@ -72,7 +72,7 @@ public static void putFieldMultiValueMapData(Field field, String columnName, Obj field.setAccessible(true); MultiValuedMap multiValuedMap = (MultiValuedMap) field.get(instance); multiValuedMap.put(columnName, o); - } catch (ClassCastException | IllegalAccessException e) { + } catch (IllegalAccessException | IllegalAccessError e) { throw new IllegalCastException("Unexpected cast type {" + o + "} of field" + field.getName()); } } diff --git a/src/test/java/com/poiji/util/ReflectUtilTest.java b/src/test/java/com/poiji/util/ReflectUtilTest.java index c0e6014..a4086d7 100644 --- a/src/test/java/com/poiji/util/ReflectUtilTest.java +++ b/src/test/java/com/poiji/util/ReflectUtilTest.java @@ -1,10 +1,13 @@ package com.poiji.util; +import com.poiji.annotation.ExcelCellsJoinedByName; import com.poiji.exception.PoijiExcelType; import com.poiji.exception.PoijiInstantiationException; + import org.junit.BeforeClass; import org.junit.Test; +import java.lang.reflect.Field; import java.lang.reflect.ReflectPermission; import static org.junit.Assert.assertNotNull; @@ -49,7 +52,18 @@ public void newInstanceOfEnum() { ReflectUtil.newInstanceOf(PoijiExcelType.class); } + @Test(expected = ClassCastException.class) + public void illegalCast() throws NoSuchFieldException, SecurityException { + PackageModel pm = new PackageModel(); + Object o = "new_value"; + Field field = PackageModel.class.getDeclaredField("field"); + + ReflectUtil.putFieldMultiValueMapData(field, "Artist", o, pm); + } + static class PackageModel { + @ExcelCellsJoinedByName(expression = "Artist") + private String field = ""; } static class PackageModelWithPrivateConstructor {