[picketlink-commits] Picketlink SVN: r772 - in federation/trunk: picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers and 2 other directories.

picketlink-commits at lists.jboss.org picketlink-commits at lists.jboss.org
Wed Feb 23 12:44:00 EST 2011


Author: anil.saldhana at jboss.com
Date: 2011-02-23 12:43:59 -0500 (Wed, 23 Feb 2011)
New Revision: 772

Modified:
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/md/providers/MetaDataBuilderDelegate.java
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLMetadataWriter.java
   federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/saml/v2/metadata/SAMLMetadataWriterUnitTestCase.java
   federation/trunk/picketlink-fed-model/src/main/java/org/picketlink/identity/federation/newmodel/saml/v2/metadata/EntityDescriptorType.java
Log:
PLFED-142: fix the metadata related issues

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/md/providers/MetaDataBuilderDelegate.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/md/providers/MetaDataBuilderDelegate.java	2011-02-23 17:11:52 UTC (rev 771)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/md/providers/MetaDataBuilderDelegate.java	2011-02-23 17:43:59 UTC (rev 772)
@@ -26,6 +26,7 @@
 import java.util.List;
 
 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.newmodel.saml.v2.assertion.AttributeType;
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EndpointType;
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType;
@@ -168,8 +169,10 @@
          List<AttributeType> attributes,
          OrganizationType org)
    {
-      List<String> emptyList = new ArrayList<String>(); 
-      SPSSODescriptorType sp = new SPSSODescriptorType( emptyList );
+      List<String> protocolEnumList = new ArrayList<String>(); 
+      protocolEnumList.add( JBossSAMLURIConstants.PROTOCOL_NSURI.get() );
+      
+      SPSSODescriptorType sp = new SPSSODescriptorType( protocolEnumList );
       sp.addSingleLogoutService( sloEndPoint );
       sp.addKeyDescriptor( keyDescriptorType );
       sp.setAuthnRequestsSigned(requestsSigned); 

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLMetadataWriter.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLMetadataWriter.java	2011-02-23 17:11:52 UTC (rev 771)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/writers/SAMLMetadataWriter.java	2011-02-23 17:43:59 UTC (rev 772)
@@ -52,6 +52,7 @@
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.LocalizedURIType;
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.OrganizationType;
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.RequestedAttributeType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.RoleDescriptorType;
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.SPSSODescriptorType;
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.SSODescriptorType;
 import org.w3c.dom.Element;
@@ -98,6 +99,11 @@
          List<EDTDescriptorChoiceType> edtDescChoices = edtChoice.getDescriptors();
          for( EDTDescriptorChoiceType edtDescChoice : edtDescChoices )
          {
+            RoleDescriptorType roleDesc = edtDescChoice.getRoleDescriptor();
+            
+            if( roleDesc != null )
+               throw new RuntimeException( "Role Descriptor type not handled" );
+            
             IDPSSODescriptorType idpSSO = edtDescChoice.getIdpDescriptor();
             if( idpSSO != null )
                write( edtDescChoice.getIdpDescriptor() ); 
@@ -116,7 +122,10 @@
          }
       }
       OrganizationType organization = entityDescriptor.getOrganization();
-      writeOrganization(organization);
+      if( organization != null )
+      {
+         writeOrganization(organization);
+      }
       
       List<ContactType> contactPersons = entityDescriptor.getContactPerson();
       for( ContactType contact : contactPersons )
@@ -130,7 +139,7 @@
    
    public void write( SSODescriptorType ssoDescriptor ) throws ProcessingException
    {
-      throw new RuntimeException( "should not called" );
+      throw new RuntimeException( "should not be called" );
    }
    
    public void write( SPSSODescriptorType spSSODescriptor ) throws ProcessingException
@@ -325,6 +334,8 @@
    
    public void writeOrganization( OrganizationType org ) throws ProcessingException
    { 
+      if( org == null )
+         throw new ProcessingException( "Organization is null" );
       StaxUtil.writeStartElement(writer, METADATA_PREFIX, JBossSAMLConstants.ORGANIZATION.get(),
             METADATA_NSURI.get());
       

Modified: federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/saml/v2/metadata/SAMLMetadataWriterUnitTestCase.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/saml/v2/metadata/SAMLMetadataWriterUnitTestCase.java	2011-02-23 17:11:52 UTC (rev 771)
+++ federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/saml/v2/metadata/SAMLMetadataWriterUnitTestCase.java	2011-02-23 17:43:59 UTC (rev 772)
@@ -25,14 +25,24 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.xml.stream.XMLStreamWriter;
 
 import org.junit.Test;
 import org.picketlink.identity.federation.core.parsers.saml.SAMLParser;
+import org.picketlink.identity.federation.core.saml.md.providers.MetaDataBuilderDelegate;
+import org.picketlink.identity.federation.core.saml.v2.util.DocumentUtil;
 import org.picketlink.identity.federation.core.saml.v2.writers.SAMLMetadataWriter;
 import org.picketlink.identity.federation.core.util.StaxUtil;
+import org.picketlink.identity.federation.newmodel.saml.v2.assertion.AttributeType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EndpointType;
 import org.picketlink.identity.federation.newmodel.saml.v2.metadata.EntityDescriptorType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.KeyDescriptorType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.OrganizationType;
+import org.picketlink.identity.federation.newmodel.saml.v2.metadata.SPSSODescriptorType;
 
 
 /**
@@ -84,4 +94,36 @@
       
       System.out.println( new String( baos.toByteArray() ));
    }
+   
+   /**
+    * PLFED-142
+    * @throws Exception
+    */
+   @Test
+   public void testDynamicMetadataCreation() throws Exception
+   {
+      OrganizationType org = new OrganizationType();
+      AttributeType attributeType = new AttributeType( "hello" );
+      List<AttributeType> attributes = new ArrayList<AttributeType>();
+      attributes.add(attributeType);
+      
+      URI test = URI.create( "http://test");
+      EndpointType sloEndPoint = new EndpointType( test, test );
+      KeyDescriptorType keyDescriptorType = new KeyDescriptorType();
+      String str = "<a/>";
+      keyDescriptorType.setKeyInfo( DocumentUtil.getDocument( str ).getDocumentElement() );
+      
+      SPSSODescriptorType spSSO = MetaDataBuilderDelegate.createSPSSODescriptor(false, keyDescriptorType, sloEndPoint, attributes, org);
+      EntityDescriptorType entity = MetaDataBuilderDelegate.createEntityDescriptor(spSSO);
+      
+
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      
+      XMLStreamWriter  writer = StaxUtil.getXMLStreamWriter( baos );
+      
+      //write it back
+      SAMLMetadataWriter mdWriter = new SAMLMetadataWriter( writer );
+      mdWriter.writeEntityDescriptor( entity ) ; 
+      System.out.println( new String( baos.toByteArray() ));
+   }
 }
\ No newline at end of file

Modified: federation/trunk/picketlink-fed-model/src/main/java/org/picketlink/identity/federation/newmodel/saml/v2/metadata/EntityDescriptorType.java
===================================================================
--- federation/trunk/picketlink-fed-model/src/main/java/org/picketlink/identity/federation/newmodel/saml/v2/metadata/EntityDescriptorType.java	2011-02-23 17:11:52 UTC (rev 771)
+++ federation/trunk/picketlink-fed-model/src/main/java/org/picketlink/identity/federation/newmodel/saml/v2/metadata/EntityDescriptorType.java	2011-02-23 17:43:59 UTC (rev 772)
@@ -90,7 +90,15 @@
       private PDPDescriptorType pdpDescriptor;
       public EDTDescriptorChoiceType(RoleDescriptorType roleDescriptor)
       { 
-         this.roleDescriptor = roleDescriptor;
+         if( roleDescriptor instanceof IDPSSODescriptorType )
+         {
+            this.idpDescriptor = (IDPSSODescriptorType) roleDescriptor;
+         }
+         else if( roleDescriptor instanceof SPSSODescriptorType )
+         {
+            this.spDescriptor = (SPSSODescriptorType) roleDescriptor;
+         }
+         else this.roleDescriptor = roleDescriptor;
       }
       public EDTDescriptorChoiceType(IDPSSODescriptorType idpDescriptor)
       {



More information about the picketlink-commits mailing list