[java-identity-provider] branch master updated: IDP-1390 - Service layer for exposing FlowDescriptor beans

Scott Cantor cantor.2 at osu.edu
Wed Jan 9 18:11:02 EST 2019


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

scantor pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=5de663be5e4d78efcf14f0c52375bfe118c25bba

The following commit(s) were added to refs/heads/master by this push:
       new  5de663b   IDP-1390 - Service layer for exposing FlowDescriptor beans
5de663b is described below

commit 5de663be5e4d78efcf14f0c52375bfe118c25bba
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Jan 9 18:10:59 2019 -0500

    IDP-1390 - Service layer for exposing FlowDescriptor beans
    
    https://issues.shibboleth.net/jira/browse/IDP-1390
    
    Insert FlowDescriptor interface into class hierarchy.
---
 .../idp/admin/AdministrativeFlowDescriptor.java    |  3 ++-
 .../idp/authn/AuthenticationFlowDescriptor.java    |  4 ++-
 .../SubjectCanonicalizationFlowDescriptor.java     |  3 ++-
 .../config/impl/AbstractProtocolConfiguration.java | 11 +-------
 .../net/shibboleth/idp/profile/FlowDescriptor.java | 31 ++++++++++++++++++++++
 .../config/AbstractProfileConfiguration.java       | 20 +++++---------
 .../ProfileInterceptorFlowDescriptor.java          |  3 ++-
 7 files changed, 47 insertions(+), 28 deletions(-)

diff --git a/idp-admin-api/src/main/java/net/shibboleth/idp/admin/AdministrativeFlowDescriptor.java b/idp-admin-api/src/main/java/net/shibboleth/idp/admin/AdministrativeFlowDescriptor.java
index f1977c6..a490e9c 100644
--- a/idp-admin-api/src/main/java/net/shibboleth/idp/admin/AdministrativeFlowDescriptor.java
+++ b/idp-admin-api/src/main/java/net/shibboleth/idp/admin/AdministrativeFlowDescriptor.java
@@ -22,6 +22,7 @@ import javax.annotation.Nullable;
 import org.opensaml.saml.ext.saml2mdui.UIInfo;
 
 import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
+import net.shibboleth.idp.profile.FlowDescriptor;
 
 /**
  * A descriptor for an administrative flow.
@@ -34,7 +35,7 @@ import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
  * 
  * @since 3.3.0
  */
-public interface AdministrativeFlowDescriptor extends AuthenticationProfileConfiguration {
+public interface AdministrativeFlowDescriptor extends FlowDescriptor, AuthenticationProfileConfiguration {
     
     /**
      * Get a logging ID to use when auditing this profile.
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
index 9c9ff51..ba54709 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
@@ -27,6 +27,7 @@ import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
 import net.shibboleth.idp.authn.principal.PrincipalSupportingComponent;
+import net.shibboleth.idp.profile.FlowDescriptor;
 import net.shibboleth.utilities.java.support.annotation.Duration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonNegative;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
@@ -56,7 +57,8 @@ import com.google.common.collect.Collections2;
  * </p>
  */
 public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializableComponent implements
-        PrincipalSupportingComponent, Predicate<ProfileRequestContext>, StorageSerializer<AuthenticationResult> {
+        FlowDescriptor, PrincipalSupportingComponent, Predicate<ProfileRequestContext>,
+            StorageSerializer<AuthenticationResult> {
 
     /** Prefix convention for flow IDs. */
     @Nonnull @NotEmpty public static final String FLOW_ID_PREFIX = "authn/";
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java
index 2fb04d3..de0437f 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java
@@ -19,6 +19,7 @@ package net.shibboleth.idp.authn;
 
 import javax.annotation.Nonnull;
 
+import net.shibboleth.idp.profile.FlowDescriptor;
 import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -41,7 +42,7 @@ import com.google.common.base.Predicates;
  * </p>
  */
 public class SubjectCanonicalizationFlowDescriptor extends AbstractIdentifiableInitializableComponent implements
-        Predicate<ProfileRequestContext> {
+        FlowDescriptor, Predicate<ProfileRequestContext> {
 
     /** Predicate that must be true for this flow to be usable for a given request. */
     @Nonnull private Predicate<ProfileRequestContext> activationCondition;
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/impl/AbstractProtocolConfiguration.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/impl/AbstractProtocolConfiguration.java
index f6f8039..e319fcc 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/impl/AbstractProtocolConfiguration.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/config/impl/AbstractProtocolConfiguration.java
@@ -49,9 +49,6 @@ public abstract class AbstractProtocolConfiguration extends AbstractConditionalP
     /** CAS base protocol URI. */
     public static final String PROTOCOL_URI = "https://www.apereo.org/cas/protocol";
 
-    /** Initialization flag. */
-    private boolean initialized;
-
     /** Lookup function to supply {@link #ticketValidityPeriod} property. */
     @Nullable private Function<ProfileRequestContext, Long> ticketValidityPeriodLookupStrategy;
 
@@ -85,16 +82,10 @@ public abstract class AbstractProtocolConfiguration extends AbstractConditionalP
     }
 
     /** {@inheritDoc} */
-    @Override public void initialize() throws ComponentInitializationException {
+    @Override public void doInitialize() throws ComponentInitializationException {
         Constraint.isNotNull(getSecurityConfiguration(), "Security configuration cannot be null.");
         Constraint.isNotNull(getSecurityConfiguration().getIdGenerator(),
                 "Security configuration ID generator cannot be null.");
-        initialized = true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isInitialized() {
-        return initialized;
     }
 
     /**
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/FlowDescriptor.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/FlowDescriptor.java
new file mode 100644
index 0000000..6913d6e
--- /dev/null
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/FlowDescriptor.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file except in
+ * compliance with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.profile;
+
+import net.shibboleth.utilities.java.support.component.DestructableComponent;
+import net.shibboleth.utilities.java.support.component.IdentifiableComponent;
+import net.shibboleth.utilities.java.support.component.InitializableComponent;
+
+/**
+ * Marker interface for a descriptor for a webflow allowing managed injection of configuration settings.
+ * 
+ * @since 4.0.0
+ */
+public interface FlowDescriptor extends IdentifiableComponent, InitializableComponent, DestructableComponent {
+
+}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/AbstractProfileConfiguration.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/AbstractProfileConfiguration.java
index 2093046..90367dd 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/AbstractProfileConfiguration.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/AbstractProfileConfiguration.java
@@ -35,14 +35,15 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElemen
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 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.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /** Base class for {@link ProfileConfiguration} implementations. */
-public abstract class AbstractProfileConfiguration implements ProfileConfiguration {
+public abstract class AbstractProfileConfiguration extends AbstractIdentifiableInitializableComponent
+        implements ProfileConfiguration {
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractProfileConfiguration.class);
@@ -50,9 +51,6 @@ public abstract class AbstractProfileConfiguration implements ProfileConfigurati
     /** Access to servlet request. */
     @Nullable private ServletRequest servletRequest;
 
-    /** ID of the profile configured. */
-    @Nonnull @NotEmpty private final String profileId;
-
     /** Lookup function to supply {@link #inboundFlows} property. */
     @Nullable private Function<ProfileRequestContext,List<String>> inboundFlowsLookupStrategy;
 
@@ -83,7 +81,7 @@ public abstract class AbstractProfileConfiguration implements ProfileConfigurati
      * @param id ID of the communication profile, never null or empty
      */
     public AbstractProfileConfiguration(@Nonnull @NotEmpty @ParameterName(name="id") final String id) {
-        profileId = Constraint.isNotNull(StringSupport.trimOrNull(id), "Profile identifier cannot be null or empty");
+        setId(id);
         inboundFlows = Collections.emptyList();
         outboundFlows = Collections.emptyList();
     }
@@ -103,12 +101,6 @@ public abstract class AbstractProfileConfiguration implements ProfileConfigurati
 
     /** {@inheritDoc} */
     @Override
-    @Nonnull @NotEmpty public String getId() {
-        return profileId;
-    }
-
-    /** {@inheritDoc} */
-    @Override
     @Nullable public SecurityConfiguration getSecurityConfiguration() {
         return getIndirectProperty(securityConfigurationLookupStrategy, securityConfiguration);
     }
@@ -245,7 +237,7 @@ public abstract class AbstractProfileConfiguration implements ProfileConfigurati
     /** {@inheritDoc} */
     @Override
     public int hashCode() {
-        return profileId.hashCode();
+        return getId().hashCode();
     }
 
     /** {@inheritDoc} */
@@ -264,7 +256,7 @@ public abstract class AbstractProfileConfiguration implements ProfileConfigurati
         }
 
         final AbstractProfileConfiguration other = (AbstractProfileConfiguration) obj;
-        return Objects.equals(profileId, other.getId());
+        return Objects.equals(getId(), other.getId());
     }
 
     /**
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java
index a91705c..8c02ad6 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.profile.interceptor;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import net.shibboleth.idp.profile.FlowDescriptor;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
@@ -42,7 +43,7 @@ import com.google.common.base.Predicates;
  * </p>
  */
 public class ProfileInterceptorFlowDescriptor extends AbstractIdentifiableInitializableComponent implements
-        Predicate<ProfileRequestContext> {
+        FlowDescriptor, Predicate<ProfileRequestContext> {
 
     /** Prefix convention for flow IDs. */
     @Nonnull @NotEmpty public static final String FLOW_ID_PREFIX = "intercept/";

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


More information about the commits mailing list