This commit was manufactured by cvs2svn to create tag 'R3_1_2'.

Sprout from R3_1_maintenance 2006-01-11 11:54:14 UTC Jerome Lanneluc <jeromel> '*** empty log message ***'
Cherrypick from R3_1_maintenance 2006-01-13 20:03:43 UTC Olivier Thomann <oliviert> '3.1 maintenance - Remove test 0577':
    org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java
Delete:
    org.eclipse.jdt.core.tests.model/workspace/Converter/src/test0577/X.java
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java
index 31b417f..9a61506 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTestAST3_2.java
@@ -5360,16 +5360,6 @@
 		domType.getComment();
 		assertTrue("Not an interface", Flags.isInterface(domType.getFlags()));
 	}
-	
-	/**
-	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=78305
-	 */
-	public void test0577() throws JavaModelException {
-		ICompilationUnit sourceUnit = getCompilationUnit("Converter", "src", "test0577", "X.java"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		ASTNode result = runConversion(AST.JLS3, sourceUnit, true);
-		assertEquals("not a compilation unit", ASTNode.COMPILATION_UNIT, result.getNodeType()); //$NON-NLS-1$
-	}
-
 	/**
 	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=77645
 	 */
diff --git a/org.eclipse.jdt.core.tests.model/workspace/Converter/src/test0577/X.java b/org.eclipse.jdt.core.tests.model/workspace/Converter/src/test0577/X.java
deleted file mode 100644
index 9600298..0000000
--- a/org.eclipse.jdt.core.tests.model/workspace/Converter/src/test0577/X.java
+++ /dev/null
@@ -1,1283 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-"""
-    MoinMoin - Data associated with a single Request
-
-    @copyright: 2001-2003 by Jürgen Hermann <jh@web.de>
-    @copyright: 2003-2004 by Thomas Waldmann
-    @license: GNU GPL, see COPYING for details.
-"""
-
-import os, time, sys
-from MoinMoin import config, wikiutil
-from MoinMoin.util import MoinMoinNoFooter
-
-#############################################################################
-### Timing
-#############################################################################
-
-class Clock:
-    """ Helper class for code profiling
-        we do not use time.clock() as this does not work across threads
-    """
-
-    def __init__(self):
-        self.timings = {'total': time.time()}
-
-    def start(self, timer):
-        self.timings[timer] = time.time() - self.timings.get(timer, 0)
-
-    def stop(self, timer):
-        self.timings[timer] = time.time() - self.timings[timer]
-
-    def value(self, timer):
-        return "%.3f" % (self.timings[timer],)
-
-    def dump(self):
-        outlist = []
-        for timing in self.timings.items():
-            outlist.append("%s = %.3fs" % timing)
-        return outlist
-
-
-#############################################################################
-### Request Data
-#############################################################################
-class RequestBase:
-    """ A collection for all data associated with ONE request. """
-
-    # Header set to force misbehaved proxies and browsers to keep their
-    # hands off a page
-    # Details: http://support.microsoft.com/support/kb/articles/Q234/0/67.ASP
-    nocache = [
-        "Pragma: no-cache",
-        "Cache-Control: no-cache",
-        "Expires: -1",
-    ]
-
-    def __init__(self, properties={}):
-        self.writestack = []
-        self.clock = Clock()
-        # order is important here!
-        from MoinMoin import user
-        self.user = user.User(self)
-        self.dicts = self.initdicts()
-
-        from MoinMoin import i18n
-
-        if config.theme_force:
-            theme_name = config.theme_default
-        else:
-            theme_name = self.user.theme_name
-        try:
-            self.theme = wikiutil.importPlugin('theme', theme_name)(self)
-        except TypeError:
-            theme_name = config.theme_default
-            self.theme = wikiutil.importPlugin('theme', theme_name)(self)
-
-        self.args = None
-        self.form = None
-        self.logger = None
-        self.pragma = {}
-        self.mode_getpagelinks = 0
-        self.no_closing_html_code = 0
-
-        self.sent_headers = 0
-        self.user_headers = []
-
-        self.__dict__.update(properties)
-
-        self.i18n = i18n
-        self.lang = i18n.requestLanguage(self) 
-        self.getText = lambda text, i18n=self.i18n, request=self, lang=self.lang: i18n.getText(text, request, lang)
-
-        # XXX Removed call to i18n.adaptcharset()
-  
-        self.opened_logs = 0 # XXX for what do we need that???
-
-        self.reset()
-
-    def _setup_vars_from_std_env(self, env):
-        """ Sets the common Request members by parsing a standard
-            HTTPD environment (as created as environment by most common
-            webservers. To be used by derived classes.
-
-            @param env: the environment to use
-        """
-        self.http_accept_language = env.get('HTTP_ACCEPT_LANGUAGE', 'en')
-        self.server_name = env.get('SERVER_NAME', 'localhost')
-        self.server_port = env.get('SERVER_PORT', '80')
-        self.http_host = env.get('HTTP_HOST','localhost')
-        self.http_referer = env.get('HTTP_REFERER', '')
-        self.saved_cookie = env.get('HTTP_COOKIE', '')
-        self.script_name = env.get('SCRIPT_NAME', '')
-        self.path_info = env.get('PATH_INFO', '')
-        self.query_string = env.get('QUERY_STRING', '')
-        self.request_method = env.get('REQUEST_METHOD', None)
-        self.remote_addr = env.get('REMOTE_ADDR', '')
-        self.http_user_agent = env.get('HTTP_USER_AGENT', '')
-        self.is_ssl = env.get('SSL_PROTOCOL', '') != '' \
-            or env.get('SSL_PROTOCOL_VERSION', '') != '' \
-            or env.get('HTTPS', 'off') == 'on'
-
-        self.auth_username = None
-        if config.auth_http_enabled and env.get('AUTH_TYPE','') == 'Basic':
-            self.auth_username = env.get('REMOTE_USER','')
-                                    
-##        f=open('/tmp/env.log','a')
-##        f.write('---ENV\n')
-##        f.write('script_name = %s\n'%(self.script_name))
-##        f.write('path_info   = %s\n'%(self.path_info))
-##        f.write('server_name = %s\n'%(self.server_name))
-##        f.write('server_port = %s\n'%(self.server_port))
-##        f.write('http_host   = %s\n'%(self.http_host))
-##        f.write('------\n')
-##        f.write('%s\n'%(repr(env)))
-##        f.write('------\n')
-##        f.close()
-  
-    def reset(self):
-        """ Reset request state.
-
-        Called after saving a page, before serving the updated
-        page. Solves some practical problems with request state
-        modified during saving.
-
-        """
-        # This is the content language and has nothing to do with
-        # The user interface language. The content language can change
-        # during the rendering of a page by lang macros
-        self.current_lang = config.default_lang
-        self._footer_fragments = {}
-        self._all_pages = None
-
-        if hasattr(self, "_fmt_hd_counters"):
-            del self._fmt_hd_counters
-
-
-    def add2footer(self, key, htmlcode):
-        """ Add a named HTML fragment to the footer, after the default links
-        """
-        self._footer_fragments[key] = htmlcode
-
-
-    def getPragma(self, key, defval=None):
-        """ Query a pragma value (#pragma processing instruction)
-
-            Keys are not case-sensitive.
-        """
-        return self.pragma.get(key.lower(), defval)
-
-
-    def setPragma(self, key, value):
-        """ Set a pragma value (#pragma processing instruction)
-
-            Keys are not case-sensitive.
-        """
-        self.pragma[key.lower()] = value
-
-
-    def getPageList(self):
-        """ A cached version of wikiutil.getPageList().
-            Also, this list is always sorted.
-        """
-        if self._all_pages is None:
-            self._all_pages = wikiutil.getPageList(config.text_dir)
-            self._all_pages.sort()
-
-        return self._all_pages
-
-    def redirect(self, file=None):
-        if file: # redirect output to "file"
-            self.writestack.append(self.write)
-            self.write = file.write
-        else: # restore saved output file
-            self.write = self.writestack.pop()
-
-    def reset_output(self):
-        """ restore default output method
-            destroy output stack
-            (useful for error messages)
-        """
-        if self.writestack:
-            self.write = self.writestack[0]
-            self.writestack = []
-
-    def write(self, *data):
-        """ Write to output stream.
-        """
-        raise "NotImplementedError"
-
-    def read(self, n):
-        """ Read n bytes from input stream.
-        """
-        raise "NotImplementedError"
-
-    def flush(self):
-        """ Flush output stream.
-        """
-        raise "NotImplementedError"
-
-    def initdicts(self):
-        from MoinMoin import wikidicts
-        dicts = wikidicts.GroupDict()
-        dicts.scandicts()
-        return dicts
-        
-    def isForbidden(self):
-        """ check for web spiders and refuse anything except viewing """
-        forbidden = 0
-        if ((self.query_string != '' or self.request_method != 'GET')
-            and self.query_string != 'action=rss_rc'):
-            from MoinMoin.util import web
-            forbidden = web.isSpiderAgent(request=self)
-
-        if not forbidden and config.hosts_deny:
-            ip = self.remote_addr
-            for host in config.hosts_deny:
-                if ip == host or host[-1] == '.' and ip.startswith(host):
-                    forbidden = 1
-                    break
-        return forbidden
-
-
-    def setup_args(self, form=None):
-        return {}
-
-    def _setup_args_from_cgi_form(self, form=None):
-        """ A method to create the args from a standart cgi.FieldStorage
-            to be used be derived classes.
-
-            @keyword form: a cgi.FieldStorage list. default is to call
-                           cgi.FieldStorage().
-        """
-        import types, cgi
-        
-        if form is None:
-            form = cgi.FieldStorage()
-
-        args = {}
-        for key in form.keys():
-            values = form[key]
-            if not isinstance(values, types.ListType):
-                values = [values]
-            fixedResult = []
-            for i in values:
-                if isinstance(i, cgi.MiniFieldStorage):
-                    fixedResult.append(i.value)
-                elif isinstance(i, cgi.FieldStorage):
-                    fixedResult.append(i.value)
-                    # multiple uploads to same form field are stupid!
-                    if i.filename:
-                        args[key+'__filename__']=i.filename
-
-            args[key] = fixedResult
-        return args
-
-    def recodePageName(self, pagename):
-        # check for non-URI characters and then handle them according to
-        # http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.2.1
-        if pagename:
-            try:
-                dummy = unicode(pagename, 'ascii')
-            except UnicodeError:
-                # we have something else than plain ASCII, try
-                # converting from UTF-8 to local charset, or just give
-                # up and use URI value literally and see what happens
-                pagename = self.i18n.recode(pagename, 'utf-8', config.charset) or pagename
-        return pagename
-        # XXX UNICODE - use unicode for pagenames internally?
-
-    def getBaseURL(self):
-        """ Return a fully qualified URL to this script. """
-        return self.getQualifiedURL(self.getScriptname())
-
-
-    def getQualifiedURL(self, uri=None):
-        """ Return a full URL starting with schema, servername and port.
-
-            *uri* -- append this server-rooted uri (must start with a slash)
-        """
-        if uri and uri[:4] == "http":
-            return uri
-
-        schema, stdport = (('http', '80'), ('https', '443'))[self.is_ssl]
-        host = self.http_host
-        if not host:
-            host = self.server_name
-            port = self.server_port
-            if port != stdport:
-                host = "%s:%s" % (host, port)
-
-        result = "%s://%s" % (schema, host)
-        if uri:
-            result = result + uri
-
-        return result
-
-
-    def getUserAgent(self):
-        """ Get the user agent. """
-        return self.http_user_agent
-
-
-    def run(self):
-        _ = self.getText
-        self.clock.start('run')
-        self.open_logs()
-        if self.isForbidden():
-            self.http_headers([
-                'Status: 403 FORBIDDEN',
-                'Content-Type: text/plain'
-            ])
-            self.write('You are not allowed to access this!\n')
-            return self.finish()
-
-        # Imports
-        from MoinMoin.Page import Page
-
-        if self.query_string == 'action=xmlrpc':
-            from MoinMoin.wikirpc import xmlrpc
-            xmlrpc(self)
-            return self.finish()
-        
-        if self.query_string == 'action=xmlrpc2':
-            from MoinMoin.wikirpc import xmlrpc2
-            xmlrpc2(self)
-            return self.finish()
-
-        # parse request data
-        try:
-            self.args = self.setup_args()
-            self.form = self.args 
-            path_info = self.getPathinfo()
-
-            #from pprint import pformat
-            #sys.stderr.write(pformat(self.__dict__))
-    
-            action = self.form.get('action',[None])[0]
-
-            pagename = None
-            if len(path_info) and path_info[0] == '/':
-                pagename = wikiutil.unquoteWikiname(path_info[1:])
-        except: # catch and print any exception
-            self.reset_output()
-            self.http_headers()
-            self.print_exception()
-            return self.finish()
-
-        try:
-            # possibly jump to page where user left off
-            if not pagename and not action and self.user.remember_last_visit:
-                pagetrail = self.user.getTrail()
-                if pagetrail:
-                    self.http_redirect(Page(pagetrail[-1]).url(self))
-                    return self.finish()
-
-            # handle request
-            from MoinMoin import wikiaction
-
-            pagename = self.recodePageName(pagename)
-
-            if self.form.has_key('filepath') and self.form.has_key('noredirect'):
-                # looks like user wants to save a drawing
-                from MoinMoin.action.AttachFile import execute
-                execute(pagename, self)
-                raise MoinMoinNoFooter
-
-            if action:
-                handler = wikiaction.getHandler(action)
-                if handler:
-                    handler(pagename or
-                    wikiutil.getSysPage(self, config.page_front_page).page_name, self)
-                else:
-                    self.http_headers()
-                    self.write("<p>" + _("Unknown action"))
-            else:
-                if self.form.has_key('goto'):
-                    query = self.form['goto'][0].strip()
-                elif pagename:
-                    query = pagename
-                else:
-                    query = wikiutil.unquoteWikiname(self.query_string) or \
-                        wikiutil.getSysPage(self, config.page_front_page).page_name
-
-                if config.allow_extended_names:
-                    Page(query).send_page(self, count_hit=1)
-                else:
-                    from MoinMoin.parser.wiki import Parser
-                    import re
-                    word_match = re.match(Parser.word_rule, query)
-                    if word_match:
-                        word = word_match.group(0)
-                        Page(word).send_page(self, count_hit=1)
-                    else:
-                        self.http_headers()
-                        self.write('<p>' + _("Can't work out query") + ' "<pre>' + query + '</pre>"')
-
-            # generate page footer
-            # (actions that do not want this footer use raise util.MoinMoinNoFooter to break out
-            # of the default execution path, see the "except MoinMoinNoFooter" below)
-
-            self.clock.stop('run')
-            self.clock.stop('total')
-
-            if not self.no_closing_html_code:
-                if (config.show_timings and
-                    self.form.get('action', [None])[0] != 'print'):
-                    self.write('<ul id="timings">\n')
-                    for t in self.clock.dump():
-                        self.write('<li>%s</li>\n' % t)
-                    self.write('</ul>\n')
-
-                if 0: # temporarily disabled - do we need that?
-                    import socket
-                    from MoinMoin import version
-                    self.write('<!-- MoinMoin %s on %s served this page in %s secs -->' % (
-                        version.revision, socket.gethostname(), self.clock.value('total')) +
-                               '</body></html>')
-                else:
-                    self.write('</body>\n</html>\n\n')
-            
-        except MoinMoinNoFooter:
-            pass
-
-        except: # catch and print any exception
-            saved_exc = sys.exc_info()
-            self.reset_output()
-            self.http_headers()
-            self.write("\n<!-- ERROR REPORT FOLLOWS -->\n")
-            try:
-                from MoinMoin.support import cgitb
-            except:
-                # no cgitb, for whatever reason
-                self.print_exception(*saved_exc)
-            else:
-                try:
-                    cgitb.Hook(file=self).handle(saved_exc)
-                    # was: cgitb.handler()
-                except:
-                    self.print_exception(*saved_exc)
-                    self.write("\n\n<hr>\n")
-                    self.write("<p><strong>Additionally, cgitb raised this exception:</strong></p>\n")
-                    self.print_exception()
-            del saved_exc
-
-        return self.finish()
-
-
-    def http_redirect(self, url):
-        """ Redirect to a fully qualified, or server-rooted URL """
-        if url.find("://") == -1:
-            url = self.getQualifiedURL(url)
-
-        self.http_headers(["Status: 302", "Location: %s" % url])
-
-
-    def print_exception(self, type=None, value=None, tb=None, limit=None):
-        if type is None:
-            type, value, tb = sys.exc_info()
-        import traceback
-        self.write("<h2>request.print_exception handler</h2>\n")
-        self.write("<h3>Traceback (most recent call last):</h3>\n")
-        list = traceback.format_tb(tb, limit) + \
-               traceback.format_exception_only(type, value)
-        self.write("<pre>%s<strong>%s</strong></pre>\n" % (
-            wikiutil.escape("".join(list[:-1])),
-            wikiutil.escape(list[-1]),))
-        del tb
-
-
-    def open_logs(self):
-        pass
-
-# CGI ---------------------------------------------------------------
-
-class RequestCGI(RequestBase):
-    """ specialized on CGI requests """
-
-    def __init__(self, properties={}):
-        self._setup_vars_from_std_env(os.environ)
-        #sys.stderr.write("----\n")
-        #for key in os.environ.keys():    
-        #    sys.stderr.write("    %s = '%s'\n" % (key, os.environ[key]))
-        RequestBase.__init__(self, properties)
-
-        # force input/output to binary
-        if sys.platform == "win32":
-            import msvcrt
-            msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
-            msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
-
-    def open_logs(self):
-        # create CGI log file, and one for catching stderr output
-        import cgi 
-        if not self.opened_logs:
-            cgi.logfile = os.path.join(config.data_dir, 'cgi.log')
-            sys.stderr = open(os.path.join(config.data_dir, 'error.log'), 'at')
-            self.opened_logs = 1
-
-    def setup_args(self, form=None):
-        return self._setup_args_from_cgi_form(form)
-        
-    def read(self, n=None):
-        """ Read from input stream.
-        """
-        if n is None:
-            return sys.stdin.read()
-        else:
-            return sys.stdin.read(n)
-
-    def write(self, *data):
-        """ Write to output stream.
-        """
-        for piece in data:
-            sys.stdout.write(piece)
-
-    def flush(self):
-        sys.stdout.flush()
-        
-    def finish(self):
-        # flush the output, ignore errors caused by the user closing the socket
-        try:
-            sys.stdout.flush()
-        except IOError, ex:
-            import errno
-            if ex.errno != errno.EPIPE: raise
-
-    #############################################################################
-    ### Accessors
-    #############################################################################
-
-    def getScriptname(self):
-        """ Return the scriptname part of the URL ("/path/to/my.cgi"). """
-        name = self.script_name
-        if name == '/':
-            return ''
-        return name
-
-
-    def getPathinfo(self):
-        """ Return the remaining part of the URL. """
-        pathinfo = self.path_info
-
-        # Fix for bug in IIS/4.0
-        if os.name == 'nt':
-            scriptname = self.getScriptname()
-            if pathinfo.startswith(scriptname):
-                pathinfo = pathinfo[len(scriptname):]
-
-        return pathinfo
-
-
-    #############################################################################
-    ### Headers
-    #############################################################################
-
-    def setHttpHeader(self, header):
-        self.user_headers.append(header)
-
-
-    def http_headers(self, more_headers=[]):
-        if self.sent_headers:
-            #self.write("Headers already sent!!!\n")
-            return
-        self.sent_headers = 1
-        have_ct = 0
-
-        # send http headers
-        for header in more_headers + self.user_headers:
-            if header.lower().startswith("content-type:"):
-                # don't send content-type multiple times!
-                if have_ct: continue
-                have_ct = 1
-            self.write("%s\r\n" % header)
-
-        if not have_ct:
-            self.write("Content-type: text/html;charset=%s\r\n" % config.charset)
-
-        self.write('\r\n')
-
-        #from pprint import pformat
-        #sys.stderr.write(pformat(more_headers))
-        #sys.stderr.write(pformat(self.user_headers))
-
-
-# Twisted -----------------------------------------------------------
-
-class RequestTwisted(RequestBase):
-    """ specialized on Twisted requests """
-
-    def __init__(self, twistedRequest, pagename, reactor, properties={}):
-        self.twistd = twistedRequest
-        self.http_accept_language = self.twistd.getHeader('Accept-Language')
-        self.reactor = reactor
-        self.saved_cookie = self.twistd.getHeader('Cookie')
-        self.server_protocol = self.twistd.clientproto
-        self.server_name = self.twistd.getRequestHostname().split(':')[0]
-        self.server_port = str(self.twistd.getHost()[2])
-        self.is_ssl = self.twistd.isSecure()
-        if self.server_port != ('80', '443')[self.is_ssl]:
-            self.http_host = self.server_name + ':' + self.server_port
-        else:
-            self.http_host = self.server_name
-        self.script_name = "/" + '/'.join(self.twistd.prepath[:-1]) # "" XXX
-        self.path_info = "/" + pagename
-        if self.twistd.postpath:
-            self.path_info += '/' + '/'.join(self.twistd.postpath)
-        self.request_method = self.twistd.method
-        self.remote_host = self.twistd.getClient()
-        self.remote_addr = self.twistd.getClientIP()
-        self.http_user_agent = self.twistd.getHeader('User-Agent')
-        self.request_uri = self.twistd.uri
-       
-        qindex = self.request_uri.find('?')
-        if qindex != -1:
-            self.query_string = self.request_uri[qindex+1:]
-        else:
-            self.query_string = ''
-        self.outputlist = []
-        self.auth_username = None # TODO, see: self.twistd.user / .password (http auth)
-        RequestBase.__init__(self, properties)
-        #print "request.RequestTwisted.__init__: received_headers=\n" + str(self.twistd.received_headers)
-
-    def setup_args(self, form=None):
-        return self.twistd.args
-        
-    def read(self, n=None):
-        """ Read from input stream.
-        """
-        # XXX why is that wrong?:
-        #rd = self.reactor.callFromThread(self.twistd.read)
-        
-        # XXX do we need self.reactor.callFromThread with that?
-        # XXX if yes, why doesnt it work?
-        self.twistd.content.seek(0, 0)
-        if n is None:
-            rd = self.twistd.content.read()
-        else:
-            rd = self.twistd.content.read(n)
-        #print "request.RequestTwisted.read: data=\n" + str(rd)
-        return rd
-    
-    def write(self, *data):
-        """ Write to output stream.
-        """
-        wd = ''.join(data)
-        # XXX UNICODE - encode to config.charset
-        #wd = u''.join(data).encode(config.charset)
-        #print "request.RequestTwisted.write: data=\n" + wd
-        self.reactor.callFromThread(self.twistd.write, wd)
-
-    def flush(self):
-        pass # XXX is there a flush in twisted?
-
-    def finish(self):
-        #print "request.RequestTwisted.finish"
-        self.reactor.callFromThread(self.twistd.finish)
-
-    def open_logs(self):
-        return
-        # create log file for catching stderr output
-        if not self.opened_logs:
-            sys.stderr = open(os.path.join(config.data_dir, 'error.log'), 'at')
-            self.opened_logs = 1
-
-
-    #############################################################################
-    ### Accessors
-    #############################################################################
-
-    def getScriptname(self):
-        """ Return the scriptname part of the URL ("/path/to/my.cgi"). """
-        scriptname = self.script_name
-        if scriptname == '/':
-            scriptname = ''
-        return scriptname
-
-    def getPathinfo(self):
-        """ Return the remaining part of the URL. """
-        return self.path_info
-
-
-    #############################################################################
-    ### Headers
-    #############################################################################
-
-    def setHttpHeader(self, header):
-        self.user_headers.append(header)
-
-    def __setHttpHeader(self, header):
-        key, value = header.split(':',1)
-        value = value.lstrip()
-        self.twistd.setHeader(key, value)
-        #print "request.RequestTwisted.setHttpHeader: %s" % header
-
-    def http_headers(self, more_headers=[]):
-        if self.sent_headers:
-            #self.write("Headers already sent!!!\n")
-            return
-        self.sent_headers = 1
-        have_ct = 0
-
-        # set http headers
-        for header in more_headers + self.user_headers:
-            if header.lower().startswith("content-type:"):
-                # don't send content-type multiple times!
-                if have_ct: continue
-                have_ct = 1
-            self.__setHttpHeader(header)
-
-        if not have_ct:
-            self.__setHttpHeader("Content-type: text/html;charset=%s" % config.charset)
-
-
-    def http_redirect(self, url):
-        """ Redirect to a fully qualified, or server-rooted URL """
-        if url.count("://") == 0:
-            # no https method??
-            url = "http://%s:%s%s" % (self.server_name, self.server_port, url)
-
-        self.twistd.redirect(url)
-        # calling finish here will send the rest of the data to the next
-        # request. leave the finish call to run()
-        #self.twistd.finish()
-        raise MoinMoinNoFooter
-
-
-# CLI ------------------------------------------
-class RequestCLI(RequestBase):
-    """ specialized on commandline interface requests """
-
-    def __init__(self, pagename='', properties={}):
-        self.http_accept_language = ''
-        self.saved_cookie = ''
-        self.path_info = '/' + pagename
-        self.query_string = ''
-        self.remote_addr = '127.0.0.127'
-        self.is_ssl = 0
-        self.auth_username = None
-        RequestBase.__init__(self, properties)
-        self.http_user_agent = ''
-        self.outputlist = []
-
-    def read(self, n=None):
-        """ Read from input stream.
-        """
-        if n is None:
-            return sys.stdin.read()
-        else:
-            return sys.stdin.read(n)
-
-    def write(self, *data):
-        """ Write to output stream.
-        """
-        for piece in data:
-            sys.stdout.write(piece)
-
-    def flush(self):
-        sys.stdout.flush()
-        
-    def finish(self):
-        # flush the output, ignore errors caused by the user closing the socket
-        try:
-            sys.stdout.flush()
-        except IOError, ex:
-            import errno
-            if ex.errno != errno.EPIPE: raise
-
-    def isForbidden(self):
-        """ check for web spiders and refuse anything except viewing """
-        return 0
-
-
-    #############################################################################
-    ### Accessors
-    #############################################################################
-
-    def getScriptname(self):
-        """ Return the scriptname part of the URL ("/path/to/my.cgi"). """
-        return '.'
-
-    def getPathinfo(self):
-        """ Return the remaining part of the URL. """
-        return self.path_info
-
-
-    def getQualifiedURL(self, uri = None):
-        """ Return a full URL starting with schema, servername and port.
-
-            *uri* -- append this server-rooted uri (must start with a slash)
-        """
-        return uri
-
-
-    def getBaseURL(self):
-        """ Return a fully qualified URL to this script. """
-        return self.getQualifiedURL(self.getScriptname())
-
-
-
-    #############################################################################
-    ### Headers
-    #############################################################################
-
-    def setHttpHeader(self, header):
-        pass
-
-    def http_headers(self, more_headers=[]):
-        pass
-
-    def http_redirect(self, url):
-        """ Redirect to a fully qualified, or server-rooted URL """
-        raise Exception("Redirect not supported for command line tools!")
-
-
-# StandAlone Server -------------------------------------------------
-class RequestStandAlone(RequestBase):
-    """
-    specialized on StandAlone Server (httpdmain.py) requests
-    """
-
-    def __init__(self, sa, properties={}):
-        """
-        @param sa: stand alone server object
-        @param properties: ...
-        """
-        import urllib
-        self.wfile = sa.wfile
-        self.rfile = sa.rfile
-        self.headers = sa.headers
-        self.is_ssl = 0
-        rest = sa.path
-        i = rest.rfind('?')
-        if i >= 0:
-            rest, query = rest[:i], rest[i+1:]
-        else:
-            query = ''
-        uqrest = urllib.unquote(rest)
-        
-        #HTTP headers
-        self.env = {} 
-        for hline in sa.headers.headers:
-            key = sa.headers.isheader(hline)
-            if key:
-                hdr = sa.headers.getheader(key)
-                self.env[key] = hdr
-                
-        #accept = []
-        #for line in sa.headers.getallmatchingheaders('accept'):
-        #    if line[:1] in string.whitespace:
-        #        accept.append(line.strip())
-        #    else:
-        #        accept = accept + line[7:].split(',')
-        #
-        #env['HTTP_ACCEPT'] = ','.join(accept)
-
-        co = filter(None, sa.headers.getheaders('cookie'))
-
-        self.http_accept_language = sa.headers.getheader('Accept-Language')
-        self.server_name = sa.server.server_name
-        self.server_port = str(sa.server.server_port)
-        self.http_host = sa.headers.getheader('host')
-        self.http_referer = sa.headers.getheader('referer')
-        self.saved_cookie = ', '.join(co) or ''
-        self.script_name = ''
-        self.path_info = uqrest 
-        self.query_string = query or ''
-        self.request_method = sa.command
-        self.remote_addr = sa.client_address[0]
-        self.http_user_agent = sa.headers.getheader('user-agent') or ''
-        # from standalone script:
-        # XXX AUTH_TYPE
-        # XXX REMOTE_USER
-        # XXX REMOTE_IDENT
-        self.auth_username = None
-        #env['PATH_TRANSLATED'] = uqrest #self.translate_path(uqrest)
-        #host = self.address_string()
-        #if host != self.client_address[0]:
-        #    env['REMOTE_HOST'] = host
-        # env['SERVER_PROTOCOL'] = self.protocol_version
-        RequestBase.__init__(self, properties)
-
-    def open_logs(self):
-        # create error log file for catching stderr output
-        if not self.opened_logs:
-            sys.stderr = open(os.path.join(config.data_dir, 'error.log'), 'at')
-            self.opened_logs = 1
-
-    def setup_args(self, form=None):
-        self.env['REQUEST_METHOD'] = self.request_method
-        self.env['QUERY_STRING'] = self.query_string
-        ct = self.headers.getheader('content-type')
-        if ct:
-            self.env['CONTENT_TYPE'] = ct
-        cl = self.headers.getheader('content-length')
-        if cl:
-            self.env['CONTENT_LENGTH'] = cl
-        
-        import cgi
-        #print "env = ", self.env
-        #form = cgi.FieldStorage(self, headers=self.env, environ=self.env)
-        if form is None:
-            form = cgi.FieldStorage(self, environ=self.env)
-        return self._setup_args_from_cgi_form(form)
-        
-    def read(self, n=None):
-        """ Read from input stream.
-        """
-        if n is None:
-            return self.rfile.read()
-        else:
-            return self.rfile.read(n)
-
-    def readline (self):
-        L = ""
-        while 1:
-            c = self.read(1)
-            L += c
-            if c == '\n':
-                break
-        return L
-	    
-    def write(self, *data):
-        """ Write to output stream.
-        """
-        for piece in data:
-            self.wfile.write(piece)
-
-    def flush(self):
-        self.wfile.flush()
-        
-    def finish(self):
-        # flush the output, ignore errors caused by the user closing the socket
-        try:
-            self.wfile.flush()
-        except IOError, ex:
-            import errno
-            if ex.errno != errno.EPIPE: raise
-
-    #############################################################################
-    ### Accessors
-    #############################################################################
-
-    def getScriptname(self):
-        """ Return the scriptname part of the URL ("/path/to/my.cgi"). """
-        name = self.script_name
-        if name == '/':
-            return ''
-        return name
-
-
-    def getPathinfo(self):
-        """ Return the remaining part of the URL. """
-        return self.path_info
-
-
-    #############################################################################
-    ### Headers
-    #############################################################################
-
-    def setHttpHeader(self, header):
-        self.user_headers.append(header)
-
-    def http_headers(self, more_headers=[]):
-        if self.sent_headers:
-            #self.write("Headers already sent!!!\n")
-            return
-        self.sent_headers = 1
-        have_ct = 0
-
-        # send http headers
-        for header in more_headers + self.user_headers:
-            if header.lower().startswith("content-type:"):
-                # don't send content-type multiple times!
-                if have_ct: continue
-                have_ct = 1
-            self.write("%s\r\n" % header)
-
-        if not have_ct:
-            self.write("Content-type: text/html;charset=%s\r\n" % config.charset)
-
-        self.write('\r\n')
-
-        #from pprint import pformat
-        #sys.stderr.write(pformat(more_headers))
-        #sys.stderr.write(pformat(self.user_headers))
-
-
-# mod_python/Apache -------------------------------------------------
-class RequestModPy(RequestBase):
-    """ specialized on mod_python requests """
-
-    def __init__(self, req):
-        """ Saves mod_pythons request and sets basic variables using
-            the req.subprocess_env, cause this provides a standard
-            way to access the values we need here.
-
-            @param req: the mod_python request instance
-        """
-        req.add_common_vars()
-        self.mpyreq = req
-        # some mod_python 2.7.X has no get method for table objects,
-        # so we make a real dict out of it first.
-        if not hasattr(req.subprocess_env,'get'):
-            env=dict(req.subprocess_env)
-        else:
-            env=req.subprocess_env
-        self._setup_vars_from_std_env(env)
-        # flags if headers sent out contained content-type or status
-        self._have_ct = 0
-        self._have_status = 0
-        RequestBase.__init__(self)
-        
-        
-    def setup_args(self, form=None):
-        """ Sets up args by using mod_python.util.FieldStorage, which
-            is different to cgi.FieldStorage. So we need a seperate
-            method for this.
-        """
-        import types
-        from mod_python import util
-        if form is None:
-            form = util.FieldStorage(self.mpyreq)
-
-        args = {}
-        for key in form.keys():
-            values = form[key]
-            if not isinstance(values, types.ListType):
-                values = [values]
-            fixedResult = []
-            for i in values:
-                ## mod_python 2.7 might return strings instead
-                ## of Field objects
-                if hasattr(i,'value'):
-                    fixedResult.append(i.value)
-                else:
-                    fixedResult.append(i)
-                ## if object has a filename attribute, remember it
-                ## with a name hack
-                if hasattr(i,'filename') and i.filename:
-                    args[key+'__filename__']=i.filename
-            args[key] = fixedResult
-        return args
-
-    def run(self, req):
-        """ mod_python calls this with its request object. We don't
-            need it cause its already passed to __init__. So ignore
-            it and just return RequestBase.run.
-
-            @param req: the mod_python request instance
-        """
-        return RequestBase.run(self)
-
-    def read(self, n=None):
-        """ Read from input stream.
-        """
-        if n is None:
-            return self.mpyreq.read()
-        else:
-            return self.mpyreq.read(n)
-
-    def write(self, *data):
-        """ Write to output stream.
-        """
-        for piece in data:
-            self.mpyreq.write(piece)
-
-    def flush(self):
-        """ We can't flush it, so do nothing.
-        """
-        pass
-        
-    def finish(self):
-        """ Just return apache.OK. Status is set in req.status.
-        """
-        # is it possible that we need to return somethig else here?
-        from mod_python import apache
-        return apache.OK
-        
-    
-    #############################################################################
-    ### Accessors
-    #############################################################################
-
-    def getScriptname(self):
-        """ Return the scriptname part of the URL ('/path/to/my.cgi'). """
-        name = self.script_name
-        if name == '/':
-            return ''
-        return name
-
-
-    def getPathinfo(self):
-        """ Return the remaining part of the URL. """
-        return self.path_info
-
-    #############################################################################
-    ### Headers
-    #############################################################################
-
-    def setHttpHeader(self, header):
-        """ Filters out content-type and status to set them directly
-            in the mod_python request. Rest is put into the headers_out
-            member of the mod_python request.
-
-            @param header: string, containing valid HTTP header.
-        """
-        key, value = header.split(':',1)
-        value = value.lstrip()
-        if key.lower() == 'content-type':
-            # save content-type for http_headers
-            if not self._have_ct:
-                # we only use the first content-type!
-                self.mpyreq.content_type = value
-                self._have_ct = 1
-        elif key.lower() == 'status':
-            # save status for finish
-            try:
-                self.mpyreq.status = int(value.split(' ',1)[0])
-            except:
-                pass
-            else:
-                self._have_status = 1
-        else:
-            # this is a header we sent out
-            self.mpyreq.headers_out[key]=value
-
-
-    def http_headers(self, more_headers=[]):
-        """ Sends out headers and possibly sets default content-type
-            and status.
-
-            @keyword more_headers: list of strings, defaults to []
-        """
-        for header in more_headers:
-            self.setHttpHeader(header)
-        # if we don't had an content-type header, set text/html
-        if self._have_ct == 0:
-            self.mpyreq.content_type = "text/html;charset=%s" % config.charset
-        # if we don't had a status header, set 200
-        if self._have_status == 0:
-            self.mpyreq.status = 200
-        # this is for mod_python 2.7.X, for 3.X it's a NOP
-        self.mpyreq.send_http_header()
-
-# FastCGI -----------------------------------------------------------
-
-class RequestFastCGI(RequestBase):
-    """ specialized on FastCGI requests """
-
-    def __init__(self, fcgRequest, env, form, properties={}):
-        """ Initializes variables from FastCGI environment and saves
-            FastCGI request and form for further use.
-
-            @param fcgRequest: the FastCGI request instance.
-            @param env: environment passed by FastCGI.
-            @param form: FieldStorage passed by FastCGI.
-        """
-        self.fcgreq = fcgRequest
-        self.fcgenv = env
-        self.fcgform = form
-        self._setup_vars_from_std_env(env)
-        RequestBase.__init__(self, properties)
-
-    def setup_args(self, form=None):
-        """ Use the FastCGI form to setup arguments. """
-        if form is None:
-            form = self.fcgform
-        return self._setup_args_from_cgi_form(form)
-
-    def read(self, n=None):
-        """ Read from input stream.
-        """
-        if n is None:
-            return self.fcgreq.stdin.read()
-        else:
-            return self.fcgreq.stdin.read(n)
-
-    def write(self, *data):
-        """ Write to output stream.
-        """
-        self.fcgreq.out.write("".join(data))
-
-    def flush(self):
-        """ Flush output stream.
-        """
-        self.fcgreq.flush_out()
-
-    def finish(self):
-        """ Call finish method of FastCGI request to finish handling
-            of this request.
-        """
-        self.fcgreq.finish()
-
-
-    #############################################################################
-    ### Accessors
-    #############################################################################
-
-    def getScriptname(self):
-        """ Return the scriptname part of the URL ('/path/to/my.cgi'). """
-        name = self.script_name
-        if name == '/':
-            return ''
-        return name
-
-
-    def getPathinfo(self):
-        """ Return the remaining part of the URL. """
-        pathinfo = self.path_info
-
-        # Fix for bug in IIS/4.0
-        if os.name == 'nt':
-            scriptname = self.getScriptname()
-            if pathinfo.startswith(scriptname):
-                pathinfo = pathinfo[len(scriptname):]
-
-        return pathinfo
-
-
-    #############################################################################
-    ### Headers
-    #############################################################################
-
-    def setHttpHeader(self, header):
-        """ Save header for later send. """
-        self.user_headers.append(header)
-
-
-    def http_headers(self, more_headers=[]):
-        """ Send out HTTP headers. Possibly set a default content-type.
-        """
-        if self.sent_headers:
-            #self.write("Headers already sent!!!\n")
-            return
-        self.sent_headers = 1
-        have_ct = 0
-
-        # send http headers
-        for header in more_headers + self.user_headers:
-            if header.lower().startswith("content-type:"):
-                # don't send content-type multiple times!
-                if have_ct: continue
-                have_ct = 1
-            self.write("%s\r\n" % header)
-
-        if not have_ct:
-            self.write("Content-type: text/html;charset=%s\r\n" % config.charset)
-
-        self.write('\r\n')
-
-        #from pprint import pformat
-        #sys.stderr.write(pformat(more_headers))
-        #sys.stderr.write(pformat(self.user_headers))
-
-package test0577;
-
-public class X {
-
-	public static void main(String[] args) {
-		
-	}
-}
-