56 lines
No EOL
1.5 KiB
Java
56 lines
No EOL
1.5 KiB
Java
package com.google.inject.internal;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
import com.google.inject.Binder;
|
|
import com.google.inject.Key;
|
|
import com.google.inject.binder.AnnotatedElementBuilder;
|
|
|
|
import java.lang.annotation.Annotation;
|
|
|
|
/**
|
|
* For private binder's expose() method.
|
|
*/
|
|
public class ExposureBuilder<T> implements AnnotatedElementBuilder {
|
|
private final Binder binder;
|
|
private final Object source;
|
|
private Key<T> key;
|
|
|
|
public ExposureBuilder(Binder binder, Object source, Key<T> key) {
|
|
this.binder = binder;
|
|
this.source = source;
|
|
this.key = key;
|
|
}
|
|
|
|
protected void checkNotAnnotated() {
|
|
if (key.getAnnotationType() != null) {
|
|
binder.addError(AbstractBindingBuilder.ANNOTATION_ALREADY_SPECIFIED);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void annotatedWith(Class<? extends Annotation> annotationType) {
|
|
Preconditions.checkNotNull(annotationType, "annotationType");
|
|
checkNotAnnotated();
|
|
key = Key.get(key.getTypeLiteral(), annotationType);
|
|
}
|
|
|
|
@Override
|
|
public void annotatedWith(Annotation annotation) {
|
|
Preconditions.checkNotNull(annotation, "annotation");
|
|
checkNotAnnotated();
|
|
key = Key.get(key.getTypeLiteral(), annotation);
|
|
}
|
|
|
|
public Key<?> getKey() {
|
|
return key;
|
|
}
|
|
|
|
public Object getSource() {
|
|
return source;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "AnnotatedElementBuilder";
|
|
}
|
|
} |