You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Matt Benson (JIRA)" <ji...@apache.org> on 2011/07/15 07:17:59 UTC

[jira] [Commented] (LANG-611) Consider improvements in LANG-396

    [ https://issues.apache.org/jira/browse/LANG-611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13065721#comment-13065721 ] 

Matt Benson commented on LANG-611:
----------------------------------

My feelings:
{noformat}
	//
	// ---------- org.apache.commons.lang ----------
	//

	// MJB: Extending every operation to handle arrays of arrays seems pointless;
	// having rejected that idea these are pretty easy to do using java.lang.reflect.Array:
	boolean _ArrayUtils_areSameLength(Object[]... arrays);
	boolean _ArrayUtils_areSameType(Object[]... arrays);

	// MJB: pending community accord, rejected in LANG-470:
	boolean _ArrayUtils_containsAnyOf(Object[] array, Object... possibleValues);
	boolean _ArrayUtils_containsAllOf(Object[] array, Object... possibleValues);

	// MJB: no varargs for the sake of varargs
	boolean _ArrayUtils_areEmpty(Object[]... arrays);
	Object[] _ArrayUtils_addAll(Object[]... arrays);
	Object[] _ArrayUtils_add(Object[] array, Object... values);

	// MJB: these would complement ArrayUtils.addAll(), but not so palatable X 8 primitive component types.  Would rename removeAll and removeElements if accepted.
	Object[] _ArrayUtils_remove(Object[] array, int... indices);
	Object[] _ArrayUtils_removeElement(Object[] array, Object... values);

	// MJB: this seems to confuse BitField with java.util.BitSet, different purpose
	int _BitField_xor(int... field);
	int _BitField_or(int... field);
	int _BitField_and(int... field);
	int _BitField_nor(int... field);
	int _BitField_nand(int... field);

	// Triple valued logic ala databases.
	// MJB: we have this one:
	Boolean _BooleanUtils_xor(Boolean... bools);

	// MJB: probably reasonable to accept remaining:
	Boolean _BooleanUtils_or(Boolean... bools);
	Boolean _BooleanUtils_and(Boolean... bools);
	Boolean _BooleanUtils_nor(Boolean... bools);
	Boolean _BooleanUtils_nand(Boolean... bools);

	// MJB: no pointless varargs
	boolean _CharEncoding_areSupported(String... encodings);
	
	// MJB: feels okay
	boolean _CharRange_containsAll(char... values);
	boolean _CharRange_containsAny(char... values);

	// MJB: in MethodUtils, plus he forgot his ellipsis ;)
	java.lang.reflect.Method _ClassUtils_getPublicMethod(Class cls, String methodName, Class<?> parameterTypes);

	// MJB: no pointless varargs
	boolean _ClassUtils_areSameClass(Class... clases);
	
	// MJB: done
	<T> T ObjectUtil_min (Comparable<T>... values);
	<T> T ObjectUtil_max (Comparable<T>... values);

	// MJB: hmm, PITA but could be useful for non-numeric types which are outside the purview of [math] component
	<T> T ObjectUtil_mode(Comparable<T>... values);
	<T> T ObjectUtil_median(Comparable<T>... values);

	// MJB: no pointless varargs, but the method/parameter name combination is admittedly pretty cute:
	<T> T ObjectUtil_areAllEqual(T... createdMen);

	// MJB: what's the use case for serializing a bunch of objects to one stream?
	void _SerializationUtils_serialize(java.io.OutputStream outputStream, java.io.Serializable... objs);

	// MJB: doesn't really hurt anything, but not a huge priority--kind of breaks symmetry vs. the signature with format elements:
	void _Validate_noNullElements(Object... collection);

	// MJB: done
	String _WordUtils_capitalize(String str, char... delimiters);
	String _WordUtils_capitalizeFully(String str, char... delimiters);
	String _WordUtils_initials(String str, char... delimiters);
	String _WordUtils_uncapitalize(String str, char... delimiters);

	//
	// ---------- org.apache.commons.lang.builder ----------
	//

	// MJB: done
	org.apache.commons.lang.builder.ReflectionToStringBuilder _ReflectionToStringBuilder_setExcludeFieldNames(String... names);

	// MJB: violates the principle of ToStringBuilder
	org.apache.commons.lang.builder.ToStringBuilder append(boolean... values);

	//
	// ---------- org.apache.commons.lang.math ----------
	//

	// MJB: these make sense:
	int _NumberUtils_min(int... values);
	int _NumberUtils_max(int... values);

	// MJB: pointless varargs, no; one method to get the overlap of two Ranges, yes
	org.apache.commons.lang.math.Range _Range_overlap(org.apache.commons.lang.math.Range... range);

	//
	// ---------- org.apache.commons.lang.text ----------
	//

	// Match according to the first Format which parses correctly.
	// e.g. allows dates as ddmmyy dd-mm-yyyy, etc.
 
	// MJB: reasonable
	void _CompositeFormat(java.text.Format formatter, java.text.Format... parsers); // constructor

	//
	// ---------- org.apache.commons.lang.time ----------
	//

	// MJB: no pointless varargs
	boolean _DateUtils_isSameDay(java.util.Calendar... cals);
	boolean _DateUtils_isSameDay(java.util.Date... dates);
	boolean _DateUtils_isSameInstant(java.util.Calendar... cals);
	boolean _DateUtils_isSameInstant(java.util.Date... date);
	boolean _DateUtils_isSameLocalTime(java.util.Calendar... cals);
 
	//MJB: assuming we take CompositeFormat with n parsers, no need:
	java.util.Date _DateUtils_parseDate(String str, String... parsePatterns);
	
{noformat}

> Consider improvements in LANG-396
> ---------------------------------
>
>                 Key: LANG-611
>                 URL: https://issues.apache.org/jira/browse/LANG-611
>             Project: Commons Lang
>          Issue Type: Improvement
>          Components: General
>            Reporter: Henri Yandell
>             Fix For: 3.x
>
>
> Richard's patch in LANG-396 had various improvement suggestions in addition to vararg fixing. Consider.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira