[jboss-cvs] Picketlink SVN: r1126 - in product/trunk/picketlink-core/src: main/java/org/picketlink/identity/federation/core/util and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jul 25 15:48:44 EDT 2011


Author: anil.saldhana at jboss.com
Date: 2011-07-25 15:48:44 -0400 (Mon, 25 Jul 2011)
New Revision: 1126

Modified:
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/util/
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/util/DocumentUtil.java
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/StaxUtil.java
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/TransformerUtil.java
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAML20TokenProvider.java
   product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAMLUtil.java
   product/trunk/picketlink-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml/
Log:
merge in r1110 and r1111


Property changes on: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/util
___________________________________________________________________
Added: svn:mergeinfo
   + /federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/util:1098-1110

Modified: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/util/DocumentUtil.java
===================================================================
--- product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/util/DocumentUtil.java	2011-07-25 19:33:16 UTC (rev 1125)
+++ product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/saml/v2/util/DocumentUtil.java	2011-07-25 19:48:44 UTC (rev 1126)
@@ -50,6 +50,7 @@
 import org.picketlink.identity.federation.core.exceptions.ProcessingException;
 import org.picketlink.identity.federation.core.util.TransformerUtil;
 import org.w3c.dom.DOMConfiguration;
+import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -109,6 +110,31 @@
    }
 
    /**
+    * Create a document with the root element of the form  <someElement  xmlns="customNamespace"
+    * @param baseNamespace
+    * @return
+    * @throws ProcessingException
+    */
+   public static Document createDocumentWithBaseNamespace(String baseNamespace, String localPart)
+         throws ProcessingException
+   {
+      try
+      {
+         DocumentBuilderFactory factory = getDocumentBuilderFactory();
+         DocumentBuilder builder = factory.newDocumentBuilder();
+         return builder.getDOMImplementation().createDocument(baseNamespace, localPart, null);
+      }
+      catch (DOMException e)
+      {
+         throw new ProcessingException(e);
+      }
+      catch (ParserConfigurationException e)
+      {
+         throw new ProcessingException(e);
+      }
+   }
+
+   /**
     * Parse a document from the string
     * @param docString
     * @return 


Property changes on: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util
___________________________________________________________________
Added: svn:mergeinfo
   + /federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/util:1098-1111

Modified: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/StaxUtil.java
===================================================================
--- product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/StaxUtil.java	2011-07-25 19:33:16 UTC (rev 1125)
+++ product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/StaxUtil.java	2011-07-25 19:48:44 UTC (rev 1126)
@@ -373,6 +373,10 @@
          // writeNameSpace(writer, domElementPrefix, domElementNS );
          registeredNSStack.get().push(domElementNS);
       }
+      else if (domElementPrefix == "" && domElementNS != null)
+      {
+         writeNameSpace(writer, "xmlns", domElementNS);
+      }
 
       // Deal with Attributes
       NamedNodeMap attrs = domElement.getAttributes();
@@ -385,12 +389,8 @@
 
          if (attributePrefix == null || attributePrefix.length() == 0)
          {
-            if ("xmlns".equals(attribLocalName))
+            if (!("xmlns".equals(attribLocalName)))
             {
-               writeDefaultNameSpace(writer, attribValue);
-            }
-            else
-            {
                writeAttribute(writer, attribLocalName, attribValue);
             }
          }

Modified: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/TransformerUtil.java
===================================================================
--- product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/TransformerUtil.java	2011-07-25 19:33:16 UTC (rev 1125)
+++ product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/util/TransformerUtil.java	2011-07-25 19:48:44 UTC (rev 1126)
@@ -54,7 +54,9 @@
 import org.apache.log4j.Logger;
 import org.picketlink.identity.federation.core.exceptions.ConfigurationException;
 import org.picketlink.identity.federation.core.exceptions.ParsingException;
+import org.picketlink.identity.federation.core.exceptions.ProcessingException;
 import org.picketlink.identity.federation.core.parsers.util.StaxParserUtil;
+import org.picketlink.identity.federation.core.saml.v2.util.DocumentUtil;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -226,7 +228,7 @@
                }
             }
          }
-         catch (ParsingException e)
+         catch (Exception e)
          {
             throw new TransformerException(e);
          }
@@ -293,7 +295,7 @@
       }
 
       private Element handleStartElement(XMLEventReader xmlEventReader, StartElement startElement, CustomHolder holder)
-            throws ParsingException
+            throws ParsingException, ProcessingException
       {
          Document doc = holder.doc;
 
@@ -303,8 +305,15 @@
          String localPart = elementName.getLocalPart();
 
          String qual = prefix != null && prefix != "" ? prefix + ":" + localPart : localPart;
+
          Element el = doc.createElementNS(ns, qual);
 
+         String containsBaseNamespace = containsBaseNamespace(startElement);
+         if (StringUtil.isNotNull(containsBaseNamespace))
+         {
+            el = DocumentUtil.createDocumentWithBaseNamespace(containsBaseNamespace, localPart).getDocumentElement();
+            el = (Element) doc.importNode(el, true);
+         }
          if (StringUtil.isNotNull(prefix))
          {
             el.setPrefix(prefix);
@@ -342,11 +351,17 @@
             if (prefix != null && prefix != "")
                qual = (localPart != null && localPart != "") ? prefix + ":" + localPart : prefix;
 
+            if (qual.equals("xmlns"))
+               continue;
             if (trace)
             {
-               log.trace("Set Attribute Namespace=" + name.getNamespaceURI() + ":" + qual);
+               log.trace("Set Attribute Namespace=" + name.getNamespaceURI() + "::Qual=:" + qual + "::Value="
+                     + namespace.getNamespaceURI());
             }
-            el.setAttributeNS(name.getNamespaceURI(), qual, namespace.getNamespaceURI());
+            if (qual != null && qual.startsWith("xmlns"))
+            {
+               el.setAttributeNS(name.getNamespaceURI(), qual, namespace.getNamespaceURI());
+            }
          }
 
          XMLEvent nextEvent = StaxParserUtil.peek(xmlEventReader);
@@ -383,6 +398,27 @@
          return el;
       }
 
+      @SuppressWarnings("unchecked")
+      private String containsBaseNamespace(StartElement startElement)
+      {
+         String localPart, prefix, qual = null;
+
+         Iterator<Namespace> namespaces = startElement.getNamespaces();
+         while (namespaces != null && namespaces.hasNext())
+         {
+            Namespace namespace = namespaces.next();
+            QName name = namespace.getName();
+            localPart = name.getLocalPart();
+            prefix = name.getPrefix();
+            if (prefix != null && prefix != "")
+               qual = (localPart != null && localPart != "") ? prefix + ":" + localPart : prefix;
+
+            if (qual != null && qual.equals("xmlns"))
+               return namespace.getNamespaceURI();
+         }
+         return null;
+      }
+
       private class CustomHolder
       {
          public Document doc;


Property changes on: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml
___________________________________________________________________
Added: svn:mergeinfo
   + /federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml:1098-1110

Modified: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAML20TokenProvider.java
===================================================================
--- product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAML20TokenProvider.java	2011-07-25 19:33:16 UTC (rev 1125)
+++ product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAML20TokenProvider.java	2011-07-25 19:48:44 UTC (rev 1126)
@@ -33,6 +33,7 @@
 import org.picketlink.identity.federation.core.saml.v2.constants.JBossSAMLConstants;
 import org.picketlink.identity.federation.core.saml.v2.factories.SAMLAssertionFactory;
 import org.picketlink.identity.federation.core.saml.v2.util.AssertionUtil;
+import org.picketlink.identity.federation.core.saml.v2.util.DocumentUtil;
 import org.picketlink.identity.federation.core.saml.v2.util.StatementUtil;
 import org.picketlink.identity.federation.core.sts.AbstractSecurityTokenProvider;
 import org.picketlink.identity.federation.core.wstrust.SecurityToken;
@@ -67,6 +68,8 @@
 {
    protected static Logger logger = Logger.getLogger(SAML20TokenProvider.class);
 
+   protected boolean trace = logger.isTraceEnabled();
+
    private SAML20TokenAttributeProvider attributeProvider;
 
    /*
@@ -340,6 +343,10 @@
       {
          try
          {
+            if (trace)
+            {
+               logger.trace("Assertion Element=" + DocumentUtil.getNodeAsString(assertionElement));
+            }
             assertion = SAMLUtil.fromElement(assertionElement);
          }
          catch (Exception e)

Modified: product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAMLUtil.java
===================================================================
--- product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAMLUtil.java	2011-07-25 19:33:16 UTC (rev 1125)
+++ product/trunk/picketlink-core/src/main/java/org/picketlink/identity/federation/core/wstrust/plugins/saml/SAMLUtil.java	2011-07-25 19:48:44 UTC (rev 1126)
@@ -25,6 +25,7 @@
 import java.io.ByteArrayOutputStream;
 import java.security.GeneralSecurityException;
 
+import org.apache.log4j.Logger;
 import org.picketlink.identity.federation.core.exceptions.ConfigurationException;
 import org.picketlink.identity.federation.core.exceptions.ParsingException;
 import org.picketlink.identity.federation.core.exceptions.ProcessingException;
@@ -48,7 +49,10 @@
  */
 public class SAMLUtil
 {
+   protected static Logger log = Logger.getLogger(SAMLUtil.class);
 
+   protected static boolean trace = log.isTraceEnabled();
+
    public static final String SAML11_BEARER_URI = "urn:oasis:names:tc:SAML:1.0:cm:bearer";
 
    public static final String SAML11_HOLDER_OF_KEY_URI = "urn:oasis:names:tc:SAML:1.0:cm:holder-of-key";
@@ -89,6 +93,11 @@
       ByteArrayInputStream bis = new ByteArrayInputStream(baos.toByteArray());
       Document document = DocumentUtil.getDocument(bis);
 
+      if (trace)
+      {
+         log.trace("Written Assertion=" + DocumentUtil.asString(document));
+      }
+
       return document.getDocumentElement();
    }
 


Property changes on: product/trunk/picketlink-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml
___________________________________________________________________
Added: svn:mergeinfo
   + /federation/trunk/picketlink-fed-core/src/test/java/org/picketlink/test/identity/federation/core/parser/saml:1098-1110



More information about the jboss-cvs-commits mailing list