[java-plugin-shibd] branch main updated: Continued work on I/O model for flows.
Scott Cantor
cantor.2 at osu.edu
Wed May 29 16:20:56 UTC 2024
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-plugin-shibd.
View the commit online:
http://git.shibboleth.net/view/?p=java-plugin-shibd.git;a=commit;h=31fe360e0d5e768863e36f0483a789ed473a0b2d
The following commit(s) were added to refs/heads/main by this push:
new 31fe360 Continued work on I/O model for flows.
31fe360 is described below
commit 31fe360e0d5e768863e36f0483a789ed473a0b2d
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed May 29 12:20:49 2024 -0400
Continued work on I/O model for flows.
---
.../idp/flows/sp/abstract/sp-abstract-beans.xml | 16 ++-
.../idp/flows/sp/abstract/sp-abstract-flow.xml | 13 +-
.../shibboleth/sp/context/AgentRequestContext.java | 110 ++++++++++++++++-
.../sp/messaging/impl/DDFMessageDecoder.java | 66 ----------
.../sp/profile/impl/DecodeAgentRequest.java | 135 +++++++++++++++++++++
.../sp/profile/impl/EncodeAgentResponse.java | 115 ++++++++++++++++++
.../impl/InitializeOutboundMessageContext.java | 54 ---------
7 files changed, 372 insertions(+), 137 deletions(-)
diff --git a/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-beans.xml b/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-beans.xml
index ca93b24..ebb5805 100644
--- a/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-beans.xml
+++ b/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-beans.xml
@@ -62,16 +62,14 @@
<bean id="DefaultCleanupHook"
class="net.shibboleth.idp.authn.impl.ValidateCredentials.UsernamePasswordCleanupHook" />
- <bean id="DecodeMessage" class="org.opensaml.profile.action.impl.DecodeMessage" scope="prototype"
- p:messageType="net.shibboleth.sp.ddf.DDF">
- <constructor-arg>
- <bean class="net.shibboleth.sp.messaging.impl.DDFMessageDecoder" scope="prototype"
- p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier" />
- </constructor-arg>
- </bean>
+ <bean id="DecodeAgentRequest" class="net.shibboleth.sp.profile.impl.DecodeAgentRequest" scope="prototype"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier" />
+
+ <bean id="EncodeAgentResponse" class="net.shibboleth.sp.profile.impl.EncodeAgentResponse" scope="prototype"
+ p:httpServletResponseSupplier-ref="shibboleth.HttpServletResponseSupplier" />
- <bean id="InitializeOutboundMessageContext"
- class="net.shibboleth.sp.profile.impl.InitializeOutboundMessageContext" scope="prototype" />
+ <bean id="RecordResponseComplete" class="net.shibboleth.idp.profile.impl.RecordResponseComplete" scope="prototype" />
+
<!-- ======== Beans for agent authentication ======== -->
diff --git a/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-flow.xml b/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-flow.xml
index 11dbaf4..97610d2 100644
--- a/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-flow.xml
+++ b/sp-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/sp/abstract/sp-abstract-flow.xml
@@ -22,13 +22,12 @@
<evaluate expression="ValidateAgentCredentials" />
<evaluate expression="'proceed'" />
- <transition on="proceed" to="DecodeMessage" />
- <transition on="BypassAuthentication" to="DecodeMessage" />
+ <transition on="proceed" to="DecodeAgentRequest" />
+ <transition on="BypassAuthentication" to="DecodeAgentRequest" />
</action-state>
- <action-state id="DecodeMessage">
- <evaluate expression="DecodeMessage" />
- <evaluate expression="InitializeOutboundMessageContext" />
+ <action-state id="DecodeAgentRequest">
+ <evaluate expression="DecodeAgentRequest" />
<evaluate expression="'proceed'" />
<transition on="proceed" to="DoOperation" />
@@ -48,8 +47,8 @@
<!-- Pick back up with outbound side. -->
- <action-state id="HandleOutboundMessage">
- <evaluate expression="EncodeMessage" />
+ <action-state id="EncodeAgentResponse">
+ <evaluate expression="EncodeAgentResponse" />
<evaluate expression="RecordResponseComplete" />
<evaluate expression="'proceed'" />
diff --git a/sp-server-api/src/main/java/net/shibboleth/sp/context/AgentRequestContext.java b/sp-server-api/src/main/java/net/shibboleth/sp/context/AgentRequestContext.java
index fefe176..c799fb9 100644
--- a/sp-server-api/src/main/java/net/shibboleth/sp/context/AgentRequestContext.java
+++ b/sp-server-api/src/main/java/net/shibboleth/sp/context/AgentRequestContext.java
@@ -19,11 +19,18 @@ import javax.annotation.Nullable;
import org.opensaml.messaging.context.BaseContext;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import net.shibboleth.sp.Agent;
import net.shibboleth.sp.Application;
+import net.shibboleth.sp.ddf.DDF;
/**
- * General context for an agent request tracking basic information about the request.
+ * General context for an agent request tracking basic information about the request, the messages
+ * from and back to the agent, and wrapped servlet interfaces.
+ *
+ * <p>This context leaves the real input and output message trees free for use by existing
+ * classes.</p>
*/
public class AgentRequestContext extends BaseContext {
@@ -33,6 +40,18 @@ public class AgentRequestContext extends BaseContext {
/** Application for which the request was made. */
@Nullable private Application application;
+ /** Input message. */
+ @Nullable private DDF input;
+
+ /** Output message. */
+ @Nullable private DDF output;
+
+ /** Wrapped servlet request backed by input. */
+ @Nullable private HttpServletRequest wrappedHttpServletRequest;
+
+ /** Wrapped servlet response backed by output. */
+ @Nullable private HttpServletResponse wrappedHttpServletResponse;
+
/**
* Get the agent making the request.
*
@@ -74,5 +93,94 @@ public class AgentRequestContext extends BaseContext {
application = app;
return this;
}
+
+ /**
+ * Get the input message from the agent.
+ *
+ * @return input message
+ */
+ @Nullable public DDF getInput() {
+ return input;
+ }
+
+ /**
+ * Set the input message from the agent.
+ *
+ * @param ddf input message
+ *
+ * @return this context
+ */
+ @Nonnull public AgentRequestContext setInput(@Nullable final DDF ddf) {
+ input = ddf;
+
+ return this;
+ }
+
+ /**
+ * Get the output message for the agent.
+ *
+ * @return output message
+ */
+ @Nullable public DDF getOutput() {
+ return output;
+ }
+
+ /**
+ * Set the output message for the agent.
+ *
+ * @param ddf output message
+ *
+ * @return this context
+ */
+ @Nonnull public AgentRequestContext setOutput(@Nullable final DDF ddf) {
+ output = ddf;
+
+ return this;
+ }
+
+ /**
+ * Get the wrapped servlet request backed by the input message.
+ *
+ * @return wrapped servlet request
+ */
+ @Nullable public HttpServletRequest getWrappedHttpServletRequest() {
+ return wrappedHttpServletRequest;
+ }
+
+ /**
+ * Set the wrapped servlet request backed by the input message.
+ *
+ * @param wrapped wrapped servlet request
+ *
+ * @return this context
+ */
+ @Nonnull public AgentRequestContext setWrappedHttpServletRequest(@Nonnull final HttpServletRequest wrapped) {
+ wrappedHttpServletRequest = wrapped;
+
+ return this;
+ }
+
+ /**
+ * Get the wrapped servlet response backed by the output message.
+ *
+ * @return wrapped servlet response
+ */
+ @Nullable public HttpServletResponse getWrappedHttpServletResponse() {
+ return wrappedHttpServletResponse;
+ }
+
+ /**
+ * Set the wrapped servlet response backed by the output message.
+ *
+ * @param wrapped wrapped servlet response
+ *
+ * @return this context
+ */
+ @Nonnull public AgentRequestContext setWrappedHttpServletResponse(@Nonnull final HttpServletResponse wrapped) {
+ wrappedHttpServletResponse = wrapped;
+
+ return this;
+ }
+
}
\ No newline at end of file
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/messaging/impl/DDFMessageDecoder.java b/sp-server-impl/src/main/java/net/shibboleth/sp/messaging/impl/DDFMessageDecoder.java
deleted file mode 100644
index b4a4d7a..0000000
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/messaging/impl/DDFMessageDecoder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed 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.sp.messaging.impl;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.opensaml.messaging.context.MessageContext;
-import org.opensaml.messaging.decoder.MessageDecoder;
-import org.opensaml.messaging.decoder.MessageDecodingException;
-import org.opensaml.messaging.decoder.servlet.AbstractHttpServletRequestMessageDecoder;
-
-import jakarta.servlet.http.HttpServletRequest;
-import net.shibboleth.sp.ddf.DDF;
-
-/**
- * {@link MessageDecoder} to process DDF request bodies in supported formats.
- *
- * <p>The MIME type in the request is used to deermine what form of parsing and deserialization
- * to use.</p>
- *
- * <p>The only supported type at present is a custom type representing a record-oriented
- * syntax.</p>
- */
-public class DDFMessageDecoder extends AbstractHttpServletRequestMessageDecoder {
-
- /** {@inheritDoc} */
- @Override
- protected void doDecode() throws MessageDecodingException {
-
- final HttpServletRequest request = getHttpServletRequest();
- if (!"POST".equalsIgnoreCase(request.getMethod())) {
- throw new MessageDecodingException("This message decoder only supports the HTTP POST method");
- }
-
- final String contentType = request.getContentType();
- if (contentType == null) {
- throw new MessageDecodingException("Content-Type header not present in request");
- } else if (!contentType.equals("text/plain")) {
- throw new MessageDecodingException("Content-Type was unsupported");
- }
-
- try (final InputStream in = request.getInputStream()) {
- assert in != null;
- final DDF msg = DDF.deserialize(in);
- final MessageContext messageContext = new MessageContext();
- messageContext.setMessage(msg);
- setMessageContext(messageContext);
- } catch (final IOException e) {
- throw new MessageDecodingException("Unable to obtain input stream from HttpServletRequest", e);
- }
- }
-
-}
\ No newline at end of file
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/DecodeAgentRequest.java b/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/DecodeAgentRequest.java
new file mode 100644
index 0000000..4c6410a
--- /dev/null
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/DecodeAgentRequest.java
@@ -0,0 +1,135 @@
+/*
+ * Licensed 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.sp.profile.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.function.Function;
+
+import javax.annotation.Nonnull;
+
+import org.opensaml.messaging.context.navigate.ChildContextLookup;
+import org.opensaml.profile.action.ActionSupport;
+import org.opensaml.profile.action.EventIds;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+
+import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.idp.profile.AbstractProfileAction;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.sp.context.AgentRequestContext;
+import net.shibboleth.sp.ddf.DDF;
+
+/**
+ * A profile action to decode an agent request and stash the resulting {@link DDF} in the
+ * {@link AgentRequestContext}.
+ *
+ * <p>The MIME type in the request is used to deermine what form of parsing and deserialization
+ * to use. The only supported type at present is "text/plain" representing a record-oriented
+ * syntax.</p>
+ *
+ * <p>An empty output message object is also created.</p>
+ *
+ * @event {@link EventIds#PROCEED_EVENT_ID}
+ * @event {@link EventIds#INVALID_PROFILE_CTX}
+ * @event {@link EventIds#INVALID_MESSAGE}
+ * @post <pre>AgentRequestContext.getInput() != null</pre>
+ * @post <pre>AgentRequestContext.getOutput() != null</pre>
+ */
+public class DecodeAgentRequest extends AbstractProfileAction {
+
+ /** Class logger. */
+ @Nonnull private final Logger log = LoggerFactory.getLogger(DecodeAgentRequest.class);
+
+ /** Lookup strategy for {@link AgentRequestContext}. */
+ @Nonnull private Function<ProfileRequestContext,AgentRequestContext> agentRequestContextLookupStrategy;
+
+ /** Cached context to populate. */
+ @NonnullBeforeExec private AgentRequestContext agentRequestContext;
+
+ /** Constructor. */
+ public DecodeAgentRequest() {
+ agentRequestContextLookupStrategy = new ChildContextLookup<>(AgentRequestContext.class);
+ }
+
+ /**
+ * Sets the lookup strategy for the {@link AgentRequestContext}.
+ *
+ * @param strategy lookup strategy
+ */
+ public void setAgentRequestContextLookupStrategy(
+ @Nonnull final Function<ProfileRequestContext,AgentRequestContext> strategy) {
+ checkSetterPreconditions();
+
+ agentRequestContextLookupStrategy = Constraint.isNotNull(strategy,
+ "AgentRequestContext lookup strategy cannot be null");
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected boolean doPreExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
+
+ if (!super.doPreExecute(profileRequestContext)) {
+ return false;
+ }
+
+ agentRequestContext = agentRequestContextLookupStrategy.apply(profileRequestContext);
+ if (agentRequestContext == null) {
+ log.error("{} No AgentRequestContext found", getLogPrefix());
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_PROFILE_CTX);
+ return false;
+ }
+
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
+
+ final HttpServletRequest request = getHttpServletRequest();
+ if (request == null) {
+ log.error("{} No HttpServletRequest available", getLogPrefix());
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_PROFILE_CTX);
+ return;
+ }
+
+ if (!"POST".equalsIgnoreCase(request.getMethod())) {
+ log.warn("{} Invalid HTTP request method, only POST supported: ", getLogPrefix(), request.getMethod());
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MESSAGE);
+ return;
+ }
+
+ final String contentType = request.getContentType();
+ if (contentType == null || !contentType.equals("text/plain")) {
+ log.warn("{} Invalid HTTP content type, only text/plain supported: ", getLogPrefix(), contentType);
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MESSAGE);
+ return;
+ }
+
+ try (final InputStream in = request.getInputStream()) {
+ assert in != null;
+ final DDF msg = DDF.deserialize(in);
+ agentRequestContext.setInput(msg);
+ agentRequestContext.setOutput(new DDF());
+ } catch (final IOException e) {
+ log.warn("{} Unable to parse input message from HttpServletRequest", getLogPrefix(), e);
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MESSAGE);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/EncodeAgentResponse.java b/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/EncodeAgentResponse.java
new file mode 100644
index 0000000..dc29855
--- /dev/null
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/EncodeAgentResponse.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed 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.sp.profile.impl;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.function.Function;
+
+import javax.annotation.Nonnull;
+
+import org.opensaml.messaging.context.navigate.ChildContextLookup;
+import org.opensaml.profile.action.ActionSupport;
+import org.opensaml.profile.action.EventIds;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+
+import jakarta.servlet.http.HttpServletResponse;
+import net.shibboleth.idp.profile.AbstractProfileAction;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
+import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.sp.context.AgentRequestContext;
+import net.shibboleth.sp.ddf.DDF;
+
+/**
+ * A profile action to encode an agent response from the output {@link DDF} in the
+ * {@link AgentRequestContext}.
+ *
+ * @event {@link EventIds#PROCEED_EVENT_ID}
+ * @event {@link EventIds#INVALID_PROFILE_CTX}
+ * @event {@link EventIds#INVALID_MESSAGE}
+ * @event {@link EventIds#IO_ERROR}
+ * @pre <pre>AgentRequestContext.getOutput() != null</pre>
+ */
+public class EncodeAgentResponse extends AbstractProfileAction {
+
+ /** Class logger. */
+ @Nonnull private final Logger log = LoggerFactory.getLogger(EncodeAgentResponse.class);
+
+ /** Lookup strategy for {@link AgentRequestContext}. */
+ @Nonnull private Function<ProfileRequestContext,AgentRequestContext> agentRequestContextLookupStrategy;
+
+ /** Cached context containing the output message. */
+ @NonnullBeforeExec private DDF outputMessage;
+
+ /** Constructor. */
+ public EncodeAgentResponse() {
+ agentRequestContextLookupStrategy = new ChildContextLookup<>(AgentRequestContext.class);
+ }
+
+ /**
+ * Sets the lookup strategy for the {@link AgentRequestContext}.
+ *
+ * @param strategy lookup strategy
+ */
+ public void setAgentRequestContextLookupStrategy(
+ @Nonnull final Function<ProfileRequestContext,AgentRequestContext> strategy) {
+ checkSetterPreconditions();
+
+ agentRequestContextLookupStrategy = Constraint.isNotNull(strategy,
+ "AgentRequestContext lookup strategy cannot be null");
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected boolean doPreExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
+
+ if (!super.doPreExecute(profileRequestContext)) {
+ return false;
+ }
+
+ final AgentRequestContext agentRequestContext = agentRequestContextLookupStrategy.apply(profileRequestContext);
+ outputMessage = agentRequestContext != null ? agentRequestContext.getOutput() : null;
+ if (outputMessage == null) {
+ log.error("{} No output message found", getLogPrefix());
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_MESSAGE);
+ return false;
+ }
+
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
+
+ final HttpServletResponse response = getHttpServletResponse();
+ if (response == null) {
+ log.error("{} No HttpServletResponse available", getLogPrefix());
+ ActionSupport.buildEvent(profileRequestContext, EventIds.INVALID_PROFILE_CTX);
+ return;
+ }
+
+ try (final OutputStream out = response.getOutputStream()) {
+ assert out != null;
+ outputMessage.serialize(out);
+ } catch (final IOException e) {
+ log.warn("{} Unable to serialize output message", getLogPrefix(), e);
+ ActionSupport.buildEvent(profileRequestContext, EventIds.IO_ERROR);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/InitializeOutboundMessageContext.java b/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/InitializeOutboundMessageContext.java
deleted file mode 100644
index fd815d9..0000000
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/profile/impl/InitializeOutboundMessageContext.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed 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.sp.profile.impl;
-
-import javax.annotation.Nonnull;
-
-import org.opensaml.messaging.context.MessageContext;
-import org.opensaml.profile.action.EventIds;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-
-import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.shared.primitive.LoggerFactory;
-import net.shibboleth.sp.ddf.DDF;
-
-/**
- * Action that adds an outbound {@link MessageContext} and an empty {@link DDF} message to a
- * {@link ProfileRequestContext}.
- *
- * @event {@link EventIds#PROCEED_EVENT_ID}
- * @post <pre>ProfileRequestContext.ensureOutboundMessageContext().getMessage() instanceof DDF</pre>
- */
-public class InitializeOutboundMessageContext extends AbstractProfileAction {
-
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(InitializeOutboundMessageContext.class);
-
- /** Constructor. */
- public InitializeOutboundMessageContext() {
- }
-
- /** {@inheritDoc} */
- @Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) {
-
- final MessageContext msgCtx = new MessageContext();
- msgCtx.setMessage(new DDF());
- profileRequestContext.setOutboundMessageContext(msgCtx);
-
- log.debug("{} Initialized outbound message context", getLogPrefix());
- }
-
-}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list