Package org.fcrepo.server.oai

Source Code of org.fcrepo.server.oai.FedoraOAIProviderServlet

/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/
package org.fcrepo.server.oai;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;

import org.fcrepo.oai.OAIProvider;
import org.fcrepo.oai.OAIProviderServlet;
import org.fcrepo.oai.OAIResponder;
import org.fcrepo.oai.RepositoryException;
import org.fcrepo.server.Server;
import org.fcrepo.server.security.Authorization;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;




/**
* FedoraOAIProviderServlet.
*
* @author Chris Wilper
*/
public class FedoraOAIProviderServlet
        extends OAIProviderServlet {

    private static final long serialVersionUID = 1L;

    Server m_server;

    OAIResponder m_responder;

    @Override
    public OAIResponder getResponder() throws RepositoryException {
        if (m_responder == null) {
            try {
                OAIProvider provider = m_server
                        .getBean("org.fcrepo.oai.OAIProvider", OAIProvider.class);
                Authorization authz = m_server
                        .getBean("org.fcrepo.server.security.Authorization", Authorization.class);
                m_responder = new OAIResponder(provider, authz);
            } catch (Exception e) {
                throw new RepositoryException(e.getClass().getName() + ": "
                        + e.getMessage());
            }
        }
        return m_responder;
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        try {
            WebApplicationContext appContext = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext());
            m_server = (Server)appContext.getBean("org.fcrepo.server.Server");
            if (m_server == null) failStartup("Could not retrieve org.fcrepo.server.Server bean",null);
        } catch (Throwable th) {
            String msg = "Fedora startup failed";
            failStartup(msg, th);
        }
    }

    /**
     * Prints a "FEDORA STARTUP ERROR" to STDERR along with the stacktrace of
     * the Throwable (if given) and finally, throws a ServletException.
     */
    private void failStartup(String message, Throwable th)
            throws ServletException {
        System.err.println("\n**************************");
        System.err.println("** FEDORA STARTUP ERROR **");
        System.err.println("**************************\n");
        System.err.println(message);
        if (th == null) {
            System.err.println();
            throw new ServletException(message);
        } else {
            th.printStackTrace();
            System.err.println();
            throw new ServletException(message, th);
        }
    }


    public static void main(String[] args) throws Exception {
        new FedoraOAIProviderServlet().test(args);
    }

}
TOP

Related Classes of org.fcrepo.server.oai.FedoraOAIProviderServlet

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.