2006/unicorn/org/w3c/unicorn Framework.java,1.16,1.17 UnicornCall.java,1.21,1.22

Update of /sources/public/2006/unicorn/org/w3c/unicorn
In directory hutz:/tmp/cvs-serv10640/org/w3c/unicorn

Modified Files:
	Framework.java UnicornCall.java 
Log Message:
MimeTypes work again for DirectInput

Index: Framework.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/Framework.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- Framework.java	12 Sep 2008 18:01:51 -0000	1.16
+++ Framework.java	19 Sep 2008 18:57:11 -0000	1.17
@@ -183,6 +183,7 @@
 							.getMapOfInputMethod());
 					aObserver.setResponseType(aWADLUnmarshaller
 							.getResponseType());
+          aObserver.setSupportedMimeTypes(aWADLUnmarshaller.getSupportedMimeTypes());
 					Framework.mapOfObserver.put(new String(aObserver.getID()),
 							aObserver);
 				} catch (final Exception e) {
@@ -211,7 +212,7 @@
 		try {
 			// parse all the task files
 			final File[] tFileXML = ListFiles.listFiles(Property
-					.get("PATH_TO_TASKLIST"), "\\.xml");
+					.get("PATH_TO_TASKLIST"), "\\.xml$");
 
 			final TasksListUnmarshaller aTaskListUnmarshaller = 
 				new TaskListUnmarshallerBeans(Framework.mapOfObserver);
@@ -221,7 +222,7 @@
 			aTaskListUnmarshaller.unmarshal();
 			
 			final File[] tFileRDF = ListFiles.listFiles(Property
-					.get("PATH_TO_TASKLIST"), "\\.rdf");
+					.get("PATH_TO_TASKLIST"), "\\.rdf$");
 			final RDFUnmarshaller aRDFUnmarshaller = new RDFUnmarshallerJena();
 			aRDFUnmarshaller.setMapOfTask(aTaskListUnmarshaller.getMapOfTask());
 			aRDFUnmarshaller.setMapOfObserver(Framework.mapOfObserver);

Index: UnicornCall.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/UnicornCall.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- UnicornCall.java	12 Sep 2008 18:01:51 -0000	1.21
+++ UnicornCall.java	19 Sep 2008 18:57:11 -0000	1.22
@@ -56,7 +56,7 @@
 
 /**
  * UnicornCall Created: Jun 29, 2006 2:44:12 PM
- * 
+ *
  * @author Jean-Guilhem Rouel
  */
 public class UnicornCall {
@@ -116,7 +116,7 @@
 
 	/**
 	 * Execute the task aTask
-	 * 
+	 *
 	 * @throws Exception
 	 */
 	public void doTask() throws Exception {
@@ -133,55 +133,7 @@
 		}
 
 		// find mimetype of the document
-		UnicornCall.logger.info("Check MimeType.");
-		MimeType aMimeType = null;
-		String sMimeType;
-		switch (this.aEnumInputMethod) {
-		case URI:
-			sMimeType = (new URL(this.sDocumentName)).openConnection()
-					.getContentType();
-			if (null == sMimeType || "".equals(sMimeType)) {
-				UnicornCall.logger.error("No specified mimetype for upload.");
-				throw new NoMimeTypeException("Mimetype not found");
-			}
-			if (UnicornCall.logger.isDebugEnabled()) {
-				UnicornCall.logger.debug("URI MimeType : " + sMimeType + ".");
-			}
-			sMimeType = sMimeType.split(";")[0];
-			aMimeType = new MimeType(sMimeType);
-			break;
-		case UPLOAD:
-			FileItem f = (FileItem) this.oInputParameterValue;
-			if (f.getName() == null || f.getName().equals("")) {
-				UnicornCall.logger.error("No document privided.");
-				throw new NoDocumentException("No document provided");
-			}
-			if (f.getSize() == 0) {
-				UnicornCall.logger.error("Empty document provided.");
-				throw new EmptyDocumentException("Empty document provided");
-			}
-
-			sMimeType = ((FileItem) this.oInputParameterValue).getContentType();
-			if (null == sMimeType || "".equals(sMimeType)) {
-				UnicornCall.logger.error("No specified mimetype for upload.");
-				throw new NoMimeTypeException("Mimetype not found");
-			}
-			aMimeType = new MimeType(sMimeType);
-			break;
-		case DIRECT:
-			sMimeType = this.mapOfStringParameter.get("ucn_mime")[0];
-			if (null == sMimeType || "".equals(sMimeType)) {
-				UnicornCall.logger
-						.error("No mimetype specified for direct input.");
-				throw new NoMimeTypeException("Mimetype not found.");
-			}
-			aMimeType = new MimeType(sMimeType);
-			break;
-		}
-		if (UnicornCall.logger.isDebugEnabled()) {
-			UnicornCall.logger
-					.debug("MimeType : " + aMimeType.toString() + ".");
-		}
+		MimeType aMimeType = this.getMimeType();
 
 		// Create input method
 		final InputFactory aInputFactory = new InputFactory(aMimeType,
@@ -195,7 +147,7 @@
 	/**
 	 * Main function called to do the recursion over the Task tree to launch the
 	 * requests
-	 * 
+	 *
 	 * @param aInputFactory
 	 *            InputFactory used for the resquests
 	 * @param node
@@ -243,7 +195,7 @@
 	/**
 	 * Check the conditions of the if branch it makes a OR between all
 	 * conditions
-	 * 
+	 *
 	 * @param ifs
 	 *            the if branch to check
 	 * @return whether or not the conditions are true
@@ -269,7 +221,7 @@
 
 	/**
 	 * Creates the map of all the Observer to call in the current node
-	 * 
+	 *
 	 * @param node
 	 *            the current node of the Task tree we are parsing
 	 */
@@ -297,7 +249,7 @@
 
 	/**
 	 * Change the value the boolean bPassed
-	 * 
+	 *
 	 * @param b
 	 *            new value
 	 */
@@ -307,7 +259,7 @@
 
 	/**
 	 * getter for bPassed
-	 * 
+	 *
 	 * @return the value of bPassed
 	 */
 	public boolean getBPassed() {
@@ -316,7 +268,7 @@
 
 	/**
 	 * Execute the request depending on the priority
-	 * 
+	 *
 	 * @param aTPriority
 	 *            priority of the request
 	 * @throws IOException
@@ -357,7 +309,7 @@
 
 	/**
 	 * Generate the list of the request for the call
-	 * 
+	 *
 	 * @param aInputFactory
 	 *            Input factory for the parameter
 	 * @param mapOfArrayUseParameter
@@ -393,89 +345,41 @@
 		for (final Observer aObserver : this.createExecList(node).values()) {
 			final String sObserverID = aObserver.getID();
 			// add only observer who handle the current mimetype
-			if (!aObserver.canHandleMimeType(aMimeType, aEnumInputMethod)) {
+			if (!aObserver.canHandleMimeType(aMimeType)) {
 				if (UnicornCall.logger.isDebugEnabled()) {
 					UnicornCall.logger.debug("Observer " + sObserverID
-							+ " not handle mime type " + aMimeType.toString()
-							+ " with input method "
-							+ aEnumInputMethod.toString() + ".");
-				}
-
-				for (final EnumInputMethod aEIM : EnumInputMethod.values()) {
-					if (aEnumInputMethod == aEIM) {
-						continue;
-					}
-					if (!aObserver.canHandleMimeType(aMimeType, aEIM)) {
-
-						if (UnicornCall.logger.isDebugEnabled()) {
-							UnicornCall.logger.debug("Observer " + sObserverID
-									+ " not handle mime type "
-									+ aMimeType.toString()
-									+ " with input method " + aEIM.toString()
-									+ ".");
-						}
-						continue;
-					}
-
-					if (UnicornCall.logger.isDebugEnabled()) {
-						UnicornCall.logger
-								.debug("Observer " + sObserverID
-										+ " handle mime type "
-										+ aMimeType.toString()
-										+ " with input method "
-										+ aEIM.toString() + ".");
-					}
-
-					final InputMethod aInputMethod = aObserver
-							.getInputMethod(aEIM);
-					// create a new request with input parameter
-					final Request aRequest = Request.createRequest(
-							aInputFactory.getInputModule(aEIM), aInputMethod
-									.getCallMethod().getURL().toString(),
-							aInputMethod.getCallParameter().getName(),
-							aInputMethod.getCallMethod().isPost(), aObserver
-									.getResponseType());
-					// add this request to request list
-
-					aRequestList.addRequest(aRequest, aObserver.getID());
-					// log debug information
-					if (UnicornCall.logger.isDebugEnabled()) {
-						UnicornCall.logger.debug("Redirect request " + aRequest
-								+ " from " + aEnumInputMethod + " to " + aEIM
-								+ " added to request list.");
-					}
-					// add required parameter
-					for (final CallParameter aCallParameter : aObserver
-							.getCallMethod(aEIM).getMapOfCallParameter()
-							.values()) {
-						if (aCallParameter.isRequired()
-								&& aCallParameter.isFixed()) {
-							aRequest.addParameter(aCallParameter.getName(),
-									aCallParameter.getFixed());
-						}
-					}
-					break;
+                      + " does not handle mime type " + aMimeType.toString());
 				}
+        continue;
+      }
+      // the best available observation method
+      final InputMethod aInputMethod = aObserver.getBestInputMethod(aEnumInputMethod);
 
-				// check the code to redirect to an other
-				// input method if it handle mime type
-				if (UnicornCall.logger.isDebugEnabled()) {
-					UnicornCall.logger.debug("Observation " + sObserverID
-							+ " does not handle mimetype "
-							+ aMimeType.toString() + " with any input method.");
-				}
-				continue;
-			}
-			final InputMethod aInputMethod = aObserver
-					.getInputMethod(aEnumInputMethod);
+      // create a new request with input parameter
+      final Request aRequest = Request.createRequest(
+                                                     // the corresponding best input module
+                                                     aInputFactory.getInputModule(aInputMethod.getMethod()),
+                                                     // URL of the service to call
+                                                     aInputMethod.getCallMethod().getURL().toString(),
+                                                     // Name of the parameter holding resource information
+                                                     // (uri,url,txt,text,file,...)
+                                                     aInputMethod.getCallParameter().getName(),
+                                                     // Has a file been uploaded?
+                                                     aInputMethod.getCallMethod().isPost(),
+                                                     // Response format
+                                                     aObserver.getResponseType());
 
-			// Create a new request with input parameter
-			final Request aRequest = Request.createRequest(aInputFactory
-					.getInputModule(aEnumInputMethod), aInputMethod
-					.getCallMethod().getURL().toString(), aInputMethod
-					.getCallParameter().getName(), aInputMethod.getCallMethod()
-					.isPost(), aObserver.getResponseType());
+      // add this request to request list
+      aRequestList.addRequest(aRequest, aObserver.getID());
+			
+      // log debug information
+      if (UnicornCall.logger.isDebugEnabled()) {
+          UnicornCall.logger.debug("Redirect request " + aRequest
+                                   + " from " + aEnumInputMethod + " to " + aInputMethod.getMethod()
+                                   + " added to request list.");
+      }
 
+    
 			// Get value of ucn_lang parameter to associate it with parameter
 			// lang of the observer (if it has one).
 			// ucn_lang is defined in forms of index templates
@@ -493,20 +397,24 @@
 
 			// Add this request to request list
 			aRequestList.addRequest(aRequest, aObserver.getID());
+
 			// Log debug information
 			if (UnicornCall.logger.isDebugEnabled()) {
 				UnicornCall.logger.debug("Request " + aRequest
 						+ " added to request list.");
 			}
-			// Add required parameter
+			
+      // Add fixed parameter
+      for (final CallParameter aCallParameter : aObserver
+               .getCallMethod(aInputMethod.getMethod()).getMapOfCallParameter()
+               .values()) {
+          if (aCallParameter.isRequired()
+              && aCallParameter.isFixed()) {
+							aRequest.addParameter(aCallParameter.getName(),
+                                    aCallParameter.getFixed());
+          }
+      }
 
-			for (final CallParameter aCallParameter : aObserver.getCallMethod(
-					aEnumInputMethod).getMapOfCallParameter().values()) {
-				if (aCallParameter.isRequired() && aCallParameter.isFixed()) {
-					aRequest.addParameter(aCallParameter.getName(),
-							aCallParameter.getFixed());
-				}
-			}
 		} // foreach this.aTask.getMapOfObservation().values()
 
 		// Iterate over all parameter of this task to add at the
@@ -586,8 +494,9 @@
 				final Value aValue = mapOfValue.get(sUseParameterValue);
 				final Map<String, List<Mapping>> mapOfMapping = aValue
 						.getMapOfMapping();
+
 				for (final String sObserverName : mapOfMapping.keySet()) {
-					
+
 					if (aRequestList.getRequest(sObserverName)!=null) {
 						final Request aRequest = aRequestList
 								.getRequest(sObserverName);
@@ -615,7 +524,7 @@
 
 	/**
 	 * Returns the responses of low priority observations.
-	 * 
+	 *
 	 * @return responses of low priority observations.
 	 */
 	public Map<String, Response> getResponses() {
@@ -624,7 +533,7 @@
 
 	/**
 	 * Set the task to perform
-	 * 
+	 *
 	 * @param sTaskID
 	 *            ID of the task to perform
 	 */
@@ -643,7 +552,7 @@
 
 	/**
 	 * define the lang of the check
-	 * 
+	 *
 	 * @param sLang
 	 *            defines the lang to configure
 	 */
@@ -654,7 +563,7 @@
 
 	/**
 	 * Returns the document name
-	 * 
+	 *
 	 * @return Returns the documentName.
 	 */
 	public String getDocumentName() {
@@ -663,7 +572,7 @@
 
 	/**
 	 * Set the name of the document
-	 * 
+	 *
 	 * @param sDocumentName
 	 *            The documentName to set.
 	 */
@@ -673,7 +582,7 @@
 
 	/**
 	 * Gives the list of the observations
-	 * 
+	 *
 	 * @return map of the observations of the check
 	 */
 	public Map<String, Response> getObservationList() {
@@ -689,7 +598,7 @@
 
 	/**
 	 * Enter a new parameter in the list
-	 * 
+	 *
 	 * @param sName
 	 *            Name of the parameter
 	 * @param tStringValue
@@ -716,7 +625,7 @@
 
 	/**
 	 * Set the map of String Parameter
-	 * 
+	 *
 	 * @param mapOfStringParameter
 	 *            The mapOfStringParameter to set.
 	 */
@@ -727,7 +636,7 @@
 
 	/**
 	 * Returns the current task
-	 * 
+	 *
 	 * @return Returns the current task.
 	 */
 	public Task getTask() {
@@ -736,7 +645,7 @@
 
 	/**
 	 * Set the aEnumInputMethod
-	 * 
+	 *
 	 * @param enumInputMethod
 	 *            The aEnumInputMethod to set.
 	 */
@@ -746,7 +655,7 @@
 
 	/**
 	 * Set the uploadedFile
-	 * 
+	 *
 	 * @param uploadedFile
 	 *            The uploadedFile to set.
 	 */
@@ -757,7 +666,7 @@
 	/**
 	 * Giving a TLTCond, checks in the map of response if the condition passes
 	 * or fails and consequently returns a boolean.
-	 * 
+	 *
 	 * @param cond
 	 *            The condition to check
 	 * @return true if there is a matching response and if the condition passes
@@ -771,7 +680,7 @@
 		UnicornCall.logger.trace("condValue : " + cond.getValue());
 
 		boolean passed = false;
-    
+
     if (cond.getType().equals(EnumCondType.MIMETYPE)) {
 				passed = cond.getValue().equals(getMimeType().toString());
     }
@@ -782,23 +691,23 @@
         // and if it is passed
         if (res != null) {
             String xmlStr = res.getXml().toString();
-            
+
             DocumentBuilderFactory xmlFact = DocumentBuilderFactory
                 .newInstance();
-            
+
             // namespace awareness is escaped since we don't use it
             // for the moment
             xmlFact.setNamespaceAware(false);
-            
+
             DocumentBuilder builder = xmlFact.newDocumentBuilder();
-            
+
             Document doc = builder.parse(new java.io.ByteArrayInputStream(
                                                                           xmlStr.getBytes()));
-            
+
             String xpathStr = cond.getValue();
-            
+
             XPathFactory xpathFact = new XPathFactoryImpl();
-            
+
             XPath xpath = xpathFact.newXPath();
             XPathExpression xpe = xpath.compile(xpathStr);
             passed = (Boolean) xpe.evaluate(doc, XPathConstants.BOOLEAN);
@@ -811,11 +720,11 @@
 	}
 
 	/**
-	 * 
+	 *
 	 * @return The MimeType of the document
 	 * @throws Exception
 	 */
-	public MimeType getMimeType() throws Exception {
+	private MimeType getMimeType() throws Exception {
 
 		UnicornCall.logger.trace("getMimeType");
 		MimeType aMimeType = null;
@@ -875,9 +784,9 @@
 
 /**
  * Thread executing a request
- * 
+ *
  * @author Damien Leroy
- * 
+ *
  */
 class RequestThread extends Thread {
 	/**
@@ -907,7 +816,7 @@
 
 	/**
 	 * Initialize the thread by filling the properties
-	 * 
+	 *
 	 * @param mapOfResponse
 	 *            the map of the responses
 	 * @param aRequest
@@ -930,7 +839,6 @@
 	 * Allow to launch the thread
 	 */
 	public void run() {
-
 		this.unicornCall.incCounter();
 		Response aResponse = null;
 		try {
@@ -949,8 +857,8 @@
           while((readLength = isr.read(chararray, 0, 8192)) > -1) {
               builder.append(chararray, 0, readLength);
           }
-          
-          aResponse = ResponseParserFactory.parse(builder.toString(), 
+
+          aResponse = ResponseParserFactory.parse(builder.toString(),
                                                   this.aRequest.getResponseType());
           aResponse.setXml(builder);
 			} catch (MalformedURLException e1) {

Received on Friday, 19 September 2008 19:22:27 UTC