com.acc.storefront.interceptors.beforeview.BtgPageVisitedPublisherBeforeViewHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.acc.storefront.interceptors.beforeview.BtgPageVisitedPublisherBeforeViewHandler.java

Source

/*
 * [y] hybris Platform
 *
 * Copyright (c) 2000-2013 hybris AG
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of hybris
 * ("Confidential Information"). You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the
 * license agreement you entered into with hybris.
 * 
 *  
 */
package com.acc.storefront.interceptors.beforeview;

import de.hybris.platform.acceleratorstorefrontcommons.controllers.pages.AbstractPageController;
import de.hybris.platform.btg.events.ContentPageVisitedBTGRuleDataEvent;
import de.hybris.platform.cms2.model.pages.AbstractPageModel;
import de.hybris.platform.servicelayer.event.EventService;
import com.acc.storefront.interceptors.BeforeViewHandler;

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

import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;

/**
 * Interceptor to create BTG events for visited content pages. Using a filter is not appropriate since pages are
 * retrieved by controllers and populated in the model.
 */
public class BtgPageVisitedPublisherBeforeViewHandler implements BeforeViewHandler {
    private static final Logger LOG = Logger.getLogger(BtgPageVisitedPublisherBeforeViewHandler.class);

    @Resource(name = "eventService")
    private EventService eventService;

    @Override
    public void beforeView(final HttpServletRequest request, final HttpServletResponse response,
            final ModelAndView modelAndView) {
        final AbstractPageModel page = (AbstractPageModel) modelAndView.getModel()
                .get(AbstractPageController.CMS_PAGE_MODEL);
        if (page != null && page.getPk() != null) {
            try {
                eventService
                        .publishEvent(new ContentPageVisitedBTGRuleDataEvent(page.getPk().getLongValueAsString()));
            } catch (final Exception e) {
                LOG.error("Could not publish event", e);
            }
        }
    }
}