[jboss-cvs] Picketlink SVN: r469 - federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Oct 14 12:07:46 EDT 2010


Author: anil.saldhana at jboss.com
Date: 2010-10-14 12:07:45 -0400 (Thu, 14 Oct 2010)
New Revision: 469

Modified:
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLAssertionParser.java
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLSubjectParser.java
Log:
PLFED-110: saml parsing

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLAssertionParser.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLAssertionParser.java	2010-10-14 15:10:28 UTC (rev 468)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLAssertionParser.java	2010-10-14 16:07:45 UTC (rev 469)
@@ -35,6 +35,7 @@
 import org.picketlink.identity.federation.core.parsers.ParserNamespaceSupport;
 import org.picketlink.identity.federation.core.parsers.util.StaxParserUtil;
 import org.picketlink.identity.federation.core.saml.v2.constants.JBossSAMLConstants;
+import org.picketlink.identity.federation.core.saml.v2.constants.JBossSAMLURIConstants;
 import org.picketlink.identity.federation.saml.v2.assertion.AssertionType;
 import org.picketlink.identity.federation.saml.v2.assertion.ConditionsType;
 import org.picketlink.identity.federation.saml.v2.assertion.NameIDType;
@@ -70,6 +71,7 @@
          XMLEvent xmlEvent = StaxParserUtil.peek( xmlEventReader );
          if( xmlEvent == null )
             break;
+         
          if( xmlEvent instanceof EndElement )
          {
             xmlEvent = StaxParserUtil.getNextEvent( xmlEventReader );
@@ -78,6 +80,7 @@
             if( endElementTag.equals( JBossSAMLConstants.ASSERTION.get() ) )
                break;
          }
+         
          StartElement peekedElement = null;
 
          if( xmlEvent instanceof StartElement )
@@ -154,9 +157,18 @@
     */
    public boolean supports(QName qname)
    { 
-      return false;
+      String nsURI = qname.getNamespaceURI();
+      String localPart = qname.getLocalPart();
+      
+      return nsURI.equals( JBossSAMLURIConstants.ASSERTION_NSURI.get() ) 
+           && localPart.equals( JBossSAMLConstants.ASSERTION.get() );
    } 
 
+   /**
+    * We really don't care about the ds:signature stuff for building the object model
+    * @param xmlEventReader
+    * @throws ParsingException
+    */
    private void bypassXMLSignatureBlock( XMLEventReader xmlEventReader ) throws ParsingException
    {
       while ( xmlEventReader.hasNext() )

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLSubjectParser.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLSubjectParser.java	2010-10-14 15:10:28 UTC (rev 468)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAMLSubjectParser.java	2010-10-14 16:07:45 UTC (rev 469)
@@ -55,27 +55,26 @@
    public Object parse(XMLEventReader xmlEventReader) throws ParsingException
    { 
       StaxParserUtil.getNextEvent(xmlEventReader); 
-      
+
       SubjectType subject = new SubjectType(); 
-      
+
       //Peek at the next event
       while( xmlEventReader.hasNext() )
       { 
          XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader);
          if( xmlEvent instanceof EndElement )
          {
-            EndElement endElement = (EndElement) xmlEvent;
-            String endElementValue = StaxParserUtil.getEndElementName(endElement);
-            if( endElementValue.equalsIgnoreCase( JBossSAMLConstants.SUBJECT.get() )) 
+            EndElement endElement = (EndElement) xmlEvent; 
+            if( StaxParserUtil.matches(endElement , JBossSAMLConstants.SUBJECT.get() )) 
                break;  
          }
-         
+
          StartElement peekedElement  = StaxParserUtil.peekNextStartElement( xmlEventReader  );
          if( peekedElement == null )
             break; 
 
          String tag = StaxParserUtil.getStartElementName( peekedElement );
-         
+
          if( JBossSAMLConstants.NAMEID.get().equalsIgnoreCase( tag ) )
          {
             try
@@ -85,50 +84,51 @@
                if( nameQualifier == null )
                   nameQualifier = nameIDElement.getAttributeByName( new QName( JBossSAMLURIConstants.ASSERTION_NSURI.get(),
                         JBossSAMLConstants.NAME_QUALIFIER.get() ));
-               
+
                String nameIDValue = xmlEventReader.getElementText();
-               
+
                NameIDType nameID = new NameIDType();
                nameID.setValue( nameIDValue );
                if( nameQualifier != null )
                {
                   nameID.setNameQualifier( StaxParserUtil.getAttributeValue(nameQualifier) ); 
                }  
-               
+
                JAXBElement<NameIDType> jaxbNameID =  objectFactory.createNameID( nameID );
                subject.getContent().add( jaxbNameID );
-               
+
                //There is no need to get the end tag as the "getElementText" call above puts us past that
             }
             catch (XMLStreamException e)
             {
-              throw new ParsingException( e );
+               throw new ParsingException( e );
             } 
          }  
          else if( JBossSAMLConstants.SUBJECT_CONFIRMATION.get().equalsIgnoreCase( tag ) )
          {
-             StartElement subjectConfirmationElement = StaxParserUtil.getNextStartElement( xmlEventReader ); 
-               Attribute method = subjectConfirmationElement.getAttributeByName( new QName( "", JBossSAMLConstants.METHOD.get() ));
-               if( method == null )
-                  method = subjectConfirmationElement.getAttributeByName( new QName( JBossSAMLURIConstants.ASSERTION_NSURI.get(),
-                        JBossSAMLConstants.METHOD.get() )); 
-               
-               SubjectConfirmationType subjectConfirmationType = new SubjectConfirmationType();   
-               
-               if( method != null )
-               {
-                  subjectConfirmationType.setMethod( StaxParserUtil.getAttributeValue( method ) ); 
-               }  
-               
-               JAXBElement<SubjectConfirmationType> jaxbSubjectConf = objectFactory.createSubjectConfirmation( subjectConfirmationType );
-               subject.getContent().add(jaxbSubjectConf);
-               
-               //Get the end tag
-               StaxParserUtil.getNextEvent(xmlEventReader); 
+            StartElement subjectConfirmationElement = StaxParserUtil.getNextStartElement( xmlEventReader ); 
+            Attribute method = subjectConfirmationElement.getAttributeByName( new QName( "", JBossSAMLConstants.METHOD.get() ));
+            if( method == null )
+               method = subjectConfirmationElement.getAttributeByName( new QName( JBossSAMLURIConstants.ASSERTION_NSURI.get(),
+                     JBossSAMLConstants.METHOD.get() )); 
+
+            SubjectConfirmationType subjectConfirmationType = new SubjectConfirmationType();   
+
+            if( method != null )
+            {
+               subjectConfirmationType.setMethod( StaxParserUtil.getAttributeValue( method ) ); 
+            }  
+
+            JAXBElement<SubjectConfirmationType> jaxbSubjectConf = objectFactory.createSubjectConfirmation( subjectConfirmationType );
+            subject.getContent().add(jaxbSubjectConf);
+
+            //Get the end tag
+            EndElement endElement = (EndElement) StaxParserUtil.getNextEvent(xmlEventReader);
+            StaxParserUtil.matches(endElement, JBossSAMLConstants.SUBJECT_CONFIRMATION.get() );
          }   
          else throw new RuntimeException( "Unknown tag:" + tag );    
       }
-      
+
       return subject;
    }
 



More information about the jboss-cvs-commits mailing list