/* * 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.util; 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.common.HasParamName; import java.io.UnsupportedEncodingException; import java.util.*; /** * @author Yuriy Zabrovarnyy * @author Javier Rojas Blum * @version December 26, 2016 */ public class Util { public static final String UTF8_STRING_ENCODING = "UTF-8"; public static byte[] getBytes(String p_str) throws UnsupportedEncodingException { return p_str.getBytes(UTF8_STRING_ENCODING); } public static List<String> asList(JSONArray p_array) throws JSONException { final List<String> result = new ArrayList<String>(); if (p_array != null) { final int length = p_array.length(); if (length > 0) { for (int i = 0; i < length; i++) { result.add(p_array.getString(i)); } } } return result; } public static void addToListIfHas(List<String> p_list, JSONObject jsonObj, String p_key) throws JSONException { if (jsonObj != null && org.apache.commons.lang.StringUtils.isNotBlank(p_key) && jsonObj.has(p_key)) { JSONArray array = jsonObj.getJSONArray(p_key); if (p_list != null && array != null) { p_list.addAll(asList(array)); } } } public static void addToJSONObjectIfNotNull(JSONObject p_jsonObject, String key, Object value) throws JSONException { if (p_jsonObject != null && value != null && StringUtils.isNotBlank(key)) { p_jsonObject.put(key, value); } } public static void addToJSONObjectIfNotNull(JSONObject p_jsonObject, String key, String[] value) throws JSONException { if (p_jsonObject != null && value != null && StringUtils.isNotBlank(key)) { p_jsonObject.put(key, new JSONArray(Arrays.asList(value))); } } public static String asString(List<? extends HasParamName> p_list) { final StringBuilder sb = new StringBuilder(); if (p_list != null && !p_list.isEmpty()) { for (HasParamName p : p_list) { sb.append(" ").append(p.getParamName()); } } return sb.toString().trim(); } public static String listAsString(List<String> p_list) { StringBuilder param = new StringBuilder(); if (p_list != null && !p_list.isEmpty()) { for (String item : p_list) { param.append(" ").append(item); } } return param.toString().trim(); } public static String mapAsString(Map<String, String> p_map) throws JSONException { if (p_map == null || p_map.size() == 0) { return null; } JSONArray jsonArray = new JSONArray(); for (String key : p_map.keySet()) { JSONObject jsonObject = new JSONObject(); jsonObject.put(key, p_map.get(key)); jsonArray.put(jsonObject); } return jsonArray.toString(); } public static boolean allNotBlank(String... p_strings) { if (p_strings != null && p_strings.length > 0) { for (String s : p_strings) { if (org.apache.commons.lang.StringUtils.isBlank(s)) { return false; } } return true; } return false; } public static List<String> splittedStringAsList(String p_string, String p_delimiter) { final List<String> result = new ArrayList<String>(); if (org.apache.commons.lang.StringUtils.isNotBlank(p_string) && org.apache.commons.lang.StringUtils.isNotEmpty(p_delimiter)) { final String[] array = p_string.split(p_delimiter); if (array != null && array.length > 0) { result.addAll(Arrays.asList(array)); } } return result; } public static List<String> jsonArrayStringAsList(String jsonString) throws JSONException { final List<String> result = new ArrayList<String>(); if (StringUtils.isNotBlank(jsonString)) { JSONArray jsonArray = new JSONArray(jsonString); return asList(jsonArray); } return result; } /** * @param jsonString [{"CustomHeader1":"custom_header_value_1"},.....,{"CustomHeaderN":"custom_header_value_N"}] * @return */ public static Map<String, String> jsonObjectArrayStringAsMap(String jsonString) throws JSONException { Map<String, String> result = new HashMap<String, String>(); if (!isNullOrEmpty(jsonString)) { JSONArray jsonArray = new JSONArray(jsonString); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Iterator<String> keysIter = jsonObject.keys(); while (keysIter.hasNext()) { String key = keysIter.next(); String value = jsonObject.getString(key); result.put(key, value); } } } return result; } public static <T> T firstItem(List<T> items) { if (items == null) { return null; } Iterator<T> iterator = items.iterator(); if (iterator.hasNext()) { return iterator.next(); } return null; } public static boolean isNullOrEmpty(String string) { return string == null || string.length() == 0; } }