From c7308e73201fc4e59013c7361e37c8e1dca51cb4 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Mon, 29 Jul 2019 13:20:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DConvertFacotry.register?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E4=B8=ADcolumn=E5=8F=82=E6=95=B0=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=AF=B9=E5=BA=94field=E6=97=B6=E4=BC=9A=E5=AF=BC?= =?UTF-8?q?=E8=87=B4method=E7=9A=84ignore=E5=A4=B1=E6=95=88=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/convert/ConvertFactory.java | 39 ++++++++++++--------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/org/redkale/convert/ConvertFactory.java b/src/org/redkale/convert/ConvertFactory.java index 2038fa32c..5a5bff4e9 100644 --- a/src/org/redkale/convert/ConvertFactory.java +++ b/src/org/redkale/convert/ConvertFactory.java @@ -433,25 +433,32 @@ public abstract class ConvertFactory { public final boolean register(final Class type, String column, ConvertColumnEntry entry) { if (type == null || column == null || entry == null) return false; + Field field = null; try { - final Field field = type.getDeclaredField(column); - String get = "get"; - if (field.getType() == boolean.class || field.getType() == Boolean.class) get = "is"; - char[] cols = column.toCharArray(); - cols[0] = Character.toUpperCase(cols[0]); - String col2 = new String(cols); - try { - register(type.getMethod(get + col2), entry); - } catch (Exception ex) { - } - try { - register(type.getMethod("set" + col2, field.getType()), entry); - } catch (Exception ex) { - } - return register(field, entry); + field = type.getDeclaredField(column); } catch (Exception e) { - return false; } + String get = "get"; + if (field != null && (field.getType() == boolean.class || field.getType() == Boolean.class)) get = "is"; + char[] cols = column.toCharArray(); + cols[0] = Character.toUpperCase(cols[0]); + final String bigColumn = new String(cols); + try { + register(type.getMethod(get + bigColumn), entry); + } catch (NoSuchMethodException mex) { + if (get.length() >= 3) { //get + try { + register(type.getMethod("is" + bigColumn), entry); + } catch (Exception ex) { + } + } + } catch (Exception ex) { + } + try { + register(type.getMethod("set" + bigColumn, field.getType()), entry); + } catch (Exception ex) { + } + return field == null ? true : register(field, entry); } public final boolean register(final AccessibleObject field, final ConvertColumnEntry entry) {