blautenb    2004/03/06 03:39:50

  Modified:    src/org/apache/xml/security/algorithms JCEMapper.java
  Log:
  Support multiple descriptors for a single provider
  
  Revision  Changes    Path
  1.19      +27 -20    
xml-security/src/org/apache/xml/security/algorithms/JCEMapper.java
  
  Index: JCEMapper.java
  ===================================================================
  RCS file: 
/home/cvs/xml-security/src/org/apache/xml/security/algorithms/JCEMapper.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- JCEMapper.java    8 Feb 2004 06:09:55 -0000       1.18
  +++ JCEMapper.java    6 Mar 2004 11:39:49 -0000       1.19
  @@ -117,25 +117,32 @@
         boolean available = false;
   
         try {
  -         Element pro =
  -            (Element) XPathAPI.selectSingleNode(JCEMapper._providerList,
  -                                                "./x:Providers/x:[EMAIL 
PROTECTED]'"
  -                                                + providerId + "']",
  -                                                JCEMapper._nscontext);
  -         String providerClass = pro.getAttributeNS(null, "Class");
  -         java.security.Provider prov =
  -            (java.security.Provider) 
Class.forName(providerClass).newInstance();
  +               /* Allow for mulitple provider entries with same Id */
  +               NodeList providers = 
XPathAPI.selectNodeList(JCEMapper._providerList,
  +                                                                             
                           "./x:Providers/x:[EMAIL PROTECTED]'"
  +                                                                             
                           + providerId + "']",
  +                                                                             
                           JCEMapper._nscontext);
   
  -         if (prov != null) {
  -            available = true;
  -         }
  +         for (int i = 0; available == false && i < providers.getLength(); 
i++) {
  +            Element pro = (Element) providers.item(i);
  +
  +                     String providerClass = pro.getAttributeNS(null, 
"Class");
  +                     try {
  +                             java.security.Provider prov =
  +                                     (java.security.Provider) 
Class.forName(providerClass).newInstance();
  +
  +                             if (prov != null) {
  +                                     available = true;
  +                             }
  +                     } catch (ClassNotFoundException ex) {
  +                             //do nothing
  +                     } catch (IllegalAccessException ex) {
  +                             //do nothing
  +                     } catch (InstantiationException ex) {
  +                             //do nothing
  +                     }
  +              }
         } catch (TransformerException ex) {
  -             //do nothing
  -      } catch (ClassNotFoundException ex) {
  -             //do nothing
  -      } catch (IllegalAccessException ex) {
  -             //do nothing
  -      } catch (InstantiationException ex) {
                //do nothing
         }
   
  
  
  

Reply via email to