public static void setInternalState()

in hugegraph-common/src/main/java/org/apache/hugegraph/testutil/Whitebox.java [33:59]


    public static void setInternalState(Object target,
                                        String fieldName, Object value) {
        assert target != null;
        assert fieldName != null;
        int sep = fieldName.lastIndexOf(SEPARATOR);
        if (sep > 0) {
            String prefix = fieldName.substring(0, sep);
            Object result = getInternalState(target, prefix);
            E.checkArgument(result != null,
                            "Can't set value on null field: `%s.%s`",
                            target, prefix);
            target = result;
            fieldName = fieldName.substring(sep + 1);
        }

        Class<?> c = target instanceof Class<?> ?
                     (Class<?>) target : target.getClass();
        try {
            Field f = getFieldFromHierarchy(c, fieldName);
            f.setAccessible(true);
            f.set(target, value);
        } catch (Exception e) {
            throw new RuntimeException(String.format(
                      "Can't set value of '%s' against object '%s'",
                      fieldName, target), e);
        }
    }