<style>
/* Changing the layout to use less space for mobiles */
@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) {
#email-body { min-width: 30em !important; }
#email-page { padding: 8px !important; }
#email-banner { padding: 8px 8px 0 8px !important; }
#email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; }
#email-fields { padding: 0 8px 8px 8px !important; }
#email-gutter { width: 0 !important; }
}
</style>
<div id="email-body">
<table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;">
<tr valign="top">
<td id="email-page" style="padding:16px !important;">
<table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;">
<tr valign="top">
<td bgcolor="#ffffff" style="background-color:#ffffff;color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="https://shibboleth.net/images/shib_240x83.png" alt="" style="vertical-align:top;" /></td>
</tr><tr valign="top">
<td id="email-banner" style="padding:32px 32px 0 32px;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;">
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;">
<img id="email-avatar" src="https://issues.shibboleth.net/jira/secure/useravatar?avatarId=10202" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" />
<div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
<a class="user-hover" rel="putmanb@shibboleth.net" id="email_putmanb@shibboleth.net" href="https://issues.shibboleth.net/jira/secure/ViewProfile.jspa?name=putmanb%40shibboleth.net" style="color:#326ca6;">Brent Putman</a>
commented on <img src="https://issues.shibboleth.net/jira/images/icons/issuetypes/subtask_alternate.png" height="16" width="16" border="0" align="absmiddle" alt="Sub-task"> <a style='color:#326ca6;text-decoration:none;' href='https://issues.shibboleth.net/jira/browse/IDP-118'>IDP-118</a>
</div>
<div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;">
<a style='color:#326ca6;text-decoration:none;' href='https://issues.shibboleth.net/jira/browse/IDP-118'><strong>Create a profile workflow action that encodes outbound messages</strong></a>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td id="email-fields" style="padding:0 32px 32px 32px;">
<table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%">
<tr valign="top">
<td id="email-gutter" style="width:64px;white-space:nowrap;"></td>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td colspan="2" style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 16px 0;width:100%;">
<div class="comment-block" style="background-color:#edf5ff;border:1px solid #dddddd;color:#000000;padding:12px;"><p>Ok, I had in the past thought about the ECP case for the confidentiality/integrity question being problematic, although I also hadn't really given any thought to alternatives. Whatever we do there, we have to decide about supporting (or not) the 'conditional' flag.</p>
<p>On the encoder "factory": actually no, that's not really what I'm talking about. The functionality there is just: 1) map/translate the binding URI to a bean 'id' (or 'name' alias) 2) ask the application context for that bean. It's basically the class below. You still want Spring being the factory for the encoders because that's where the depedencices for them are defined and injected. So it's not really a "factory" per se, but rather a "factory proxy", or something like that.</p>
<p>A variant of the idea is that the code below could just live right in the action.</p>
<p>Another (not exclusive) variant is that instead of having an explicit Map<String, String> for the binding URI -> bean name translation, we could adopt a bean naming convention, so the translation is just a simple string manipulation, e.g bean id/name: 'encoders.saml.<bindingURI>'.</p>
<p>Note: For the explicit URI->name mapping approach, Spring actually has a data type called <idref> for String values which actually represent bean ID's. The advantage over a plain String is that it validates that bean actually exists.</p>
<p>I still think I personally slightly prefer the factory/lookup approach over the way of defining transitions in WebFlow. Putting those there seems to me to be baking a lot of complexity and low-level config into the flow definition itself.</p>
<p>I think I will play around with these variants in my testbed to get a hands-on feel for them.</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java"><span class="code-keyword">public</span> class SpringAwareEncoderLookup <span class="code-keyword">implements</span> ApplicationContextAware {
        
<span class="code-keyword">private</span> Map<<span class="code-object">String</span>, <span class="code-object">String</span>> lookupMap;
        
<span class="code-keyword">private</span> ApplicationContext appContext;
        
<span class="code-keyword">public</span> SpringAwareEncoderLookup(Map<<span class="code-object">String</span>, <span class="code-object">String</span>> map) {
lookupMap = map;
}
        
<span class="code-keyword">public</span> void setApplicationContext(ApplicationContext applicationContext) <span class="code-keyword">throws</span> BeansException {
appContext = applicationContext;
}
        
<span class="code-keyword">public</span> MessageEncoder<?> get(<span class="code-object">String</span> bindingURI) {
<span class="code-object">String</span> beanName = lookupMap.get(bindingURI);
<span class="code-keyword">if</span> (bindingURI != <span class="code-keyword">null</span>) {
<span class="code-keyword">return</span> appContext.getBean(beanName, MessageEncoder.class);
} <span class="code-keyword">else</span> {
<span class="code-keyword">return</span> <span class="code-keyword">null</span>;
}
}
}
</pre>
</div></div> </div>
<div style="color:#505050;padding:4px 0 0 0;"> </div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td><!-- End #email-page -->
</tr>
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;">
This message is automatically generated by JIRA.<br />
If you think it was sent incorrectly, please contact your JIRA administrators<br />
For more information on JIRA, see: <a style='color:#326ca6;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a>
</td>
</tr>
</table><!-- End #email-wrap -->
</div><!-- End #email-body -->