package jalse.attributes;
import java.util.Collections;
import java.util.Set;
import java.util.stream.Stream;
class UnmodifiableDelegateAttributeContainer implements AttributeContainer {
private final AttributeContainer delegate;
UnmodifiableDelegateAttributeContainer(final AttributeContainer delegate) {
this.delegate = delegate;
}
@Override
public <T> boolean addAttributeListener(final NamedAttributeType<T> namedType,
final AttributeListener<T> listener) {
throw new UnsupportedOperationException();
}
@Override
public <T> void fireAttributeChanged(final NamedAttributeType<T> namedType) {
throw new UnsupportedOperationException();
}
@Override
public <T> T getAttribute(final NamedAttributeType<T> namedType) {
return delegate != null ? delegate.getAttribute(namedType) : null;
}
@Override
public int getAttributeCount() {
return delegate != null ? delegate.getAttributeCount() : 0;
}
@Override
public <T> Set<? extends AttributeListener<T>> getAttributeListeners(final NamedAttributeType<T> namedType) {
return delegate != null ? delegate.getAttributeListeners(namedType) : Collections.emptySet();
}
@Override
public Set<NamedAttributeType<?>> getAttributeListenerTypes() {
return delegate != null ? delegate.getAttributeListenerTypes() : Collections.emptySet();
}
@Override
public Set<NamedAttributeType<?>> getAttributeTypes() {
return delegate != null ? delegate.getAttributeTypes() : Collections.emptySet();
}
@Override
public <T> T removeAttribute(final NamedAttributeType<T> namedType) {
throw new UnsupportedOperationException();
}
@Override
public <T> boolean removeAttributeListener(final NamedAttributeType<T> namedType,
final AttributeListener<T> listener) {
throw new UnsupportedOperationException();
}
@Override
public void removeAttributeListeners() {
throw new UnsupportedOperationException();
}
@Override
public <T> void removeAttributeListeners(final NamedAttributeType<T> namedType) {
throw new UnsupportedOperationException();
}
@Override
public void removeAttributes() {
throw new UnsupportedOperationException();
}
@Override
public <T> T setAttribute(final NamedAttributeType<T> namedType, final T attr) {
throw new UnsupportedOperationException();
}
@Override
public Stream<?> streamAttributes() {
return delegate != null ? delegate.streamAttributes() : Stream.empty();
}
}