Package org.archive.accesscontrol.oracle

Source Code of org.archive.accesscontrol.oracle.AutoFormatView

package org.archive.accesscontrol.oracle;

import java.io.IOException;
import java.util.Map;

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

import org.springframework.web.servlet.View;

/**
* AutoFormatView renders an object to XML or JSON, depending on whether a
* "format" parameter or attribute was supplied.
*
* eg. to request json: /rules/1.json
*                  or: /rule?id=1&format=json
*
*/
public class AutoFormatView implements View {
    private Map<String, View> views;
    private String defaultFormat;
   

    /**
     * @return the views
     */
    public Map<String, View> getViews() {
        return views;
    }
   
    public View getView(String format) {
        View view = views.get(format);
        if (view == null) {
            view = views.get(defaultFormat);
        }
        return view;
    }

    /**
     * @param views the views to set
     */
    public void setViews(Map<String, View> views) {
        this.views = views;
    }

    /**
     * @return the defaultFormat
     */
    public String getDefaultFormat() {
        return defaultFormat;
    }

    /**
     * @param defaultFormat the defaultFormat to set
     */
    public void setDefaultFormat(String defaultFormat) {
        this.defaultFormat = defaultFormat;
    }

    public String getContentType() {
        return "application/xml";
    }

    public void render(Map model, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        System.out.println("views = " + views + " defaultFormat =" + defaultFormat);
        String format = request.getParameter("format");

        if (format == null || format.equals("")) {
            format = (String) request.getAttribute("format");
        }
       
        getView(format).render(model, request, response);       
    }

    /**
     * Return the first view with the given content type.
     * @param contentType
     * @return
     */
    public View viewByContentType(String contentType) {
        for (View view: views.values()) {
            if (view.getContentType().equals(contentType)) {
                return view;
            }
        }
        return null;
    }
   
    public Object deserializeRequest(HttpServletRequest request) throws IOException {
        String ctype = request.getContentType();
        if (ctype == null) {
            ctype = "application/xml";
        }
        XStreamView view = (XStreamView)viewByContentType(ctype);
        return view.getXstream().fromXML(request.getInputStream());
    }
}
TOP

Related Classes of org.archive.accesscontrol.oracle.AutoFormatView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.