<?xml version="1.0" encoding="UTF-8"?>
<root>
    <doclet-version-NOT-library-version>1.07</doclet-version-NOT-library-version>
    <class>
        <name>anywheresoftware.b4j.object.WebSocketModule</name>
        <owner>process</owner>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.WebSocketModule.Adapter.ThreadHandler</name>
        <owner>process</owner>
        <method>
            <name>run</name>
            <comment></comment>
            <returntype>void</returntype>
        </method>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.WebSocket</name>
        <shortname>WebSocket</shortname>
        <owner>process</owner>
        <method>
            <name>RunFunction</name>
            <comment>Runs a JavaScript function. Pass null to Args if it is not needed.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Function</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Args</name>
                <type>anywheresoftware.b4a.objects.collections.List</type>
            </parameter>
        </method>
        <method>
            <name>GetElementById</name>
            <comment>Creates a JQueryElement object mapped to the given id.
This is equivalent to GetElementBySelector("#" &amp;amp; id.ToLowerCase).</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.JQueryElement</returntype>
            <parameter>
                <name>Id</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>Flush</name>
            <comment>Flushes the output stream. Flush is called automatically when client events complete.
You need to explicitly call it at the end of server events.</comment>
            <returntype>void</returntype>
        </method>
        <method>
            <name>Alert</name>
            <comment>Calls JavaScript Alert method (shows a dialog).</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Message</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>Close</name>
            <comment>Closes the WebSocket connection.</comment>
            <returntype>void</returntype>
        </method>
        <method>
            <name>GetElementBySelector</name>
            <comment>Creates a JQueryElement object mapped to the given selector.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.JQueryElement</returntype>
            <parameter>
                <name>Selector</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>RunFunctionWithResult</name>
            <comment>Similar to RunFunction. Returns the result of the function.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
            <parameter>
                <name>Function</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Args</name>
                <type>anywheresoftware.b4a.objects.collections.List</type>
            </parameter>
        </method>
        <method>
            <name>Eval</name>
            <comment>Creates a new JavaScript function with the Script parameter as the body and runs it. Args is an optional list of arguments to pass to this function.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Script</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Args</name>
                <type>anywheresoftware.b4a.objects.collections.List</type>
            </parameter>
        </method>
        <method>
            <name>EvalWithResult</name>
            <comment>Similar to Eval. Returns the result of this function. Make sure to return a value from the script.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
            <parameter>
                <name>Script</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Args</name>
                <type>anywheresoftware.b4a.objects.collections.List</type>
            </parameter>
        </method>
        <property>
            <name>UpgradeRequest</name>
            <returntype>anywheresoftware.b4j.object.JServlet.ServletRequestWrapper</returntype>
            <comment>Gets the upgrade request object. This is the request that started the WebSocket connection.</comment>
        </property>
        <property>
            <name>Secure</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the request was made with a secure channel (SSL).</comment>
        </property>
        <property>
            <name>Open</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the connection is open.</comment>
        </property>
        <property>
            <name>Session</name>
            <returntype>anywheresoftware.b4j.object.HttpSessionWrapper</returntype>
            <comment>Returns the http session object which is tied to the current user.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.WebSocket.SimpleFuture</name>
        <shortname>Future</shortname>
        <comment>Holds a reference to a value. The value may not be currently available.
In that case the thread will wait for it to be available when you call Value.</comment>
        <owner>process</owner>
        <property>
            <name>Value</name>
            <returntype>java.lang.Object</returntype>
            <comment>If the value is already available then it is immediately returned. Otherwise the thread will wait for it to be available.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.WebSocket.JQueryElement</name>
        <shortname>JQueryElement</shortname>
        <owner>process</owner>
        <event>Change (Params As Map)</event>
        <event>Click (Params As Map)</event>
        <event>DblClick (Params As Map)</event>
        <event>Focus (Params As Map)</event>
        <event>FocusIn (Params As Map)</event>
        <event>FocusOut (Params As Map)</event>
        <event>KeyUp (Params As Map)</event>
        <event>MouseDown (Params As Map)</event>
        <event>MouseEnter (Params As Map)</event>
        <event>MouseLeave (Params As Map)</event>
        <event>MouseMove (Params As Map)</event>
        <event>MouseUp (Params As Map)</event>
        <method>
            <name>SetWidth</name>
            <comment>Calls jQuery width method with the given value.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Value</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>GetCSS</name>
            <comment>Returns the result of jQuery CSS method.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
            <parameter>
                <name>Property</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>RunMethod</name>
            <comment>Runs the given jQuery method.
Params - List or array of values to pass to the method. Set to Null if not needed.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Method</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Params</name>
                <type>anywheresoftware.b4a.objects.collections.List</type>
            </parameter>
        </method>
        <method>
            <name>RunMethodWithResult</name>
            <comment>Similar to RunMethod. The result of the method is returned as a Future object.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
            <parameter>
                <name>Method</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>params</name>
                <type>anywheresoftware.b4a.objects.collections.List</type>
            </parameter>
        </method>
        <method>
            <name>SetProp</name>
            <comment>Calls jQuery prop method with the given value.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Property</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Value</name>
                <type>java.lang.Object</type>
            </parameter>
        </method>
        <method>
            <name>GetProp</name>
            <comment>Returns the result of jQuery prop method.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
            <parameter>
                <name>Property</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>GetVal</name>
            <comment>Returns the result of jQuery val method.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
        </method>
        <method>
            <name>SetText</name>
            <comment>Calls jQuery text method with the given value.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Value</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>GetWidth</name>
            <comment>Returns the result of jQuery width method.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
        </method>
        <method>
            <name>SetCSS</name>
            <comment>Calls jQuery css method with the given property and value.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Property</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Value</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>SetHtml</name>
            <comment></comment>
            <returntype>void</returntype>
            <parameter>
                <name>Value</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>SetVal</name>
            <comment>Calls jQuery val method with the given value.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Value</name>
                <type>java.lang.Object</type>
            </parameter>
        </method>
        <method>
            <name>GetHtml</name>
            <comment>Returns the result of jQuery html method.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
        </method>
        <method>
            <name>GetHeight</name>
            <comment>Returns the result of jQuery height method.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
        </method>
        <method>
            <name>GetText</name>
            <comment>Returns the result of jQuery text method.</comment>
            <returntype>anywheresoftware.b4j.object.WebSocket.SimpleFuture</returntype>
        </method>
        <method>
            <name>SetHeight</name>
            <comment>Calls jQuery height method with the given value.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Value</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <property>
            <name>Id</name>
            <returntype>java.lang.String</returntype>
            <comment></comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.ServerWrapper</name>
        <shortname>Server</shortname>
        <owner>process</owner>
        <method>
            <name>AddHandler</name>
            <comment>Maps a handler class.
Path - The handler will be mapped to the following path. You can use wildcards in the path.
Class - The class name (string).
SingleThreadHandler - Whether this handler should always run in the main thread.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Path</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Class</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>SingleThreadHandler</name>
                <type>boolean</type>
            </parameter>
        </method>
        <method>
            <name>SetCustomErrorPages</name>
            <comment>This method allows you to set custom error pages.
The PagesMap maps between status codes (such as 404 and 500) and the handlers or pages that will be called for each error.
This method should be called before the server is started.
Example:&lt;code&gt;
Dim err As Map
err.Initialize
err.Put(404, "/404.html") 'map to a custom page
srvr.SetCustomErrorPages(err)&lt;/code&gt;</comment>
            <returntype>void</returntype>
            <parameter>
                <name>PagesMap</name>
                <type>anywheresoftware.b4a.objects.collections.Map</type>
            </parameter>
        </method>
        <method>
            <name>CreateThreadSafeMap</name>
            <comment>Returns an initialized Map that can safely be accessed by multiple threads (based on Java ConcurrentHashMap).
Unlike the standard Map the order of items is not preserved.
Note that this Map does not support the following methods: GetKeyAt and GetValueAt.</comment>
            <returntype>anywheresoftware.b4a.objects.collections.Map</returntype>
        </method>
        <method>
            <name>Start</name>
            <comment>Starts the server. The handlers and the configuration settings should be set before the server is started.</comment>
            <returntype>void</returntype>
        </method>
        <method>
            <name>AddBackgroundWorker</name>
            <comment>Adds a background worker. An instance of the specified class will be created and initialized from a background thread.
Class - The class name. The class should be a standard class (not server handler).

You can call StartMessageLoop in the Initialize sub to keep the class instance running for as long as needed.
Note that in debug mode the code will be executed by the main thread.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Class</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>SetStaticFilesOptions</name>
            <comment>A Map with configuration parameters that affect the way the server serves static files.
See this link for more information: &lt;link&gt;http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/servlet/DefaultServlet.html|http://download.eclipse.org/jetty/stable-9/apidocs/org/eclipse/jetty/servlet/DefaultServlet.html&lt;/link&gt;.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Options</name>
                <type>anywheresoftware.b4a.objects.collections.Map</type>
            </parameter>
        </method>
        <method>
            <name>AddFilter</name>
            <comment>Maps a filter class. 
Path - The filter will be mapped to the following path. You can use wildcards in the path.
Class - The class name (string).
SingleThreadHandler - Whether this handler should always run in the main thread.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Path</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Class</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>SingleThreadHandler</name>
                <type>boolean</type>
            </parameter>
        </method>
        <method>
            <name>AddDoSFilter</name>
            <comment>Adds a filter that protects against intentional or unintentional denial of service attacks.
It restricts the number of requests sent from the same connection.
Path - The filter will be mapped to the given path. You can use wildcards in the path.
Settings - An optional map with various settings. See this link: &lt;link&gt;DoS Filter Documentation|http://www.eclipse.org/jetty/documentation/9.4.x/dos-filter.html&lt;/link&gt;

Example:&lt;code&gt;srvr.AddDoSFilter("/*", Null)&lt;/code&gt;</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Path</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Settings</name>
                <type>anywheresoftware.b4a.objects.collections.Map</type>
            </parameter>
        </method>
        <method>
            <name>Initialize</name>
            <comment>Initializes the server.
EventName is currently not used.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>ba</name>
                <type>anywheresoftware.b4a.BA</type>
            </parameter>
            <parameter>
                <name>EventName</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>AddWebSocket</name>
            <comment>Maps a WebSocket class.
Path - The WebSocket will be mapped to this path.
Class - WebSocket class (string).</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Path</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Class</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>SetSslConfiguration</name>
            <comment>Configures the SSL connector and sets the port used for https connections.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Config</name>
                <type>anywheresoftware.b4j.object.ServerWrapper.SslContextFactoryWrapper</type>
            </parameter>
            <parameter>
                <name>Port</name>
                <type>int</type>
            </parameter>
        </method>
        <property>
            <name>LogsFileFolder</name>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>s</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Gets or sets the logs files folder.</comment>
        </property>
        <property>
            <name>Http2Enabled</name>
            <returntype>boolean</returntype>
            <parameter>
                <name>b</name>
                <type>boolean</type>
            </parameter>
            <comment>Gets or sets whether Http/2.0 is enabled. Note that it requires some configuration (see the tutorial for more information).</comment>
        </property>
        <property>
            <name>Port</name>
            <returntype>int</returntype>
            <parameter>
                <name>p</name>
                <type>int</type>
            </parameter>
            <comment>Gets or sets the server port.</comment>
        </property>
        <property>
            <name>SslPort</name>
            <returntype>int</returntype>
            <comment>Returns the port used for SSL (https) connections.</comment>
        </property>
        <property>
            <name>LogsRetainDays</name>
            <returntype>int</returntype>
            <parameter>
                <name>p</name>
                <type>int</type>
            </parameter>
            <comment>Gets or sets the number of days the rotated logs will be kept.</comment>
        </property>
        <property>
            <name>StaticFilesFolder</name>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>s</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Gets or sets the static files folder.</comment>
        </property>
        <property>
            <name>GzipEnabled</name>
            <parameter>
                <name>b</name>
                <type>boolean</type>
            </parameter>
            <comment>Calling this method will cause the server to compress the responses if the client supports GZIP responses and the resource mime type is not of a known compressed type.
In most cases it should be enabled.</comment>
        </property>
        <property>
            <name>DebugNetworkLatency</name>
            <parameter>
                <name>i</name>
                <type>int</type>
            </parameter>
            <comment>Sets the emulated network latency in debug mode, measured in milliseconds.
Default value is 100.
You should only call this method before the server is started.
The emulated latency only affects server -&gt; client -&gt; server round-trips.</comment>
        </property>
        <property>
            <name>CurrentThreadIndex</name>
            <returntype>int</returntype>
            <comment>Each thread is mapped to a specific index. This property returns the current thread index. 
Note that the main thread index is always 0.</comment>
        </property>
        <field>
            <name>LogWaitingMessages</name>
            <comment>Sets whether "waiting for value" messages are logged.
These messages can help you to optimize the code and reduce the network latency effects.</comment>
            <returntype>boolean</returntype>
        </field>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.ServerWrapper.SslContextFactoryWrapper</name>
        <shortname>SslConfiguration</shortname>
        <comment>Holds the key store configuration.</comment>
        <objectwrapper>org.eclipse.jetty.util.ssl.SslContextFactory</objectwrapper>
        <owner>process</owner>
        <method>
            <name>SetKeyStorePath</name>
            <comment>Sets the path to the keystore file.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Dir</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>FileName</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>EnableConscryptProvider</name>
            <comment>Sets the SSL provider to Conscrypt. This requires also adding:
 &lt;code&gt;
#AdditionalJar: conscrypt-openjdk-uber-1.1.2&lt;/code&gt;</comment>
            <returntype>void</returntype>
        </method>
        <method>
            <name>IsInitialized</name>
            <comment></comment>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>Initialize</name>
            <comment></comment>
            <returntype>void</returntype>
        </method>
        <property>
            <name>KeyStorePassword</name>
            <parameter>
                <name>p</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Sets the keystore password.</comment>
        </property>
        <property>
            <name>KeyManagerPassword</name>
            <parameter>
                <name>p</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Sets the key password.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.JServlet.ServletRequestWrapper</name>
        <shortname>ServletRequest</shortname>
        <objectwrapper>javax.servlet.http.HttpServletRequest</objectwrapper>
        <owner>process</owner>
        <method>
            <name>GetParameter</name>
            <comment>Returns the parameter value or an empty string if the parameter does not exist.</comment>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>IsInitialized</name>
            <comment></comment>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>GetParameterValues</name>
            <comment></comment>
            <returntype>java.lang.String[]</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>GetSession</name>
            <comment>Gets the user session. A new session will be created if this is the first request from this user.</comment>
            <returntype>anywheresoftware.b4j.object.HttpSessionWrapper</returntype>
        </method>
        <method>
            <name>GetHeaders</name>
            <comment>Returns a list with all the headers values mapped to the specified header.</comment>
            <returntype>anywheresoftware.b4a.objects.collections.List</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>GetCookies</name>
            <comment>Returns an array with the request cookies.</comment>
            <returntype>anywheresoftware.b4j.object.CookieWrapper[]</returntype>
        </method>
        <method>
            <name>GetHeader</name>
            <comment>Returns the header value or an empty string if the header does not exist.</comment>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>GetMultipartData</name>
            <comment>Parses a multipart request and returns a Map with the parsed Parts as values and the parts names as keys.
Folder - The files will be saved in this folder.
MaxSize - The request maximum size.</comment>
            <returntype>anywheresoftware.b4a.objects.collections.Map</returntype>
            <parameter>
                <name>Folder</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>MaxSize</name>
                <type>long</type>
            </parameter>
        </method>
        <property>
            <name>FullRequestURI</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the full request URL including the scheme, host and parameters.</comment>
        </property>
        <property>
            <name>RemoteAddress</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the client IP address.</comment>
        </property>
        <property>
            <name>ContentType</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the request content type header or an empty string if the content type is not available.</comment>
        </property>
        <property>
            <name>InputStream</name>
            <returntype>anywheresoftware.b4a.objects.streams.File.InputStreamWrapper</returntype>
            <comment>Returns an InputStream that allows you to read directly from the request body.</comment>
        </property>
        <property>
            <name>Secure</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the request was made with a secure channel (SSL).</comment>
        </property>
        <property>
            <name>CharacterEncoding</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the request character encoding or an empty string if the encoding is not available.</comment>
        </property>
        <property>
            <name>RequestURI</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the request URL without the host and any parameters.</comment>
        </property>
        <property>
            <name>ParameterMap</name>
            <returntype>anywheresoftware.b4a.objects.collections.Map</returntype>
            <comment>Returns a Map with all the parameter. The keys are the parameters names (strings) and the values are the parameters values (arrays of strings).</comment>
        </property>
        <property>
            <name>ContentLength</name>
            <returntype>int</returntype>
            <comment>Returns the request content length.</comment>
        </property>
        <property>
            <name>Method</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the HTTP method (GET or POST).</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.JServlet.PartWrapper</name>
        <shortname>Part</shortname>
        <objectwrapper>org.eclipse.jetty.util.MultiPartInputStreamParser.MultiPart</objectwrapper>
        <owner>process</owner>
        <method>
            <name>IsInitialized</name>
            <comment></comment>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>GetValue</name>
            <comment>Returns the string value of this part. This should only be used with non-files parts.</comment>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>CharacterEncoding</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <property>
            <name>IsFile</name>
            <returntype>boolean</returntype>
            <comment>&lt;b&gt;This method should not be used. Call TempFile instead to get the file.&lt;/b&gt;</comment>
        </property>
        <property>
            <name>TempFile</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the path to the temporary file.</comment>
        </property>
        <property>
            <name>SubmittedFilename</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the submitted file name.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.JServlet.ServletResponseWrapper</name>
        <shortname>ServletResponse</shortname>
        <objectwrapper>javax.servlet.http.HttpServletResponse</objectwrapper>
        <owner>process</owner>
        <method>
            <name>Write</name>
            <comment>Writes the text to the response stream.</comment>
            <returntype>anywheresoftware.b4j.object.JServlet.ServletResponseWrapper</returntype>
            <parameter>
                <name>Text</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>IsInitialized</name>
            <comment></comment>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>AddCookie</name>
            <comment>Adds a cookie to the response.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Cookie</name>
                <type>anywheresoftware.b4j.object.CookieWrapper</type>
            </parameter>
        </method>
        <method>
            <name>SendRedirect</name>
            <comment>Sends a redirect response with the status code 302.
Location - The new address.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Location</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name RaisesSynchronousEvents="true">SendError</name>
            <comment>Sends an error message.
StatusCode - Usually 500.
Message - The error message.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>StatusCode</name>
                <type>int</type>
            </parameter>
            <parameter>
                <name>Message</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>SetHeader</name>
            <comment>Sets the request header.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Value</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <property>
            <name>Status</name>
            <returntype>int</returntype>
            <parameter>
                <name>s</name>
                <type>int</type>
            </parameter>
            <comment>Gets or sets the response status code.
Note that you should use SendError to send error statuses. Otherwise the custom error pages will be skipped.</comment>
        </property>
        <property>
            <name>ContentType</name>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>s</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Gets or sets the response content type.</comment>
        </property>
        <property>
            <name>OutputStream</name>
            <returntype>anywheresoftware.b4a.objects.streams.File.OutputStreamWrapper</returntype>
            <comment>Returns an OutputStream that can be used to write bytes directly to the response stream.</comment>
        </property>
        <property>
            <name>CharacterEncoding</name>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>s</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Gets or sets the response character encoding.</comment>
        </property>
        <property>
            <name>ErrorReason</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the error string that is tied to this response. This is useful with handlers that act as custom error pages.</comment>
        </property>
        <property>
            <name>ContentLength</name>
            <parameter>
                <name>i</name>
                <type>int</type>
            </parameter>
            <comment>Sets the response content length header.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.HttpSessionWrapper</name>
        <shortname>HttpSession</shortname>
        <comment>HttpSessions allows you to identify a user across multiple requests and to store data specific to this user.
The session id is stored as a cookie in the user browser, or as a URL parameter if cookies are disabled.
The data is stored in the server memory.
Getting and creating sessions is done with ServletRequest.GetSession.</comment>
        <objectwrapper>javax.servlet.http.HttpSession</objectwrapper>
        <owner>process</owner>
        <method>
            <name>GetAttribute2</name>
            <comment>Returns the value tied to the attribute with the specified name.
Returns the DefaultValue if no value exists.</comment>
            <returntype>java.lang.Object</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>DefaultValue</name>
                <type>java.lang.Object</type>
            </parameter>
        </method>
        <method>
            <name>GetAttribute</name>
            <comment>Returns the value tied to the attribute with the specified name.</comment>
            <returntype>java.lang.Object</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>IsInitialized</name>
            <comment></comment>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>SetAttribute</name>
            <comment>Adds an attribute to the session. If there is an existing value with the same name then it will be replaced.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Value</name>
                <type>java.lang.Object</type>
            </parameter>
        </method>
        <method>
            <name>RemoveAttribute</name>
            <comment>Removes the attribute with the given name.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>GetAttributesNames</name>
            <comment>Returns a List with all the session names.</comment>
            <returntype>anywheresoftware.b4a.objects.collections.List</returntype>
        </method>
        <method>
            <name>HasAttribute</name>
            <comment>Tests whether there is a value tied to the given name.</comment>
            <returntype>boolean</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>Invalidate</name>
            <comment>Invalidates the session. This causes the session to be deleted.</comment>
            <returntype>void</returntype>
        </method>
        <property>
            <name>CreationTime</name>
            <returntype>long</returntype>
            <comment>Returns the session creation time.</comment>
        </property>
        <property>
            <name>Id</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the session unique id.</comment>
        </property>
        <property>
            <name>LastAccessedTime</name>
            <returntype>long</returntype>
            <comment>Returns the last time the user sent a request associated with this session.</comment>
        </property>
        <property>
            <name>IsNew</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the session was created in this request.</comment>
        </property>
        <property>
            <name>MaxInactiveInterval</name>
            <returntype>int</returntype>
            <parameter>
                <name>i</name>
                <type>int</type>
            </parameter>
            <comment>Gets or sets the maximum inactive interval, in seconds. The session will be invalidated if there was not any activity for a period larger than this value.
The default value is -1 which means that there is no maximum interval.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.CookieWrapper</name>
        <shortname>Cookie</shortname>
        <comment>Represents a HTTP cookie. You can add cookies to the response with ServletResponse.AddCookie.
These cookies will then be sent in the following browser requests.
You can fetch the cookies with ServletRequest.GetCookies.</comment>
        <objectwrapper>javax.servlet.http.Cookie</objectwrapper>
        <owner>process</owner>
        <method>
            <name>IsInitialized</name>
            <comment></comment>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>Initialize</name>
            <comment>Creates a new cookie with the given name and value.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Value</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <property>
            <name>MaxAge</name>
            <returntype>int</returntype>
            <parameter>
                <name>i</name>
                <type>int</type>
            </parameter>
            <comment>Gets or sets the cookie maximum age in seconds.
A negative value means that the cookie will be deleted when the Web browser exists.
A zero value causes the cookie to be deleted.</comment>
        </property>
        <property>
            <name>Value</name>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>s</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Gets or sets the cookie value.</comment>
        </property>
        <property>
            <name>HttpOnly</name>
            <returntype>boolean</returntype>
            <parameter>
                <name>b</name>
                <type>boolean</type>
            </parameter>
            <comment>Gets or sets whether the cookie is a http only cookie (a cookie that cannot be read by client-side scripts).</comment>
        </property>
        <property>
            <name>Name</name>
            <returntype>java.lang.String</returntype>
            <comment>Gets the cookie name.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.ConnectionPool</name>
        <shortname>ConnectionPool</shortname>
        <comment>Maintains a pool of database connections.</comment>
        <objectwrapper>com.mchange.v2.c3p0.ComboPooledDataSource</objectwrapper>
        <owner>process</owner>
        <event>ConnectionReady (Success As Boolean, SQL As SQL)</event>
        <method>
            <name>GetConnection</name>
            <comment>Retrieves a connection from the pool. Make sure to close the connection when you are done with it.</comment>
            <returntype>anywheresoftware.b4j.objects.SQL</returntype>
        </method>
        <method>
            <name>GetConnectionAsync</name>
            <comment>Asynchronously gets a SQL connection. This method is useful in UI applications as it prevents the main thread from freezing until the connection is available.
The ConnectionReady event will be raised when the connection is ready.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>ba</name>
                <type>anywheresoftware.b4a.BA</type>
            </parameter>
            <parameter>
                <name>EventName</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <method>
            <name>ClosePool</name>
            <comment></comment>
            <returntype>void</returntype>
        </method>
        <method>
            <name>IsInitialized</name>
            <comment></comment>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>Initialize</name>
            <comment>Initializes the pool.
DriverClass - The JDBC driver class.
JdbcUrl - JDBC connection url.
User / Password - Connection credentials.</comment>
            <returntype>void</returntype>
            <parameter>
                <name>DriverClass</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>JdbcUrl</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>User</name>
                <type>java.lang.String</type>
            </parameter>
            <parameter>
                <name>Password</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.BackgroundWorkersManager</name>
        <owner>process</owner>
        <method>
            <name>startWorker</name>
            <comment></comment>
            <returntype>void</returntype>
            <parameter>
                <name>className</name>
                <type>java.lang.Class</type>
            </parameter>
        </method>
    </class>
    <version>3.01</version>
    <dependsOn>jetty_b4j</dependsOn>
    <dependsOn>jserver/c3p0-0.13.0</dependsOn>
    <dependsOn>jserver/c3p0-oracle-thin-extras-0.9.5</dependsOn>
    <dependsOn>jserver/mchange-commons-java-0.5.0</dependsOn>
    <dependsOn>json</dependsOn>
    <customClass>name:Server Handler, filenamewithoutextension:server_handler</customClass>
    <customClass>name:Server Filter, filenamewithoutextension:server_filter</customClass>
    <customClass>name:Server WebSocket, filenamewithoutextension:server_websocket</customClass>
</root>
