- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 21 Sep 2009 15:55:13 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/request
In directory hutz:/tmp/cvs-serv6922/src/org/w3c/unicorn/request
Modified Files:
URIRequest.java
Log Message:
exceptions thrown by an observation can now display a message on the result page.
+ connect/read timeout exceptions supported
Index: URIRequest.java
===================================================================
RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/request/URIRequest.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- URIRequest.java 17 Sep 2009 16:37:18 -0000 1.5
+++ URIRequest.java 21 Sep 2009 15:55:11 -0000 1.6
@@ -7,13 +7,19 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
+import java.net.ConnectException;
+import java.net.MalformedURLException;
+import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import org.w3c.unicorn.contract.EnumInputMethod;
+import org.w3c.unicorn.exceptions.UnicornException;
import org.w3c.unicorn.input.URIInputModule;
import org.w3c.unicorn.response.Response;
+import org.w3c.unicorn.util.Message;
+import org.w3c.unicorn.util.Property;
/**
* Use to handle a request to a observer.
@@ -31,6 +37,9 @@
* Parameter of the request
*/
private String sParameter = null;
+
+ private int connectTimeOut;
+ private int readTimeOut;
/**
* Create an URI request
@@ -53,14 +62,18 @@
logger.debug("URL : " + sURL + ".");
logger.debug("Input parameter name : " + sInputParameterName + ".");
logger.debug("Input module : " + aInputModule + ".");
- /*if (!(aInputModule instanceof URIInputModule)) {
- throw new IllegalArgumentException("InputModule : "
- + aInputModule.toString() + ".");
- }*/
this.sURL = sURL;
final URIInputModule aURIInputModule = (URIInputModule) aInputModule;
this.addParameter(sInputParameterName, aURIInputModule.getURI());
this.setResponseType(responseType);
+ if (Property.get("OBSERVER_CONNECT_TIMEOUT") != null)
+ connectTimeOut = Integer.parseInt(Property.get("DOCUMENT_CONNECT_TIMEOUT"));
+ else
+ connectTimeOut = 0;
+ if (Property.get("OBSERVER_READ_TIMEOUT") != null)
+ readTimeOut = Integer.parseInt(Property.get("OBSERVER_READ_TIMEOUT"));
+ else
+ readTimeOut = 0;
}
/**
@@ -94,27 +107,43 @@
* @throws Exception
*/
@Override
- public Response doRequest() throws Exception {
+ public Response doRequest() throws UnicornException {
logger.trace("doRequest");
logger.debug("URL : " + this.sURL + " .");
logger.debug("Parameters : " + this.sParameter + " .");
final URL aURL;
- if (null == this.sParameter) {
- aURL = new URL(this.sURL);
- } else {
- logger.debug(this.sParameter);
- aURL = new URL(this.sURL + "?" + this.sParameter);
+ try {
+ if (null == this.sParameter) {
+ aURL = new URL(this.sURL);
+ } else {
+ aURL = new URL(this.sURL + "?" + this.sParameter);
+ }
+ logger.debug("URL : " + aURL + " .");
+
+ URLConnection aURLConnection = aURL.openConnection();
+ aURLConnection.setConnectTimeout(connectTimeOut);
+ aURLConnection.setReadTimeout(readTimeOut);
+ aURLConnection.setRequestProperty("Accept-Language", this.sLang);
+
+ InputStream is = aURLConnection.getInputStream();
+ Response response = streamToResponse(is);
+ response.setRequestUri(aURL.toString());
+ return response;
+ } catch (MalformedURLException e) {
+ throw new UnicornException(new Message(e));
+ } catch (ConnectException e) {
+ throw new UnicornException(Message.Level.ERROR, "$message_observer_connect_exception", null);
+ } catch (SocketTimeoutException e) {
+ if (e.getMessage().contains("connect timed out")) {
+ throw new UnicornException(Message.Level.ERROR, "$message_observer_connect_exception", null);
+ } else if (e.getMessage().contains("Read timed out")) {
+ throw new UnicornException(Message.Level.ERROR, "$message_observer_read_timeout", null);
+ } else {
+ throw new UnicornException(new Message(e));
+ }
+ } catch (IOException e) {
+ throw new UnicornException(new Message(e));
}
- logger.debug("URL : " + aURL + " .");
- final URLConnection aURLConnection = aURL.openConnection();
-
- aURLConnection.setRequestProperty("Accept-Language", this.sLang);
- InputStream is = aURLConnection.getInputStream();
- Response response = streamToResponse(is);
-
- response.setRequestUri(aURL.toString());
-
- return response;
}
@Override
Received on Monday, 21 September 2009 15:55:22 UTC