1.1 === - Update javaRuntype version to 1.2 - Remove reduce and unfold method references - Deprecate unfold functions - Deprecate on(...) methods in Fn - Deprecate FnReduce and all reduce methods - Add between to FnObject, FnInteger, FnX functions - Create shorter versions of Call and Get function methods. - Add isCalendar function to FnString - Add isEmpty and reverse to FnString - Improve conversion from String into Number - Add characters \u0100 to \u017E and \u01A0 to \u01FF to FnString.asciify() - New FnString functions: "startsWith", "endsWith" and "substring" - count() function in FnArray, List or Set receives Object input - Add functions to FnString to allow determining whether a String is numeric, a valid number, etc. - Fix conversions into number removing new BigInteger(string) - Fix module operations in FnLong, FnBigInteger, ... - Throw exception in conversions from String into Number if the whole input String is not convertable - Throw exception in conversions using SimpleDateFormat if the whole input String is not convertable - RemoveAllFalse implementation counter intuitive - Check whether remainder in FnBigDecimal should be added to other FnX classes 1.0 === (Same as 1.0-beta3) 1.0-beta3 ========= - New extensions: * Ognl function hub class now is an extension on its own: op4j-ognl * New extension for jodatime-related functions: op4j-jodatime - Documentation * Added web function reference for every function hub class. * Added explanations for all FnString functions. - Structural changes: * Separated non "on" functions from Fn into a new FnFunc function hub class. * Updated javaRuntype dependency to version 1.1 * Removed all dependencies except javaRuntype and Apache Commons Lang. * FnY (FnBigDecimal, FnBigInteger, FnDouble, FnFloat, FnInteger, FnLong and FnShort) return types replaced in methods returning Function with Function - Functions * Added "split" and "join" functions to FnString. * Added "eqValue" and "notEqValue" functions to FnObject, FnNumber and variants for comparing equality using "compareTo(param) == 0" instead of "equals". * Added "if" functions (ifTrue, ifFalse, etc) to FnFunc with "else" side. * Added new "replaceX()" functions to FnString in order to make regular expression-based replacements on Strings. * Added new "extractX()" functions to FnString in order to make regular expression-based substring extractions from Strings. * Added new "matchX()" functions to FnString in order to make regular expression matching on Strings. - Actions * Removed actions ifNullOrTrue, ifNullOrFalse, ifNotNullAndFalse, ifNotNullAndTrue actions for conditional execution in order to remove conditional execution complexity. * Created new "execIfTrue", "execIfFalse", "execIfNull", "execIfNotNull" actions for conditional execution, both with only "then" and with both "then"+"else" executable functions. * Added new "toMap" actions to arrays, lists and sets for creating maps by specifying two functions instead of one (one function for keys, another for values). * Added a "reverse" action to arrays, lists, maps and sets. * Added new "zip" methods to arrays, lists and sets in order to be able to zip collections instead of separate elements like before. - Resolved issues: * Fixed compareTo-based functions (lessThan, greaterThan, lessOrEqTo, greaterOrEqTo) when null or BigDecimal arguments were passed to the function. * Fixed eq and notEq when null arguments were passed to the function. 1.0-beta2 ========= - Structural changes: * "Multi" generic operators removed. * Made all predefined op4j functions extend org.op4j.function.Function and thus provide an "execute" method without context which allows them to be executed on their own more easily. * Moved class "Fn" to package org.op4j.functions. Now it will also contain "function-oriented" functions, and thus act also as a "function hub" class. * org.op4j.target.ExecCtxImpl is now public and was moved to org.op4j.util.ExecCtxImpl. * FnMath removed. FnX (X=Integer,Long,Double...) will be used instead. * FnMathOfX classes renamed to FnX. * Added aggregation functions in FnInteger,FnLong,etc. for arrays. * Improved precision management in FnInteger,FnLong,etc. mathematical functions. * Created org.op4j.util.ValuePair in order to support Binary Operation Functions (e.g. reductions). * Cast methods "asArrayOf", "asListOf", "asMapOf" and "asSetOf" in array, list, map and set operators renamed to "of" and created "castToArrayOf", "castToListOf", "castToMapOf" and "castToSetOf" aliases. "asType" methods renamed to "castTo". * Renamed "toMapByKeyEval" to "zipKeysBy", and added "zipValuesBy", "zipKeys" and "zipValues". * Renamed "toMapByAlternateElements" to "couple", and added "coupleAndGroup". - New functions * Created "FnReduce" function hub class with functions ready to be used in "reduce" operations. * Created "unfoldArrayOf", "unfoldList" and "unfoldSet" actions to FnArray, FnList and FnSet for creating these structures by unfolding (using an iterative function) from a single object. * Added "negate" function to FnBoolean. * Added "eq" (equality) and "notEq" (non-equality) function to FnObject, FnNumber, FnBoolean, FnString, FnCalendar, FnDate. * Added "eqBy" and "notEqBy" functions to FnObject, FnNumber and FnBoolean, for evaluating equality based on the execution of a function on the target/s. * Added "sortBy" functions to FnArray, FnList, FnMap and FnSet. * Added "lessThan", "lessOrEqTo", "greaterThan" and "greaterOrEqTo" functions to FnObject, FnNumber and FnString. * Added "lessThanBy", "lessOrEqToBy", "greaterThanBy" and "greaterOrEqToBy" functions to FnObject and FnNumber. * Added "isNull" and "isNotNull" functions to FnObject, FnNumber, FnBoolean, FnString, FnCalendar and FnDate. * Added "and", "or" and "not" functions to FnBoolean and Fn. * Added "chain" function to Fn. * Added "count" function to FnArray, FnList, FnMap and FnSet * Added "contains", "notContains, "containsAll", "containsAny" and "containsNone" functions to FnArray, FnList and FnSet. * Added "containsKey", "notContainsKey", "containsAllKeys", "containsAnyKeys" and "containsNoneKeys" functions to FnMap. * Added "by" function to Fn and FnBoolean, for allowing the execution of any function not on the target object itself, but on the result of applying a function ("by" function) on it. * Added "isNullBy" and "isNotNullBy" to FnBoolean and FnObject * Added "ifTrue", "ifFalse", "ifNull", "ifNotNull", "ifNullOrTrue", "ifNullOrFalse", "ifNotNullAndTrue" and "ifNotNulAndFalse" functions to Fn. * Added "whileTrue" and "whileFalse" functions to Fn for executing a function on a target object while a specified condition continues to be true. - New actions * Added "onArrayFor", "onListFor" and "onSetFor" methods to Op in order to build structures from their elements. * Added "onMapFor" to Op returning a new class of map operator: "Building map operator". This allows the building of maps with successive calls to the "and" method after the "onMapFor" call. This "and" method will dissapear after any other method is called. * Added utility initializer actions to Fn like "Fn.onString()" to avoid always having to specify the type as "Fn.on(Types.STRING)". * Created "reduce" actions for arrays, lists, and sets. * Created "unfoldArrayOf", "unfoldList" and "unfoldSet" actions for generic operators. * Added "sortBy" actions to array, list, map and set operators. 1.0-beta1 ========= - First beta release of op4j.