/* * oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text. * * Copyright (c) 2014, Gluu */ package org.xdi.oxauth.model.authorize; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.lang.StringUtils; import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; import org.xdi.oxauth.model.util.Util; /** * @author Javier Rojas Blum Date: 03.09.2012 */ public class IdTokenMember { private List<Claim> claims; private Integer maxAge; public IdTokenMember(JSONObject jsonObject) throws JSONException { claims = new ArrayList<Claim>(); for (Iterator<String> iterator = jsonObject.keys(); iterator.hasNext(); ) { String claimName = iterator.next(); ClaimValue claimValue = null; if (claimName != null && claimName.equals("max_age") && jsonObject.has("max_age")) { maxAge = jsonObject.getInt("max_age"); } else if (jsonObject.isNull(claimName)) { claimValue = ClaimValue.createNull(); } else { JSONObject claimValueJsonObject = jsonObject.getJSONObject(claimName); if (claimValueJsonObject.has("essential")) { boolean essential = claimValueJsonObject.getBoolean("essential"); claimValue = ClaimValue.createEssential(essential); } else if (claimValueJsonObject.has("values")) { JSONArray claimValueJsonArray = claimValueJsonObject.getJSONArray("values"); List<String> claimValueArr = Util.asList(claimValueJsonArray); claimValue = ClaimValue.createValueList(claimValueArr); } else if (claimValueJsonObject.has("value")) { String value = claimValueJsonObject.getString("value"); claimValue = ClaimValue.createSingleValue(value); } } Claim claim = new Claim(claimName, claimValue); claims.add(claim); } } public List<Claim> getClaims() { return claims; } public Integer getMaxAge() { return maxAge; } public Claim getClaim(String claimName) { if (StringUtils.isNotBlank(claimName)) { for (Claim claim : claims) { if (claimName.equals(claim.getName())) { return claim; } } } return null; } }