@Override
    public ExecuteContext before(ExecuteContext context) {
        String name = context.getMethod().getName();
        if (context.getArguments() == null || context.getArguments().length == 0) {
            return context;
        }
        Object argument = context.getArguments()[0];
        if ("setName".equals(name)) {
            if (argument == null || argument instanceof String) {
                setAppNameAndPutParameters(context.getObject(), (String) argument);
            }
        } else {
            if (argument == null || argument instanceof Map<?, ?>) {
                context.getArguments()[0] = ParametersUtils.putParameters((Map<String, String>) argument,
                        routerConfig);
            }
        }
        return context;
    }
@Test
    public void testPutParametersWithNull() throws NoSuchMethodException {
        Object[] args = new Object[1];
        args[0] = null;
        ExecuteContext context = ExecuteContext.forMemberMethod(new Object(),
                ApplicationConfig.class.getMethod("setParameters", Map.class), args, null, null);

        // map is null
        interceptor.before(context);
        Map<String, String> parameters = (Map<String, String>) context.getArguments()[0];
        Assert.assertEquals(config.getParameters().size() + 2, parameters.size());
        Assert.assertEquals(config.getRouterVersion(), parameters.get(RouterConstant.META_VERSION_KEY));
        Assert.assertEquals(config.getZone(), parameters.get(RouterConstant.META_ZONE_KEY));
        Map<String, String> configParameters = config.getParameters();
        configParameters.forEach(
                (key, value) -> Assert.assertEquals(value, parameters.get(RouterConstant.PARAMETERS_KEY_PREFIX + key)));
    }