/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.vertical.adminweb; import java.io.IOException; import java.util.Iterator; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; import org.springframework.beans.factory.annotation.Value; import com.enonic.esl.net.URL; import com.enonic.esl.net.URLUtil; import com.enonic.esl.xml.XMLTool; import com.enonic.cms.core.xslt.admin.AdminXsltProcessorHelper; public class SplashServlet extends AdminHandlerBaseServlet { private String characterEncoding; @Value("${cms.url.characterEncoding}") public void setCharacterEncoding( String characterEncoding ) { this.characterEncoding = characterEncoding; } public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { performTask( request, response ); } public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { performTask( request, response ); } protected void performTask( HttpServletRequest request, HttpServletResponse response ) { response.setContentType( "text/html;charset=UTF-8" ); String redirect = request.getParameter( "redirect" ); if ( redirect == null || "".equals( redirect ) ) { String urlString = AdminHelper.getAdminPath( request, true ) + "/adminpage?"; URL tempURL = new URL( urlString ); Map queryValues = URLUtil.decodeParameterMap( request.getParameterMap(), characterEncoding ); for ( Iterator iter = queryValues.entrySet().iterator(); iter.hasNext(); ) { Map.Entry entry = (Map.Entry) iter.next(); String key = (String) entry.getKey(); if ( "waitscreen".equals( key ) == false ) { String[] values = (String[]) entry.getValue(); for ( int i = 0; i < values.length; i++ ) { tempURL.addParameter( key, values[i] ); } } } redirect = tempURL.toString(); } // source and result streams final HttpSession session = request.getSession( true ); final Source xslSource = AdminStore.getStylesheet( session, "waitsplash.xsl" ); final Source input = new DOMSource( XMLTool.createDocument( "dummy" ) ); new AdminXsltProcessorHelper( this.xsltProcessorFactory ).stylesheet( xslSource, null ).input( input ).param( "redirect", redirect ).process( response ); } }