jetty/jetty.project

ContainerLifeCycleMap

Fermée

#13 647 ouverte le 2 oct. 2025

 (1 commentaire) (0 réaction) (0 personne assignée)Java (1 913 forks)batch import
EnhancementHelp Wanted

Métriques du dépôt

Stars
 (3 701 étoiles)
Métriques de merge PR
 (Merge moyen 6j 14h) (48 PRs mergées en 30 j)

Description

Jetty version(s) Implement a ContainerLifeCycleMap that tracks values as beans.

Enhancement Description

package org.eclipse.jetty.util.component;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class ContainerLifeCycleMap<K, V extends LifeCycle> extends ContainerLifeCycle implements Map<K, V>, Container
{
    private final Map<K, V> _map = new HashMap<>();

    @Override
    public Set<Entry<K, V>> entrySet()
    {
        return _map.entrySet();
    }

    @Override
    public int size()
    {
        return _map.size();
    }

    @Override
    public boolean isEmpty()
    {
        return _map.isEmpty();
    }

    @Override
    public boolean containsKey(Object key)
    {
        return _map.containsKey(key);
    }

    @Override
    public boolean containsValue(Object value)
    {
        return _map.containsValue(value);
    }

    @Override
    public V get(Object key)
    {
        return _map.get(key);
    }

    @Override
    public V put(K key, V value)
    {
        V old = _map.put(key, value);
        updateBean(old, value);
        return old;
    }

    @Override
    public V remove(Object key)
    {
        return _map.remove(key);
    }

    @Override
    public void putAll(Map<? extends K, ? extends V> m)
    {
        for (Entry<? extends K, ? extends V> entry : m.entrySet())
        {
            V old = put(entry.getKey(), entry.getValue());
            updateBean(old, entry.getValue());
        }
    }

    @Override
    public void clear()
    {
        for (V v : _map.values())
            removeBean(v);
        _map.clear();
    }

    @Override
    public Set<K> keySet()
    {
        // TODO we need to wrap the set to track modifications to it, so we can update beans
        return _map.keySet();
    }

    @Override
    public Collection<V> values()
    {
        // TODO we need to wrap the collection to track modifications to it, so we can update beans
        return _map.values();
    }
}

Guide contributeur