eu.webtoolkit.jwt
Class WEnvironment

java.lang.Object
  extended by eu.webtoolkit.jwt.WEnvironment
Direct Known Subclasses:
WTestEnvironment

public class WEnvironment
extends java.lang.Object

A class that captures information on the application environment.

The environment provides information on the client, and gives access to startup arguments.

Usage example:

 WEnvironment env = WApplication.instance().environment();
 
 // read an application startup argument 
 // (passed as argument in the URL or POST'ed to the application).
 if (!env.getParameterValues("login").isEmpty()) {
        String login = env.getParameterValues("login").get(0);
        //...
 }
 
 // Check for JavaScript/AJAX availability before using JavaScript-only
 // widgets
 WTextArea textEdit;
 if (!env.isAjax())
        textEdit = new WTextEdit(); // provide an HTML text editor
 else
        textEdit = new WTextArea(); // fall-back to a plain old text area.
 


Nested Class Summary
static class WEnvironment.ContentType
          Enumeration for HTML content type.
static class WEnvironment.UserAgent
          An enumeration type for specific user agent.
 
Field Summary
protected  java.lang.String publicDeploymentPath_
           
 
Method Summary
 boolean agentIsChrome()
          Returns whether the user agent is Chrome.
 boolean agentIsGecko()
          Returns whether the user agent is Gecko-based.
 boolean agentIsIE()
          Returns whether the user agent is Microsoft Internet Explorer.
 boolean agentIsIElt(int version)
          Returns whether the user agent is an older version of IE.
 boolean agentIsIEMobile()
          Returns whether the user agent is Internet Explorer Mobile.
 boolean agentIsMobileWebKit()
          Returns whether the user agent is Mobile WebKit-based.
 boolean agentIsOpera()
          Returns whether the user agent is Opera.
 boolean agentIsSafari()
          Returns whether the user agent is Safari.
 boolean agentIsSpiderBot()
          Returns if the user agent is a (known) indexing spider bot.
 boolean agentIsWebKit()
          Returns whether the user agent is WebKit-based.
 java.lang.String getAccept()
          Returns the accept header.
 WEnvironment.UserAgent getAgent()
          Returns the user agent type.
 java.lang.String getCgiValue(java.lang.String varName)
          Returns a raw CGI environment variable.
 java.lang.String getClientAddress()
          Returns the IP address of the client.
 WEnvironment.ContentType getContentType()
          The type of the content provided to the browser.
 java.lang.String getCookie(java.lang.String cookieNname)
          Returns a cookie value.
 java.util.Map<java.lang.String,java.lang.String> getCookies()
          Returns the cookies from the environment.
 java.lang.String getDeploymentPath()
          Returns the deployment path.
 double getDpiScale()
          Returns the browser-side DPI scaling factor.
 java.lang.String getHeaderValue(java.lang.String name)
          Returns a header value.
 java.lang.String getHostName()
          Returns the server host name that is used by the client.
 java.lang.String getInternalPath()
          Returns the initial internal path.
static java.lang.String getJavaScriptWtScope()
          Wt's JavaScript scope.
static java.lang.String getLibraryVersion()
          Returns the version of the JWt library.
 java.util.Locale getLocale()
          Returns the preferred language indicated in the request header.
 java.lang.String getParameter(java.lang.String name)
          Returns a single value for a query parameter.
 java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()
          Parameters passed to the application.
 java.lang.String[] getParameterValues(java.lang.String name)
          Returns values for a query parameter.
 java.lang.String getReferer()
          Returns the referer.
 WtServlet getServer()
          Returns the servlet.
 java.lang.String getServerAdmin()
          Returns the email address of the server admin.
 java.lang.String getServerSignature()
          Returns the web server signature.
 java.lang.String getServerSoftware()
          Returns the web server software.
 java.lang.String getSessionId()
          Deprecated. Use WApplication#getSessionId() instead
 java.lang.String getUrlScheme()
          Returns the URL scheme used for the current request ( "http" or "https").
 java.lang.String getUserAgent()
          Returns the user agent.
 boolean hasAjax()
          Returns whether the browser has enabled support for AJAX.
 boolean hashInternalPaths()
           
 boolean hasJavaScript()
          Returns whether the browser has enabled support for JavaScript.
 boolean isTest()
           
 boolean supportsCookies()
          Returns whether the browser has enabled support for cookies.
 boolean supportsCss3Animations()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

publicDeploymentPath_

protected java.lang.String publicDeploymentPath_
Method Detail

getJavaScriptWtScope

public static java.lang.String getJavaScriptWtScope()
Wt's JavaScript scope.


getParameterMap

public java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()
Parameters passed to the application.

Arguments passed to the application, either in the URL for a http GET, or in both the URL and data submitted in a http POST.

See Also:
getParameterValues(String name)

getParameterValues

public java.lang.String[] getParameterValues(java.lang.String name)
Returns values for a query parameter.

Returns an empty list if the parameter was not defined.

One or more values may be associated with a single argument.

For example a JWt application foo.wt started as http://.../foo.wt?hello=Hello&hello=World will result in both values "Hello" and "World" to be associated with the argument "hello".

See Also:
getParameterMap()

getParameter

public java.lang.String getParameter(java.lang.String name)
Returns a single value for a query parameter.

Returns the first value for a parameter, or null if the parameter is not found.

See Also:
getParameterValues(String name)

getCookies

public java.util.Map<java.lang.String,java.lang.String> getCookies()
Returns the cookies from the environment.

This returns all cookies that were present in initial request for the application. Cookies set with WApplication#setCookie() are not taken into considerations.

Cookies allow you to persist information across sessions.

Not all clients may support cookies or have cookies enabled.

See Also:
supportsCookies(), getCookie(String cookieNname), WEnvironment#getCookieValue(String cookieName)

getCookie

public java.lang.String getCookie(java.lang.String cookieNname)
Returns a cookie value.

Throws a RuntimeException("Missing cookie: ...") when the cookie is missing, or returns cookie value otherwise.

See Also:
WEnvironment#getCookieValue(String cookieName)

getHeaderValue

public java.lang.String getHeaderValue(java.lang.String name)
Returns a header value.

Returns a header value, or an empty string if the header was present.

Note: Currently, the header name is case sensitive, although this should not be the case according to RFC2616


supportsCookies

public boolean supportsCookies()
Returns whether the browser has enabled support for cookies.

When the user disables cookies during the visit of the page, this value is not updated.

See Also:
getCookies(), getCookie(String cookieNname)

hasJavaScript

public boolean hasJavaScript()
Returns whether the browser has enabled support for JavaScript.

This is the same as hasAjax(): JWt only considers using JavaScript when it has detected AJAX support.

See Also:
hasAjax()

hasAjax

public boolean hasAjax()
Returns whether the browser has enabled support for AJAX.

Without support for JavaScript/AJAX, JWt will still be able to serve the application, but with one considerable limitation: only the WTimer#timeout(), WInteractWidget#clicked(), WApplication#internalPathChanged(), and WAbstractArea#clicked() signals (and any derived signals) will generate events.

Every event will cause the complete page to be rerendered.

See Also:
hasJavaScript()

getDpiScale

public double getDpiScale()
Returns the browser-side DPI scaling factor.

Internet Explorer scales all graphics, fonts and other elements on high-density screens to make them readable. This is controlled by the DPI setting of the display. If all goes well, you do not have to worry about this scaling factor. Unfortunately, not all elements are scaled appropriately. The scaling factor is supposed to be used only internally in JWt and is in this interface for informational purposes.

See Also:
WVmlImage

getLocale

public java.util.Locale getLocale()
Returns the preferred language indicated in the request header.

The language is parsed from the HTTP Accept-Language field, if present. If not, the locale is empty.

If multiple languages are present, the one with the highest "q"uality is assumed, and if a tie is present, the first one is taken.

See Also:
WApplication.setLocale(Locale locale)

getHostName

public java.lang.String getHostName()
Returns the server host name that is used by the client.

The hostname is the unresolved host name with optional port number, which the browser used to connect to the application.

Examples:

For HTTP 1.1 requests, this information is fetched from the HTTP Host header. If JWt is configured behind a reverse proxy, then the last entry in the HTTP X-Forwarded-Host header field is used instead (to infer the name of the reverse proxy instead).

For HTTP 1.0 requests, the HTTP Host header is not required. When not present, the server host name is inferred from the configured server name, which defaults to the DNS name.


getUrlScheme

public java.lang.String getUrlScheme()
Returns the URL scheme used for the current request ( "http" or "https").


getUserAgent

public java.lang.String getUserAgent()
Returns the user agent.

The user agent, as reported in the HTTP User-Agent field.

See Also:
getAgent()

getReferer

public java.lang.String getReferer()
Returns the referer.

The referer, as reported in the HTTP Referer field.


getAccept

public java.lang.String getAccept()
Returns the accept header.

The accept header, as reported in the HTTP Accept field.


agentIsSpiderBot

public boolean agentIsSpiderBot()
Returns if the user agent is a (known) indexing spider bot.

Note: currently the list of know bots is quite small. This method is used internally to render the web application for optimal indexing by bots:


getServerSignature

public java.lang.String getServerSignature()
Returns the web server signature.

The value of the CGI variable SERVER_SIGNATURE.

Example: <address>Apache Server at localhost Port 80</address>.


getServerSoftware

public java.lang.String getServerSoftware()
Returns the web server software.

The value of the CGI variable SERVER_SOFTWARE.

Example: "Apache"


getServerAdmin

public java.lang.String getServerAdmin()
Returns the email address of the server admin.

The value of the CGI variable SERVER_ADMIN.

Example: "root@localhost"


getClientAddress

public java.lang.String getClientAddress()
Returns the IP address of the client.

The (most likely) IP address of the client that is connected to this session.

This is taken to be the first public address that is given in the Client-IP header, or in the X-Forwarded-For header (in case the client is behind a proxy). If none of these headers is present, the remote socket IP address is used.


getInternalPath

public java.lang.String getInternalPath()
Returns the initial internal path.

This is the internal path with which the application was started.

For an application deployed at "/stuff/app.wt", the following two URLs are considered equivalent, and indicate an internal path "/this/there":

 http://www.mydomain.com/stuff/app.wt/this/there
    http://www.mydomain.com/stuff/app.wt/this/there
 

See Also:
WApplication.getBookmarkUrl(), getDeploymentPath()

getDeploymentPath

public java.lang.String getDeploymentPath()
Returns the deployment path.

This is the path at which the application is deployed.

See Also:
getInternalPath()

getLibraryVersion

public static java.lang.String getLibraryVersion()
Returns the version of the JWt library.

Example: "1.99.2"


getSessionId

public java.lang.String getSessionId()
Deprecated. Use WApplication#getSessionId() instead

Returns the JWt session id (deprecated).

Retrieves the session id for this session. This is an auto-generated random alpha-numerical id, whose length is determined by settings in the configuration file.


getCgiValue

public java.lang.String getCgiValue(java.lang.String varName)
Returns a raw CGI environment variable.

Retrieves the value for the given CGI environment variable (like "SSL_CLIENT_S_DN_CN"), if it is defined, otherwise an empty string.

See Also:
getServerSignature(), getServerSoftware(), getServerAdmin()

getContentType

public WEnvironment.ContentType getContentType()
The type of the content provided to the browser.

This is determined by listening to the capabilities of the browser. Xhtml1 is chosen only if the browser reports support for it, and it is allowed in the configuration file (wt_config.xml).

Note that JWt makes also use of common non-standard techniques implemented in every major browser.


getAgent

public WEnvironment.UserAgent getAgent()
Returns the user agent type.

This returns an interpretation of the getUserAgent(). It should be used only for user-agent specific work-arounds (as a last resort).

See Also:
agentIsIE(), agentIsOpera(), agentIsGecko(), agentIsChrome(), agentIsSafari(), agentIsWebKit()

agentIsIE

public boolean agentIsIE()
Returns whether the user agent is Microsoft Internet Explorer.

See Also:
getAgent()

agentIsIElt

public boolean agentIsIElt(int version)
Returns whether the user agent is an older version of IE.

Returns whether the agent is an IE version older than the given version.

See Also:
agentIsIE()

agentIsIEMobile

public boolean agentIsIEMobile()
Returns whether the user agent is Internet Explorer Mobile.

Returns also true when the agent is Internet Explorer 5 or older.

See Also:
getAgent()

agentIsOpera

public boolean agentIsOpera()
Returns whether the user agent is Opera.

See Also:
getAgent()

agentIsWebKit

public boolean agentIsWebKit()
Returns whether the user agent is WebKit-based.

Webkit-based browsers include Safari, Chrome, Arora and Konquerer browsers.

See Also:
getAgent()

agentIsMobileWebKit

public boolean agentIsMobileWebKit()
Returns whether the user agent is Mobile WebKit-based.

Mobile Webkit-based browsers include the Android Mobile WebKit and the iPhone Mobile WebKit browsers.

See Also:
getAgent()

agentIsSafari

public boolean agentIsSafari()
Returns whether the user agent is Safari.

See Also:
getAgent()

agentIsChrome

public boolean agentIsChrome()
Returns whether the user agent is Chrome.

See Also:
getAgent()

agentIsGecko

public boolean agentIsGecko()
Returns whether the user agent is Gecko-based.

Gecko-based browsers include Firefox.

See Also:
getAgent()

getServer

public WtServlet getServer()
Returns the servlet.

This returns the servlet environment of this session.


hashInternalPaths

public boolean hashInternalPaths()

supportsCss3Animations

public boolean supportsCss3Animations()

isTest

public boolean isTest()