<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
    <doclet-version-NOT-library-version>2.00</doclet-version-NOT-library-version>
    <class>
        <name>anywheresoftware.b4j.object.ConnectionPool</name>
        <shortname>ConnectionPool</shortname>
        <objectwrapper>com.mchange.v2.c3p0.ComboPooledDataSource</objectwrapper>
        <comment>Maintains a pool of database connections.</comment>
        <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/>
            <returntype>void</returntype>
        </method>
        <method>
            <name>IsInitialized</name>
            <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.CookieWrapper</name>
        <shortname>Cookie</shortname>
        <objectwrapper>jakarta.servlet.http.Cookie</objectwrapper>
        <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>
        <property>
            <name>Name</name>
            <returntype>java.lang.String</returntype>
            <comment>Gets the cookie name.</comment>
        </property>
        <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>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>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>
        <method>
            <name>IsInitialized</name>
            <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>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.HttpSessionWrapper</name>
        <shortname>HttpSession</shortname>
        <objectwrapper>jakarta.servlet.http.HttpSession</objectwrapper>
        <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>
        <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>
        <property>
            <name>Id</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the session unique id.</comment>
        </property>
        <method>
            <name>IsInitialized</name>
            <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>
        <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>
        <property>
            <name>LastAccessedTime</name>
            <returntype>long</returntype>
            <comment>Returns the last time the user sent a request associated with this session.</comment>
        </property>
        <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>IsNew</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the session was created in this request.</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.JServlet.ServletResponseWrapper</name>
        <shortname>ServletResponse</shortname>
        <objectwrapper>jakarta.servlet.http.HttpServletResponse</objectwrapper>
        <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>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>
        <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>ContentLength</name>
            <parameter>
                <name>i</name>
                <type>int</type>
            </parameter>
            <comment>Sets the response content length header.</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>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>
        <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>
        <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>
        <method>
            <name>IsInitialized</name>
            <comment/>
            <returntype>boolean</returntype>
        </method>
        <method>
            <name>SetHeader</name>
            <comment>Sets the response 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>
        <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>
        <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>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.JServlet.PartWrapper</name>
        <shortname>Part</shortname>
        <objectwrapper>org.eclipse.jetty.server.MultiPartFormInputStream.MultiPart</objectwrapper>
        <property>
            <name>SubmittedFilename</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the submitted file name.</comment>
        </property>
        <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>
        <method>
            <name>IsInitialized</name>
            <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>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.JServlet.ServletRequestWrapper</name>
        <shortname>ServletRequest</shortname>
        <objectwrapper>jakarta.servlet.http.HttpServletRequest</objectwrapper>
        <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>
        <property>
            <name>RequestURI</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the request URL without the host and any parameters.</comment>
        </property>
        <property>
            <name>RemoteAddress</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the client IP address.</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>Method</name>
            <returntype>java.lang.String</returntype>
            <comment>Returns the HTTP method (GET or POST).</comment>
        </property>
        <method>
            <name>IsInitialized</name>
            <comment/>
            <returntype>boolean</returntype>
        </method>
        <property>
            <name>ContentLength</name>
            <returntype>int</returntype>
            <comment>Returns the request content length.</comment>
        </property>
        <method>
            <name>GetParameterValues</name>
            <comment/>
            <returntype>java.lang.String[]</returntype>
            <parameter>
                <name>Name</name>
                <type>java.lang.String</type>
            </parameter>
        </method>
        <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>
        <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>
        <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>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>
        <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>
        <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>
        <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>Secure</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the request was made with a secure channel (SSL).</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.ServerWrapper</name>
        <shortname>Server</shortname>
        <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>
        <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>
        <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>
        <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>
        <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>
        <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>
        <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>
        <property>
            <name>Port</name>
            <returntype>int</returntype>
            <parameter>
                <name>p</name>
                <type>int</type>
            </parameter>
            <comment>Gets or sets the server port.</comment>
        </property>
        <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>LogsTimezone</name>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>id</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Gets or sets the rotated logs timezone id. Default value is "GMT". This affects the rollover time.
The output timezone can be set in the LogsFormat pattern.</comment>
        </property>
        <property>
            <name>LogFormat</name>
            <returntype>java.lang.String</returntype>
            <parameter>
                <name>s</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Gets or sets the log format.
The format is documented &lt;link&gt;here|https://www.eclipse.org/jetty/javadoc/jetty-11/org/eclipse/jetty/server/CustomRequestLog.html&lt;/link&gt;.</comment>
        </property>
        <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>
        <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>
        <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>
        <property>
            <name>SslPort</name>
            <returntype>int</returntype>
            <comment>Returns the port used for SSL (https) connections.</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>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>
        <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>
        <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>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.ServerWrapper.SslContextFactoryWrapper</name>
        <shortname>SslConfiguration</shortname>
        <objectwrapper>org.eclipse.jetty.util.ssl.SslContextFactory.Server</objectwrapper>
        <comment>Holds the key store configuration.</comment>
        <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>
        <property>
            <name>KeyStorePassword</name>
            <parameter>
                <name>p</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Sets the keystore password.</comment>
        </property>
        <method>
            <name>IsInitialized</name>
            <comment/>
            <returntype>boolean</returntype>
        </method>
        <property>
            <name>KeyManagerPassword</name>
            <parameter>
                <name>p</name>
                <type>java.lang.String</type>
            </parameter>
            <comment>Sets the key password.</comment>
        </property>
        <method>
            <name>Initialize</name>
            <comment/>
            <returntype>void</returntype>
        </method>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.WebSocket</name>
        <shortname>WebSocket</shortname>
        <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>
        <property>
            <name>Open</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the connection is open.</comment>
        </property>
        <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>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>
        <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>
        <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>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>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>
        <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>
        <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>Secure</name>
            <returntype>boolean</returntype>
            <comment>Returns true if the request was made with a secure channel (SSL).</comment>
        </property>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.WebSocket.JQueryElement</name>
        <shortname>JQueryElement</shortname>
        <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>
        <property>
            <name>Id</name>
            <returntype>java.lang.String</returntype>
            <comment/>
        </property>
        <method>
            <name>SetHtml</name>
            <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>
    </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>
        <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.WebSocketModule</name>
    </class>
    <class>
        <name>anywheresoftware.b4j.object.WebSocketModule.Adapter.ThreadHandler</name>
        <method>
            <name>run</name>
            <comment/>
            <returntype>void</returntype>
        </method>
    </class>
    <version>4.1</version>
    <dependsOn>json</dependsOn>
    <dependsOn>jserver/mchange-commons-java-0.5.0</dependsOn>
    <dependsOn>jserver/c3p0-oracle-thin-extras-0.9.5.jar</dependsOn>
    <dependsOn>jserver/c3p0-0.13.0.jar</dependsOn>
    <dependsOn>jserver/websocket-jetty-client-11.0.26.jar</dependsOn>
    <dependsOn>jserver/http3-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/quic-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/http3-common-11.0.26.jar</dependsOn>
    <dependsOn>jserver/quic-common-11.0.26.jar</dependsOn>
    <dependsOn>jserver/quic-quiche-common-11.0.26.jar</dependsOn>
    <dependsOn>jserver/http3-qpack-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-alpn-java-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/http2-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/http2-common-11.0.26.jar</dependsOn>
    <dependsOn>jserver/http2-hpack-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-alpn-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-jakarta-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-jakarta-client-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-jakarta-common-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-core-client-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-jetty-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-servlet-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-core-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-jetty-common-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-core-common-11.0.26.jar</dependsOn>
    <dependsOn>jserver/websocket-jetty-api-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-servlets-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-webapp-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-servlet-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-client-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-alpn-client-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-security-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-server-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-http-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-io-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-util-11.0.26.jar</dependsOn>
    <dependsOn>jserver/jetty-slf4j-impl-11.0.26.jar</dependsOn>
    <dependsOn>jserver/slf4j-api-2.0.13.jar</dependsOn>
    <dependsOn>jserver/jetty-jakarta-servlet-api-5.0.2.jar</dependsOn>
    <dependsOn>jserver/jetty-jakarta-websocket-api-2.0.0.jar</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>
