org.openlegacy.mvc.ViewSourceController.java Source code

Java tutorial

Introduction

Here is the source code for org.openlegacy.mvc.ViewSourceController.java

Source

/*******************************************************************************
 * Copyright (c) 2014 OpenLegacy Inc.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     OpenLegacy Inc. - initial API and implementation
 *******************************************************************************/
package org.openlegacy.mvc;

import org.apache.commons.io.IOUtils;
import org.openlegacy.exceptions.OpenLegacyRuntimeException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.util.HtmlUtils;

import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping(value = "/viewSource")
public class ViewSourceController {

    private boolean enabled = false;
    private String htmlOutput = "<html><body><pre>{0}</pre></body></html>";

    @RequestMapping(method = RequestMethod.GET)
    public void viewSource(@RequestParam("file") String file, HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        if (!enabled) {
            throw (new OpenLegacyRuntimeException("View source controller is not enabled"));
        }

        ServletContext servletContext = request.getSession().getServletContext();

        InputStream resource = servletContext.getResourceAsStream(file);
        if (resource == null) {
            throw (new OpenLegacyRuntimeException("Specified resource doesn''t exists"));
        }
        String content = IOUtils.toString(resource);
        content = HtmlUtils.htmlEscape(content);
        response.getWriter().write(MessageFormat.format(htmlOutput, content));
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public void setHtmlOutput(String htmlOutput) {
        this.htmlOutput = htmlOutput;
    }
}