001 /**
002 * Copyright (c) 2010 Yahoo! Inc. All rights reserved.
003 * Licensed under the Apache License, Version 2.0 (the "License");
004 * you may not use this file except in compliance with the License.
005 * You may obtain a copy of the License at
006 *
007 * http://www.apache.org/licenses/LICENSE-2.0
008 *
009 * Unless required by applicable law or agreed to in writing, software
010 * distributed under the License is distributed on an "AS IS" BASIS,
011 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 * See the License for the specific language governing permissions and
013 * limitations under the License. See accompanying LICENSE file.
014 */
015 package org.apache.oozie.client.rest;
016
017 import java.text.ParseException;
018 import java.text.SimpleDateFormat;
019 import java.util.ArrayList;
020 import java.util.Date;
021 import java.util.List;
022 import java.util.Locale;
023 import java.util.TimeZone;
024
025 import org.json.simple.JSONArray;
026 import org.json.simple.JSONObject;
027
028
029 /**
030 * Json utils methods.
031 */
032 public class JsonUtils {
033
034 /**
035 * Format a Date in RFC822 GMT.
036 *
037 * @param date date to format.
038 * @return RFC822 GMT for the date, <code>null</code> if the date was <code>null</null>.
039 */
040 public static String formatDateRfc822(Date date) {
041 if (date != null) {
042 SimpleDateFormat dateFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
043 dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
044 return dateFormater.format(date);
045 }
046 return null;
047 }
048
049 /**
050 * Parse a string in RFC822 GMT format.
051 *
052 * @param str string to parse.
053 * @return parsed date, <code>null</code> if the string was <code>null</null> or in an invalid format.
054 */
055 static Date parseDateRfc822(String str) {
056 if (str != null) {
057 try {
058 SimpleDateFormat dateFormater = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
059 dateFormater.setTimeZone(TimeZone.getTimeZone("GMT"));
060 return dateFormater.parse(str);
061 }
062 catch (ParseException ex) {
063 return null;
064 }
065 }
066 return null;
067 }
068
069 /**
070 * Return a long value from a JSONObject.
071 *
072 * @param map JSON object.
073 * @param name name of the property.
074 * @return the long value associated with it, or 0 if not defined.
075 */
076 public static long getLongValue(JSONObject map, String name) {
077 Long l = (Long) map.get(name);
078 return (l != null) ? l : 0;
079 }
080
081 /**
082 * Return a List<String> value from a JSONObject.
083 *
084 * @param map JSON object.
085 * @param name name of the property.
086 * @return the List<String> value associated with it, or null if not defined.
087 */
088 public static List<String> getListString(JSONObject json, String name) {
089 ArrayList<String> values = new ArrayList();
090 JSONArray array = (JSONArray) json.get(name);
091 if (array == null) {
092 return null;
093 }
094
095 for (Object o : array) {
096 values.add((String) o);
097 }
098 return values;
099 }
100
101 }