Author: anil.saldhana(a)jboss.com
Date: 2010-10-12 13:49:08 -0400 (Tue, 12 Oct 2010)
New Revision: 459
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/StaxParserUtil.java
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenCollectionParser.java
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenParser.java
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTrustParser.java
Log:
PLFED-109: stax parsing for ws-trust
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/StaxParserUtil.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/StaxParserUtil.java 2010-10-12
17:20:21 UTC (rev 458)
+++
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/StaxParserUtil.java 2010-10-12
17:49:08 UTC (rev 459)
@@ -26,8 +26,11 @@
import javax.xml.stream.Location;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
+import javax.xml.stream.events.XMLEvent;
/**
@@ -87,6 +90,44 @@
}
/**
+ * Get the next {@code StartElement }
+ * @param xmlEventReader
+ * @return
+ * @throws XMLStreamException
+ */
+ public static StartElement getNextStartElement( XMLEventReader xmlEventReader ) throws
XMLStreamException
+ {
+ while( true )
+ {
+ XMLEvent xmlEvent = xmlEventReader.nextEvent();
+
+ if( xmlEvent == null || xmlEvent.isStartElement() )
+ return ( StartElement ) xmlEvent;
+ else
+ xmlEvent = xmlEventReader.nextEvent();
+ }
+ }
+
+ /**
+ * Get the next {@code EndElement}
+ * @param xmlEventReader
+ * @return
+ * @throws XMLStreamException
+ */
+ public static EndElement getNextEndElement( XMLEventReader xmlEventReader ) throws
XMLStreamException
+ {
+ while( true )
+ {
+ XMLEvent xmlEvent = xmlEventReader.nextEvent();
+
+ if( xmlEvent == null || xmlEvent.isEndElement() )
+ return ( EndElement ) xmlEvent;
+ else
+ xmlEvent = xmlEventReader.nextEvent();
+ }
+ }
+
+ /**
* Return the name of the start element
* @param startElement
* @return
@@ -97,6 +138,44 @@
}
/**
+ * Peek the next {@code StartElement }
+ * @param xmlEventReader
+ * @return
+ * @throws XMLStreamException
+ */
+ public static StartElement peekNextStartElement( XMLEventReader xmlEventReader )
throws XMLStreamException
+ {
+ while( true )
+ {
+ XMLEvent xmlEvent = xmlEventReader.peek();
+
+ if( xmlEvent == null || xmlEvent.isStartElement() )
+ return ( StartElement ) xmlEvent;
+ else
+ xmlEvent = xmlEventReader.nextEvent();
+ }
+ }
+
+ /**
+ * Peek the next {@code EndElement}
+ * @param xmlEventReader
+ * @return
+ * @throws XMLStreamException
+ */
+ public static EndElement peekNextEndElement( XMLEventReader xmlEventReader ) throws
XMLStreamException
+ {
+ while( true )
+ {
+ XMLEvent xmlEvent = xmlEventReader.peek();
+
+ if( xmlEvent == null || xmlEvent.isEndElement() )
+ return ( EndElement ) xmlEvent;
+ else
+ xmlEvent = xmlEventReader.nextEvent();
+ }
+ }
+
+ /**
* Given a string, trim it
* @param str
* @return
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenCollectionParser.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenCollectionParser.java 2010-10-12
17:20:21 UTC (rev 458)
+++
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenCollectionParser.java 2010-10-12
17:49:08 UTC (rev 459)
@@ -62,7 +62,7 @@
StartElement peekedElement = null;
try
{
- peekedElement = (StartElement) xmlEventReader.peek();
+ peekedElement = StaxParserUtil.peekNextStartElement( xmlEventReader );
if( peekedElement == null )
break;
}
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenParser.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenParser.java 2010-10-12
17:20:21 UTC (rev 458)
+++
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTRequestSecurityTokenParser.java 2010-10-12
17:49:08 UTC (rev 459)
@@ -49,7 +49,7 @@
StartElement startElement = null;
try
{
- startElement = (StartElement) xmlEventReader.nextEvent();
+ startElement = StaxParserUtil.getNextStartElement( xmlEventReader );
}
catch (XMLStreamException e)
{
Modified:
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTrustParser.java
===================================================================
---
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTrustParser.java 2010-10-12
17:20:21 UTC (rev 458)
+++
federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/wst/WSTrustParser.java 2010-10-12
17:49:08 UTC (rev 459)
@@ -35,8 +35,8 @@
import org.picketlink.identity.federation.core.parsers.ParserNamespaceSupport;
import org.picketlink.identity.federation.core.parsers.util.StaxParserUtil;
import org.picketlink.identity.federation.core.wstrust.WSTrustConstants;
-
+
/**
* Parser for WS-Trust payload
* @author Anil.Saldhana(a)redhat.com
@@ -55,18 +55,18 @@
{
if( configStream == null )
throw new IllegalArgumentException( " Input Stream is null " );
-
+
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
//XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(xmlSource);
XMLEventReader xmlEventReader = StaxParserUtil.getXMLEventReader( configStream );
-
+
try
{
xmlEventReader = xmlInputFactory.createFilteredReader( xmlEventReader, new
EventFilter()
{
public boolean accept(XMLEvent xmlEvent)
{
- return xmlEvent.isStartElement() ;
+ return xmlEvent.isStartElement() || xmlEvent.isEndElement();
}
});
}
@@ -74,10 +74,10 @@
{
throw new ParsingException( e );
}
-
+
return parse( xmlEventReader );
}
-
+
/**
* @see {@link ParserNamespaceSupport#parse(XMLEventReader)}}
*/
@@ -94,15 +94,29 @@
{
throw new ParsingException( e );
}
-
- StartElement startElement = (StartElement) xmlEvent;
-
- String elementName = StaxParserUtil.getStartElementName( startElement );
- if( elementName.equalsIgnoreCase(
WSTRequestSecurityTokenCollectionParser.LOCALPART ))
+
+ if( xmlEvent instanceof StartElement )
{
- WSTRequestSecurityTokenCollectionParser wstrcoll = new
WSTRequestSecurityTokenCollectionParser();
- return wstrcoll.parse(xmlEventReader);
+ StartElement startElement = (StartElement) xmlEvent;
+
+ String elementName = StaxParserUtil.getStartElementName( startElement );
+ if( elementName.equalsIgnoreCase(
WSTRequestSecurityTokenCollectionParser.LOCALPART ))
+ {
+ WSTRequestSecurityTokenCollectionParser wstrcoll = new
WSTRequestSecurityTokenCollectionParser();
+ return wstrcoll.parse(xmlEventReader);
+ }
}
+ else
+ {
+ try
+ {
+ xmlEventReader.nextEvent();
+ }
+ catch (XMLStreamException e)
+ {
+ throw new ParsingException( e );
+ }
+ }
}
return null;
}
Show replies by date