[java-shib-attribute] branch main updated: JSSH-5 ServiceableComponent should implement AutoClose

Rod Widdowson rdw at steadingsoftware.com
Fri Nov 25 14:57:31 UTC 2022


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch main
in repository java-shib-attribute.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=b33fc402ac141bc99bb0dc0b941380967ed719f7

The following commit(s) were added to refs/heads/main by this push:
     new b33fc402a JSSH-5 ServiceableComponent should implement AutoClose
b33fc402a is described below

commit b33fc402ac141bc99bb0dc0b941380967ed719f7
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Nov 25 14:55:23 2022 +0000

    JSSH-5 ServiceableComponent should implement AutoClose
    
    https://shibboleth.atlassian.net/browse/JSSH-5
    
    AttributeResolverImpl is no longer a ServiceableComponent.
    Also fix a bug exposed in the AttributeFilterServiceStrategy
---
 .../impl/AttributeFilterServiceStrategy.java       |  2 ++
 .../resolver/impl/AttributeResolverImpl.java       |  8 ++-----
 .../resolver/impl/AttributeResolverImplTest.java   |  1 -
 .../impl/AttributeResolverServiceStrategy.java     | 10 ++++++---
 .../resolver/spring/AttributeResolverTest.java     |  6 +++---
 .../testing/BaseAttributeDefinitionParserTest.java | 25 ++++++++++++++--------
 6 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
index baaafa226..f4b127c59 100644
--- a/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
+++ b/shib-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/impl/AttributeFilterServiceStrategy.java
@@ -65,6 +65,8 @@ public class AttributeFilterServiceStrategy extends AbstractIdentifiableInitiali
             filter.initialize();
             result = new SpringServiceableComponent<AttributeFilter>(filter);
             result.setApplicationContext(appContext);
+            result.setId(getId());
+            result.initialize();
         } catch (final ComponentInitializationException e) {
             throw new ServiceException("Unable to initialize attribute filter for " + appContext.getDisplayName(), e);
         }
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
index c5df50535..10f215210 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
@@ -59,6 +59,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.LazyList;
 import net.shibboleth.shared.collection.LazyMap;
+import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
@@ -73,7 +74,7 @@ import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
  * {@link net.shibboleth.shared.resolver.Criterion}s. <br>
  */
 @ThreadSafe
-public class AttributeResolverImpl extends AbstractServiceableComponent<AttributeResolver> implements
+public class AttributeResolverImpl extends AbstractIdentifiableInitializableComponent implements
         AttributeResolver {
 
     /** Class logger. */
@@ -705,11 +706,6 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
 
     }
 
-    /** {@inheritDoc} */
-    @Override @Nonnull public AttributeResolver getComponent() {
-        return this;
-    }
-
     /**
      * Conditionally start a timer at the beginning of the resolution process.
      * 
diff --git a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
index f18baf1c5..71b6a233a 100644
--- a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
+++ b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImplTest.java
@@ -1021,7 +1021,6 @@ public class AttributeResolverImplTest {
         
         result.setAttributeDefinitions(definitions == null ? Collections.emptyList() : definitions);
         result.setDataConnectors(connectors == null ? Collections.emptyList() : connectors);
-        result.setApplicationContext(new MockApplicationContext());
         return result;
     }
 
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java
index a267fb170..0861cb1b6 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/impl/AttributeResolverServiceStrategy.java
@@ -35,6 +35,7 @@ import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponen
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.service.ServiceException;
 import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
+import net.shibboleth.shared.spring.service.impl.SpringServiceableComponent;
 
 /**
  * Strategy for summoning up an {@link AttributeResolverImpl} from a populated {@link ApplicationContext}. We do this by
@@ -85,14 +86,17 @@ public class AttributeResolverServiceStrategy extends AbstractIdentifiableInitia
         resolver.setDataConnectors(connectors);
         resolver.setId(getId());
         resolver.setStripNulls(isStripNulls());
-        resolver.setApplicationContext(appContext);
-
+        final SpringServiceableComponent<AttributeResolver> result;
         try {
             resolver.initialize();
+            result = new SpringServiceableComponent<AttributeResolver>(resolver);
+            result.setApplicationContext(appContext);
+            result.setId(getId());
+            result.initialize();
         } catch (final ComponentInitializationException e) {
             throw new ServiceException("Unable to initialize attribute resolver for " + appContext.getDisplayName(), e);
         }
-        return resolver;
+        return result;
     }
     
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
index fb728abb0..4e1f758c0 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
@@ -340,7 +340,7 @@ public class AttributeResolverTest extends OpenSAMLInitBaseTestCase {
         assertEquals(resolvedAttributes.get("testing").getValues().size(), 2);
     }
 
-    @Test public void selective() throws ResolutionException {
+    @Test public void selective() throws ResolutionException, ComponentInitializationException {
         final GenericApplicationContext context = new GenericApplicationContext();
         setTestContext(context);
         context.setDisplayName("ApplicationContext: " + AttributeResolverTest.class);
@@ -372,7 +372,7 @@ public class AttributeResolverTest extends OpenSAMLInitBaseTestCase {
         assertTrue(resolutionContext.getResolvedIdPAttributes().isEmpty());
     }
     
-    @Test public void preResolve() throws ResolutionException {
+    @Test public void preResolve() throws ResolutionException, ComponentInitializationException {
         final GenericApplicationContext context = new GenericApplicationContext();
         setTestContext(context);
         context.setDisplayName("ApplicationContext: " + AttributeResolverTest.class);
@@ -412,7 +412,7 @@ public class AttributeResolverTest extends OpenSAMLInitBaseTestCase {
         assertEquals(postOnly.getValues().get(0).getDisplayValue(), "preOnly");
     }
 
-    @Test public void selectiveNavigate() throws ResolutionException {
+    @Test public void selectiveNavigate() throws ResolutionException, ComponentInitializationException {
         final GenericApplicationContext context = new GenericApplicationContext();
         setTestContext(context);
         context.setDisplayName("ApplicationContext: " + AttributeResolverTest.class);
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java
index 8ef0eaf69..4fbaa4c44 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java
@@ -31,18 +31,21 @@ import org.springframework.context.support.GenericApplicationContext;
 import org.testng.annotations.AfterMethod;
 
 import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
+import net.shibboleth.idp.attribute.resolver.AttributeResolver;
 import net.shibboleth.idp.attribute.resolver.DataConnector;
 import net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl;
 import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.SimpleAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverServiceStrategy;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.service.ServiceException;
 import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
 import net.shibboleth.shared.spring.config.StringToDurationConverter;
 import net.shibboleth.shared.spring.config.StringToIPRangeConverter;
 import net.shibboleth.shared.spring.config.StringToResourceConverter;
 import net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext;
 import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
+import net.shibboleth.shared.spring.service.impl.SpringServiceableComponent;
 
 /**
  * Base class for tests for {@link SimpleAttributeDefinitionParser} and by extension {@link BaseAttributeDefinitionParser}.
@@ -189,15 +192,19 @@ public abstract class BaseAttributeDefinitionParserTest extends OpenSAMLInitBase
         return getBean(DATACONNECTOR_FILE_PATH + fileName, claz, context, supressValid);
     }
 
-    static public AttributeResolverImpl getResolver(final ApplicationContext appCtx) {
-        final AttributeResolverServiceStrategy strategy = new AttributeResolverServiceStrategy();
-        strategy.setId("testResolver");
-        try {
-            strategy.initialize();
-        } catch (final ComponentInitializationException e) {
-            return null;
-        }
-        return (AttributeResolverImpl) strategy.apply(appCtx);
+    static public AttributeResolverImpl getResolver(final ApplicationContext appContext) throws ComponentInitializationException {
+
+        final Collection<AttributeDefinition> definitions =
+                appContext.getBeansOfType(AttributeDefinition.class).values();
+
+        final Collection<DataConnector> connectors = appContext.getBeansOfType(DataConnector.class).values();
+
+        final AttributeResolverImpl resolver = new AttributeResolverImpl();
+        resolver.setAttributeDefinitions(definitions);
+        resolver.setDataConnectors(connectors);
+        resolver.setId("testResolver");
+        resolver.initialize();
+        return resolver;
     }
 
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list