From 0a90384a9c7d840e88d9636271e8393a514647a0 Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Tue, 28 Jul 2009 10:34:52 +0200 Subject: Import shibboleth ds 1.1.0 --- .../middleware/shibboleth/wayf/IdPSite.html | 231 +++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 doc/src-xref/edu/internet2/middleware/shibboleth/wayf/IdPSite.html (limited to 'doc/src-xref/edu/internet2/middleware/shibboleth/wayf/IdPSite.html') diff --git a/doc/src-xref/edu/internet2/middleware/shibboleth/wayf/IdPSite.html b/doc/src-xref/edu/internet2/middleware/shibboleth/wayf/IdPSite.html new file mode 100644 index 0000000..a139c6d --- /dev/null +++ b/doc/src-xref/edu/internet2/middleware/shibboleth/wayf/IdPSite.html @@ -0,0 +1,231 @@ + + + + +IdPSite xref + + + +
View Javadoc
+
+1   /*
+2    * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
+3    *
+4    * Licensed under the Apache License, Version 2.0 (the "License");
+5    * you may not use this file except in compliance with the License.
+6    * You may obtain a copy of the License at
+7    *
+8    * http://www.apache.org/licenses/LICENSE-2.0
+9    *
+10   * Unless required by applicable law or agreed to in writing, software
+11   * distributed under the License is distributed on an "AS IS" BASIS,
+12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+13   * See the License for the specific language governing permissions and
+14   * limitations under the License.
+15   */
+16  
+17  package edu.internet2.middleware.shibboleth.wayf;
+18  
+19  import java.util.Comparator;
+20  import java.util.List;
+21  import java.util.Locale;
+22  
+23  import javax.servlet.http.HttpServletRequest;
+24  
+25  import org.opensaml.saml2.metadata.EntityDescriptor;
+26  import org.opensaml.saml2.metadata.Organization;
+27  import org.opensaml.saml2.metadata.OrganizationDisplayName;
+28  import org.opensaml.saml2.metadata.SingleSignOnService;
+29  
+30  /**
+31   * A class which abstracts an IdP for the sake of the WAYF display.  Given an {@link EntityDescriptor} as
+32   * input it provides bean style get functions for the name (EntityId), the display name 
+33   * (a hybrid of Organization name or EntityId and the IdP's SSO connection point.
+34   * 
+35   */
+36  public class IdPSite {
+37  
+38      /** The OpenSaml element that this stands for. */
+39      private EntityDescriptor entity;
+40      
+41      /** The language we set up */
+42      private String displayLanguage;
+43      
+44      /**
+45       * Create a new element from the provided Entity.
+46       * @param entityParam - What to create from
+47       */
+48      public IdPSite(EntityDescriptor entityParam) {
+49          entity = entityParam;
+50      }
+51      
+52      /**
+53       * Get the name for the enclosed entity. 
+54       * @return the name for the enclosed entity.
+55       */
+56      public String getName() {
+57              return entity.getEntityID();
+58      }
+59      
+60      /**
+61       * Get the user friendly name for the entity, collecting the locale from the 
+62       * browser if possible
+63       * @param req the request
+64       * @return a user friendly name.
+65       */
+66      public String getDisplayName(HttpServletRequest req) {
+67          //
+68          // Get the browser locale, failing that the server one
+69          //
+70          Locale locale = req.getLocale();
+71          if (null == locale) {
+72              Locale.getDefault();
+73          }
+74          String lang = locale.getLanguage();
+75              
+76          return getDisplayName(lang);
+77      }
+78      /**
+79       * Get the user friendly name for the entity, using provided language
+80       * @param lang the language.
+81       * 
+82       * @return a user friendly name.
+83       */
+84      private String getDisplayName(String lang) {
+85          Organization org = entity.getOrganization();
+86      
+87          if (org == null) {
+88              return entity.getEntityID();
+89          } 
+90          
+91          List<OrganizationDisplayName> list = org.getDisplayNames();
+92  
+93          //
+94          // Lookup first by locale
+95          //
+96          
+97          for (OrganizationDisplayName name:list) {
+98              if (null !=name && lang.equals(name.getName().getLanguage())) {
+99                  return name.getName().getLocalString();
+100             }
+101         }
+102         
+103         //
+104         // If that doesn't work then anything goes
+105         //
+106         
+107         for (OrganizationDisplayName name:list) {
+108             if (null !=name && null != name.getName().getLocalString()) {
+109                 return name.getName().getLocalString();
+110             }
+111         }
+112      
+113         //
+114         // If there is still nothing then use the entity Id
+115         //
+116         return entity.getEntityID();
+117     }
+118     /**
+119      * Get the user friendly name for the entity, the language we previouslt set up
+120      * @param lang the language.
+121      * 
+122      * @return a user friendly name.
+123      */
+124     public String getDisplayName() {
+125         return getDisplayName(displayLanguage);
+126     }
+127     
+128     /**
+129      * Comparison so we can sort the output for jsp.
+130      * @param o What to compare against
+131      * @return numeric encoding of comparison 
+132      * @see java.lang.Comparator
+133      */
+134     protected int compareTo(Object o, HttpServletRequest req) {
+135             
+136 
+137         String myDisplayName;
+138         String otherDisplayName;
+139         IdPSite other;
+140 
+141         if (equals(o)) {
+142             return 0;
+143         }
+144 
+145         myDisplayName = getDisplayName(req);
+146         if (null == myDisplayName) {
+147             myDisplayName = "";
+148         } 
+149         
+150         other = (IdPSite) o;
+151         otherDisplayName = other.getDisplayName(req);
+152         if (null == otherDisplayName) {
+153             otherDisplayName = "";
+154         }
+155 
+156         int result = myDisplayName.toLowerCase().compareTo(otherDisplayName.toLowerCase());
+157         if (result == 0) {
+158                 result = myDisplayName.compareTo(otherDisplayName);
+159         }
+160         return result;
+161     }
+162 
+163     /**
+164      * When a user has selected an IdP, this provides the address to which we redirect.
+165      * @return http address for the IdP this represents.  
+166      */
+167     public String getAddressForWAYF() {
+168         List<SingleSignOnService> ssoList;
+169         
+170         ssoList = entity.getIDPSSODescriptor(XMLConstants.SHIB_NS).getSingleSignOnServices();
+171         
+172         for (SingleSignOnService signOnService: ssoList) {
+173             if (XMLConstants.IDP_SSO_BINDING.equals(signOnService.getBinding())) {
+174                 return signOnService.getLocation();
+175             }
+176         }
+177         return null;
+178     }
+179 
+180     /**
+181      * Prior to display we set the display language from the
+182      * browser. There is probably a proper way to do this using
+183      * jsp, but I want to keep the API between JSP and java the same 1.3->2.0
+184      * @param lang the language to set
+185      */
+186     public void setDisplayLanguage(String lang) {
+187         this.displayLanguage = lang;
+188     }
+189     
+190     public static class Compare implements Comparator<IdPSite> {
+191 
+192         /**
+193          * This allows us to set up sorted lists of entities with respect to
+194          * the browser request.
+195          * 
+196          * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+197          */
+198         private HttpServletRequest req = null;
+199         
+200         private Compare() {
+201             //
+202             // No public method
+203         }
+204         
+205         public Compare(HttpServletRequest req) {
+206             this.req = req;
+207         }
+208         
+209         public int compare(IdPSite o1, IdPSite o2) {
+210             // TODO Auto-generated method stub
+211             return o1.compareTo(o2, req);
+212         }
+213         
+214     }
+215 
+216 }       
+217 
+
+
+ + -- cgit v1.1