[ 
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: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to