Package org.w3c.jigsaw.ssi.commands

Source Code of org.w3c.jigsaw.ssi.commands.DefaultCommand

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

package org.w3c.jigsaw.ssi.commands ;

import java.util.Dictionary;
import java.util.Hashtable;

import java.io.PrintStream;

import org.w3c.www.http.HTTP ;

import org.w3c.util.ArrayDictionary;

import org.w3c.jigsaw.http.Reply;
import org.w3c.jigsaw.http.Request;

import org.w3c.jigsaw.ssi.SSIFrame;

/**
* An implementation of CommandRegistry that uses a hash table
* to store the commands.
* @author Antonio Ramirez <anto@mit.edu>
*/
public class BasicCommandRegistry extends CommandRegistry
{

    Hashtable /*<String,Command>*/ commands = null ;

    public BasicCommandRegistry()
    {
  commands = new Hashtable(23) ;
    }

    public void registerCommand(Command cmd)
    {
  commands.put( cmd.getName().toLowerCase(),
          SSIFrame.debug
          ? getDebugWrapperCommand (cmd)
          : cmd ) ;
    }

    protected Command getDebugWrapperCommand(Command cmd) {
  if (cmd instanceof ControlCommand)
      return new DebugWrapperControlCommand(cmd);
  else
      return new DebugWrapperCommand(cmd);
    }

    public Command lookupCommand(String name)
    {
  Command cmd = (Command)
      commands.get(name.toLowerCase()) ;
  if(cmd != null) return cmd ;
  else return new DefaultCommand(name) ;
    }

    public Dictionary initVariables(SSIFrame ssiframe,
            Request request,
            Dictionary variables)
    {
  return variables ;
    }
}

class DefaultCommand implements Command {
    private String badCommand ;

    /**
     * return true if reply can be cached.
     * @return a boolean.
     */
    public boolean acceptCaching() {
  return true;
    }

    DefaultCommand(String badCommand)
    {
  this.badCommand = badCommand ;
    }

    public String getName()
    {
  return null ;
    }

    public Reply execute(SSIFrame ssiframe,
       Request request,
       ArrayDictionary parameters,
       Dictionary variables)
    {
  Reply reply =
      ssiframe.createCommandReply(request,HTTP.OK) ;

  reply.setContent("[SSIFrame: unknown command \""+badCommand+"\"]");
 
  return reply ;
    }

    public boolean modifiedSince(long date,
         SSIFrame ssiframe,
         Request request,
         ArrayDictionary parameters,
         Dictionary variables)
    {
  return false;
    }

  public String getValue(Dictionary variables, String variable,
       Request request) {
    return "null";
  }

}

class DebugWrapperCommand implements Command {

    Command cmd ;

    /**
     * return true if reply can be cached.
     * @return a boolean.
     */
    public boolean acceptCaching() {
  System.out.println("@@@@ command accept caching : "+
         cmd.acceptCaching());
  return cmd.acceptCaching();
    }

    public DebugWrapperCommand(Command cmd)
    {
  this.cmd = cmd ;
  System.out.println("@@@@ Added command: "+cmd.getName()) ;
    }

    public final Reply execute(SSIFrame ssiframe,
             Request request,
             ArrayDictionary parameters,
             Dictionary variables)
    {
  System.out.println("@@@@ Executing command: "+cmd.getName()+
         " "+parameters) ;
  return cmd.execute(ssiframe,request,parameters,variables) ;
    }
      
    public final String getName()
    {
  return cmd.getName() ;
    }

    public String getValue(Dictionary variables,
         String variable,
         Request request)
    {
  String value = cmd.getValue(variables, variable, request) ;
  System.out.println("@@@@ Get Value "+cmd.getName()+" : "+value);
  return value;
    }

}

class DebugWrapperControlCommand extends DebugWrapperCommand
                                 implements ControlCommand
{
    /**
     * register the command position in the structure
     * witch store the SSIFrame.
     */
    public void setPosition(SSIFrame ssiframe,
          Request request,
          CommandRegistry registry,
          ArrayDictionary parameters,
          Dictionary variables,
          int position)
    {
  System.out.println("@@@@ "+cmd.getName()+
         " SetPosition ["+position+"]");
  ((ControlCommand)cmd).setPosition(ssiframe, request, registry,
            parameters, variables, position);
    }

    /**
     * Give the next position in the structure witch
     * store the SSIFrame.
     * @return An integer
     * @exception ControlCommandException if action failed.
     */
    public int jumpTo(SSIFrame ssiframe,
          Request request,
          CommandRegistry registry,
          ArrayDictionary parameters,
          Dictionary variables)
  throws ControlCommandException
    {
  int pos = ((ControlCommand)cmd).jumpTo(ssiframe, request,
                 registry, parameters,
                 variables);
  System.out.println("@@@@ "+cmd.getName()+" Jump to "+pos);
  return pos;
    }

    public DebugWrapperControlCommand(Command cmd) {
  super(cmd);
    }
}

TOP

Related Classes of org.w3c.jigsaw.ssi.commands.DefaultCommand

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.