w3c.model.www.pep.extensions.escapeMessage.Common

w3c.model.www.pep.extensions.escapeMessage.Common

package w3c.model.www.pep.extensions.escapeMessage;

import w3c.model.www.pep.*;
import java.util.Enumeration;
import w3c.model.www.pep.extensions.escape.Escape;
import w3c.model.www.pep.extensions.escape.EscapeInstance;
import w3c.model.www.pep.altlib.*;

abstract public class Common extends Escape 
    final static String prefHeaderName = null;
    protected final static String absoluteURI = "http://localhost:8887/src/classes/escapeMessage";

    public Common () {
	super(absoluteURI, prefHeaderName);
    }

    public void initialize (PEPAgent pepAgent, boolean requiredExtension) {
	super.initialize(pepAgent, requiredExtension);
    }

    public PEPExtensionInstance makeInstance (String headerNames[], int count, InstanceContext instanceContext) {
	throw  InternalError("illegal call to default escapeMessage.Common.makeInstance("+headerNames[0]+").");
    }

    public boolean map (InstanceContext instanceContext, int when, PEPMessage message, String reason) {
	return false;
    }

    public boolean generateHeaders (InstanceContext instanceContext, int when) throws HTTPException{
	PEPMessage message = instanceContext.getMessage();
	if (when != PEPExtension.CONNECT && when != PEPExtension.HEADERS))
	    return false;
	if (when == PEPExtension.CONNECT && requiredExtension))
	    instanceContext.setRequiredExtensions();
	return true;
    }

    abstract void noElements (InstanceContext instanceContext);
/*
handleHeaders:
read any headers mapping or alread mapped for this extension.

Message.read -> PEPAgent.handleHeaders -> escapeBody.handleHeaders

*/
    public boolean handleHeaders (InstanceContext instanceContext, int when) throws HTTPException{
	if (when != PEPExtension.HEADERS))
	    return false;
	PEPMessage message = instanceContext.getMessage();
	EscapeInstance inst =  EscapeInstance(null);
	message.setInputStream(inst.makeInputStream(message.getInputStream()));
	return true;
    }