Example usage for com.liferay.portal.util PropsValues MOBILE_DEVICE_SESSION_CACHE_ENABLED

List of usage examples for com.liferay.portal.util PropsValues MOBILE_DEVICE_SESSION_CACHE_ENABLED

Introduction

In this page you can find the example usage for com.liferay.portal.util PropsValues MOBILE_DEVICE_SESSION_CACHE_ENABLED.

Prototype

boolean MOBILE_DEVICE_SESSION_CACHE_ENABLED

To view the source code for com.liferay.portal.util PropsValues MOBILE_DEVICE_SESSION_CACHE_ENABLED.

Click Source Link

Usage

From source file:com.liferay.mobile.device.rules.internal.events.MDRServicePreAction.java

License:Open Source License

@Override
public void run(HttpServletRequest request, HttpServletResponse response) {
    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    Device device = null;//  www .j a  va  2 s.  c  om

    if (PropsValues.MOBILE_DEVICE_SESSION_CACHE_ENABLED) {
        HttpSession session = request.getSession();

        TransientValue<Device> transientValue = (TransientValue<Device>) session.getAttribute(WebKeys.DEVICE);

        if (transientValue != null) {
            device = transientValue.getValue();
        }

        if (device == null) {
            device = DeviceDetectionUtil.detectDevice(request);

            session.setAttribute(WebKeys.DEVICE, new TransientValue<>(device));
        }
    } else {
        device = DeviceDetectionUtil.detectDevice(request);
    }

    themeDisplay.setDevice(device);

    UnknownDevice unknownDevice = UnknownDevice.getInstance();

    if (device.equals(unknownDevice)) {
        return;
    }

    MDRRuleGroupInstance mdrRuleGroupInstance = null;

    try {
        mdrRuleGroupInstance = RuleGroupProcessorUtil.evaluateRuleGroups(themeDisplay);

        if (_log.isDebugEnabled()) {
            String logMessage = "Rule group evaluation returned rule group instance ";

            if (mdrRuleGroupInstance != null) {
                logMessage += mdrRuleGroupInstance.getRuleGroupInstanceId();
            } else {
                logMessage += "null";
            }

            _log.debug(logMessage);
        }
    } catch (Exception e) {
        if (_log.isWarnEnabled()) {
            _log.warn("Unable to retrieve rule group", e);
        }

        return;
    }

    if (mdrRuleGroupInstance == null) {
        return;
    }

    themeDisplay.setMDRRuleGroupInstance(new MDRRuleGroupInstanceImpl(mdrRuleGroupInstance));

    try {
        List<MDRAction> mdrActions = _mdrActionLocalService
                .getActions(mdrRuleGroupInstance.getRuleGroupInstanceId());

        ActionHandlerManagerUtil.applyActions(mdrActions, request, response);
    } catch (Exception e) {
        if (_log.isWarnEnabled()) {
            _log.warn("Unable to apply device profile", e);
        }
    }
}