class ApplicationError(Exception):


class EndResponse(Exception):


class Application(ConfigurableForServerSidePath, Object):

    ## Init ##
    def __init__(self, server=None, transactionClass=None, sessionClass=None, requestClass=None, responseClass=None, exceptionHandlerClass=None, contexts=None, useSessionSweeper=1):

## TaskManager

## End TaskManager

## Contexts

## End Contexts

## Session store

## End Session store
    def initVersions(self):

## Task access
    def taskManager(self):

## Session sweep task
    def startSessionSweeper(self):

## Shutdown
    def shutDown(self):
    def addShutDownHandler(self, func):

    ## Config ##
    def defaultConfig(self):
    def configFilename(self):
    def configReplacementValues(self):

    ## Versions ##
    def version(self):

        ## @@ 2000-05-01 ce: Maybe this could be a setting 'AppVersion'
    def webwareVersion(self):
    def webwareVersionString(self):
    def webKitVersion(self):
    def webKitVersionString(self):

    ## Dispatching Requests ##
    def dispatchRawRequest(self, newRequestDict, strmOut):
    def dispatchRequest(self, request, strmOut):
    def handleBadURL(self, transaction):
    def handleDeficientDirectoryURL(self, transaction):
    def isSessionIdProblematic(self, request, debug=0):
    def handleInvalidSession(self, transaction):
    def handleMissingPathSession(self,transaction):
    def handleGoodURL(self, transaction):
    def processURLPath(self, req, URL):
    def forward(self, trans, URL):
    def forwardRequest(self, trans, URL):
    def includeURL(self, trans, URL):
    def forwardRequestFast(self, trans, url):
    def callMethodOfServlet(self, trans, URL, method, *args, **kwargs):

    ## Transactions ##
    def awake(self, transaction):
    def respond(self, transaction):
    def sleep(self, transaction):

    ## Sessions ##
    def session(self, sessionId, default=NoDefault):
    def hasSession(self, sessionId):
    def sessions(self):

    ## Misc Access ##
    def server(self):
    def serverSidePath(self, path=None):
    def webwarePath(self):
    def webKitPath(self):
    def name(self):
    def transactionClass(self):
    def setTransactionClass(self, newClass):
    def responseClass(self, newClass):
    def setResponseClass(self, newClass):

    ## Contexts ##
    def context(self, name, default=NoDefault):
    def hasContext(self, name):
    def contexts(self):
    def addContext(self, name, dir):

    ## Factory access ##
    def addServletFactory(self, factory):
    def factories(self):

    ## Activity Log ##
    def writeActivityLog(self, transaction):

    ## Utilities/Hooks ##
    def createRequestForDict(self, newRequestDict):
    def createTransactionForRequest(self, request):
    def createResponseInTransaction(self, transaction, strmOut):
    def createSessionForTransaction(self, transaction):
    def getServlet(self, transaction, path, cache=None): #send the cache if you want the cache info set
    def returnInstance(self, transaction, path):
    def newServletCacheItem(self,key,item):
    def flushServletCache(self):
    def createServletInTransaction(self, transaction):
    def handleExceptionInTransaction(self, excInfo, transaction):
    def handleException(self, excInfo=None):
    def filenamesForBaseName(self, baseName):
    def defaultContextNameAndPath(self):
    def serverSideInfoForRequest(self, request):
    def findDirectoryIndex(self, ssPath, debug=0):
    def processExtraURLPath(self, ssPath, urlPath, debug=0):

        ## Now test to see if the next element is a file without an extension
    def writeExceptionReport(self, handler):

    ## New Path Algorithm ##
    def serverSideInfoForRequestNewAlgorithm(self, request):
    def findContext(self, fullPath):
    def findServlet(self, contextPath, urlPath):
    def filenamesForBaseNameNew(self, baseName):

    ## Deprecated ##
    def serverSidePathForRequest(self, request, debug=0):
    def serverDir(self):
def isdir(s):
def noslash(s):
def main(requestDict):