craigmcc    01/08/13 11:59:46

  Modified:    digester/src/java/org/apache/commons/digester Digester.java
  Log:
  When namespace awareness is turned on, use "qName" (with the prefix)
  instead of "localName" in the matching patterns.  Otherwise, you cannot
  disambiguate between an element with the same name that is defined in two
  different namespaces.
  
  Revision  Changes    Path
  1.13      +16 -5     
jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java
  
  Index: Digester.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Digester.java     2001/08/08 03:03:00     1.12
  +++ Digester.java     2001/08/13 18:59:46     1.13
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java,v
 1.12 2001/08/08 03:03:00 craigmcc Exp $
  - * $Revision: 1.12 $
  - * $Date: 2001/08/08 03:03:00 $
  + * $Header: 
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java,v
 1.13 2001/08/13 18:59:46 craigmcc Exp $
  + * $Revision: 1.13 $
  + * $Date: 2001/08/13 18:59:46 $
    *
    * ====================================================================
    *
  @@ -106,7 +106,7 @@
    *
    * @author Craig McClanahan
    * @author Scott Sanders
  - * @version $Revision: 1.12 $ $Date: 2001/08/08 03:03:00 $
  + * @version $Revision: 1.13 $ $Date: 2001/08/13 18:59:46 $
    */
   
   public class Digester extends DefaultHandler {
  @@ -714,6 +714,7 @@
        bodyText.setLength(0);
   
        // Compute the current matching rule
  +        /*
           if (!namespaceAware &&
               ((localName == null) || (localName.length() < 1)))
               localName = qName;
  @@ -721,9 +722,19 @@
            match += "/" + localName;
        else
            match = localName;
  +        */
  +        StringBuffer sb = new StringBuffer(match);
  +        if (match.length() > 0)
  +            sb.append('/');
  +        if (namespaceAware)
  +            sb.append(qName);
  +        else if ((localName == null) || (localName.length() < 1))
  +            sb.append(qName);
  +        else
  +            sb.append(localName);
  +        match = sb.toString();
        //      if (debug >= 3)
        //          log("startElement(" + match + ")");
  -
   
        // Fire "begin" events for all relevant rules
        List rules = getRules().match(match);
  
  
  

Reply via email to