001 package com.nimbusds.openid.connect.sdk; 002 003 004 import org.apache.commons.lang3.StringUtils; 005 006 import com.nimbusds.oauth2.sdk.ParseException; 007 008 009 /** 010 * Enumeration of the display types for authentication and consent UIs. This 011 * class is immutable. 012 * 013 * <p>Related specifications: 014 * 015 * <ul> 016 * <li>OpenID Connect Messages 1.0, section 2.1.1. 017 * </ul> 018 * 019 * @author Vladimir Dzhuvinov 020 */ 021 public enum Display { 022 023 024 /** 025 * Full user-agent page view (default). 026 */ 027 PAGE, 028 029 030 /** 031 * Popup user-agent window. The popup user-agent window should be 450 032 * pixels wide and 500 pixels tall. 033 */ 034 POPUP, 035 036 037 /** 038 * Device that leverages a touch interface. The authorisation server 039 * may attempt to detect the touch device and further customise the 040 * interface. 041 */ 042 TOUCH, 043 044 045 /** 046 * Feature phone. 047 */ 048 WAP; 049 050 051 /** 052 * Gets the default display type. 053 * 054 * @return The default display type ({@link #PAGE}). 055 */ 056 public static Display getDefault() { 057 058 return PAGE; 059 } 060 061 062 /** 063 * Returns the string identifier of this display type. 064 * 065 * @return The string identifier. 066 */ 067 @Override 068 public String toString() { 069 070 return super.toString().toLowerCase(); 071 } 072 073 074 /** 075 * Parses a display type. 076 * 077 * @param s The string to parse. If the string is {@code null} or empty 078 * the {@link #getDefault} display type will be returned. 079 * 080 * @return The display type. 081 * 082 * @throws ParseException If the parsed string doesn't match a display 083 * type. 084 */ 085 public static Display parse(final String s) 086 throws ParseException { 087 088 if (StringUtils.isBlank(s)) 089 return getDefault(); 090 091 if (s.equals("page")) 092 return PAGE; 093 094 if (s.equals("popup")) 095 return POPUP; 096 097 if (s.equals("touch")) 098 return TOUCH; 099 100 if (s.equals("wap")) 101 return WAP; 102 103 throw new ParseException("Unknown display type: " + s); 104 } 105 }