com.enonic.cms.web.portal.handler.WebHandlerBase.java Source code

Java tutorial

Introduction

Here is the source code for com.enonic.cms.web.portal.handler.WebHandlerBase.java

Source

/*
 * Copyright 2000-2013 Enonic AS
 * http://www.enonic.com/license
 */

package com.enonic.cms.web.portal.handler;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;

import com.enonic.cms.framework.util.HttpCacheControlSettings;
import com.enonic.cms.framework.util.HttpServletUtil;

import com.enonic.cms.core.Path;
import com.enonic.cms.core.portal.livetrace.LivePortalTraceService;
import com.enonic.cms.core.preview.PreviewService;
import com.enonic.cms.core.security.AutoLoginService;
import com.enonic.cms.core.security.SecurityService;
import com.enonic.cms.core.structure.SitePath;
import com.enonic.cms.core.structure.SitePropertiesService;
import com.enonic.cms.core.structure.SiteService;
import com.enonic.cms.core.time.TimeService;
import com.enonic.cms.store.dao.ContentDao;
import com.enonic.cms.store.dao.GroupDao;
import com.enonic.cms.store.dao.SiteDao;
import com.enonic.cms.store.dao.UserDao;
import com.enonic.cms.web.portal.PortalWebContext;

public abstract class WebHandlerBase implements WebHandler {
    protected TimeService timeService;

    protected SecurityService securityService;

    protected PreviewService previewService;

    protected LivePortalTraceService livePortalTraceService;

    protected SiteDao siteDao;

    protected SitePropertiesService sitePropertiesService;

    protected AutoLoginService autoLoginService;

    protected ContentDao contentDao;

    protected GroupDao groupDao;

    protected UserDao userDao;

    protected SiteService siteService;

    @Override
    public final boolean canHandle(final PortalWebContext context) {
        return canHandle(context.getSitePath().getLocalPath());
    }

    protected abstract boolean canHandle(final Path localPath);

    @Override
    public final void handle(final PortalWebContext context) throws Exception {
        final SitePath originalSitePath = context.getOriginalSitePath();
        if (originalSitePath == null) {
            siteService.checkSiteExist(context.getSitePath().getSiteKey());
            context.setOriginalSitePath(context.getSitePath());
        }

        doHandle(context);
    }

    protected abstract void doHandle(final PortalWebContext context) throws Exception;

    @Autowired
    public final void setTimeService(final TimeService timeService) {
        this.timeService = timeService;
    }

    @Autowired
    public final void setSecurityService(final SecurityService securityService) {
        this.securityService = securityService;
    }

    @Autowired
    public final void setLivePortalTraceService(final LivePortalTraceService livePortalTraceService) {
        this.livePortalTraceService = livePortalTraceService;
    }

    @Autowired
    public final void setPreviewService(final PreviewService previewService) {
        this.previewService = previewService;
    }

    @Autowired
    public final void setSiteDao(final SiteDao siteDao) {
        this.siteDao = siteDao;
    }

    @Autowired
    public final void setSitePropertiesService(final SitePropertiesService sitePropertiesService) {
        this.sitePropertiesService = sitePropertiesService;
    }

    @Autowired
    public final void setAutoLoginService(final AutoLoginService autoLoginService) {
        this.autoLoginService = autoLoginService;
    }

    @Autowired
    public final void setContentDao(final ContentDao contentDao) {
        this.contentDao = contentDao;
    }

    @Autowired
    public final void setGroupDao(final GroupDao groupDao) {
        this.groupDao = groupDao;
    }

    @Autowired
    public final void setUserDao(final UserDao userDao) {
        this.userDao = userDao;
    }

    @Autowired
    public final void setSiteService(final SiteService siteService) {
        this.siteService = siteService;
    }

    protected final void enableHttpCacheHeaders(HttpServletResponse response, SitePath sitePath, DateTime now,
            Integer siteCacheSettingsMaxAge, boolean anonymousAccess) {
        int maxAge;

        boolean cacheForever = hasTimestampParameter(sitePath);

        if (cacheForever) {
            maxAge = HttpCacheControlSettings.CACHE_FOREVER_SECONDS;
        } else {
            maxAge = siteCacheSettingsMaxAge;
        }

        final DateTime expirationTime = now.plusSeconds(maxAge);

        final HttpCacheControlSettings cacheControlSettings = new HttpCacheControlSettings();
        cacheControlSettings.maxAgeSecondsToLive = (long) maxAge;
        cacheControlSettings.publicAccess = anonymousAccess;
        HttpServletUtil.setExpiresHeader(response, expirationTime.toDate());
        HttpServletUtil.setCacheControl(response, cacheControlSettings);
    }

    protected final boolean hasTimestampParameter(SitePath sitePath) {
        String timestamp = sitePath.getParam("_ts");
        return StringUtils.isNotBlank(timestamp);
    }
}