package org.wildfly.swarm.undertow.runtime; import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import javax.enterprise.inject.Instance; import javax.enterprise.util.TypeLiteral; import javax.naming.OperationNotSupportedException; /** * @author Bob McWhirter */ public class MockInstance<T> implements Instance<T> { private final T instance; public MockInstance(T instance) { this.instance = instance; } @Override public Instance<T> select(Annotation... annotations) { throw new RuntimeException("operation not supported by mock"); } @Override public <U extends T> Instance<U> select(Class<U> aClass, Annotation... annotations) { throw new RuntimeException("operation not supported by mock"); } @Override public <U extends T> Instance<U> select(TypeLiteral<U> typeLiteral, Annotation... annotations) { throw new RuntimeException("operation not supported by mock"); } @Override public boolean isUnsatisfied() { return this.instance == null; } @Override public boolean isAmbiguous() { return false; } @Override public void destroy(T t) { } @Override public Iterator<T> iterator() { if ( this.instance != null ) { return Collections.singleton(this.instance).iterator(); } return new ArrayList<T>().iterator(); } @Override public T get() { return this.instance; } }