## org.w3c.jigsaw.ssi
Class SSIFrame

    java.lang.Object
      |
      +--org.w3c.tools.resources.AttributeHolder
            |
            +--org.w3c.tools.resources.Resource
                  |
                  +--org.w3c.tools.resources.FramedResource
                        |
                        +--org.w3c.tools.resources.ResourceFrame
                              |
                              +--org.w3c.tools.resources.ProtocolFrame
                                    |
                                    +--org.w3c.jigsaw.frames.HTTPFrame
                                          |
                                          +--org.w3c.jigsaw.ssi.SSIFrame

public class SSIFrame
extends HTTPFrame

This resource implements server-side parsing of HTML documents. Any comment of the form `<!--#commandName param1=val1 ... paramn=valn -->` will be interpreted as an include directive.

Commands are looked up in an instance of the class supplied in the registryClass attribute, which must be a subclass of `org.w3c.jigsaw.ssi.CommandRegistry`.

See Also:
  `CommandRegistry`, `Command`

Field Summary
`static boolean` | `debug`
`static java.lang.String` | `STATE_DEPTH` Message state - the current recursion depth
`static java.lang.String` | `STATE_VARIABLES` Message state - the current variables
`protected java.util.Dictionary` | `vars` Our "very global" variables

Fields inherited from class org.w3c.jigsaw.frames.HTTPFrame
`_allowed, acceptRanges, allowed, ATTR_ALLOW_DEL, ATTR_BROWSABLE, ATTR_CONTENT_ENCODING, ATTR_CONTENT_LANGUAGE, ATTR_CONTENT_LENGTH, ATTR_CONTENT_TYPE, ATTR_ICON, ATTR_ICONDIR, ATTR_INDEX, ATTR_MAXAGE, ATTR_MD5, ATTR_PUTABLE, ATTR_QUALITY, ATTR_RELOCATE, ATTR_STYLE_LINK, ATTR_TITLE, browsetype, COND_FAILED, COND_OK, dresource, fresource, listing, listing_stamp, STATE_CONTENT_LOCATION`

Fields inherited from class org.w3c.tools.resources.ResourceFrame
`filterClass, frameListener, resource`

Fields inherited from class org.w3c.tools.resources.FramedResource
`ATTR_OID, attrListener, debugEvent, event_disabled, framesRef, structListener`

Fields inherited from class org.w3c.tools.resources.Resource
`ATTR_CONTEXT, ATTR_HELP_URL, ATTR_IDENTIFIER, ATTR_LAST_MODIFIED, ATTR_PARENT, ATTR_RESOURCE_FRAMES, ATTR_STORE_ENTRY, ATTR_URL`

Fields inherited from class org.w3c.tools.resources.AttributeHolder
`attributes, slowpickle, values`

Constructor Summary
`SSIFrame()`

Method Summary
`void` | `attributeChanged(AttributeChangedEvent evt)` Listen its resource.
`static boolean` | `byteArrayNEquals(byte[] ba1, int off1, byte[] ba2, int off2, int n)` Analogous to standard C's `strncmp`, for byte arrays.
`protected boolean` | `cacheReplies()`
`Reply` | `createCommandReply(Request request, int status)`
`Reply` | `createDefaultReply(Request request, int status)`
`protected void` | `doNotCacheReply()`
`protected Reply` | `getFileResource(Request request)` Perform a get (associated with a FileResource)
`long` | `getLastModified()`
`Reply` | `handle(Request request)` Handles all relevant HTTP methods.
`ReplyInterface` | `perform(RequestInterface request)` Makes sure that checkContent() is called on _any_ HTTP method, so that the internal representation of commands is always consistent.
`Reply` | `post(Request request)` Perform a post.

Methods inherited from class org.w3c.jigsaw.frames.HTTPFrame

`addStyleSheet, browse, checkIfMatch, checkIfModifiedSince, checkIfNoneMatch, checkIfUnmodifiedSince, checkRequest, computeTrashDir, computeTrashFile, createFileReply, delete, deleteDirectoryResource, deleteFileResource, deleteOtherResource, extended, get, getAllowDeleteFlag, getBrowsableFlag, getBrowseType, getContentEncoding, getContentLanguage, getContentLength, getContentType, getDirectoryListing, getDirectoryResource, getDirectoryResource, getETag, getFileResource, getHelpURL, getHelpURL, getIcon, getIconDirectory, getIndex, getMaxAge, getMD5Flag, getOtherResource, getPutableFlag, getQuality, getRelocateFlag, getStyleSheetURL, getTitle, getURL, handleRangeRequest, head, headDirectoryResource, headFileResource, headOtherResource, link, lookup, lookupDirectory, lookupFile, lookupOther, lookupResource, options, performFrames, put, putFileResource, putOtherResource, registerOtherResource, registerResource, setValue, trace, unlink, updateCachedHeaders`

Methods inherited from class org.w3c.tools.resources.ResourceFrame
`addFrameEventListener, eventDisabled, fireFrameEvent, frameModified, getFilters, getFilters, getFrameReference, getResource, getResourceReference, getSpaceEntry, getURLPath, lookupFilters, lookupFrames, postFrameEvent, processEvent, removeFrameEventListener, unregisterResource, updateDefaultChildAttributes`

Methods inherited from class org.w3c.tools.resources.FramedResource

`addAttributeChangedListener, addStructureChangedListener, collectFramesReference, delete, disableEvent, displayEvent, enableEvent, fireAttributeChangeEvent, fireStructureChangedEvent, fireStructureChangedEvent, frameAdded, frameRemoved, getClone, getFrame, getFrame, getFrameReference, getFrameReference, getFramesReference, getOid, initialize, markModified, notifyUnload, postAttributeChangeEvent, postEvent, postStructureChangedEvent, postStructureChangedEvent, registerFrame, registerFrameIfNone, removeAttributeChangedListener, removeStructureChangedListener, unregisterFrame`

Methods inherited from class org.w3c.tools.resources.Resource
`acceptUnload, checkMultipleLock, collectFrames, getContext, getFrame, getFrames, getIdentifier, getParent, getServer, getSpace, getStoreEntry, getValue, getValue, isInitialized, isUnloaded, setContext, setContext, setValue, updateAttributes`

Methods inherited from class org.w3c.tools.resources.AttributeHolder
`definesAttribute, definesAttribute, getAttributes, getBoolean, getChar, getClone, getClone, getDouble, getFloat, getInt, getLong, getString, getValue, initialize, lookupAttribute, pickle, print, setBoolean, setChar, setDouble, setFloat, setInt, setLong, setString, setValue, unpickle, unpickle, unpickle, unpickleInstance, unpickleInstance`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### debug

    public static final boolean debug

### vars

    protected java.util.Dictionary vars

  Our "very global" variables

### STATE_DEPTH

    public static final java.lang.String STATE_DEPTH

  Message state - the current recursion depth

### STATE_VARIABLES

    public static final java.lang.String STATE_VARIABLES

  Message state - the current variables

Constructor Detail

### SSIFrame

    public SSIFrame()

Method Detail

### doNotCacheReply

    protected void doNotCacheReply()

### cacheReplies

    protected boolean cacheReplies()

### attributeChanged

    public void attributeChanged(AttributeChangedEvent evt)

  Listen its resource.
  Overrides:
    attributeChanged in class HTTPFrame

### perform

    public ReplyInterface perform(RequestInterface request)
                           throws ProtocolException,
                                  ResourceException

  Makes sure that checkContent() is called on _any_ HTTP method, so that the internal representation of commands is always consistent.
  Parameters:
    `request` - The HTTPRequest
    `filters` - The filters to apply
  Returns:
    a ReplyInterface instance
  Throws:
    ProtocolException - If processing the request failed.
    ResourceException - If this resource got a fatal error.
  Overrides:
    perform in class HTTPFrame

### getFileResource

    protected Reply getFileResource(Request request)
                             throws ProtocolException,
                                    ResourceException

  Perform a get (associated with a FileResource)
  Parameters:
    `request` - the HTTP request
  Returns:
    a Reply instance.
  Throws:
    ProtocolException - If processing the request failed.
    ResourceException - If this resource got a fatal error.
  Overrides:
    getFileResource in class HTTPFrame

### post

    public Reply post(Request request)
               throws ProtocolException,
                      ResourceException

  Perform a post.
  Parameters:
    `request` - the HTTP request
  Returns:
    a Reply instance.
  Throws:
    ProtocolException - If processing the request failed.
    ResourceException - If this resource got a fatal error.
  Overrides:
    post in class HTTPFrame

### handle

    public Reply handle(Request request)
                 throws ProtocolException

  Handles all relevant HTTP methods. Merges the partial replies from each of the segments into one global reply. Remark: no direct relation to PostableResource.handle()
  Parameters:
    `request` - The HTTP request
  Returns:
    a Reply instance.
  Throws:
    ProtocolException - If processing the request failed.

### byteArrayNEquals

    public static final boolean byteArrayNEquals(byte[] ba1,
                                                 int off1,
                                                 byte[] ba2,
                                                 int off2,
                                                 int n)

  Analogous to standard C's `strncmp`, for byte arrays. (Should be in some utility package, I'll put it here for now)
  Parameters:
    `ba1` - the first byte array
    `off1` - where to start in the first array
    `ba2` - the second byte array
    `off2` - where to start in the second array
    `n` - the length to compare up to
  Returns:
    true if both specified parts of the arrays are equal, false if they aren't .

### getLastModified

    public long getLastModified()

  Overrides:
    getLastModified in class Resource

### createDefaultReply

    public final Reply createDefaultReply(Request request,
                                          int status)

  Overrides:
    createDefaultReply in class HTTPFrame

### createCommandReply

    public final Reply createCommandReply(Request request,
                                          int status)