package eu.dnetlib.server;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.google.gwt.user.server.rpc.SerializationPolicy;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;

/**
 * Created by antleb on 20/06/2017.
 */
public abstract class GoldOARemoteService extends RemoteServiceServlet {

    private String moduleBaseURL;

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

        ApplicationContext context = WebApplicationContextUtils
                .getWebApplicationContext(getServletContext());

        String mbu = (String) context.getBean("goldoa.moduleBaseURL");

        if (mbu != null) {
            this.moduleBaseURL = mbu;
        }
    }

    @Override
    protected SerializationPolicy doGetSerializationPolicy(HttpServletRequest request, String moduleBaseURL, String strongName) {

        if (this.moduleBaseURL != null)
            return super.doGetSerializationPolicy(request, this.moduleBaseURL, strongName);
        else
            return super.doGetSerializationPolicy(request, moduleBaseURL, strongName);
    }
}
