jetty/jetty.project

ContainerLifeCycleMap

Fechada

#13.647 aberto em 2 de out. de 2025

 (1 comentário) (0 reação) (0 responsável)Java (1.913 forks)batch import
EnhancementHelp Wanted

Métricas do repositório

Stars
 (3.701 estrelas)
Métricas de merge de PR
 (Mesclagem média 6d 14h) (48 fundiu PRs em 30d)

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();
    }
}

Guia do colaborador