Repository: oozie Updated Branches: refs/heads/master 2a26670ea -> 810390155
OOZIE-2942 [examples] Fix Findbugs warnings (Jan Hentschel, kmarton via andras.piros) Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/81039015 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/81039015 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/81039015 Branch: refs/heads/master Commit: 8103901558938b017d06a03010b485818d3f8d0f Parents: 2a26670 Author: Andras Piros <[email protected]> Authored: Tue Jul 31 10:53:29 2018 +0200 Committer: Andras Piros <[email protected]> Committed: Tue Jul 31 10:53:29 2018 +0200 ---------------------------------------------------------------------- .../java/org/apache/oozie/example/DateList.java | 118 +++---- .../apache/oozie/example/LocalOozieExample.java | 5 +- .../org/apache/oozie/example/Repeatable.java | 347 ++++++++++--------- release-log.txt | 1 + 4 files changed, 234 insertions(+), 237 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/81039015/examples/src/main/java/org/apache/oozie/example/DateList.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/oozie/example/DateList.java b/examples/src/main/java/org/apache/oozie/example/DateList.java index 7e574cb..731fe41 100644 --- a/examples/src/main/java/org/apache/oozie/example/DateList.java +++ b/examples/src/main/java/org/apache/oozie/example/DateList.java @@ -29,72 +29,64 @@ import java.util.Properties; import java.util.TimeZone; public class DateList { - private static final TimeZone UTC = getTimeZone("UTC"); - private static String DATE_LIST_SEPARATOR = ","; + private static final TimeZone UTC = getTimeZone("UTC"); + private static String DATE_LIST_SEPARATOR = ","; - public static void main(String[] args) throws Exception { - if (args.length < 5) { - System.out - .println("Usage: java DateList <start_time> <end_time> <frequency> <timeunit> <timezone>"); - System.out - .println("Example: java DateList 2009-02-01T01:00Z 2009-02-01T02:00Z 15 MINUTES UTC"); - System.exit(1); - } - Date startTime = parseDateUTC(args[0]); - Date endTime = parseDateUTC(args[1]); - Repeatable rep = new Repeatable(); - rep.setBaseline(startTime); - rep.setFrequency(Integer.parseInt(args[2])); - rep.setTimeUnit(TimeUnit.valueOf(args[3])); - rep.setTimeZone(getTimeZone(args[4])); - Date date = null; - int occurrence = 0; - StringBuilder dateList = new StringBuilder(); - do { - date = rep.getOccurrenceTime(startTime, occurrence++, null); - if (!date.before(endTime)) { - break; - } - if (occurrence > 1) { - dateList.append(DATE_LIST_SEPARATOR); - } - dateList.append(formatDateUTC(date)); - } while (date != null); + public static void main(String[] args) throws Exception { + if (args.length < 5) { + System.out + .println("Usage: java DateList <start_time> <end_time> <frequency> <timeunit> <timezone>"); + System.out + .println("Example: java DateList 2009-02-01T01:00Z 2009-02-01T02:00Z 15 MINUTES UTC"); + System.exit(1); + } + Date startTime = parseDateUTC(args[0]); + Date endTime = parseDateUTC(args[1]); + Repeatable rep = new Repeatable(); + rep.setBaseline(startTime); + rep.setFrequency(Integer.parseInt(args[2])); + rep.setTimeUnit(TimeUnit.valueOf(args[3])); + rep.setTimeZone(getTimeZone(args[4])); + int occurrence = 0; + Date date = rep.getOccurrenceTime(startTime, occurrence++, null); + StringBuilder dateList = new StringBuilder(); + while (date != null && date.before(endTime)) { + date = rep.getOccurrenceTime(startTime, occurrence++, null); + if (occurrence > 1) { + dateList.append(DATE_LIST_SEPARATOR); + } + dateList.append(formatDateUTC(date)); + } - System.out.println("datelist :" + dateList+ ":"); - //Passing the variable to WF that could be referred by subsequent actions - File file = new File(System.getProperty("oozie.action.output.properties")); - Properties props = new Properties(); - props.setProperty("datelist", dateList.toString()); - OutputStream os = new FileOutputStream(file); - props.store(os, ""); - os.close(); - } + System.out.println("datelist :" + dateList+ ":"); + //Passing the variable to WF that could be referred by subsequent actions + File file = new File(System.getProperty("oozie.action.output.properties")); + Properties props = new Properties(); + props.setProperty("datelist", dateList.toString()); + try (OutputStream os = new FileOutputStream(file)) { + props.store(os, ""); + } + } + //Utility methods + private static DateFormat getISO8601DateFormat() { + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); + dateFormat.setTimeZone(UTC); + return dateFormat; + } - //Utility methods - private static DateFormat getISO8601DateFormat() { - DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); - dateFormat.setTimeZone(UTC); - return dateFormat; - } + private static TimeZone getTimeZone(String tzId) { + TimeZone tz = TimeZone.getTimeZone(tzId); + if (!tz.getID().equals(tzId)) { + throw new IllegalArgumentException("Invalid TimeZone: " + tzId); + } + return tz; + } - private static TimeZone getTimeZone(String tzId) { - TimeZone tz = TimeZone.getTimeZone(tzId); - if (!tz.getID().equals(tzId)) { - throw new IllegalArgumentException("Invalid TimeZone: " + tzId); - } - return tz; - } - - private static Date parseDateUTC(String s) throws Exception { - return getISO8601DateFormat().parse(s); - } - private static String formatDateUTC(Date d) throws Exception { - return (d != null) ? getISO8601DateFormat().format(d) : "NULL"; - } - - private static String formatDateUTC(Calendar c) throws Exception { - return (c != null) ? formatDateUTC(c.getTime()) : "NULL"; - } + private static Date parseDateUTC(String s) throws Exception { + return getISO8601DateFormat().parse(s); + } + private static String formatDateUTC(Date d) throws Exception { + return (d != null) ? getISO8601DateFormat().format(d) : "NULL"; + } } http://git-wip-us.apache.org/repos/asf/oozie/blob/81039015/examples/src/main/java/org/apache/oozie/example/LocalOozieExample.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/oozie/example/LocalOozieExample.java b/examples/src/main/java/org/apache/oozie/example/LocalOozieExample.java index c9f5697..7cb8ed2 100644 --- a/examples/src/main/java/org/apache/oozie/example/LocalOozieExample.java +++ b/examples/src/main/java/org/apache/oozie/example/LocalOozieExample.java @@ -69,7 +69,9 @@ public class LocalOozieExample { conf.setProperty(OozieClient.APP_PATH, new Path(appUri, "workflow.xml").toString()); // load additional workflow job parameters from properties file if (propertiesFile != null) { - conf.load(new FileInputStream(propertiesFile)); + try (FileInputStream properties = new FileInputStream(propertiesFile)) { + conf.load(properties); + } } // submit and start the workflow job @@ -112,5 +114,4 @@ public class LocalOozieExample { } System.out.println(); } - } http://git-wip-us.apache.org/repos/asf/oozie/blob/81039015/examples/src/main/java/org/apache/oozie/example/Repeatable.java ---------------------------------------------------------------------- diff --git a/examples/src/main/java/org/apache/oozie/example/Repeatable.java b/examples/src/main/java/org/apache/oozie/example/Repeatable.java index ee86325..198f387 100644 --- a/examples/src/main/java/org/apache/oozie/example/Repeatable.java +++ b/examples/src/main/java/org/apache/oozie/example/Repeatable.java @@ -23,177 +23,180 @@ import java.util.TimeZone; import java.util.Calendar; public class Repeatable { - private String name; - private Date baseline; - private TimeZone timeZone; - private int frequency; - private TimeUnit timeUnit; - public static final TimeZone UTC = TimeZone.getTimeZone("UTC"); - - /** - * Compute the occurrence number for the given nominal time using a TZ-DST - * sensitive frequency If nominal time is before baseline return -1 - * - * @param nominalTime - * :baseline time - * @param timeLimit - * : Max end time - * @return occurrence number - */ - int getOccurrence(Date nominalTime, Date timeLimit) { - int occurrence = -1; - // ensure nominal time is greater than initial-instance - long positiveDiff = nominalTime.getTime() - getBaseline().getTime(); - if (positiveDiff >= 0) { - Calendar calendar = Calendar.getInstance(getTimeZone()); - calendar.setLenient(true); - calendar.setTime(getBaseline()); - occurrence = 0; - // starting from initial instance increment frequencies until - // passing nominal time - while (calendar.getTime().compareTo(nominalTime) < 0) { - if (timeLimit != null - && calendar.getTime().compareTo(timeLimit) > 0) { - return -1; - } - calendar.add(getTimeUnit().getCalendarUnit(), getFrequency()); - occurrence++; - } - // compute reminder delta between nominal time and closest greater - // frequency tick time - long nominalCurrentDelta = nominalTime.getTime() - - calendar.getTime().getTime(); - // ensure that computed current is greater than initial-instance - // the nominalCurrentDelta has to be used to cover the case when the - // computed current - // falls between (-1*f ... 0*f) - positiveDiff = calendar.getTime().getTime() - - getBaseline().getTime() + nominalCurrentDelta; - if (positiveDiff < 0) { - occurrence = -1; - } - } - return occurrence; - } - - /** - * Compute the occurrence number for the given nominal time using a TZ-DST - * sensitive frequency If nominal time is before baseline return -1 - * - * @param nominalTime - * :baseline time - * @return occurrence number - */ - public int getOccurrence(Date nominalTime) { - return getOccurrence(nominalTime, null); - } - - /** - * Compute the occurrence nominal time for the given nominal-time and - * occurrence-offset using a TZ-DST sensitive frequency If the computed - * occurrence is before baseline time returns NULL - * - * @param nominalTime - * :baseline time - * @param occurrenceOffset - * : offset - * @param timeLimit - * : Max end time - * @return Date after 'occurrenceOffset' instance - */ - Date getOccurrenceTime(Date nominalTime, int occurrenceOffset, - Date timeLimit) { - Date date = null; - int occurrence = getOccurrence(nominalTime, timeLimit); - if (occurrence > -1) { - occurrence += occurrenceOffset; - occurrence = (occurrence >= 0) ? occurrence : -1; - } - if (occurrence > -1) { - Calendar calendar = Calendar.getInstance(getTimeZone()); - calendar.setLenient(true); - calendar.setTime(getBaseline()); - calendar.add(getTimeUnit().getCalendarUnit(), getFrequency() - * occurrence); - date = calendar.getTime(); - - } - return date; - } - - /** - * Compute the occurrence nominal time for the given nominal-time and - * occurrence-offset using a TZ-DST sensitive frequency If the computed - * occurrence is before baseline time returns NULL - * - * @param nominalTime - * :baseline time - * @param occurrenceOffset - * : offset - * @return Date after 'occurrenceOffset' instance - */ - public Date getOccurrenceTime(Date nominalTime, int occurrenceOffset) { - return getOccurrenceTime(nominalTime, occurrenceOffset, null); - } - - /** - * computes the nominal time for the Nth occurrence of the Repeatable - * - * @param occurrence - * : instance numbner - * @return TimeStamp of the Nth instance - */ - public Date getTime(int occurrence) { - if (occurrence < 0) { - throw new IllegalArgumentException("occurrence cannot be <0"); - } - Calendar calendar = Calendar.getInstance(getTimeZone()); - calendar.setLenient(true); - calendar.setTime(getBaseline()); - calendar.add(getTimeUnit().getCalendarUnit(), getFrequency() - * occurrence); - return calendar.getTime(); - } - - // Setters and getters - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Date getBaseline() { - return baseline; - } - - public void setBaseline(Date baseline) { - this.baseline = baseline; - } - - public TimeZone getTimeZone() { - return timeZone; - } - - public void setTimeZone(TimeZone timeZone) { - this.timeZone = timeZone; - } - - public int getFrequency() { - return frequency; - } - - public void setFrequency(int frequency) { - this.frequency = frequency; - } - - public TimeUnit getTimeUnit() { - return timeUnit; - } - - public void setTimeUnit(TimeUnit timeUnit) { - this.timeUnit = timeUnit; - } + private String name; + private Date baseline; + private TimeZone timeZone; + private int frequency; + private TimeUnit timeUnit; + public static final TimeZone UTC = TimeZone.getTimeZone("UTC"); + + /** + * Compute the occurrence number for the given nominal time using a TZ-DST + * sensitive frequency If nominal time is before baseline return -1 + * + * @param nominalTime + * :baseline time + * @param timeLimit + * : Max end time + * @return occurrence number + */ + int getOccurrence(Date nominalTime, Date timeLimit) { + int occurrence = -1; + // ensure nominal time is greater than initial-instance + long positiveDiff = nominalTime.getTime() - getBaseline().getTime(); + if (positiveDiff >= 0) { + Calendar calendar = Calendar.getInstance(getTimeZone()); + calendar.setLenient(true); + calendar.setTime(getBaseline()); + occurrence = 0; + // starting from initial instance increment frequencies until + // passing nominal time + while (calendar.getTime().compareTo(nominalTime) < 0) { + if (timeLimit != null + && calendar.getTime().compareTo(timeLimit) > 0) { + return -1; + } + calendar.add(getTimeUnit().getCalendarUnit(), getFrequency()); + occurrence++; + } + // compute reminder delta between nominal time and closest greater + // frequency tick time + long nominalCurrentDelta = nominalTime.getTime() + - calendar.getTime().getTime(); + // ensure that computed current is greater than initial-instance + // the nominalCurrentDelta has to be used to cover the case when the + // computed current + // falls between (-1*f ... 0*f) + positiveDiff = calendar.getTime().getTime() + - getBaseline().getTime() + nominalCurrentDelta; + if (positiveDiff < 0) { + occurrence = -1; + } + } + return occurrence; + } + + /** + * Compute the occurrence number for the given nominal time using a TZ-DST + * sensitive frequency If nominal time is before baseline return -1 + * + * @param nominalTime + * :baseline time + * @return occurrence number + */ + public int getOccurrence(Date nominalTime) { + return getOccurrence(nominalTime, null); + } + + /** + * Compute the occurrence nominal time for the given nominal-time and + * occurrence-offset using a TZ-DST sensitive frequency If the computed + * occurrence is before baseline time returns NULL + * + * @param nominalTime + * :baseline time + * @param occurrenceOffset + * : offset + * @param timeLimit + * : Max end time + * @return Date after 'occurrenceOffset' instance + */ + Date getOccurrenceTime(Date nominalTime, int occurrenceOffset, + Date timeLimit) { + Date date = null; + int occurrence = getOccurrence(nominalTime, timeLimit); + if (occurrence > -1) { + occurrence += occurrenceOffset; + occurrence = (occurrence >= 0) ? occurrence : -1; + } + if (occurrence > -1) { + Calendar calendar = Calendar.getInstance(getTimeZone()); + calendar.setLenient(true); + calendar.setTime(getBaseline()); + calendar.add(getTimeUnit().getCalendarUnit(), getFrequency() + * occurrence); + date = calendar.getTime(); + + } + return date; + } + + /** + * Compute the occurrence nominal time for the given nominal-time and + * occurrence-offset using a TZ-DST sensitive frequency If the computed + * occurrence is before baseline time returns NULL + * + * @param nominalTime + * :baseline time + * @param occurrenceOffset + * : offset + * @return Date after 'occurrenceOffset' instance + */ + public Date getOccurrenceTime(Date nominalTime, int occurrenceOffset) { + return getOccurrenceTime(nominalTime, occurrenceOffset, null); + } + + /** + * computes the nominal time for the Nth occurrence of the Repeatable + * + * @param occurrence + * : instance numbner + * @return TimeStamp of the Nth instance + */ + public Date getTime(int occurrence) { + if (occurrence < 0) { + throw new IllegalArgumentException("occurrence cannot be <0"); + } + Calendar calendar = Calendar.getInstance(getTimeZone()); + calendar.setLenient(true); + calendar.setTime(getBaseline()); + calendar.add(getTimeUnit().getCalendarUnit(), getFrequency() + * occurrence); + return calendar.getTime(); + } + + // Setters and getters + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getBaseline() { + if (this.baseline == null) { + this.baseline = new Date(); + } + return new Date(baseline.getTime()); + } + + public void setBaseline(Date baseline) { + this.baseline = baseline; + } + + public TimeZone getTimeZone() { + return timeZone; + } + + public void setTimeZone(TimeZone timeZone) { + this.timeZone = timeZone; + } + + public int getFrequency() { + return frequency; + } + + public void setFrequency(int frequency) { + this.frequency = frequency; + } + + public TimeUnit getTimeUnit() { + return timeUnit; + } + + public void setTimeUnit(TimeUnit timeUnit) { + this.timeUnit = timeUnit; + } } http://git-wip-us.apache.org/repos/asf/oozie/blob/81039015/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index fb0e020..bb98c3d 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 5.1.0 release (trunk - unreleased) +OOZIE-2942 [examples] Fix Findbugs warnings (Jan Hentschel, kmarton via andras.piros) OOZIE-2718 Improve -dryrun for bundles (zhengxb2005, asalamon74 via andras.piros) OOZIE-3156 amend Retry SSH action check when cannot connect to remote host (txsing, matijhs via andras.piros) OOZIE-3303 Oozie UI does not work after Jetty 9.3 upgrade (asalamon74 via gezapeti)
