org.glassfish.jersey.internal.util.collection.ImmutableMultivaluedMap Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jaxrs-ri Show documentation
Show all versions of jaxrs-ri Show documentation
A bundle project producing JAX-RS RI bundles. The primary artifact is an "all-in-one" OSGi-fied JAX-RS RI bundle
(jaxrs-ri.jar).
Attached to that are two compressed JAX-RS RI archives. The first archive (jaxrs-ri.zip) consists of binary RI bits and
contains the API jar (under "api" directory), RI libraries (under "lib" directory) as well as all external
RI dependencies (under "ext" directory). The secondary archive (jaxrs-ri-src.zip) contains buildable JAX-RS RI source
bundle and contains the API jar (under "api" directory), RI sources (under "src" directory) as well as all external
RI dependencies (under "ext" directory). The second archive also contains "build.xml" ANT script that builds the RI
sources. To build the JAX-RS RI simply unzip the archive, cd to the created jaxrs-ri directory and invoke "ant" from
the command line.
/*
* Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package org.glassfish.jersey.internal.util.collection;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jakarta.ws.rs.core.MultivaluedHashMap;
import jakarta.ws.rs.core.MultivaluedMap;
/**
* An immutable view of a {@link MultivaluedMap}.
*
* @param the key
* @param the value
* @author Gili Tzabari
* @author Michal Gajdos
*/
public class ImmutableMultivaluedMap implements MultivaluedMap {
/**
* Returns an empty immutable map.
*
* @return an empty immutable map.
*/
public static ImmutableMultivaluedMap empty() {
return new ImmutableMultivaluedMap(new MultivaluedHashMap());
}
private final MultivaluedMap delegate;
/**
* Creates a new ImmutableMultivaluedMap.
*
* @param delegate the underlying MultivaluedMap
*/
public ImmutableMultivaluedMap(final MultivaluedMap delegate) {
if (delegate == null) {
throw new NullPointerException("ImmutableMultivaluedMap delegate must not be 'null'.");
}
this.delegate = delegate;
}
@Override
public boolean equalsIgnoreValueOrder(final MultivaluedMap otherMap) {
return delegate.equalsIgnoreValueOrder(otherMap);
}
@Override
public void putSingle(final K key, final V value) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public void add(final K key, final V value) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public V getFirst(final K key) {
return delegate.getFirst(key);
}
@Override
public void addAll(final K key, final V... newValues) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public void addAll(final K key, final List valueList) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public void addFirst(final K key, final V value) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public int size() {
return delegate.size();
}
@Override
public boolean isEmpty() {
return delegate.isEmpty();
}
@Override
public boolean containsKey(final Object key) {
return delegate.containsKey(key);
}
@Override
public boolean containsValue(final Object value) {
return delegate.containsValue(value);
}
@Override
public List get(final Object key) {
return delegate.get(key);
}
@Override
public List put(final K key, final List value) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public List remove(final Object key) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public void putAll(final Map extends K, ? extends List> m) {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public void clear() {
throw new UnsupportedOperationException("This MultivaluedMap implementation is immutable.");
}
@Override
public Set keySet() {
return Collections.unmodifiableSet(delegate.keySet());
}
@Override
public Collection> values() {
return Collections.unmodifiableCollection(delegate.values());
}
@Override
public Set>> entrySet() {
return Collections.unmodifiableSet(delegate.entrySet());
}
@Override
public String toString() {
return delegate.toString();
}
@Override
public boolean equals(final Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ImmutableMultivaluedMap)) {
return false;
}
final ImmutableMultivaluedMap that = (ImmutableMultivaluedMap) o;
if (!delegate.equals(that.delegate)) {
return false;
}
return true;
}
@Override
public int hashCode() {
return delegate.hashCode();
}
}