Package org.w3c.jigsaw.proxy

Source Code of org.w3c.jigsaw.proxy.ProxyExtFrame

// ProxyExtFrame.java
// $Id: ProxyExtFrame.java,v 1.4 2000/08/16 21:37:43 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1998.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigsaw.proxy;

import org.w3c.jigsaw.html.HtmlGenerator;
import org.w3c.jigsaw.http.Request;
import org.w3c.jigsaw.http.Reply;
import org.w3c.tools.resources.ProtocolException;
import org.w3c.tools.resources.ReplyInterface;
import org.w3c.tools.resources.RequestInterface;
import org.w3c.www.http.HTTP;
import org.w3c.www.http.HttpExtList;
import org.w3c.www.http.HttpExt;

/**
* @version $Revision: 1.4 $
* @author  Beno�t Mah� (bmahe@w3.org)
*/
public class ProxyExtFrame extends ProxyFrame {

    /**
     * Perform the given proxied request.
     * @param request The request to perform.
     * @return A Reply instance.
     * @exception org.w3c.tools.resources.ProtocolException if processing
     * the request failed.
     * @exception org.w3c.tools.resources.ResourceException if the resource
     * got a fatal error.
     */

    public ReplyInterface perform(RequestInterface ri)
  throws org.w3c.tools.resources.ProtocolException,
         org.w3c.tools.resources.ResourceException
    {
  Request     request  = (Request) ri;
  Reply       reply    = null;
  Reply       extReply = null;
  HttpExtList cman     = request.getHttpCManExtDecl();
  HttpExtList copt     = request.getHttpCOptExtDecl();
  HttpExtList man      = request.getHttpManExtDecl();

  if ((cman != null) || (copt != null)) {
      extReply = applyExtensions(request, cman, copt);
      if (extReply != null)
    return extReply;
      if ((cman != null) && (man == null)) {
    //strip the M-
    String method = request.getMethod();
    if (method.startsWith("M-"))
        request.setMethod(method.substring(2));
      }
  }
  //Send the request, and get the reply
  reply = (Reply) super.perform(ri);

  if ((cman != null) || (copt != null))
      return applyExtensions( reply, cman, copt);
  return reply;
    }

    /**
     * Apply extension to the request.
     * @param request the incomming request
     * @param cman The Mandatory hop-by-hop extension declaration list
     * @param cman The optionnal hop-by-hop extension declaration list
     * @return a Reply instance or null if processing the request must continue
     * @exception org.w3c.tools.resources.ProtocolException if processing
     * the request failed.
     */
    public Reply applyExtensions(Request request,
         HttpExtList cman,
         HttpExtList copt)
  throws org.w3c.tools.resources.ProtocolException
    {
  if (cman != null) {
      Reply error = request.makeReply(HTTP.NOT_EXTENDED) ;
      HtmlGenerator content = new HtmlGenerator("Error");
      content.append("<h1>Mandatory extension(s) not supported:",
         "</h1><p>\n");
      content.append("<ul>\n");
      HttpExt exts[] = cman.getHttpExts();
      for (int i=0 ; i < exts.length ; i++)
    content.append("<li> "+exts[i].getName()+"\n");
      content.append("</ul>\n");
      error.setStream(content);
      return error;
  }
  return null;
    }

    /**
     * Apply extension to the reply.
     * @param request the reply
     * @param cman The Mandatory hop-by-hop extension declaration list
     * @param cman The optionnal hop-by-hop extension declaration list
     * @return a Reply instance.
     * @exception org.w3c.tools.resources.ProtocolException if processing
     * the request failed.
     */
    public Reply applyExtensions(Reply reply,
         HttpExtList cman,
         HttpExtList copt)
  throws org.w3c.tools.resources.ProtocolException
    {
  return reply;
    }

}
TOP

Related Classes of org.w3c.jigsaw.proxy.ProxyExtFrame

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.