- From: Damien Leroy via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 21 Sep 2006 16:01:26 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/org/w3c/unicorn/request
In directory hutz:/tmp/cvs-serv25605/org/w3c/unicorn/request
Modified Files:
Request.java RequestList.java UploadRequest.java
Added Files:
DirectRequestPOST.java DirectRequestGET.java
Removed Files:
RequestListImpl.java DirectRequest.java
Log Message:
Add use of http method information from the observer contrat to call the observer with method POST or GET.
--- NEW FILE: DirectRequestPOST.java ---
// $Id: DirectRequestPOST.java,v 1.1 2006/09/21 16:01:19 dleroy Exp $
// Author: Damien LEROY.
// (c) COPYRIGHT MIT, ERCIM ant Keio, 2006.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn.request;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Hashtable;
import java.util.Map;
import java.util.Random;
import javax.xml.bind.JAXBException;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.generated.observationresponse.Observationresponse;
import org.w3c.unicorn.input.DirectInputModule;
import org.w3c.unicorn.input.InputModule;
/**
* @author Damien LEROY
*
*/
public class DirectRequestPOST extends Request {
private static Random aRandom = new Random();
private String sURL = null;
private Map<String, String> mapOfParameter = null;
private String sBoundary =
"---------------------------" +
DirectRequestPOST.randomString() +
DirectRequestPOST.randomString() +
DirectRequestPOST.randomString();
private URLConnection aURLConnection = null;
private OutputStream aOutputStream = null;
private static String randomString () {
return Long.toString(DirectRequestPOST.aRandom.nextLong(), 36);
}
protected DirectRequestPOST (
final String sURL,
final String sInputParameterName,
final InputModule aInputModule) throws IOException {
DirectRequestPOST.logger.trace("Constructor");
if (DirectRequestPOST.logger.isDebugEnabled()) {
DirectRequestPOST.logger.debug("URL : " + sURL + ".");
DirectRequestPOST.logger.debug("Input parameter name : " + sInputParameterName + ".");
DirectRequestPOST.logger.debug("Input module : " + aInputModule + ".");
}
if (!(aInputModule instanceof DirectInputModule)) {
throw new IllegalArgumentException("InputModule : " + aInputModule.toString() + ".");
}
this.mapOfParameter = new Hashtable<String, String>();
this.sURL = sURL;
this.addParameter(sInputParameterName, aInputModule.getStringContent());
}
@Override
public void addParameter (final String sName, final String sValue) throws IOException {
DirectRequestPOST.logger.trace("addParameter");
if (DirectRequestPOST.logger.isDebugEnabled()) {
DirectRequestPOST.logger.debug("Name :" + sName + ".");
DirectRequestPOST.logger.debug("Value :" + sValue + ".");
}
this.mapOfParameter.put(sName, sValue);
}
@Override
public Observationresponse doRequest () throws JAXBException, IOException {
DirectRequestPOST.logger.trace("doRequest");
final URL aURL = new URL(sURL);
this.aURLConnection = aURL.openConnection();
this.aURLConnection.setDoOutput(true);
this.aURLConnection.setRequestProperty(
"Content-Type",
"multipart/form-data; boundary=" + sBoundary);
this.aURLConnection.setRequestProperty("Accept-Language", this.sLang);
if (null == this.aOutputStream) {
this.aOutputStream = this.aURLConnection.getOutputStream();
}
for (final String sName : this.mapOfParameter.keySet()) {
final String sValue = this.mapOfParameter.get(sName);
DirectRequestPOST.logger.trace("addParameter");
if (DirectRequestPOST.logger.isDebugEnabled()) {
DirectRequestPOST.logger.debug("Name :" + sName + ".");
DirectRequestPOST.logger.debug("Value :" + sValue + ".");
}
DirectRequestPOST.logger.debug("--");
DirectRequestPOST.logger.debug(this.sBoundary);
DirectRequestPOST.logger.debug("\r\n");
DirectRequestPOST.logger.debug("Content-Disposition: form-data; name=\"");
DirectRequestPOST.logger.debug(sName);
DirectRequestPOST.logger.debug('"');
DirectRequestPOST.logger.debug("\r\n");
DirectRequestPOST.logger.debug("\r\n");
DirectRequestPOST.logger.debug(sValue);
DirectRequestPOST.logger.debug("\r\n");
// boundary
this.aOutputStream.write("--".getBytes());
this.aOutputStream.write(this.sBoundary.getBytes());
// writeName
this.aOutputStream.write("\r\n".getBytes());
this.aOutputStream.write("Content-Disposition: form-data; name=\"".getBytes());
this.aOutputStream.write(sName.getBytes());
this.aOutputStream.write('"');
// newline
this.aOutputStream.write("\r\n".getBytes());
// newline
this.aOutputStream.write("\r\n".getBytes());
// writeln
this.aOutputStream.write(sValue.getBytes());
this.aOutputStream.write("\r\n".getBytes());
}
DirectRequestPOST.logger.debug("--");
DirectRequestPOST.logger.debug(this.sBoundary);
DirectRequestPOST.logger.debug("--");
DirectRequestPOST.logger.debug("\r\n");
this.aOutputStream.write("--".getBytes());
this.aOutputStream.write(this.sBoundary.getBytes());
this.aOutputStream.write("--".getBytes());
this.aOutputStream.write("\r\n".getBytes());
this.aOutputStream.close();/*
final InputStream aInputStream = aURLConnection.getInputStream();
String sResponse = "";
byte[] tByte = new byte[500];
while (0 < aInputStream.available()) {
aInputStream.read(tByte);
sResponse += new String(tByte);
}
DirectRequestPOST.logger.debug(sResponse);*/
return (Observationresponse) DirectRequestPOST.aUnmarshaller.unmarshal(aURLConnection.getInputStream());
}
@Override
public EnumInputMethod getInputMethod () {
DirectRequestPOST.logger.trace("getInputMethod");
return EnumInputMethod.DIRECT;
}
public String toString () {
final int iStringBufferSize = 1000;
//final String sVariableSeparator = " ";
final StringBuffer aStringBuffer = new StringBuffer(iStringBufferSize);
aStringBuffer.append("url:").append(this.sURL);
//aStringBuffer.append(sVariableSeparator);
//aStringBuffer.append("param:").append(this.sParameter);
return aStringBuffer.toString();
}
}
--- NEW FILE: DirectRequestGET.java ---
// $Id: DirectRequestGET.java,v 1.1 2006/09/21 16:01:21 dleroy Exp $
// Author: Damien LEROY.
// (c) COPYRIGHT MIT, ERCIM ant Keio, 2006.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn.request;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import javax.xml.bind.JAXBException;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.generated.observationresponse.Observationresponse;
import org.w3c.unicorn.input.DirectInputModule;
import org.w3c.unicorn.input.InputModule;
import org.w3c.unicorn.util.Property;
/**
*
* @author Damien LEROY
*/
public class DirectRequestGET extends Request {
private String sURL = null;
private String sParameter = null;
protected DirectRequestGET (
final String sURL,
final String sInputParameterName,
final InputModule aInputModule) throws IOException {
DirectRequestGET.logger.trace("Constructor");
if (DirectRequestGET.logger.isDebugEnabled()) {
DirectRequestGET.logger.debug("URL : " + sURL + ".");
DirectRequestGET.logger.debug("Input parameter name : " + sInputParameterName + ".");
DirectRequestGET.logger.debug("Input module : " + aInputModule + ".");
}
if (!(aInputModule instanceof DirectInputModule)) {
throw new IllegalArgumentException("InputModule : " + aInputModule.toString() + ".");
}
this.sURL = sURL;
this.addParameter(sInputParameterName, aInputModule.getStringContent());
}
@Override
public void addParameter (final String sName, final String sValue) throws IOException {
DirectRequestGET.logger.trace("addParameter");
if (DirectRequestGET.logger.isDebugEnabled()) {
DirectRequestGET.logger.debug("Name :" + sName + ".");
DirectRequestGET.logger.debug("Value :" + sValue + ".");
}
if (null == this.sParameter) {
this.sParameter = "";
} else {
this.sParameter += "&";
}
this.sParameter += sName + "=" + URLEncoder.encode(sValue, Property.get("UNICORN_ENCODING"));
DirectRequestGET.logger.debug("Parameters : "+this.sParameter+".");
}
@Override
public Observationresponse doRequest () throws JAXBException, IOException {
DirectRequestGET.logger.trace("doRequest");
final URL aURL;
if (null == this.sParameter) {
aURL = new URL(this.sURL);
} else {
DirectRequestGET.logger.debug(this.sParameter);
aURL = new URL(this.sURL + "?" + this.sParameter);
}
final URLConnection aURLConnection = aURL.openConnection();
aURLConnection.setRequestProperty("Accept-Language", this.sLang);
return (Observationresponse) DirectRequestGET.aUnmarshaller.unmarshal(aURLConnection.getInputStream());
}
@Override
public EnumInputMethod getInputMethod () {
DirectRequestGET.logger.trace("getInputMethod");
return EnumInputMethod.DIRECT;
}
public String toString () {
final int iStringBufferSize = 1000;
final String sVariableSeparator = " ";
final StringBuffer aStringBuffer = new StringBuffer(iStringBufferSize);
aStringBuffer.append("url:").append(this.sURL);
aStringBuffer.append(sVariableSeparator);
aStringBuffer.append("param:").append(this.sParameter);
return aStringBuffer.toString();
}
}
Index: UploadRequest.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/request/UploadRequest.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- UploadRequest.java 31 Aug 2006 09:09:25 -0000 1.1.1.1
+++ UploadRequest.java 21 Sep 2006 16:01:22 -0000 1.2
@@ -6,6 +6,8 @@
import java.io.IOException;
import java.net.MalformedURLException;
+import java.util.Hashtable;
+import java.util.Map;
import javax.xml.bind.JAXBException;
@@ -21,7 +23,11 @@
*/
public class UploadRequest extends Request {
+ private String sURL = null;
+ private String sInputParameterName = null;
private ClientHttpRequest aClientHttpRequest = null;
+ private UploadInputModule aUploadInputModule = null;
+ private Map<String, String> mapOfParameter = null;
protected UploadRequest (
final String sURL,
@@ -36,12 +42,15 @@
if (!(aInputModule instanceof UploadInputModule)) {
throw new IllegalArgumentException("InputModule : " + aInputModule.toString() + ".");
}
- this.aClientHttpRequest = new ClientHttpRequest(sURL);
- final UploadInputModule aUploadInputModule = (UploadInputModule) aInputModule;
- this.aClientHttpRequest.setParameter(
- sInputParameterName,
- aUploadInputModule.getFileName(),
- aUploadInputModule.getInputStream());
+ this.sURL = sURL;
+ this.sInputParameterName = sInputParameterName;
+ this.aUploadInputModule = (UploadInputModule) aInputModule;
+ this.mapOfParameter = new Hashtable<String, String>();
+ //this.aClientHttpRequest = new ClientHttpRequest(sURL);
+ /*this.aClientHttpRequest.setParameter(
+ this.sInputParameterName,
+ this.aUploadInputModule.getFileName(),
+ this.aUploadInputModule.getInputStream());*/
}
@Override
@@ -51,12 +60,29 @@
UploadRequest.logger.debug("Name :" + sName + ".");
UploadRequest.logger.debug("Value :" + sValue + ".");
}
- this.aClientHttpRequest.setParameter(sName, sValue);
+ this.mapOfParameter.put(sName, sValue);
+ //this.aClientHttpRequest.setParameter(sName, sValue);
}
@Override
public Observationresponse doRequest() throws JAXBException, IOException {
UploadRequest.logger.trace("doRequest");
+ this.aClientHttpRequest = new ClientHttpRequest(sURL);
+ UploadRequest.logger.debug("Lang : "+this.sLang+".");
+ this.aClientHttpRequest.setLang(sLang); // meme place que pour directpost
+ this.aClientHttpRequest.setParameter(
+ this.sInputParameterName,
+ this.aUploadInputModule.getFileName(),
+ this.aUploadInputModule.getInputStream());
+ for (final String sName : this.mapOfParameter.keySet()) {
+ final String sValue = this.mapOfParameter.get(sName);
+ DirectRequestPOST.logger.trace("addParameter");
+ if (DirectRequestPOST.logger.isDebugEnabled()) {
+ DirectRequestPOST.logger.debug("Name :" + sName + ".");
+ DirectRequestPOST.logger.debug("Value :" + sValue + ".");
+ }
+ this.aClientHttpRequest.setParameter(sName, sValue);
+ }
final Observationresponse aObservationResponse;
aObservationResponse = (Observationresponse) UploadRequest.aUnmarshaller.unmarshal(this.aClientHttpRequest.post());
return aObservationResponse;
@@ -68,10 +94,6 @@
return EnumInputMethod.UPLOAD;
}
- public void setLang (final String sLang) {
- this.aClientHttpRequest.setLang(sLang);
- }
-
public String toString () {
final int iStringBufferSize = 1000;
final StringBuffer aStringBuffer = new StringBuffer(iStringBufferSize);
Index: RequestList.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/request/RequestList.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- RequestList.java 31 Aug 2006 09:09:25 -0000 1.1.1.1
+++ RequestList.java 21 Sep 2006 16:01:22 -0000 1.2
@@ -4,6 +4,8 @@
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn.request;
+import java.io.IOException;
+import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
@@ -14,19 +16,104 @@
* @author Damien LEROY
*
*/
-public interface RequestList {
+public class RequestList {
- public static final Log logger = LogFactory.getLog("org.w3c.unicorn.request");
+ private static final Log logger = LogFactory.getLog("org.w3c.unicorn.request");
- public abstract Request getRequest (final String sObserverID);
+ private String sLang = null;
- public abstract Map<String, Request> getRequest (final TPriority aTPriority);
+ public RequestList (final String sLang) {
+ RequestList.logger.debug("Lang : "+sLang+".");
+ this.sLang = sLang;
+ }
- public abstract Request getRequest (final TPriority aTPriority, final String sObserverName);
+ /**
+ * Map of request about the observer who handle the current mime type with a LOW priority.
+ */
+ private final Map<String, Request> mapOfRequestLOW = new LinkedHashMap<String, Request>();
- public abstract void addRequest (
+ /**
+ * Map of request about the observer who handle the current mime type with a MEDIUM priority.
+ */
+ private final Map<String, Request> mapOfRequestMEDIUM = new LinkedHashMap<String, Request>();
+
+ /**
+ * Map of request about the observer who handle the current mime type with a HIGH priority.
+ */
+ private final Map<String, Request> mapOfRequestHIGH = new LinkedHashMap<String, Request>();
+
+ public Request getRequest (final String sObserverID) {
+ RequestList.logger.trace("getRequest");
+ if (RequestList.logger.isDebugEnabled()) {
+ RequestList.logger.debug("Observer ID : " + sObserverID + ".");
+ }
+ Request aRequest = null;
+ aRequest = this.mapOfRequestHIGH.get(sObserverID);
+ if (null != aRequest) return aRequest;
+ aRequest = this.mapOfRequestMEDIUM.get(sObserverID);
+ if (null != aRequest) return aRequest;
+ return this.mapOfRequestLOW.get(sObserverID);
+ }
+
+ public Map<String, Request> getRequest (final TPriority aTPriority) {
+ RequestList.logger.trace("getRequest");
+ if (RequestList.logger.isDebugEnabled()) {
+ RequestList.logger.debug("Priority : " + aTPriority + ".");
+ }
+ switch (aTPriority) {
+ case HIGH :
+ return this.mapOfRequestHIGH;
+ case MEDIUM :
+ return this.mapOfRequestMEDIUM;
+ case LOW :
+ return this.mapOfRequestLOW;
+ }
+ return null;
+ }
+
+ public Request getRequest (final TPriority aTPriority, final String sObserverID) {
+ RequestList.logger.trace("getRequest");
+ if (RequestList.logger.isDebugEnabled()) {
+ RequestList.logger.debug("Priority : " + aTPriority + ".");
+ RequestList.logger.debug("Observer ID : " + sObserverID + ".");
+ }
+ return this.getRequest(aTPriority).get(sObserverID);
+ }
+
+ public void addRequest(
final Request aRequest,
final TPriority aTPriority,
- final String sObserverID);
+ final String sObserverID) throws IOException {
+ RequestList.logger.trace("addRequest");
+ if (RequestList.logger.isDebugEnabled()) {
+ RequestList.logger.debug("Request : " + aRequest + ".");
+ RequestList.logger.debug("TPriority : " + aTPriority + ".");
+ RequestList.logger.debug("String observer ID : " + sObserverID + ".");
+ }
+ aRequest.setLang(this.sLang);
+ switch (aTPriority) {
+ case HIGH :
+ this.mapOfRequestHIGH.put(sObserverID, aRequest);
+ return;
+ case MEDIUM :
+ this.mapOfRequestMEDIUM.put(sObserverID, aRequest);
+ return;
+ case LOW :
+ this.mapOfRequestLOW.put(sObserverID, aRequest);
+ return;
+ }
+ }
+
+ public String toString () {
+ final int iStringBufferSize = 1000;
+ final String sVariableSeparator = " ";
+ final StringBuffer aStringBuffer = new StringBuffer(iStringBufferSize);
+ aStringBuffer.append("HIGH:").append(this.mapOfRequestHIGH);
+ aStringBuffer.append(sVariableSeparator);
+ aStringBuffer.append("MEDIUM:").append(this.mapOfRequestMEDIUM);
+ aStringBuffer.append(sVariableSeparator);
+ aStringBuffer.append("LOW:").append(this.mapOfRequestLOW);
+ return aStringBuffer.toString();
+ }
}
--- DirectRequest.java DELETED ---
Index: Request.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/request/Request.java,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- Request.java 31 Aug 2006 09:09:25 -0000 1.1.1.1
+++ Request.java 21 Sep 2006 16:01:18 -0000 1.2
@@ -11,6 +11,7 @@
import javax.xml.bind.Unmarshaller;
import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.generated.observationresponse.Observationresponse;
import org.w3c.unicorn.input.InputModule;
@@ -21,7 +22,7 @@
*/
public abstract class Request {
- protected static final Log logger = RequestList.logger;
+ protected static final Log logger = LogFactory.getLog("org.w3c.unicorn.request");
public static Unmarshaller aUnmarshaller = null;
protected static JAXBContext aJAXBContext = null;
@@ -39,7 +40,8 @@
protected String sLang = null;
- public void setLang (final String sLang) {
+ public void setLang (final String sLang) throws IOException {
+ Request.logger.debug("setLang("+sLang+")");
this.sLang = sLang;
}
@@ -52,16 +54,22 @@
public static Request createRequest (
final InputModule aInputModule,
final String sURL,
- final String sInputParameterName) throws IOException {
+ final String sInputParameterName,
+ final boolean bIsPost) throws IOException {
Request.logger.trace("createRequest");
if (Request.logger.isDebugEnabled()) {
Request.logger.debug("InputModule : " + aInputModule + ".");
Request.logger.debug("URL : " + sURL + ".");
Request.logger.debug("Input parameter name : " + sInputParameterName + ".");
+ Request.logger.debug("POST method : " + bIsPost + ".");
}
switch (aInputModule.getEnumInputMethod()) {
case DIRECT :
- return new DirectRequest(sURL, sInputParameterName, aInputModule);
+ if ( bIsPost) {
+ return new DirectRequestPOST(sURL, sInputParameterName, aInputModule);
+ } else {
+ return new DirectRequestGET(sURL, sInputParameterName, aInputModule);
+ }
case UPLOAD :
return new UploadRequest(sURL, sInputParameterName, aInputModule);
case URI :
--- RequestListImpl.java DELETED ---
Received on Thursday, 21 September 2006 16:01:42 UTC