- From: Florent Batard via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 26 Aug 2008 15:32:44 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/org/w3c/unicorn
In directory hutz:/tmp/cvs-serv12288/org/w3c/unicorn
Modified Files:
Framework.java UnicornCall.java
Log Message:
Handling the new functionalities for the tasklist tree
Index: Framework.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/Framework.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- Framework.java 2 Jul 2008 17:34:47 -0000 1.12
+++ Framework.java 26 Aug 2008 15:32:42 -0000 1.13
@@ -30,8 +30,8 @@
import org.w3c.unicorn.tasklist.RDFUnmarshaller;
import org.w3c.unicorn.tasklist.RDFUnmarshallerJena;
import org.w3c.unicorn.tasklist.Task;
+import org.w3c.unicorn.tasklist.TaskListUnmarshallerBeans;
import org.w3c.unicorn.tasklist.TasksListUnmarshaller;
-import org.w3c.unicorn.tasklist.TasksListUnmarshallerJAXB;
import org.w3c.unicorn.util.ListFiles;
import org.w3c.unicorn.util.LocalizedString;
import org.w3c.unicorn.util.Property;
@@ -213,7 +213,7 @@
final File[] tFileXML = ListFiles.listFiles(Property
.get("PATH_TO_TASKLIST"), "\\.xml");
- final TasksListUnmarshaller aTaskListUnmarshaller = new TasksListUnmarshallerJAXB(
+ final TasksListUnmarshaller aTaskListUnmarshaller = new TaskListUnmarshallerBeans(
Framework.mapOfObserver);
for (final File aFile : tFileXML) {
aTaskListUnmarshaller.addURL(aFile.toURI().toURL());
Index: UnicornCall.java
===================================================================
RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/UnicornCall.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- UnicornCall.java 24 Jul 2008 09:51:53 -0000 1.10
+++ UnicornCall.java 26 Aug 2008 15:32:42 -0000 1.11
@@ -13,7 +13,6 @@
import java.util.Map;
import javax.activation.MimeType;
-import javax.xml.bind.JAXBException;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.logging.Log;
@@ -24,18 +23,19 @@
import org.w3c.unicorn.exceptions.EmptyDocumentException;
import org.w3c.unicorn.exceptions.NoDocumentException;
import org.w3c.unicorn.exceptions.NoMimeTypeException;
-import org.w3c.unicorn.exceptions.UnsupportedMimeTypeException;
-import org.w3c.unicorn.generated.tasklist.TPriority;
import org.w3c.unicorn.input.InputFactory;
import org.w3c.unicorn.request.Request;
import org.w3c.unicorn.request.RequestList;
import org.w3c.unicorn.response.Response;
import org.w3c.unicorn.response.parser.ResponseParserFactory;
-import org.w3c.unicorn.tasklist.Observation;
import org.w3c.unicorn.tasklist.Task;
import org.w3c.unicorn.tasklist.parameters.Mapping;
import org.w3c.unicorn.tasklist.parameters.Parameter;
import org.w3c.unicorn.tasklist.parameters.Value;
+import org.w3c.unicorn.tasklisttree.TLTCond;
+import org.w3c.unicorn.tasklisttree.TLTExec;
+import org.w3c.unicorn.tasklisttree.TLTIf;
+import org.w3c.unicorn.tasklisttree.TLTNode;
import org.w3c.unicorn.util.Property;
/**
@@ -71,36 +71,10 @@
private Map<String, String[]> mapOfStringParameter = null;
- // Results
- /**
- * Data Structure for the response with high priority
- */
- private Map<String, Response> mapOfResponseHigh;
-
- /**
- * Data Structure for the response with medium priority
- */
- private Map<String, Response> mapOfResponseMedium;
-
- /**
- * Data Structure for the response with low priority
- */
- private Map<String, Response> mapOfResponseLow;
-
- /**
- * Tells if the high priority check passed
- */
- private boolean bPassedHigh;
-
/**
- * Tells if the medium priority check passed
- */
- private boolean bPassedMedium;
-
- /**
- * Tells if the low priority check passed
+ * Data Structure for the response
*/
- private boolean bPassedLow;
+ private Map<String, Response> mapOfResponse;
/**
* Active threads number in doRequests() method
@@ -120,14 +94,7 @@
this.mapOfStringParameter = new LinkedHashMap<String, String[]>();
- this.mapOfResponseHigh = new LinkedHashMap<String, Response>();
- this.mapOfResponseMedium = new LinkedHashMap<String, Response>();
- this.mapOfResponseLow = new LinkedHashMap<String, Response>();
-
- this.bPassedHigh = true;
- this.bPassedMedium = true;
- this.bPassedLow = true;
-
+ this.mapOfResponse = new LinkedHashMap<String, Response>();
this.nbActiveThreads = 0;
}
@@ -199,25 +166,36 @@
UnicornCall.logger
.debug("MimeType : " + aMimeType.toString() + ".");
}
- /*
- * Check if the mimetype is handle by the asked task redirect
- * automatically to another input method if this one does not support
- * this mimetype
- */
- if (!this.aTask.allowMimeType(aMimeType)) {
- UnicornCall.logger.error("Task " + this.aTask.getID()
- + " does not support the mimetype " + aMimeType.toString()
- + ".");
- throw new UnsupportedMimeTypeException(aMimeType.toString() + ".");
- }
+
// Create input method
final InputFactory aInputFactory = new InputFactory(aMimeType,
this.aEnumInputMethod, this.oInputParameterValue);
+ this.doNode(aInputFactory,this.aTask.getTree());
+
+
+ aInputFactory.dispose();
+ }
+
+ /**
+ * Main function called to do the recursion over the Task tree to launch the requests
+ * @param aInputFactory InputFactory used for the resquests
+ * @param node the current node that we're parsing in the Task tree
+ * @throws Exception raised from generateRequestList and doRequest
+ */
+ private void doNode(InputFactory aInputFactory,TLTNode node) throws Exception{
// Generate the list of request
+ UnicornCall.logger.trace("doNode.");
+ if (UnicornCall.logger.isDebugEnabled()) {
+ UnicornCall.logger.debug("InputFactory : " + aInputFactory
+ + ".");
+ UnicornCall.logger.debug("Current node : "
+ + node + ".");
+ }
+ if(node!=null){
this.aRequestList = this.generateRequestList(aInputFactory,
- this.mapOfStringParameter);
+ this.mapOfStringParameter,node);
if (UnicornCall.logger.isDebugEnabled()) {
UnicornCall.logger
@@ -225,17 +203,58 @@
}
// send requests to observer
- this.bPassedHigh = this.doRequests(TPriority.HIGH);
- if (!this.bPassedHigh)
- return;
- this.bPassedMedium = this.doRequests(TPriority.MEDIUM);
- if (!this.bPassedMedium)
- return;
- this.bPassedLow = this.doRequests(TPriority.LOW);
-
- aInputFactory.dispose();
+ this.doRequests();
+
+ UnicornCall.logger.info("Check the condition of the Ifs");
+ //browse the conditions to do the connection
+ for(TLTIf ifs: node.getIfList()){
+ if(this.checkCond(ifs))this.doNode(aInputFactory,ifs.getIfOk());
+ else this.doNode(aInputFactory,ifs.getIfNotOk());
+ }
+ }
+ else{
+ //Inform if the node is null
+ if (UnicornCall.logger.isDebugEnabled()) {
+ UnicornCall.logger
+ .debug("The node is null at this point.");
+ }
+ }
+
}
-
+
+ /**
+ * 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
+ */
+ private boolean checkCond(TLTIf ifs){
+ UnicornCall.logger.trace("checkCond.");
+ if (UnicornCall.logger.isDebugEnabled()) {
+ UnicornCall.logger.debug("If node : " + ifs
+ + ".");
+ }
+ boolean conditionOK=true;
+ //TODO boolean to manage the OR in the conditions, if the donc is false we change the boolean to false , if not we don't care
+ //that will simulate the OR
+ for(TLTCond cond:ifs.getCondArray()){
+
+ }
+ return conditionOK;
+ }
+
+ /**
+ * 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
+ */
+ private Map<String,Observer> createExecList(TLTNode node){
+ Map<String,Observer> mapOfCurrentNodeObserver=new LinkedHashMap<String, Observer>();
+ for (TLTExec exec : node.getExecutionList()) {
+ mapOfCurrentNodeObserver.put(exec.getValue(),exec.getObserver());
+ }
+ return mapOfCurrentNodeObserver;
+ }
+
+
/**
* Adds 1 to active threads number
*/
@@ -279,31 +298,13 @@
* @throws IOException
* Input/Output error
*/
- private boolean doRequests(final TPriority aTPriority) throws IOException,
- JAXBException {
+ private boolean doRequests() throws IOException{
UnicornCall.logger.trace("doRequest");
- if (UnicornCall.logger.isDebugEnabled()) {
- UnicornCall.logger.debug("Priority : " + aTPriority + ".");
- }
bPassed = true;
-
- final Map<String, Response> mapOfResponse;
- switch (aTPriority) {
- case HIGH:
- mapOfResponse = this.mapOfResponseHigh;
- break;
- case LOW:
- mapOfResponse = this.mapOfResponseLow;
- break;
- case MEDIUM:
- mapOfResponse = this.mapOfResponseMedium;
- break;
- default:
- mapOfResponse = null;
- }
+
final Map<String, Request> requests = this.aRequestList
- .getRequest(aTPriority);
+ .getRequestMap();
// Creation of the thread list
ArrayList<Thread> threadsList = new ArrayList<Thread>();
@@ -338,15 +339,13 @@
* Input factory for the parameter
* @param mapOfArrayUseParameter
* array of the parameter
+ * @param node the current node that we are parsing
* @return the list of the request for the call
* @throws Exception
* error occured during the process
*/
- //TODO Changer la génération de la liste pour prendre en compte les level d'execution
- //Adapter la Map dans la RequestList
- //Dans le doTask on bouclera tant qu'on trouve des lvl d'execution superieur
private RequestList generateRequestList(final InputFactory aInputFactory,
- final Map<String, String[]> mapOfArrayUseParameter)
+ final Map<String, String[]> mapOfArrayUseParameter,TLTNode node)
throws Exception {
// Log information
@@ -356,7 +355,7 @@
UnicornCall.logger.debug("Map of string parameter : "
+ mapOfArrayUseParameter + ".");
}
-
+
final MimeType aMimeType = aInputFactory.getMimeType();
final EnumInputMethod aEnumInputMethod = aInputFactory
.getDefaultInputModule().getEnumInputMethod();
@@ -364,9 +363,10 @@
final RequestList aRequestList = new RequestList(this.sLang);
// Iterate over all observation of this task to build a basic
// request list with only the url of observator and input parameter
- for (final Observation aObservation : this.aTask.getMapOfObservation()
- .values()) {
- final Observer aObserver = aObservation.getObserver();
+ //Il faut creer une list avec tous les exec et toutes les rencardeur de ifs
+ //Une liste d'Observer
+
+ 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)) {
@@ -402,7 +402,7 @@
+ aEIM.toString() + ".");
}
- final InputMethod aInputMethod = aObservation.getObserver()
+ final InputMethod aInputMethod = aObserver
.getInputMethod(aEIM);
// create a new request with input parameter
final Request aRequest = Request.createRequest(
@@ -413,8 +413,7 @@
.getResponseType());
// add this request to request list
- aRequestList.addRequest(aRequest, aObservation
- .getPriority(aMimeType), sObserverID);
+ aRequestList.addRequest(aRequest,""+node.getID());
// log debug information
if (UnicornCall.logger.isDebugEnabled()) {
UnicornCall.logger.debug("Redirect request " + aRequest
@@ -460,7 +459,7 @@
String[] valOfUcnLang = this.mapOfStringParameter.get("ucn_lang");
// Get name of the lang parameter (defined in RDF file)
- String observerParamLangName = aObservation.getObserver()
+ String observerParamLangName = aObserver
.getParamLangName();
// If lang parameter exists, we add name and value in parameters of
@@ -470,8 +469,7 @@
}
// Add this request to request list
- aRequestList.addRequest(aRequest, aObservation
- .getPriority(aMimeType), sObserverID);
+ aRequestList.addRequest(aRequest,""+node.getID());
// Log debug information
if (UnicornCall.logger.isDebugEnabled()) {
UnicornCall.logger.debug("Request " + aRequest
@@ -512,7 +510,6 @@
if (null == mapOfDefaultValue || 0 == mapOfDefaultValue.size()) {
UnicornCall.logger.warn("Parameter " + sTaskParameterName
+ " has no value intput and no default value.");
- // TODO check if this parameter is required
continue;
}
tStringUseParameterValue = new String[mapOfDefaultValue
@@ -539,21 +536,12 @@
.next();
final Map<String, List<Mapping>> mapOfMapping = aValue
.getMapOfMapping();
+
for (final String sObserverName : mapOfMapping.keySet()) {
- final Observation aObservation = this.aTask
- .getMapOfObservation().get(sObserverName);
+
final Request aRequest = aRequestList
.getRequest(sObserverName);
- final TPriority aTPriority = aObservation
- .getPriority(aMimeType);
- if (null == aTPriority) {
- if (UnicornCall.logger.isDebugEnabled()) {
- UnicornCall.logger.debug("Observator "
- + sObserverName + " unhandle mimetype "
- + aMimeType.getBaseType() + ".");
- }
- continue;
- }
+
for (final Mapping aMapping : mapOfMapping
.get(sObserverName)) {
final String sValue = aMapping.getValue();
@@ -565,28 +553,20 @@
}
aRequest.addParameter(aMapping.getParam(), sValue);
}
+
} // foreach mapOfMapping.keySet()
+
continue;
}
+
for (final String sUseParameterValue : tStringUseParameterValue) {
final Value aValue = mapOfValue.get(sUseParameterValue);
final Map<String, List<Mapping>> mapOfMapping = aValue
.getMapOfMapping();
for (final String sObserverName : mapOfMapping.keySet()) {
- final Observation aObservation = this.aTask
- .getMapOfObservation().get(sObserverName);
final Request aRequest = aRequestList
.getRequest(sObserverName);
- final TPriority aTPriority = aObservation
- .getPriority(aMimeType);
- if (null == aTPriority) {
- if (UnicornCall.logger.isDebugEnabled()) {
- UnicornCall.logger.debug("Observator "
- + sObserverName + " unhandle mimetype "
- + aMimeType.getBaseType() + ".");
- }
- continue;
- }
+
for (final Mapping aMapping : mapOfMapping
.get(sObserverName)) {
final String sValue = aMapping.getValue();
@@ -601,62 +581,19 @@
}
} // foreach mapOfMapping.keySet()
} // foreach sArrayParameterValue
+
} // foreach this.parameters.values()
+
return aRequestList;
}
/**
- * Returns the responses of high priority observations.
- *
- * @return responses of high priority observations.
- */
- public Map<String, Response> getHighResponses() {
- return this.mapOfResponseHigh;
- }
-
- /**
- * Returns the responses of medium priority observations.
- *
- * @return Returns the responses of medium priority observations.
- */
- public Map<String, Response> getMediumResponses() {
- return this.mapOfResponseMedium;
- }
-
- /**
* Returns the responses of low priority observations.
*
* @return responses of low priority observations.
*/
- public Map<String, Response> getLowResponses() {
- return this.mapOfResponseLow;
- }
-
- /**
- * Return the boolean if high checks have passed
- *
- * @return Returns the highPassed.
- */
- public boolean haveHighPassed() {
- return this.bPassedHigh;
- }
-
- /**
- * Return the boolean if low checks have passed
- *
- * @return Returns the lowPassed.
- */
- public boolean haveLowPassed() {
- return this.bPassedLow;
- }
-
- /**
- * Return the boolean if medium checks have passed
- *
- * @return Returns the mediumPassed.
- */
- public boolean haveMediumPassed() {
- return this.bPassedMedium;
+ public Map<String, Response> getResponses() {
+ return this.mapOfResponse;
}
/**
@@ -714,11 +651,6 @@
* @return map of the observations of the check
*/
public Map<String, Response> getObservationList() {
- final Map<String, Response> mapOfResponse;
- mapOfResponse = new LinkedHashMap<String, Response>();
- mapOfResponse.putAll(this.mapOfResponseHigh);
- mapOfResponse.putAll(this.mapOfResponseMedium);
- mapOfResponse.putAll(this.mapOfResponseLow);
return mapOfResponse;
}
@@ -874,6 +806,7 @@
e1.printStackTrace();
}
}
+
synchronized (mapOfResponse) {
mapOfResponse.put(obsID, aResponse);
Received on Tuesday, 26 August 2008 15:33:19 UTC