
package com.poweroa.acting;

import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;

import org.apache.cocoon.acting.ServiceableAction;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.environment.http.HttpRequest;

import java.util.Map;

public class SetContainerEncodingAction extends ServiceableAction implements ThreadSafe, Parameterizable {
    private String global_container_encoding = null;

    public void parameterize(Parameters parameters)
    throws ParameterException {
        // super.parameterize(parameters);

    	global_container_encoding = parameters.getParameter("container-encoding", null);
    }

    /**
     * Set container encoding of current request.
     */
    public Map act (Redirector redirector, SourceResolver resolver, Map objectModel, String src, Parameters par) throws Exception {
        Request request = ObjectModelHelper.getRequest(objectModel);
        if (request != null) {
            String container_encoding = par.getParameter("container-encoding", global_container_encoding);
            if (container_encoding != null&&(request instanceof HttpRequest)) {
                ((HttpRequest)request).setContainerEncoding(container_encoding);
            }
        }

        return null;
    }
}
