summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java
diff options
context:
space:
mode:
authorBenjamin Culkin <scorpress@gmail.com>2024-05-20 17:58:16 -0400
committerBenjamin Culkin <scorpress@gmail.com>2024-05-20 17:58:16 -0400
commit40a9d99496e098562f090fb7ffce9e749011b131 (patch)
tree437df24d65470582e943e494a52db8ed65a881ae /projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java
parentff072dfe782f6f22123cd4ba050828d35c0d0fbd (diff)
Formatting pass
Diffstat (limited to 'projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java')
-rw-r--r--projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java1003
1 files changed, 464 insertions, 539 deletions
diff --git a/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java b/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java
index 7d71223..34f7414 100644
--- a/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java
+++ b/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WORequest.java
@@ -33,554 +33,479 @@ import net.wotonomy.foundation.NSMutableData;
import net.wotonomy.foundation.NSMutableDictionary;
/**
-* A pure java implementation of WORequest.
-* This implementation is backed by an HttpServletRequest,
-* and thus does not support application-specific subclassing.
-* Future implementations may remove this limitation.
-*
-* @author michael@mpowers.net
-* @author $Author: cgruber $
-* @version $Revision: 905 $
-*/
-public class WORequest extends WOResponse
-{
- HttpServletRequest request;
- private WOApplication application;
- private NSArray languages;
- private String requestHandlerKey;
- private String requestHandlerPath;
- private String pageName;
- private String contextID;
- private String senderID;
- private String defaultFormValueEncoding;
-
- /**
- * Parameterless constructor which should not be called.
- */
- public WORequest ()
- {
- throw new RuntimeException(
- "This constructor is not yet supported." );
- }
-
- /**
- * Standard constructor. Method and URL are required.
- * HeaderMap is a map of header names to arrays containing
- * one or more values. Data is the content of the request.
- * UserInfo contains application-defined paramters that get
- * passed to all objects involved in dispatching the request.
- */
- public WORequest
- (String aMethod, String aURL, String aProtocolName,
- NSDictionary headerMap, NSData aData, NSDictionary userInfo)
- {
- throw new RuntimeException(
- "This constructor is not yet supported." );
- }
-
- /**
- * The only supported constructor for this implementation.
- * This WORequest will wrap the specified servlet request.
- */
- public WORequest( HttpServletRequest aRequest, WOApplication anApplication )
- {
+ * A pure java implementation of WORequest. This implementation is backed by an
+ * HttpServletRequest, and thus does not support application-specific
+ * subclassing. Future implementations may remove this limitation.
+ *
+ * @author michael@mpowers.net
+ * @author $Author: cgruber $
+ * @version $Revision: 905 $
+ */
+public class WORequest extends WOResponse {
+ HttpServletRequest request;
+ private WOApplication application;
+ private NSArray languages;
+ private String requestHandlerKey;
+ private String requestHandlerPath;
+ private String pageName;
+ private String contextID;
+ private String senderID;
+ private String defaultFormValueEncoding;
+
+ /**
+ * Parameterless constructor which should not be called.
+ */
+ public WORequest() {
+ throw new RuntimeException("This constructor is not yet supported.");
+ }
+
+ /**
+ * Standard constructor. Method and URL are required. HeaderMap is a map of
+ * header names to arrays containing one or more values. Data is the content of
+ * the request. UserInfo contains application-defined paramters that get passed
+ * to all objects involved in dispatching the request.
+ */
+ public WORequest(String aMethod, String aURL, String aProtocolName, NSDictionary headerMap, NSData aData,
+ NSDictionary userInfo) {
+ throw new RuntimeException("This constructor is not yet supported.");
+ }
+
+ /**
+ * The only supported constructor for this implementation. This WORequest will
+ * wrap the specified servlet request.
+ */
+ public WORequest(HttpServletRequest aRequest, WOApplication anApplication) {
request = aRequest;
- application = anApplication;
-
- languages = null;
- senderID = null;
- pageName = null;
- contextID = null;
- defaultFormValueEncoding = "ISO8859_1";
- requestHandlerKey = WOApplication.directActionRequestHandlerKey();
- requestHandlerPath = request.getServletPath(); // request.getPathInfo();
- String remainder = requestHandlerPath;
- if ( requestHandlerPath == null ) requestHandlerPath = "";
- if ( requestHandlerPath.length() > 0 )
- {
- int i;
-
- // get request handler key
- i = requestHandlerPath.indexOf( "/", 1 );
- if ( i != -1 )
- {
- requestHandlerKey = requestHandlerPath.substring( 1, i );
- requestHandlerPath = requestHandlerPath.substring( i );
- }
-
- Enumeration e = requestHandlerPathArray().objectEnumerator();
- // skipping session ID for now
- if ( e.hasMoreElements() )
- {
- pageName = e.nextElement().toString();
- }
- if ( e.hasMoreElements() )
- {
- contextID = e.nextElement().toString();
- }
- if ( e.hasMoreElements() )
- {
- senderID = e.nextElement().toString();
- }
- }
- }
-
- /**
- * Returns the HTTP method of the request: "GET" or "POST",
- * or possibly "PUT".
- */
- public String method ()
- {
- return request.getMethod();
- }
-
- /**
- * Returns the Uniform Resource Identifier, which is the part
- * of the request URL after the protocol name (after the port
- * number) and before the query parameters (before the question mark).
- */
- public String uri ()
- {
- return request.getRequestURI();
- }
-
- /**
- * Returns the name of the protocol (presumably HTTP) and the
- * version used by the client as sent in the request headers.
- */
- public String httpVersion ()
- {
- return request.getProtocol();
- }
-
- /**
- * Returns an array of the header names in this request
- * in no particular order.
- */
- public NSArray headerKeys ()
- {
- return arrayFromEnumeration( request.getHeaderNames() );
- }
-
- /**
- * Returns an array of the header values for the specified key
- * in no particular order.
- */
- public NSArray headersForKey (String aString)
- {
- return arrayFromEnumeration( request.getHeaders( aString ) );
- }
-
- /**
- * Returns one value for the specified header key.
- * Provided as a convenience since most headers have
- * only one value. Returns null if not found.
- */
- public String headerForKey (String aKey)
- {
- return request.getHeader( aKey );
- }
-
- /**
- * Returns the content of the request, or null if no content.
- * The type of the content is determined by the "content-type" header.
- * On error, null is returned.
- */
- public NSData content ()
- {
- //TODO: This is broken!
- NSMutableData data = new NSMutableData();
- try
- {
- byte[] buf = new byte[ request.getContentLength() ];
- InputStream is = request.getInputStream();
-
+ application = anApplication;
+
+ languages = null;
+ senderID = null;
+ pageName = null;
+ contextID = null;
+ defaultFormValueEncoding = "ISO8859_1";
+ requestHandlerKey = WOApplication.directActionRequestHandlerKey();
+ requestHandlerPath = request.getServletPath(); // request.getPathInfo();
+ String remainder = requestHandlerPath;
+ if (requestHandlerPath == null)
+ requestHandlerPath = "";
+ if (requestHandlerPath.length() > 0) {
+ int i;
+
+ // get request handler key
+ i = requestHandlerPath.indexOf("/", 1);
+ if (i != -1) {
+ requestHandlerKey = requestHandlerPath.substring(1, i);
+ requestHandlerPath = requestHandlerPath.substring(i);
+ }
+
+ Enumeration e = requestHandlerPathArray().objectEnumerator();
+ // skipping session ID for now
+ if (e.hasMoreElements()) {
+ pageName = e.nextElement().toString();
+ }
+ if (e.hasMoreElements()) {
+ contextID = e.nextElement().toString();
+ }
+ if (e.hasMoreElements()) {
+ senderID = e.nextElement().toString();
+ }
+ }
+ }
+
+ /**
+ * Returns the HTTP method of the request: "GET" or "POST", or possibly "PUT".
+ */
+ public String method() {
+ return request.getMethod();
+ }
+
+ /**
+ * Returns the Uniform Resource Identifier, which is the part of the request URL
+ * after the protocol name (after the port number) and before the query
+ * parameters (before the question mark).
+ */
+ public String uri() {
+ return request.getRequestURI();
+ }
+
+ /**
+ * Returns the name of the protocol (presumably HTTP) and the version used by
+ * the client as sent in the request headers.
+ */
+ public String httpVersion() {
+ return request.getProtocol();
+ }
+
+ /**
+ * Returns an array of the header names in this request in no particular order.
+ */
+ public NSArray headerKeys() {
+ return arrayFromEnumeration(request.getHeaderNames());
+ }
+
+ /**
+ * Returns an array of the header values for the specified key in no particular
+ * order.
+ */
+ public NSArray headersForKey(String aString) {
+ return arrayFromEnumeration(request.getHeaders(aString));
+ }
+
+ /**
+ * Returns one value for the specified header key. Provided as a convenience
+ * since most headers have only one value. Returns null if not found.
+ */
+ public String headerForKey(String aKey) {
+ return request.getHeader(aKey);
+ }
+
+ /**
+ * Returns the content of the request, or null if no content. The type of the
+ * content is determined by the "content-type" header. On error, null is
+ * returned.
+ */
+ public NSData content() {
+ // TODO: This is broken!
+ NSMutableData data = new NSMutableData();
+ try {
+ byte[] buf = new byte[request.getContentLength()];
+ InputStream is = request.getInputStream();
+
// this is so very not efficient
int len;
- while ( ( len = is.read( buf ) ) > -1 )
- {
- // copies data twice...
- data.appendData( new NSData( buf, 0, len ) );
- }
- }
- catch ( Exception exc )
- {
+ while ((len = is.read(buf)) > -1) {
+ // copies data twice...
+ data.appendData(new NSData(buf, 0, len));
+ }
+ } catch (Exception exc) {
return null;
}
return data;
- }
-
- /**
- * Returns the application-specific userInfo dictionary.
- * This implementation returns the servlet attribute map.
- */
- public NSDictionary userInfo ()
- {
- //TODO: Test this logic.
- Object key, value;
- NSMutableDictionary info = new NSMutableDictionary();
- java.util.Enumeration e = request.getAttributeNames();
- while ( e.hasMoreElements() )
- {
- key = e.nextElement();
- value = request.getAttribute( e.nextElement().toString() );
- if ( value != null )
- {
- info.setObjectForKey( value, key );
- }
- }
- return info;
- }
-
- /**
- * Returns the items in the request handler path parsed
- * by the "/" delimiter and put into an array.
- */
- public NSArray requestHandlerPathArray ()
- {
- return NSArray.componentsSeparatedByString( requestHandlerPath(), "/" );
- }
-
- /**
- * Returns the client's preferred languages in decreasing
- * order of preference. The strings are returned in java
- * Locale format, meaning dashes (-) are converted to
- * underbars (_): see java.util.Locale.toString().
- */
- public NSArray browserLanguages ()
- {
- if ( languages == null )
- {
- languages = arrayFromEnumeration( request.getLocales() );
- }
- return languages;
- }
-
- /**
- * Returns the portion of the URI specifying the engine within which
- * this web application is running. This is important for generating
- * URLs to be used in the content of the response.
- */
- public String adaptorPrefix ()
- {
- //TODO: Test this logic.
- String name = request.getServletPath();
- return name;
-
+ }
+
+ /**
+ * Returns the application-specific userInfo dictionary. This implementation
+ * returns the servlet attribute map.
+ */
+ public NSDictionary userInfo() {
+ // TODO: Test this logic.
+ Object key, value;
+ NSMutableDictionary info = new NSMutableDictionary();
+ java.util.Enumeration e = request.getAttributeNames();
+ while (e.hasMoreElements()) {
+ key = e.nextElement();
+ value = request.getAttribute(e.nextElement().toString());
+ if (value != null) {
+ info.setObjectForKey(value, key);
+ }
+ }
+ return info;
+ }
+
+ /**
+ * Returns the items in the request handler path parsed by the "/" delimiter and
+ * put into an array.
+ */
+ public NSArray requestHandlerPathArray() {
+ return NSArray.componentsSeparatedByString(requestHandlerPath(), "/");
+ }
+
+ /**
+ * Returns the client's preferred languages in decreasing order of preference.
+ * The strings are returned in java Locale format, meaning dashes (-) are
+ * converted to underbars (_): see java.util.Locale.toString().
+ */
+ public NSArray browserLanguages() {
+ if (languages == null) {
+ languages = arrayFromEnumeration(request.getLocales());
+ }
+ return languages;
+ }
+
+ /**
+ * Returns the portion of the URI specifying the engine within which this web
+ * application is running. This is important for generating URLs to be used in
+ * the content of the response.
+ */
+ public String adaptorPrefix() {
+ // TODO: Test this logic.
+ String name = request.getServletPath();
+ return name;
+
// String uri = request.getRequestURI();
// int end = uri.indexOf( request.getPathInfo() );
// return uri.substring( request.getContextPath().length(), end );
- }
-
- /**
- * Returns the application name as specified in the request URI.
- * Note that wotonomy web applications do not typically have a .woa
- * extension, but the extension will be included for those that do.
- */
- public String applicationName ()
- {
- return request.getContextPath();
- }
-
- /**
- * Returns the id of the application instance that is needed to
- * service this request. -1 indicates that the request is not
- * specific to a particular instance of the application.
- * This implementation currently returns -1.
- */
- public int applicationNumber ()
- {
+ }
+
+ /**
+ * Returns the application name as specified in the request URI. Note that
+ * wotonomy web applications do not typically have a .woa extension, but the
+ * extension will be included for those that do.
+ */
+ public String applicationName() {
+ return request.getContextPath();
+ }
+
+ /**
+ * Returns the id of the application instance that is needed to service this
+ * request. -1 indicates that the request is not specific to a particular
+ * instance of the application. This implementation currently returns -1.
+ */
+ public int applicationNumber() {
return -1;
- }
-
- /**
- * Returns the portion of the URI that specifies which request handler
- * should handle the request.
- */
- public String requestHandlerKey ()
- {
- return requestHandlerKey;
- }
-
- /**
- * Returns the portion of the URI that specifies path information
- * for the request, not including the query string.
- */
- public String requestHandlerPath ()
- {
- return requestHandlerPath;
- }
-
- /**
- * Returns the unique identifier for the sessions associated with
- * this request, or null if no session is found.
- */
- public String sessionID ()
- {
- HttpSession session = request.getSession( false );
- if ( session == null ) return null;
- return session.getId();
- }
-
- /**
- * Returns an array containing all the form keys in the request.
- */
- public NSArray formValueKeys ()
- {
- return arrayFromEnumeration( request.getParameterNames() );
- }
-
- /**
- * Returns an array of the values for the specified key in
- * no particular order.
- */
- public NSArray formValuesForKey (String aKey)
- {
- NSMutableArray result = new NSMutableArray();
- String[] values = request.getParameterValues( aKey );
- if ( values != null )
- {
- for ( int i = 0; i < values.length; i++ )
- {
- result.addObject( values[i] );
- }
- }
- return result;
- }
-
- /**
- * Returns one value for the specified key.
- * Provided as a convenience since most keys have
- * only one value. Returns null if not found.
- */
- public Object formValueForKey (String aKey)
- {
- return request.getParameter( aKey );
- }
-
- /**
- * Returns the value for the specified key, as a String.
- */
- public String stringFormValueForKey(String key) {
- Object x = formValueForKey(key);
- if (x != null)
- return x.toString();
- return null;
- }
-
- /**
- * Returns a dictionary containing all the key-value
- * mappings in the request.
- */
- public NSDictionary formValues ()
- {
- NSMutableDictionary result = new NSMutableDictionary ();
- java.util.Enumeration e = request.getParameterNames();
- String key;
- while ( e.hasMoreElements() )
- {
- key = e.nextElement().toString();
- result.setObjectForKey( formValuesForKey( key ), key );
- }
- return result;
- }
-
- /**
- * Returns whether the request is from a java-based client component.
- * This implementation returns false.
- */
- public boolean isFromClientComponent ()
- {
- return false;
- }
-
- /**
- * Returns an array of cookie values for the specified key in
- * no particular order.
- */
- public NSArray cookieValuesForKey (String aKey)
- {
- // TODO: Test this logic.
- NSMutableArray result = new NSMutableArray();
- Cookie[] cookies = request.getCookies();
- if ( cookies == null ) return result;
-
- for ( int i = 0; i < cookies.length; i++ )
- {
- if ( cookies[i].getName().equals( aKey ) )
- {
- result.addObject( cookies[i].getValue() );
- }
- }
-
- return result;
- }
-
- /**
- * Returns one value for the specified cookie key.
- * Provided as a convenience since most cookies have
- * only one value. Returns null if not found.
- */
- public String cookieValueForKey (String aKey)
- {
- // TODO: Test this logic.
- Cookie[] cookies = request.getCookies();
- if ( cookies == null ) return null;
-
- for ( int i = 0; i < cookies.length; i++ )
- {
- if ( cookies[i].getName().equals( aKey ) )
- {
- return cookies[i].getValue();
- }
- }
-
- return null;
- }
-
- /**
- * Returns a dictionary of cookie key-value mappings.
- */
- public NSDictionary cookieValues ()
- {
- // TODO: Test this logic.
- NSMutableDictionary result = new NSMutableDictionary();
- Cookie[] cookies = request.getCookies();
- if ( cookies == null ) return result;
-
- NSMutableArray value;
- for ( int i = 0; i < cookies.length; i++ )
- {
- value = (NSMutableArray) result.objectForKey(
- cookies[i].getName() );
- if ( value == null )
- {
- value = new NSMutableArray();
- result.setObjectForKey(
- cookies[i].getValue(), cookies[i].getName() );
+ }
+
+ /**
+ * Returns the portion of the URI that specifies which request handler should
+ * handle the request.
+ */
+ public String requestHandlerKey() {
+ return requestHandlerKey;
+ }
+
+ /**
+ * Returns the portion of the URI that specifies path information for the
+ * request, not including the query string.
+ */
+ public String requestHandlerPath() {
+ return requestHandlerPath;
+ }
+
+ /**
+ * Returns the unique identifier for the sessions associated with this request,
+ * or null if no session is found.
+ */
+ public String sessionID() {
+ HttpSession session = request.getSession(false);
+ if (session == null)
+ return null;
+ return session.getId();
+ }
+
+ /**
+ * Returns an array containing all the form keys in the request.
+ */
+ public NSArray formValueKeys() {
+ return arrayFromEnumeration(request.getParameterNames());
+ }
+
+ /**
+ * Returns an array of the values for the specified key in no particular order.
+ */
+ public NSArray formValuesForKey(String aKey) {
+ NSMutableArray result = new NSMutableArray();
+ String[] values = request.getParameterValues(aKey);
+ if (values != null) {
+ for (int i = 0; i < values.length; i++) {
+ result.addObject(values[i]);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Returns one value for the specified key. Provided as a convenience since most
+ * keys have only one value. Returns null if not found.
+ */
+ public Object formValueForKey(String aKey) {
+ return request.getParameter(aKey);
+ }
+
+ /**
+ * Returns the value for the specified key, as a String.
+ */
+ public String stringFormValueForKey(String key) {
+ Object x = formValueForKey(key);
+ if (x != null)
+ return x.toString();
+ return null;
+ }
+
+ /**
+ * Returns a dictionary containing all the key-value mappings in the request.
+ */
+ public NSDictionary formValues() {
+ NSMutableDictionary result = new NSMutableDictionary();
+ java.util.Enumeration e = request.getParameterNames();
+ String key;
+ while (e.hasMoreElements()) {
+ key = e.nextElement().toString();
+ result.setObjectForKey(formValuesForKey(key), key);
+ }
+ return result;
+ }
+
+ /**
+ * Returns whether the request is from a java-based client component. This
+ * implementation returns false.
+ */
+ public boolean isFromClientComponent() {
+ return false;
+ }
+
+ /**
+ * Returns an array of cookie values for the specified key in no particular
+ * order.
+ */
+ public NSArray cookieValuesForKey(String aKey) {
+ // TODO: Test this logic.
+ NSMutableArray result = new NSMutableArray();
+ Cookie[] cookies = request.getCookies();
+ if (cookies == null)
+ return result;
+
+ for (int i = 0; i < cookies.length; i++) {
+ if (cookies[i].getName().equals(aKey)) {
+ result.addObject(cookies[i].getValue());
}
- value.addObject( cookies[i].getValue() );
- }
-
- return result;
- }
-
- /**
- * Sets the default character encoding.
- */
- public void setDefaultFormValueEncoding (String encoding)
- {
- defaultFormValueEncoding = encoding;
- }
-
- /**
- * Returns the default form value encoding ("ISO8859_1").
- */
- public String defaultFormValueEncoding ()
- {
- return defaultFormValueEncoding;
- }
-
- /**
- * Sets whether the appropriate encoding scheme for decoding
- * the form values will be automatically determined.
- */
- public void setFormValueEncodingDetectionEnabled (boolean enabled)
- {
- throw new RuntimeException( "Not yet implemented." );
- }
-
- /**
- * Gets whether the appropriate encoding scheme for decoding
- * the form values is currently automatically determined.
- */
- public boolean isFormValueEncodingDetectionEnabled ()
- {
- throw new RuntimeException( "Not yet implemented." );
- }
-
- /**
- * Gets the current method used for decoding form values.
- */
- public int formValueEncoding ()
- {
- throw new RuntimeException( "Not yet implemented." );
- }
-
- /**
- * Returns the host name of the server that is the target of this request.
- * NOTE: This method is not published in the WORequest specification.
- */
- String applicationHost ()
- {
- // FIXME: this should call WOApplication.hostname();
- return request.getServerName();
- }
-
- /**
- * Returns the port of the server that is the target of this request.
- * NOTE: This method is not published in the WORequest specification.
- */
- int port()
- {
- // FIXME: this should call WOApplication.port();
- return request.getServerPort();
- }
-
- /**
- * Returns the backing HttpServletRequest.
- */
- HttpServletRequest servletRequest ()
- {
- return request;
- }
-
- /**
- * Returns the application that was the target of this request.
- * This method is not published in the WORequest specification.
- */
- WOApplication application ()
- {
- return application;
- }
-
- /**
- * This method is not published in the WORequest specification.
- * This sender id from the URI, which is the id of the element
- * that generated this request.
- */
- String senderID ()
- {
- return senderID;
- }
-
- /**
- * This method is not published in the WORequest specification.
- * This returns the context id from the URI.
- */
- String contextID ()
- {
- return contextID;
- }
-
- /**
- * This method is not published in the WORequest specification.
- */
- String pageName ()
- {
- return pageName;
- }
-
- /**
- * Convenience method to populate an NSArray from an Enumeration.
- */
- private static NSArray arrayFromEnumeration( java.util.Enumeration e )
- {
- NSMutableArray result = new NSMutableArray();
- while ( e.hasMoreElements() )
- {
- result.addObject( e.nextElement() );
- }
- return result;
- }
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns one value for the specified cookie key. Provided as a convenience
+ * since most cookies have only one value. Returns null if not found.
+ */
+ public String cookieValueForKey(String aKey) {
+ // TODO: Test this logic.
+ Cookie[] cookies = request.getCookies();
+ if (cookies == null)
+ return null;
+
+ for (int i = 0; i < cookies.length; i++) {
+ if (cookies[i].getName().equals(aKey)) {
+ return cookies[i].getValue();
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns a dictionary of cookie key-value mappings.
+ */
+ public NSDictionary cookieValues() {
+ // TODO: Test this logic.
+ NSMutableDictionary result = new NSMutableDictionary();
+ Cookie[] cookies = request.getCookies();
+ if (cookies == null)
+ return result;
+
+ NSMutableArray value;
+ for (int i = 0; i < cookies.length; i++) {
+ value = (NSMutableArray) result.objectForKey(cookies[i].getName());
+ if (value == null) {
+ value = new NSMutableArray();
+ result.setObjectForKey(cookies[i].getValue(), cookies[i].getName());
+ }
+ value.addObject(cookies[i].getValue());
+ }
+
+ return result;
+ }
+
+ /**
+ * Sets the default character encoding.
+ */
+ public void setDefaultFormValueEncoding(String encoding) {
+ defaultFormValueEncoding = encoding;
+ }
+
+ /**
+ * Returns the default form value encoding ("ISO8859_1").
+ */
+ public String defaultFormValueEncoding() {
+ return defaultFormValueEncoding;
+ }
+
+ /**
+ * Sets whether the appropriate encoding scheme for decoding the form values
+ * will be automatically determined.
+ */
+ public void setFormValueEncodingDetectionEnabled(boolean enabled) {
+ throw new RuntimeException("Not yet implemented.");
+ }
+
+ /**
+ * Gets whether the appropriate encoding scheme for decoding the form values is
+ * currently automatically determined.
+ */
+ public boolean isFormValueEncodingDetectionEnabled() {
+ throw new RuntimeException("Not yet implemented.");
+ }
+
+ /**
+ * Gets the current method used for decoding form values.
+ */
+ public int formValueEncoding() {
+ throw new RuntimeException("Not yet implemented.");
+ }
+
+ /**
+ * Returns the host name of the server that is the target of this request. NOTE:
+ * This method is not published in the WORequest specification.
+ */
+ String applicationHost() {
+ // FIXME: this should call WOApplication.hostname();
+ return request.getServerName();
+ }
+
+ /**
+ * Returns the port of the server that is the target of this request. NOTE: This
+ * method is not published in the WORequest specification.
+ */
+ int port() {
+ // FIXME: this should call WOApplication.port();
+ return request.getServerPort();
+ }
+
+ /**
+ * Returns the backing HttpServletRequest.
+ */
+ HttpServletRequest servletRequest() {
+ return request;
+ }
+
+ /**
+ * Returns the application that was the target of this request. This method is
+ * not published in the WORequest specification.
+ */
+ WOApplication application() {
+ return application;
+ }
+
+ /**
+ * This method is not published in the WORequest specification. This sender id
+ * from the URI, which is the id of the element that generated this request.
+ */
+ String senderID() {
+ return senderID;
+ }
+
+ /**
+ * This method is not published in the WORequest specification. This returns the
+ * context id from the URI.
+ */
+ String contextID() {
+ return contextID;
+ }
+
+ /**
+ * This method is not published in the WORequest specification.
+ */
+ String pageName() {
+ return pageName;
+ }
+
+ /**
+ * Convenience method to populate an NSArray from an Enumeration.
+ */
+ private static NSArray arrayFromEnumeration(java.util.Enumeration e) {
+ NSMutableArray result = new NSMutableArray();
+ while (e.hasMoreElements()) {
+ result.addObject(e.nextElement());
+ }
+ return result;
+ }
}