//$Header: $
package de.gedas.day.gcq.cocoon.components;

import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.acting.ServiceableAction;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.fop.image.FopImageFactory;

/**
 * Initializes FOP Image Factory.
 * Due to lack of support of source resolving in FOP 0.20.5 implementation we patched the FOP sources
 * to support source resolving at least in a minimal way. This function checks if the source
 * resolving is already initialized properly.
 * Additionaly the FOP-internal image cache is cleared
 * (which is not controlled by cocoon or CQ anyway).
 * @author ESSE
 * @version $Rev: 97 $ $Date: 2004-04-29 21:19:35 +0200 (Thu, 29 Apr 2004) $
 */
public class CqInitializeFopImageFactoryAction extends ServiceableAction {

	/* (non-Javadoc)
	 * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
	 */
	public Map act(Redirector pRedirector, SourceResolver pSourceResolver,
			Map pObjectModel, String pSource, Parameters pParameters) throws Exception {

		// Initialize source resolver if not set before
		if (FopImageFactory.getSourceResolver()==null) {
			FopImageFactory.enableLogging(getLogger());
			FopImageFactory.setSourceResolver(pSourceResolver);
		}

		// Clear FOP-internal image cache
		FopImageFactory.resetCache();

		return null;
	}

}
