public Object intercept()

in bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/interceptor/AuditingInterceptor.java [63:91]


    public Object intercept(Invocation invocation) throws Throwable {
        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();

        // Get Entity Object
        Object parameter = invocation.getArgs()[1];
        log.debug("sqlCommandType {}", sqlCommandType);

        if (SqlCommandType.INSERT == sqlCommandType || SqlCommandType.UPDATE == sqlCommandType) {
            Collection<Object> objects;
            if (parameter instanceof MapperMethod.ParamMap) {
                MapperMethod.ParamMap<Object> paramMap = ((MapperMethod.ParamMap<Object>) parameter);
                if (!paramMap.containsKey("param1") && paramMap.containsKey("arg0")) {
                    objects = ((Collection<Object>) paramMap.get("arg0"));
                } else if (paramMap.get("param1") instanceof Collection) {
                    objects = ((Collection<Object>) paramMap.get("param1"));
                } else {
                    objects = Collections.singletonList(paramMap.get("param1"));
                }
            } else {
                objects = Collections.singletonList(parameter);
            }

            for (Object o : objects) {
                setAuditFields(o, sqlCommandType);
            }
        }
        return invocation.proceed();
    }