Java tutorial
/* * 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); } }