Repository: cxf
Updated Branches:
  refs/heads/master 6d185c2c9 -> d28828e47


Allow custom JAXB Elements in an STS RST


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/08f3d92d
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/08f3d92d
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/08f3d92d

Branch: refs/heads/master
Commit: 08f3d92d6c1f5fe02495821fd91cfde51f7ec179
Parents: 6d185c2
Author: Colm O hEigeartaigh <cohei...@apache.org>
Authored: Thu Aug 3 17:29:05 2017 +0100
Committer: Colm O hEigeartaigh <cohei...@apache.org>
Committed: Thu Aug 3 17:29:05 2017 +0100

----------------------------------------------------------------------
 .../org/apache/cxf/sts/request/RequestParser.java | 18 +++++++++++-------
 .../apache/cxf/sts/request/TokenRequirements.java | 13 +++++++++++++
 2 files changed, 24 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/08f3d92d/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
----------------------------------------------------------------------
diff --git 
a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
 
b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
index fdd3169..ca91aae 100644
--- 
a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
+++ 
b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
@@ -120,13 +120,17 @@ public class RequestParser {
                         found = parseKeyRequirements(jaxbElement, 
keyRequirements, messageContext, stsProperties);
                     }
                     if (!found) {
-                        LOG.log(
-                            Level.WARNING,
-                            "Found a JAXB object of unknown type: " + 
jaxbElement.getName()
-                        );
-                        throw new STSException(
-                            "An unknown element was received", 
STSException.BAD_REQUEST
-                        );
+                        if (allowCustomContent) {
+                            
tokenRequirements.addCustomContentJAXB(jaxbElement);
+                        } else {
+                            LOG.log(
+                                Level.WARNING,
+                                "Found a JAXB object of unknown type: " + 
jaxbElement.getName()
+                            );
+                            throw new STSException(
+                                "An unknown element was received", 
STSException.BAD_REQUEST
+                            );
+                        }
                     }
                 } catch (STSException ex) {
                     LOG.log(Level.WARNING, "", ex);

http://git-wip-us.apache.org/repos/asf/cxf/blob/08f3d92d/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/TokenRequirements.java
----------------------------------------------------------------------
diff --git 
a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/TokenRequirements.java
 
b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/TokenRequirements.java
index a89b205..3021fca 100644
--- 
a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/TokenRequirements.java
+++ 
b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/TokenRequirements.java
@@ -22,6 +22,8 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import javax.xml.bind.JAXBElement;
+
 import org.w3c.dom.Element;
 
 import org.apache.cxf.rt.security.claims.ClaimCollection;
@@ -46,6 +48,7 @@ public class TokenRequirements {
     private Renewing renewing;
     private Participants participants;
     private final List<Element> customContent = new ArrayList<>();
+    private final List<JAXBElement<?>> customContentJAXB = new ArrayList<>();
 
     public Renewing getRenewing() {
         return renewing;
@@ -161,4 +164,14 @@ public class TokenRequirements {
         }
     }
 
+    public List<JAXBElement<?>> getCustomContentJAXB() {
+        return Collections.unmodifiableList(customContentJAXB);
+    }
+
+    public void addCustomContentJAXB(JAXBElement<?> jaxbElement) {
+        if (jaxbElement != null) {
+            this.customContentJAXB.add(jaxbElement);
+        }
+    }
+
 }
\ No newline at end of file

Reply via email to