- From: Jonathan Barouh via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 05 Sep 2008 14:51:25 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/org/w3c/unicorn In directory hutz:/tmp/cvs-serv13732/org/w3c/unicorn Modified Files: UnicornCall.java Log Message: Working version after the first week of debugging. Index: UnicornCall.java =================================================================== RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/UnicornCall.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- UnicornCall.java 4 Sep 2008 13:16:19 -0000 1.17 +++ UnicornCall.java 5 Sep 2008 14:51:23 -0000 1.18 @@ -176,97 +176,104 @@ .debug("MimeType : " + aMimeType.toString() + "."); } - // Create input method final InputFactory aInputFactory = new InputFactory(aMimeType, this.aEnumInputMethod, this.oInputParameterValue); - this.doNode(aInputFactory,this.aTask.getTree()); - - + 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 + * 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{ + 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 + "."); + UnicornCall.logger.debug("InputFactory : " + aInputFactory + "."); + UnicornCall.logger.debug("Current node : " + node + "."); } - if(node!=null){ - this.aRequestList = this.generateRequestList(aInputFactory, - this.mapOfStringParameter,node); + if (node != null) { + this.aRequestList = this.generateRequestList(aInputFactory, + this.mapOfStringParameter, node); - if (UnicornCall.logger.isDebugEnabled()) { - UnicornCall.logger - .debug("RequestList : " + this.aRequestList + "."); - } + if (UnicornCall.logger.isDebugEnabled()) { + UnicornCall.logger.debug("RequestList : " + this.aRequestList + + "."); + } - // send requests to observer - 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 + // send requests to observer + 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."); + 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 + * 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 - * @throws Exception + * @throws Exception */ - private boolean checkCond(TLTIf ifs) throws Exception{ + private boolean checkCond(TLTIf ifs) throws Exception { UnicornCall.logger.trace("checkCond."); if (UnicornCall.logger.isDebugEnabled()) { - UnicornCall.logger.debug("If node : " + ifs - + "."); + UnicornCall.logger.debug("If node : " + ifs + "."); } - boolean conditionOK=true; - //boolean to manage the OR in the conditions, if the cond is false we change the boolean to false , if not we don't care - //that will simulate the OR - for(TLTCond cond:ifs.getCondArray()){ - if(!this.checkCond(cond))conditionOK=false; - + boolean conditionOK = false; + // boolean to manage the OR in the conditions, if the cond is false we + // change the boolean to true , if not we don't care + // that will simulate the OR + for (TLTCond cond : ifs.getCondArray()) { + if (this.checkCond(cond)) + conditionOK = true; + } 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 + * + * @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>(); + 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()); + mapOfCurrentNodeObserver.put(exec.getValue(), exec.getObserver()); } return mapOfCurrentNodeObserver; } - - + /** * Adds 1 to active threads number */ @@ -310,13 +317,12 @@ * @throws IOException * Input/Output error */ - private boolean doRequests() throws IOException{ + private boolean doRequests() throws IOException { UnicornCall.logger.trace("doRequest"); bPassed = true; - - final Map<String, Request> requests = this.aRequestList - .getRequestMap(); + + final Map<String, Request> requests = this.aRequestList.getRequestMap(); // Creation of the thread list ArrayList<Thread> threadsList = new ArrayList<Thread>(); @@ -351,13 +357,14 @@ * Input factory for the parameter * @param mapOfArrayUseParameter * array of the parameter - * @param node the current node that we are parsing + * @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 */ private RequestList generateRequestList(final InputFactory aInputFactory, - final Map<String, String[]> mapOfArrayUseParameter,TLTNode node) + final Map<String, String[]> mapOfArrayUseParameter, TLTNode node) throws Exception { // Log information @@ -367,7 +374,7 @@ UnicornCall.logger.debug("Map of string parameter : " + mapOfArrayUseParameter + "."); } - + final MimeType aMimeType = aInputFactory.getMimeType(); final EnumInputMethod aEnumInputMethod = aInputFactory .getDefaultInputModule().getEnumInputMethod(); @@ -375,9 +382,9 @@ 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 - //Il faut creer une list avec tous les exec et toutes les rencardeur de ifs - //Une liste d'Observer - + // 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 @@ -425,7 +432,7 @@ .getResponseType()); // add this request to request list - aRequestList.addRequest(aRequest,aObserver.getID()); + aRequestList.addRequest(aRequest, aObserver.getID()); // log debug information if (UnicornCall.logger.isDebugEnabled()) { UnicornCall.logger.debug("Redirect request " + aRequest @@ -471,8 +478,7 @@ String[] valOfUcnLang = this.mapOfStringParameter.get("ucn_lang"); // Get name of the lang parameter (defined in RDF file) - String observerParamLangName = aObserver - .getParamLangName(); + String observerParamLangName = aObserver.getParamLangName(); // If lang parameter exists, we add name and value in parameters of // the request. @@ -481,7 +487,7 @@ } // Add this request to request list - aRequestList.addRequest(aRequest,aObserver.getID()); + aRequestList.addRequest(aRequest, aObserver.getID()); // Log debug information if (UnicornCall.logger.isDebugEnabled()) { UnicornCall.logger.debug("Request " + aRequest @@ -548,12 +554,12 @@ .next(); final Map<String, List<Mapping>> mapOfMapping = aValue .getMapOfMapping(); - + for (final String sObserverName : mapOfMapping.keySet()) { - + final Request aRequest = aRequestList .getRequest(sObserverName); - + for (final Mapping aMapping : mapOfMapping .get(sObserverName)) { final String sValue = aMapping.getValue(); @@ -565,37 +571,40 @@ } 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 Request aRequest = aRequestList - .getRequest(sObserverName); - for (final Mapping aMapping : mapOfMapping - .get(sObserverName)) { - final String sValue = aMapping.getValue(); - // check - if (null == sValue || "".equals(sValue)) { - aRequest.addParameter(aMapping.getParam(), - sUseParameterValue); - continue; + if (aRequestList.getRequest(sObserverName)!=null) { + final Request aRequest = aRequestList + .getRequest(sObserverName); + for (final Mapping aMapping : mapOfMapping + .get(sObserverName)) { + + final String sValue = aMapping.getValue(); + // check + if (null == sValue || "".equals(sValue)) { + aRequest.addParameter(aMapping.getParam(), + sUseParameterValue); + continue; + } + aRequest.addParameter(aMapping.getParam(), aMapping + .getValue()); } - aRequest.addParameter(aMapping.getParam(), aMapping - .getValue()); } } // foreach mapOfMapping.keySet() } // foreach sArrayParameterValue - + } // foreach this.parameters.values() - + return aRequestList; } @@ -740,22 +749,24 @@ this.oInputParameterValue = oInputParameterValue; } - /** - * 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 else false + * 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 + * else false */ public boolean checkCond(TLTCond cond) throws Exception { UnicornCall.logger.trace("checkCond : "); UnicornCall.logger.trace(cond); + UnicornCall.logger.trace("condId : " + cond.getId()); UnicornCall.logger.trace("condType : " + cond.getType()); + UnicornCall.logger.trace("condObserver : " + cond.getObserver().getID()); + UnicornCall.logger.trace("condValue : " + cond.getValue()); boolean passed = false; - - Response res = mapOfResponse.get(cond.getObserver()); + Response res = mapOfResponse.get(cond.getObserver().getID()); // Testing if there is a matching response in the map // and if it is passed @@ -766,32 +777,29 @@ } else if (cond.getType().equals(EnumCondType.XPATH)) { - + 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())); - - + + 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 = - XPathFactory.newInstance(); - - XPath xpath = xpathFact.newXPath(); - XPathExpression xpe = xpath.compile(xpathStr); - passed = (Boolean) xpe.evaluate(doc, XPathConstants.BOOLEAN); - + + XPathFactory xpathFact = XPathFactory.newInstance(); + + XPath xpath = xpathFact.newXPath(); + XPathExpression xpe = xpath.compile(xpathStr); + passed = (Boolean) xpe.evaluate(doc, XPathConstants.BOOLEAN); + } } @@ -861,9 +869,7 @@ return aMimeType; } - - - + } /** @@ -942,7 +948,6 @@ e1.printStackTrace(); } } - synchronized (mapOfResponse) { mapOfResponse.put(obsID, aResponse);
Received on Friday, 5 September 2008 14:52:03 UTC