Package net.csdn.modules.http.processor.impl

Source Code of net.csdn.modules.http.processor.impl.DefaultHttpFinishProcessor

package net.csdn.modules.http.processor.impl;

import net.csdn.ServiceFramwork;
import net.csdn.annotation.NoTransaction;
import net.csdn.common.logging.CSLogger;
import net.csdn.common.logging.Loggers;
import net.csdn.common.settings.Settings;
import net.csdn.hibernate.support.filter.CSDNStatFilterstat;
import net.csdn.jpa.JPA;
import net.csdn.modules.controller.API;
import net.csdn.modules.http.processor.HttpFinishProcessor;
import net.csdn.modules.http.processor.ProcessInfo;
import net.csdn.trace.Trace;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import static net.csdn.common.collections.WowCollections.isNull;

/**
* 3/29/14 WilliamZhu(allwefantasy@gmail.com)
*/
public class DefaultHttpFinishProcessor implements HttpFinishProcessor {

    private CSLogger logger = Loggers.getLogger(DefaultHttpFinishProcessor.class);

    @Override
    public void process(Settings settings, HttpServletRequest request, HttpServletResponse response, ProcessInfo processInfo) {
        boolean disableMySql = settings.getAsBoolean(ServiceFramwork.mode + ".datasources.mysql.disable", false);
        systemLog(processInfo.startTime, request, settings, processInfo);
        endORM(disableMySql);
        closeTx(settings, processInfo);
        Trace.clean();
        API api = ServiceFramwork.injector.getInstance(API.class);
        api.statusIncrement(processInfo.method, processInfo.status);
        api.averageTimeIncrement(processInfo.method, System.currentTimeMillis() - processInfo.startTime);
    }

    private void endORM(boolean _disableMysql) {
        if (!_disableMysql) {
            CSDNStatFilterstat.removeSQLTIME();
        }
    }


    private void closeTx(Settings settings, ProcessInfo processInfo) {
        boolean disableMysql = settings.getAsBoolean(ServiceFramwork.mode + ".datasources.mysql.disable", false);
        if (!disableMysql && processInfo.method != null && processInfo.method.getAnnotation(NoTransaction.class) == null) {
            try {
                JPA.getJPAConfig().getJPAContext().closeTx(false);
            } catch (Exception e2) {
                //ignore
            }
        }
    }

    private void systemLog(long startTime, HttpServletRequest httpServletRequest, Settings settings, ProcessInfo processInfo) {
        boolean disableMysql = settings.getAsBoolean(ServiceFramwork.mode + ".datasources.mysql.disable", false);
        boolean logEnable = settings.getAsBoolean("application.log.enable", true);
        if (logEnable) {
            long endTime = System.currentTimeMillis();
            String url = httpServletRequest.getQueryString();
            String activeOrmTime = disableMysql ? "" : "(ActiveORM: " + CSDNStatFilterstat.SQLTIME().get() + "ms)";
            logger.info("Completed " + processInfo.status + " in " + (endTime - startTime) + "ms " + activeOrmTime);
            logger.info(httpServletRequest.getMethod() +
                    " " + httpServletRequest.getRequestURI() + (isNull(url) ? "" : ("?" + url)));
            logger.info("\n\n\n\n");
        }
    }
}
TOP

Related Classes of net.csdn.modules.http.processor.impl.DefaultHttpFinishProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.