[
https://issues.apache.org/jira/browse/LOG4J2-1681?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Remko Popma updated LOG4J2-1681:
--------------------------------
Description:
This ticket proposes to introduce a public interface that imposes a total
ordering over the keys of a (ReadOnly)StringMap. This interface views all
key-value pairs as a sequence ordered by key, and allows keys and values to be
accessed by their index in the sequence.
{code}
interface IndexedReadOnlyStringMap extends ReadOnlyStringMap {
String getKeyAt(final int index);
<V> V getValueAt(final int index);
int indexOfKey(final String key);
}
interface IndexedStringMap extends IndexedReadOnlyStringMap, StringMap {}
{code}
The intention is to let SortedArrayStringMap implement these interfaces. (It
already implements the necessary methods; the visibility of these methods will
change from package-protected to public.)
These interfaces help reduce log4j's dependency on the JDK Map interface: the
JDK Map interface does not provide a garbage-free way to iterate over all its
keys or key-value pairs.
For example, these interfaces can be used to make MapFilter and its subclasses
garbage-free, and reduce allocation of temporary objects in MapMessage and
subclasses.
was:
I am planning to use SortedArrayStringMap to make MapFilter and its subclasses
garbage-free. It would be helpful if the following methods were public:
{code}
String getKeyAt(final int index) {...}
<V> V getValueAt(final int index) {...}
{code}
This would facilitate looping over the map contents without instantiating a
consumer.
I am not proposing to change the {{StringMap}} interface, this is only for
classes that are using the {{SortedArrayStringMap}} implementation class.
Issue Type: New Feature (was: Improvement)
Summary: Introduce interfaces IndexedStringMap and
IndexedReadOnlyStringMap (was: Make indexed getter methods in
SortedArrayStringMap public)
> Introduce interfaces IndexedStringMap and IndexedReadOnlyStringMap
> ------------------------------------------------------------------
>
> Key: LOG4J2-1681
> URL: https://issues.apache.org/jira/browse/LOG4J2-1681
> Project: Log4j 2
> Issue Type: New Feature
> Components: API
> Affects Versions: 2.7
> Reporter: Remko Popma
> Assignee: Remko Popma
> Fix For: 2.8
>
>
> This ticket proposes to introduce a public interface that imposes a total
> ordering over the keys of a (ReadOnly)StringMap. This interface views all
> key-value pairs as a sequence ordered by key, and allows keys and values to
> be accessed by their index in the sequence.
> {code}
> interface IndexedReadOnlyStringMap extends ReadOnlyStringMap {
> String getKeyAt(final int index);
> <V> V getValueAt(final int index);
> int indexOfKey(final String key);
> }
> interface IndexedStringMap extends IndexedReadOnlyStringMap, StringMap {}
> {code}
> The intention is to let SortedArrayStringMap implement these interfaces. (It
> already implements the necessary methods; the visibility of these methods
> will change from package-protected to public.)
> These interfaces help reduce log4j's dependency on the JDK Map interface: the
> JDK Map interface does not provide a garbage-free way to iterate over all its
> keys or key-value pairs.
> For example, these interfaces can be used to make MapFilter and its
> subclasses garbage-free, and reduce allocation of temporary objects in
> MapMessage and subclasses.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]