Changeset 69


Ignore:
Timestamp:
11/05/12 15:47:47 (6 years ago)
Author:
philsmart
Message:

updates to include logos in idp and sp selection boxes. Cleaned up results page.

Location:
urlgenerator/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • urlgenerator/trunk/.classpath

    r67 r69  
    1818                </attributes> 
    1919        </classpathentry> 
    20         <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> 
    2120        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> 
    22         <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"> 
    23                 <attributes> 
    24                         <attribute name="maven.pomderived" value="true"/> 
    25                 </attributes> 
    26         </classpathentry> 
    2721        <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> 
    2822                <attributes> 
     
    3024                </attributes> 
    3125        </classpathentry> 
     26        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
     27        <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> 
    3228        <classpathentry kind="output" path="target/classes"/> 
    3329</classpath> 
  • urlgenerator/trunk/.settings/org.eclipse.jdt.core.prefs

    r67 r69  
    11eclipse.preferences.version=1 
    22org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 
    3 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 
     3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 
    44org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 
    5 org.eclipse.jdt.core.compiler.compliance=1.5 
     5org.eclipse.jdt.core.compiler.compliance=1.6 
    66org.eclipse.jdt.core.compiler.debug.lineNumber=generate 
    77org.eclipse.jdt.core.compiler.debug.localVariable=generate 
     
    1010org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 
    1111org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 
    12 org.eclipse.jdt.core.compiler.source=1.5 
     12org.eclipse.jdt.core.compiler.source=1.6 
  • urlgenerator/trunk/src/main/java/uk/ac/cardiff/wugen/generator/service/impl/MetadataServiceImpl.java

    r68 r69  
    22package uk.ac.cardiff.wugen.generator.service.impl; 
    33 
    4 import java.net.URL; 
    54import java.util.ArrayList; 
    65import java.util.List; 
     
    98import javax.xml.namespace.QName; 
    109 
    11 import org.opensaml.common.xml.SAMLConstants; 
    1210import org.opensaml.saml2.common.Extensions; 
    1311import org.opensaml.saml2.metadata.EntityDescriptor; 
    14 import org.opensaml.saml2.metadata.IDPSSODescriptor; 
    1512import org.opensaml.saml2.metadata.OrganizationDisplayName; 
    1613import org.opensaml.samlext.saml2mdui.Logo; 
     
    2219import uk.ac.cardiff.wayf.urlgenerator.metadata.MetadataInterfaceSelector; 
    2320import uk.ac.cardiff.wayf.urlgenerator.metadata.SamlMetadataHandler; 
     21import uk.ac.cardiff.wugen.generator.engine.WugenSamlConstants; 
    2422import uk.ac.cardiff.wugen.generator.service.MetadataService; 
    2523 
     
    3432    private SamlMetadataHandler samlMetadataHandler; 
    3533 
     34    private final String DEFAULT_NOLOGO_URL = "/template/images/icon/onebit_18.png"; 
     35 
    3636    /** 
    3737     * Creates a new instance of the {@link MetadataInterfaceSelector} for use by the UI. 
     
    3939     * @return {@link MetadataInterfaceSelector} 
    4040     */ 
     41    @Override 
    4142    public MetadataInterfaceSelector initialiseMetadataSelector() { 
    4243        MetadataInterfaceSelector metadataSelector = new MetadataInterfaceSelector(); 
     
    5152     * Returns a list of <code>SelectItem</code>s that represent identity providers from the loaded SAML metadata. 
    5253     */ 
     54    @Override 
    5355    public List<SelectItem> getIdentityProviders() { 
    5456        List<EntityDescriptor> entities = samlMetadataHandler.getIdentityProviders(); 
     
    5961     * Returns a list of <code>SelectItem</code>s that represent service providers from the loaded SAML metadata. 
    6062     */ 
     63    @Override 
    6164    public List<SelectItem> getServiceProviders() { 
    6265        List<EntityDescriptor> entities = samlMetadataHandler.getServiceProviders(); 
     
    6770     * Method that converts a list of <code>EntityDescriptor</code>s to a list of <code>SelectItem</code> for display. 
    6871     * The entityID is used as the item key, and if one exists the Organization Display Name (the first one) is used as 
    69      * the item label. If an Organization Display Name does not exist, the entityId is used as the item label. 
     72     * the item label. If an Organization Display Name does not exist, the entityId is used as the item label. The 
     73     * description field of the select item is used to hold the logo URL - if a logo does not exist the default logo URL 
     74     * is used. 
    7075     *  
    7176     * @param entities that are converted to <code>SelectItem</code>s 
     
    7681        for (EntityDescriptor entity : entities) { 
    7782 
    78             URL entityLogo = getMduiLogo(entity); 
     83            String entityLogo = getMduiLogo(entity); 
    7984 
    8085            SelectItem provider = null; 
     
    8388                if (displayNames != null && displayNames.size() > 0) { 
    8489                    String displayName = displayNames.get(0).getName().getLocalString(); 
    85                     provider = new SelectItem(entity.getEntityID(), displayName); 
     90                    provider = new SelectItem(entity.getEntityID(), displayName, entityLogo); 
    8691                } else { 
    87                     provider = new SelectItem(entity.getEntityID(), entity.getEntityID()); 
     92                    provider = new SelectItem(entity.getEntityID(), entity.getEntityID(), entityLogo); 
    8893                } 
    8994            } else { 
    90                 provider = new SelectItem(entity.getEntityID(), entity.getEntityID()); 
     95                provider = new SelectItem(entity.getEntityID(), entity.getEntityID(), entityLogo); 
    9196            } 
    9297            providerNames.add(provider); 
     
    95100    } 
    96101 
    97     private URL getMduiLogo(EntityDescriptor entity) { 
    98         QName qname = new QName(UIInfo.MDUI_NS, UIInfo.DEFAULT_ELEMENT_LOCAL_NAME, UIInfo.MDUI_PREFIX); 
    99         IDPSSODescriptor idpSso = entity.getIDPSSODescriptor(SAMLConstants.SAML20P_NS); 
    100         if (idpSso != null) { 
    101             // log.debug("Using qname {}", qname); 
    102             Extensions extensions = idpSso.getExtensions(); 
    103             if (extensions != null) { 
    104                 List<XMLObject> uiinfo = extensions.getUnknownXMLObjects(qname); 
    105                 // log.debug("Getting mdui ext for entity {}", entity.getEntityID()); 
    106                 if (entity.getEntityID().contains("cardiff")) { 
     102    /** 
     103     * Chooses the smallest sized (determined by height only) logo from the mdui SAML extensions if present, if not, 
     104     * null is returned. 
     105     *  
     106     * @param entity 
     107     * @return 
     108     */ 
     109    private String getMduiLogo(EntityDescriptor entity) { 
     110        Logo chosenLogo = null; 
    107111 
    108                     for (XMLObject object : uiinfo) { 
    109                         List<XMLObject> uiInfoObjects = object.getOrderedChildren(); 
    110                         UIInfo info = (UIInfo) object; 
    111                         for (XMLObject uiObject : uiInfoObjects) { 
    112                             if (uiObject.getElementQName().equals( 
    113                                     new QName(UIInfo.MDUI_NS, Logo.DEFAULT_ELEMENT_LOCAL_NAME, UIInfo.MDUI_PREFIX))) { 
    114                                 log.debug("Found logo {}", uiObject.getClass()); 
     112        Extensions extensions = null; 
    115113 
    116                             } 
     114        /* 
     115         * even though a loop here, there should only be one-of these protocols supported per entity, so only every one 
     116         * will give reference to extensions. 
     117         */ 
     118        for (String ssoProtocol : WugenSamlConstants.SUPPORTED_SAML_SSO_PROTOCOLS) { 
     119            if (entity.getIDPSSODescriptor(ssoProtocol) != null) { 
     120                extensions = entity.getIDPSSODescriptor(ssoProtocol).getExtensions(); 
     121            } 
     122        } 
     123 
     124        for (String ssoProtocol : WugenSamlConstants.SUPPORTED_SAML_SSO_PROTOCOLS) { 
     125            if (entity.getSPSSODescriptor(ssoProtocol) != null) { 
     126                extensions = entity.getSPSSODescriptor(ssoProtocol).getExtensions(); 
     127            } 
     128        } 
     129 
     130        if (extensions != null) { 
     131            List<XMLObject> uiinfos = 
     132                    extensions.getUnknownXMLObjects(new QName(UIInfo.MDUI_NS, UIInfo.DEFAULT_ELEMENT_LOCAL_NAME, 
     133                            UIInfo.MDUI_PREFIX)); 
     134            for (XMLObject uiinfo : uiinfos) { 
     135                if (uiinfo instanceof UIInfo) { 
     136                    UIInfo info = (UIInfo) uiinfo; 
     137                    List<Logo> logos = info.getLogos(); 
     138 
     139                    for (Logo logo : logos) { 
     140                        log.trace("Logo URL found {}", logo.getURL()); 
     141                        if (chosenLogo == null) { 
     142                            chosenLogo = logo; 
     143                        } else if (chosenLogo.getHeight() > logo.getHeight()) { 
     144                            chosenLogo = logo; 
    117145                        } 
    118  
    119146                    } 
    120147                } 
     148 
    121149            } 
    122150        } 
    123         return null; 
     151 
     152        if (chosenLogo != null) { 
     153            log.trace("Choosing logo [{}}", chosenLogo.getURL()); 
     154            return chosenLogo.getURL(); 
     155        } 
     156        return DEFAULT_NOLOGO_URL; 
    124157    } 
    125158 
  • urlgenerator/trunk/src/main/webapp/WEB-INF/flows/generate/spSelector.xhtml

    r53 r69  
    4545                                        </h:panelGrid> 
    4646 
    47                                         <rich:suggestionbox width="500" 
     47                                        <rich:suggestionbox width="600" 
    4848                                                suggestionAction="#{flowScope.metadataSelector.autocompleteSpFieldValues}" 
    4949                                                var="provider" fetchValue="#{provider.value}" for="providerInput" 
    5050                                                id="spSuggestionBox"> 
     51                                                <h:column> 
     52                            <h:graphicImage 
     53                                style="width:30px; border:0; margin-left: auto;margin-right: auto;" 
     54                                value="#{provider.description}" /> 
     55                        </h:column> 
    5156                                                <h:column> 
    5257                                                        <h:outputText value="#{provider.label}" /> 
  • urlgenerator/trunk/src/main/webapp/WEB-INF/flows/generate/wayfIdpSelector.xhtml

    r68 r69  
    5252                                        </h:panelGrid> 
    5353 
    54                                         <rich:suggestionbox width="500" 
     54                                        <rich:suggestionbox width="600" 
    5555                                                suggestionAction="#{flowScope.metadataSelector.autocompleteIdPFieldValues}" 
    5656                                                var="provider" fetchValue="#{provider.value}" for="providerInput" 
     
    5858                                                <h:column> 
    5959                                                        <h:graphicImage 
    60                                                                 style="width:20px; border:0; margin-left: auto;margin-right: auto;" 
    61                                                                 value="/template/images/info-icon.png" /> 
     60                                                                style="width:30px; border:0; margin-left: auto;margin-right: auto;" 
     61                                                                value="#{provider.description}" /> 
    6262                                                </h:column> 
    6363                                                <h:column> 
     
    6767                                                        <h:outputText value=" (#{provider.value})" /> 
    6868                                                </h:column> 
    69  
    7069                                                <a4j:support event="onselect" /> 
    7170 
Note: See TracChangeset for help on using the changeset viewer.