[java-opensaml COMMIT] in /trunk: opensaml-security-impl/src/main/java/org/opensaml/security/trust/impl/ChainingTrust...

noreply at shibboleth.net noreply at shibboleth.net
Fri Apr 25 19:02:03 EDT 2014


Author: putmanb
Date: Fri Apr 25 19:02:03 2014
New Revision: 3819

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3819&view=rev
Log:
Make chaining trust engines more Spring-friendly by using a ctor arg for the chain.
getChain() now returns an immutable, non-live list.
Add missing test for ChainingSignatureTrustEngine.

Added:
    trunk/opensaml-xmlsec-impl/src/test/java/org/opensaml/xmlsec/signature/support/impl/ChainingSignatureTrustEngineTest.java   (with props)
Modified:
    trunk/opensaml-security-impl/src/main/java/org/opensaml/security/trust/impl/ChainingTrustEngine.java
    trunk/opensaml-security-impl/src/test/java/org/opensaml/security/trust/impl/ChainingTrustEngineTest.java
    trunk/opensaml-xmlsec-impl/src/main/java/org/opensaml/xmlsec/signature/support/impl/ChainingSignatureTrustEngine.java

Modified: trunk/opensaml-security-impl/src/main/java/org/opensaml/security/trust/impl/ChainingTrustEngine.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-security-impl/src/main/java/org/opensaml/security/trust/impl/ChainingTrustEngine.java?rev=3819&r1=3818&r2=3819&view=diff
==============================================================================
--- trunk/opensaml-security-impl/src/main/java/org/opensaml/security/trust/impl/ChainingTrustEngine.java (original)
+++ trunk/opensaml-security-impl/src/main/java/org/opensaml/security/trust/impl/ChainingTrustEngine.java Fri Apr 25 19:02:03 2014
@@ -17,18 +17,26 @@
 
 package org.opensaml.security.trust.impl;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
+import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 
 import org.opensaml.security.SecurityException;
 import org.opensaml.security.trust.TrustEngine;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Predicates;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
 
 /**
  * Evaluate a token in sequence using a chain of subordinate trust engines. If the token may be established as trusted
@@ -44,9 +52,14 @@
     /** The chain of subordinate trust engines. */
     private List<TrustEngine<TokenType>> engines;
 
-    /** Constructor. */
-    public ChainingTrustEngine() {
-        engines = new ArrayList<TrustEngine<TokenType>>();
+    /** 
+     * Constructor.
+     * 
+     * @param chain the list of trust engines in the chain
+     */
+    public ChainingTrustEngine(@Nonnull final List<TrustEngine<TokenType>> chain) {
+        Constraint.isNotNull(chain, "TrustEngine list was null");
+        engines = Lists.newArrayList(Collections2.filter(chain, Predicates.notNull()));
     }
 
     /**
@@ -54,8 +67,8 @@
      * 
      * @return the modifiable list of trust engines in the chain
      */
-    @Nonnull public List<TrustEngine<TokenType>> getChain() {
-        return engines;
+    @Nonnull  @NonnullElements @Unmodifiable @NotLive public List<TrustEngine<TokenType>> getChain() {
+        return ImmutableList.copyOf(engines);
     }
 
     /** {@inheritDoc} */

Modified: trunk/opensaml-security-impl/src/test/java/org/opensaml/security/trust/impl/ChainingTrustEngineTest.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-security-impl/src/test/java/org/opensaml/security/trust/impl/ChainingTrustEngineTest.java?rev=3819&r1=3818&r2=3819&view=diff
==============================================================================
--- trunk/opensaml-security-impl/src/test/java/org/opensaml/security/trust/impl/ChainingTrustEngineTest.java (original)
+++ trunk/opensaml-security-impl/src/test/java/org/opensaml/security/trust/impl/ChainingTrustEngineTest.java Fri Apr 25 19:02:03 2014
@@ -17,6 +17,10 @@
 
 package org.opensaml.security.trust.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 
 import org.opensaml.core.criterion.EntityIdCriterion;
@@ -35,6 +39,8 @@
     
     private ChainingTrustEngine<FooToken> engine;
     
+    private List<TrustEngine<FooToken>> chain;
+    
     private FooToken token;
 
     @BeforeMethod
@@ -42,7 +48,7 @@
         
         token = new FooToken();
         
-        engine = new ChainingTrustEngine<FooToken>();
+        chain = new ArrayList<>();
         
         criteriaSet = new CriteriaSet();
         criteriaSet.add( new EntityIdCriterion("dummyEntityID") );
@@ -50,35 +56,49 @@
     
     @Test
     public void testFirstTrusted() throws SecurityException {
-        engine.getChain().add( new FooEngine(Boolean.TRUE));

[... 128 lines stripped ...]


More information about the commits mailing list