Return-Path: Delivered-To: apmail-xml-cocoon-cvs-archive@xml.apache.org Received: (qmail 22550 invoked by uid 500); 28 Jun 2003 12:06:12 -0000 Mailing-List: contact cocoon-cvs-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: cocoon-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cocoon-cvs@xml.apache.org Received: (qmail 22538 invoked by uid 500); 28 Jun 2003 12:06:12 -0000 Delivered-To: apmail-cocoon-2.1-cvs@apache.org Received: (qmail 22535 invoked from network); 28 Jun 2003 12:06:11 -0000 Received: from icarus.apache.org (208.185.179.13) by daedalus.apache.org with SMTP; 28 Jun 2003 12:06:11 -0000 Received: (qmail 33179 invoked by uid 1672); 28 Jun 2003 12:06:11 -0000 Date: 28 Jun 2003 12:06:11 -0000 Message-ID: <20030628120611.33178.qmail@icarus.apache.org> From: joerg@apache.org To: cocoon-2.1-cvs@apache.org Subject: cvs commit: cocoon-2.1/src/blocks/xmlform/java/org/apache/cocoon/components/validation/schematron SchematronValidator.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N joerg 2003/06/28 05:06:11 Modified: src/blocks/xmlform/java/org/apache/cocoon/components/validation/schematron SchematronValidator.java Log: patch 19104 applied: evalRule() now creates a relative context instead of an absolute one this allows to refer to another form field by using relative paths (../password) instead of choosing a common root Revision Changes Path 1.3 +36 -56 cocoon-2.1/src/blocks/xmlform/java/org/apache/cocoon/components/validation/schematron/SchematronValidator.java Index: SchematronValidator.java =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/xmlform/java/org/apache/cocoon/components/validation/schematron/SchematronValidator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- SchematronValidator.java 26 Apr 2003 12:10:44 -0000 1.2 +++ SchematronValidator.java 28 Jun 2003 12:06:11 -0000 1.3 @@ -76,7 +76,7 @@ */ public class SchematronValidator implements Validator { - /** + /** * The schema instance for this Validator. * It is initialized once when a new Validator instance * is created and used multiple times for validating @@ -100,9 +100,7 @@ */ private Logger logger = setupLogger(); - // // Constructors - // /** * Constructs a new Validator object for a given Schematron schema. @@ -115,16 +113,13 @@ preparePhaseMap(); } - // // helper methods for the constructors - // /** * Initialize logger. */ protected Logger setupLogger() { Logger logger = Hierarchy.getDefaultHierarchy().getLoggerFor("XmlForm"); - logger.setPriority(Priority.ERROR); return logger; } @@ -133,35 +128,27 @@ Map patternMap = new HashMap(); Iterator ptiter = schema_.getPattern().iterator(); - while (ptiter.hasNext()) { - Pattern pattern = (Pattern) ptiter.next(); - + Pattern pattern = (Pattern)ptiter.next(); patternMap.put(pattern.getId(), pattern); } Iterator phiter = schema_.getPhase().iterator(); - while (phiter.hasNext()) { - Phase phase = (Phase) phiter.next(); + Phase phase = (Phase)phiter.next(); List activePatterns = new ArrayList(); - phaseMap_.put(phase.getId(), activePatterns); Iterator activeIter = phase.getActive().iterator(); - while (activeIter.hasNext()) { - ActivePattern active = (ActivePattern) activeIter.next(); - + ActivePattern active = (ActivePattern)activeIter.next(); activePatterns.add(patternMap.get(active.getPattern())); } } } - // // public methods - // /** * Performs validation of the passed JavaBean or DOM object. @@ -179,9 +166,9 @@ public List validate(Object jbean) { List patterns = null; - if (phaseProperty_!=null) { + if (phaseProperty_ != null) { patterns = getPatternsForPhase(phaseProperty_); - logger.debug(" Validating for phase: "+phaseProperty_); + logger.debug(" Validating for phase: " + phaseProperty_); } else { patterns = schema_.getPattern(); logger.debug(" Validating all patterns. No phase provided "); @@ -189,7 +176,7 @@ ValidationResult vres = new ValidationResult(); - if (patterns!=null) { + if (patterns != null) { // create the JXPathContext // which will be used to validate each rule JXPathContext jxpContext = JXPathContext.newContext(jbean); @@ -197,12 +184,11 @@ Iterator iter = patterns.iterator(); while (iter.hasNext()) { - Pattern resultPattern = evalPattern(jxpContext, - (Pattern) iter.next()); + Pattern resultPattern = evalPattern(jxpContext, (Pattern)iter.next()); // if the resultPattern is null, // then it passed successfully - if (resultPattern!=null) { + if (resultPattern != null) { vres.addPattern(resultPattern); } } @@ -219,7 +205,7 @@ * @return List of patterns */ protected List getPatternsForPhase(String phase) { - return (List) phaseMap_.get(phase); + return (List)phaseMap_.get(phase); } /** @@ -244,18 +230,18 @@ Iterator iter = pattern.getRule().iterator(); while (iter.hasNext()) { - List failedRules = evalRule(jxpContext, (Rule) iter.next()); + List failedRules = evalRule(jxpContext, (Rule)iter.next()); // if there were failed rules // add them to the list of other failed rules - if (failedRules.size()>0) { + if (failedRules.size() > 0) { failedRules.addAll(resultPattern.getRule()); resultPattern.setRule(failedRules); } } // if there are no failed rules return null - if (resultPattern.getRule().size()==0) { + if (resultPattern.getRule().size() == 0) { return null; } else { return resultPattern; @@ -264,14 +250,13 @@ /** * Returns rules with asserts or reports which failed during validation. - * The context attribute of each rule in the result pattern - * contains the exact location of the failed element - * unlike the context attribute of the original pattern which - * is an XSLT production pattern. + * The context attribute of each rule in the result pattern contains the + * exact location of the failed element unlike the context attribute of the + * original pattern which is an XSLT production pattern. * * @param jxpContext The JXPath context being validated. * @param rule The original pattern rule to be evaluated. - * @return Pattern with rules wich failed during validation. + * @return Pattern with rules which failed during validation. */ protected List evalRule(JXPathContext jxpContext, Rule rule) { List failedRules = new ArrayList(); @@ -279,7 +264,7 @@ Iterator pointerIter = jxpContext.iteratePointers(rule.getContext()); while (pointerIter.hasNext()) { - Pointer ptr = (Pointer) pointerIter.next(); + Pointer ptr = (Pointer)pointerIter.next(); // prepare result Rule Rule nextFailedRule = new Rule(); @@ -287,20 +272,18 @@ nextFailedRule.setContext(ptr.asPath()); // switch to the context of the rule - JXPathContext localJxpContext = JXPathContext.newContext(jxpContext, - ptr.getValue()); + JXPathContext localJxpContext = jxpContext.getRelativeContext(ptr); // evaluate asserts Iterator assertIter = rule.getAssert().iterator(); while (assertIter.hasNext()) { - Assert assertion = (Assert) assertIter.next(); + Assert assertion = (Assert)assertIter.next(); // if an assert test fails, then it should be added // to the result - boolean passed = evalTest(localJxpContext, - assertion.getTest()); + boolean passed = evalTest(localJxpContext, assertion.getTest()); - if ( !passed) { + if (!passed) { nextFailedRule.addAssert(assertion); } } @@ -309,7 +292,7 @@ Iterator reportIter = rule.getReport().iterator(); while (reportIter.hasNext()) { - Report report = (Report) reportIter.next(); + Report report = (Report)reportIter.next(); // if a report test passes, then it should be added // to the result boolean passed = evalTest(localJxpContext, report.getTest()); @@ -321,8 +304,8 @@ // if the nextFailedRule is non empty, // then add it to the list of failed rules - if ((nextFailedRule.getAssert().size()>0) || - (nextFailedRule.getReport().size()>0)) { + if ((nextFailedRule.getAssert().size() > 0) + || (nextFailedRule.getReport().size() > 0)) { failedRules.add(nextFailedRule); } } @@ -334,11 +317,11 @@ * Test an XPath expression in a context. * * @param jxpContext The JXPath context being validated - * @param test + * @param test * @return boolean result of evaluation */ protected boolean evalTest(JXPathContext jxpContext, String test) { - Boolean passed = (Boolean) jxpContext.getValue(test, Boolean.class); + Boolean passed = (Boolean)jxpContext.getValue(test, Boolean.class); return passed.booleanValue(); } @@ -348,13 +331,11 @@ * @return The property value. * @throws IllegalArgumentException When the property is not supported. */ - public Object getProperty(String property) - throws IllegalArgumentException { + public Object getProperty(String property) throws IllegalArgumentException { if (property.equals(Validator.PROPERTY_PHASE)) { return phaseProperty_; } else { - throw new IllegalArgumentException(" Property "+property+ - " is not supported"); + throw new IllegalArgumentException(" Property " + property + " is not supported"); } } @@ -363,14 +344,13 @@ * @param value Property value. * @throws IllegalArgumentException When the property is not supported */ - public void setProperty(String property, - Object value) throws IllegalArgumentException { - if (property.equals(Validator.PROPERTY_PHASE) && - ((value==null) || (value instanceof String))) { - phaseProperty_ = (String) value; + public void setProperty(String property, Object value) throws IllegalArgumentException { + if (property.equals(Validator.PROPERTY_PHASE) + && ((value == null) || (value instanceof String))) { + phaseProperty_ = (String)value; } else { - throw new IllegalArgumentException(" Property "+property+ - " is not supported or value is invalid"); + throw new IllegalArgumentException( + " Property " + property + " is not supported or value is invalid"); } } }