/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.livetrace; import javax.servlet.http.HttpServletRequest; import com.enonic.cms.framework.util.UrlPathDecoder; import com.enonic.cms.core.portal.PortalResponse; import com.enonic.cms.core.portal.rendering.tracing.RenderTrace; import com.enonic.cms.core.preview.PreviewService; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.SitePath; /** * Nov 25, 2010 */ public class PortalRequestTracer { public static PortalRequestTrace startTracing( final String originalUrl, final LivePortalTraceService livePortalTraceService ) { if ( livePortalTraceService.tracingEnabled() ) { String originalUrlDecoded = UrlPathDecoder.decode( originalUrl ); return livePortalTraceService.startPortalRequestTracing( originalUrlDecoded ); } else { return null; } } public static void stopTracing( PortalRequestTrace trace, LivePortalTraceService livePortalTraceService ) { if ( trace != null ) { livePortalTraceService.stopTracing( trace ); } } public static void traceMode( final PortalRequestTrace trace, final PreviewService previewService ) { if ( trace != null ) { if ( RenderTrace.isTraceOn() ) { trace.setMode( RequestMode.ICE ); } else if ( previewService.isInPreview() ) { trace.setMode( RequestMode.PREVIEW ); } else { trace.setMode( RequestMode.PORTAL ); } } } public static void traceHttpRequest( final PortalRequestTrace trace, final HttpServletRequest httpRequest ) { if ( trace != null && httpRequest != null ) { HttpRequest httpInfo = new HttpRequest(); httpInfo.setRemoteAddress( httpRequest.getRemoteAddr() ); httpInfo.setCharacterEncoding( httpRequest.getCharacterEncoding() ); httpInfo.setContentType( httpRequest.getContentType() ); httpInfo.setUserAgent( httpRequest.getHeader( "User-Agent" ) ); trace.setHttpRequest( httpInfo ); } } public static void traceRequestedSitePath( final PortalRequestTrace trace, final SitePath requestedSitePath ) { if ( trace != null && requestedSitePath != null ) { trace.setSitePath( requestedSitePath ); } } public static void traceRequester( final PortalRequestTrace trace, final UserEntity requester ) { if ( trace != null && requester != null ) { trace.setRequester( User.createUser( requester.getQualifiedName() ) ); } } public static void traceRequestedSite( final PortalRequestTrace trace, final SiteEntity requestedSite ) { if ( trace != null && requestedSite != null ) { trace.setSite( requestedSite ); } } public static void tracePortalResponse( final PortalRequestTrace trace, final PortalResponse portalResponse ) { if ( trace != null && portalResponse != null ) { if ( portalResponse.isForwardToSitePath() ) { trace.setResponseForward( portalResponse.getForwardToSitePath().asString() ); } else if ( portalResponse.hasRedirectInstruction() && portalResponse.getRedirectInstruction().hasRedirectSitePath() ) { trace.setResponseRedirect( portalResponse.getRedirectInstruction().getRedirectSitePath().asString() ); } else if ( portalResponse.hasRedirectInstruction() && portalResponse.getRedirectInstruction().hasRedirectUrl() ) { trace.setResponseRedirect( portalResponse.getRedirectInstruction().getRedirectUrl() ); } } } }