org.artificer.ui.server.servlets.AbstractUploadServlet.java Source code

Java tutorial

Introduction

Here is the source code for org.artificer.ui.server.servlets.AbstractUploadServlet.java

Source

/*
 * Copyright 2012 JBoss Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.artificer.ui.server.servlets;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.codehaus.jackson.JsonEncoding;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;

/**
 * A base class for upload servlets.
 *
 * @author eric.wittmann@redhat.com
 */
public abstract class AbstractUploadServlet extends HttpServlet {

    private static final long serialVersionUID = AbstractUploadServlet.class.hashCode();

    /**
     * Constructor.
     */
    public AbstractUploadServlet() {
    }

    /**
     * Make a temporary copy of the resource by saving the content to a temp file.
     * @param resourceInputStream
     * @throws IOException
     */
    protected File stashResourceContent(InputStream resourceInputStream) throws IOException {
        File resourceTempFile = null;
        OutputStream oStream = null;
        try {
            resourceTempFile = File.createTempFile("artificer-ui-upload", ".tmp");
            oStream = FileUtils.openOutputStream(resourceTempFile);
            IOUtils.copy(resourceInputStream, oStream);
            return resourceTempFile;
        } catch (IOException e) {
            FileUtils.deleteQuietly(resourceTempFile);
            throw e;
        } finally {
            IOUtils.closeQuietly(resourceInputStream);
            IOUtils.closeQuietly(oStream);
        }
    }

    /**
     * Writes the response values back to the http response.  This allows the calling code to
     * parse the response values for display to the user.
     *
     * @param responseMap the response params to write to the http response
     * @param response the http response
     * @throws IOException
     */
    protected static void writeToResponse(Map<String, String> responseMap, HttpServletResponse response)
            throws IOException {
        // Note: setting the content-type to text/html because otherwise IE prompt the user to download
        // the result rather than handing it off to the GWT form response handler.
        // See JIRA issue https://issues.jboss.org/browse/SRAMPUI-103
        response.setContentType("text/html; charset=UTF8");
        JsonFactory f = new JsonFactory();
        JsonGenerator g = f.createJsonGenerator(response.getOutputStream(), JsonEncoding.UTF8);
        g.useDefaultPrettyPrinter();
        g.writeStartObject();
        for (java.util.Map.Entry<String, String> entry : responseMap.entrySet()) {
            String key = entry.getKey();
            String val = entry.getValue();
            g.writeStringField(key, val);
        }
        g.writeEndObject();
        g.flush();
        g.close();
    }
}