package io.divolte.server.config;
import javax.annotation.OverridingMethodsMustInvokeSuper;
import javax.annotation.ParametersAreNonnullByDefault;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.google.common.base.MoreObjects;
import io.divolte.server.HttpSource;
import io.divolte.server.IncomingRequestProcessingPool;
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value=BrowserSourceConfiguration.class, name = "browser"),
@JsonSubTypes.Type(value=JsonSourceConfiguration.class, name = "json"),
})
@ParametersAreNonnullByDefault
public abstract class SourceConfiguration {
@OverridingMethodsMustInvokeSuper
protected MoreObjects.ToStringHelper toStringHelper() {
return MoreObjects.toStringHelper(this);
}
@Override
public final String toString() {
return toStringHelper().toString();
}
public abstract HttpSource createSource(
ValidatedConfiguration configuration,
String sourceName,
IncomingRequestProcessingPool processingPool);
}