Skip to content
Merged
16 changes: 10 additions & 6 deletions api/src/main/java/io/druid/data/input/Committer.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,19 @@
*/

package io.druid.data.input;

import io.druid.guice.annotations.ExtensionPoint;

/**
* Committer includes a Runnable and a Jackson-serialized metadata object containing the offset
*/
@ExtensionPoint
public interface Committer extends Runnable
{
/**
* @return A json serialized representation of commit metadata,
* which needs to be serialized and deserialized by Jackson.
* Commit metadata can be a complex type, but we recommend keeping it to List/Map/"Primitive JSON" types
* */
public Object getMetadata();
/**
* @return A json serialized representation of commit metadata,
* which needs to be serialized and deserialized by Jackson.
* Commit metadata can be a complex type, but we recommend keeping it to List/Map/"Primitive JSON" types
*/
public Object getMetadata();
}
3 changes: 3 additions & 0 deletions api/src/main/java/io/druid/data/input/Firehose.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

package io.druid.data.input;

import io.druid.guice.annotations.ExtensionPoint;

import javax.annotation.Nullable;
import java.io.Closeable;

Expand All @@ -36,6 +38,7 @@
* which will be called on another thread, so the operations inside of that callback must be thread-safe.
* </p>
*/
@ExtensionPoint
public interface Firehose extends Closeable
{
/**
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/data/input/FirehoseFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.druid.data.input.impl.InputRowParser;
import io.druid.data.input.impl.PrefetchableTextFilesFirehoseFactory;
import io.druid.guice.annotations.ExtensionPoint;
import io.druid.java.util.common.parsers.ParseException;

import java.io.File;
Expand All @@ -32,6 +33,7 @@
* It currently provides two methods for creating a {@link Firehose} and their default implementations call each other
* for the backward compatibility. Implementations of this interface must implement one of these methods.
*/
@ExtensionPoint
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
public interface FirehoseFactory<T extends InputRowParser>
{
Expand Down
3 changes: 2 additions & 1 deletion api/src/main/java/io/druid/data/input/FirehoseFactoryV2.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
package io.druid.data.input;

import com.fasterxml.jackson.annotation.JsonTypeInfo;

import io.druid.data.input.impl.InputRowParser;
import io.druid.guice.annotations.ExtensionPoint;
import io.druid.java.util.common.parsers.ParseException;

import java.io.IOException;
Expand All @@ -37,6 +37,7 @@
* value will throw a surprising NPE. Throwing IOException on connection failure or runtime exception on
* invalid configuration is preferred over returning null.
*/
@ExtensionPoint
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
public interface FirehoseFactoryV2<T extends InputRowParser>
{
Expand Down
3 changes: 3 additions & 0 deletions api/src/main/java/io/druid/data/input/FirehoseV2.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

package io.druid.data.input;

import io.druid.guice.annotations.ExtensionPoint;

import java.io.Closeable;
/**
* This is an interface that holds onto the stream of incoming data. Realtime data ingestion is built around this
Expand All @@ -44,6 +46,7 @@
* which will be called on another thread, so the operations inside of that callback must be thread-safe.
* </p>
*/
@ExtensionPoint
public interface FirehoseV2 extends Closeable
{
/**
Expand Down
6 changes: 4 additions & 2 deletions api/src/main/java/io/druid/data/input/InputRow.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

package io.druid.data.input;

import io.druid.guice.annotations.ExtensionPoint;

import java.util.List;

/**
Expand All @@ -28,8 +30,8 @@
* implement "schema-less" data ingestion that allows the system to add new dimensions as they appear.
*
*/
public interface
InputRow extends Row
@ExtensionPoint
public interface InputRow extends Row
{
/**
* Returns the dimensions that exist in this row.
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/data/input/MapBasedInputRow.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

package io.druid.data.input;

import io.druid.guice.annotations.PublicApi;
import io.druid.java.util.common.DateTimes;
import org.joda.time.DateTime;

Expand All @@ -27,6 +28,7 @@

/**
*/
@PublicApi
public class MapBasedInputRow extends MapBasedRow implements InputRow
{
private final List<String> dimensions;
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/data/input/MapBasedRow.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Lists;
import io.druid.guice.annotations.PublicApi;
import io.druid.java.util.common.DateTimes;
import io.druid.java.util.common.parsers.ParseException;
import org.joda.time.DateTime;
Expand All @@ -33,6 +34,7 @@

/**
*/
@PublicApi
public class MapBasedRow implements Row
{
private static final Pattern LONG_PAT = Pattern.compile("[-|+]?\\d+");
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/data/input/Row.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.druid.guice.annotations.PublicApi;
import org.joda.time.DateTime;

import java.util.List;
Expand All @@ -29,6 +30,7 @@
* A Row of data. This can be used for both input and output into various parts of the system. It assumes
* that the user already knows the schema of the row and can query for the parts that they care about.
*/
@PublicApi
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "version", defaultImpl = MapBasedRow.class)
@JsonSubTypes(value = {
@JsonSubTypes.Type(name = "v1", value = MapBasedRow.class)
Expand Down
19 changes: 0 additions & 19 deletions api/src/main/java/io/druid/data/input/Rows.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,33 +23,14 @@
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Maps;

import io.druid.java.util.common.ISE;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

/**
*/
public class Rows
{
public static InputRow toCaseInsensitiveInputRow(final Row row, final List<String> dimensions)
{
if (row instanceof MapBasedRow) {
MapBasedRow mapBasedRow = (MapBasedRow) row;

TreeMap<String, Object> caseInsensitiveMap = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER);
caseInsensitiveMap.putAll(mapBasedRow.getEvent());
return new MapBasedInputRow(
mapBasedRow.getTimestamp(),
dimensions,
caseInsensitiveMap
);
}
throw new ISE("Can only convert MapBasedRow objects because we are ghetto like that.");
}

/**
* @param timeStamp rollup up timestamp to be used to create group key
* @param inputRow input row
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonValue;
import com.google.common.base.Preconditions;
import io.druid.guice.annotations.PublicApi;
import io.druid.java.util.common.StringUtils;

/**
*/
@PublicApi
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this public api so that users can use this class in their java clients to construct druid queries ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's because ParseSpec is an extension point, and it returns DimensionsSpec, which is constructed using DimensionSchema. So implementors of custom ParseSpecs might need to use this class.

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", defaultImpl = StringDimensionSchema.class)
@JsonSubTypes(value = {
@JsonSubTypes.Type(name = DimensionSchema.STRING_TYPE_NAME, value = StringDimensionSchema.class),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import io.druid.guice.annotations.PublicApi;
import io.druid.java.util.common.parsers.ParserUtils;

import javax.annotation.Nullable;
Expand All @@ -37,7 +37,7 @@
import java.util.Map;
import java.util.Set;


@PublicApi
public class DimensionsSpec
{
private final List<DimensionSchema> dimensions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.druid.data.input.InputRow;
import io.druid.guice.annotations.ExtensionPoint;

@ExtensionPoint
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", defaultImpl = StringInputRowParser.class)
@JsonSubTypes(value = {
@JsonSubTypes.Type(name = "string", value = StringInputRowParser.class),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;

import io.druid.java.util.common.parsers.JSONToLowerParser;
import io.druid.java.util.common.parsers.Parser;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonParser.Feature;
import com.fasterxml.jackson.databind.ObjectMapper;

import io.druid.java.util.common.parsers.JSONPathParser;
import io.druid.java.util.common.parsers.Parser;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import com.fasterxml.jackson.annotation.JacksonInject;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

import io.druid.java.util.common.ISE;
import io.druid.java.util.common.parsers.JavaScriptParser;
import io.druid.java.util.common.parsers.Parser;
Expand Down
5 changes: 2 additions & 3 deletions api/src/main/java/io/druid/data/input/impl/ParseSpec.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,12 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

import io.druid.guice.annotations.ExtensionPoint;
import io.druid.java.util.common.parsers.Parser;

import java.util.List;

/**
*/
@ExtensionPoint
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "format", defaultImpl = DelimitedParseSpec.class)
@JsonSubTypes(value = {
@JsonSubTypes.Type(name = "json", value = JSONParseSpec.class),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;

import io.druid.java.util.common.parsers.Parser;
import io.druid.java.util.common.parsers.RegexParser;

Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/data/input/impl/TimestampSpec.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Function;
import io.druid.guice.annotations.PublicApi;
import io.druid.java.util.common.parsers.TimestampParser;
import org.joda.time.DateTime;

Expand All @@ -31,6 +32,7 @@

/**
*/
@PublicApi
public class TimestampSpec
{
private static class ParseCtx
Expand Down
4 changes: 3 additions & 1 deletion api/src/main/java/io/druid/guice/Binders.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,18 @@
import com.google.inject.Binder;
import com.google.inject.Key;
import com.google.inject.multibindings.MapBinder;
import io.druid.guice.annotations.PublicApi;
import io.druid.segment.loading.DataSegmentArchiver;
import io.druid.segment.loading.DataSegmentFinder;
import io.druid.segment.loading.DataSegmentMover;
import io.druid.segment.loading.DataSegmentKiller;
import io.druid.segment.loading.DataSegmentMover;
import io.druid.segment.loading.DataSegmentPuller;
import io.druid.segment.loading.DataSegmentPusher;
import io.druid.tasklogs.TaskLogs;

/**
*/
@PublicApi
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually its more of an utility class and shouldn't necessarily be directly used in custom user extension (it can be used in out-of-the-box extensions) and those should really just use MapBinder.xxx .

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking it would be nice to make a utility like this public. I don't feel super strongly though.

public class Binders
{
public static MapBinder<String, DataSegmentPuller> dataSegmentPullerBinder(Binder binder)
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/guice/ConditionalMultibind.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.inject.Binder;
import com.google.inject.TypeLiteral;
import com.google.inject.multibindings.Multibinder;
import io.druid.guice.annotations.PublicApi;

import java.lang.annotation.Annotation;
import java.util.Properties;
Expand All @@ -43,6 +44,7 @@
* At injection time, you will get the items that satisfy their corresponding predicates by calling
* injector.getInstance(Key.get(new TypeLiteral<Set<Animal>>(){}))
*/
@PublicApi
public class ConditionalMultibind<T>
{

Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/guice/DruidGuiceExtensions.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@

import com.google.inject.Binder;
import com.google.inject.Module;
import io.druid.guice.annotations.PublicApi;

/**
*/
@PublicApi
public class DruidGuiceExtensions implements Module
{
@Override
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/guice/DruidScopes.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@
import com.google.inject.Provider;
import com.google.inject.Scope;
import com.google.inject.Scopes;
import io.druid.guice.annotations.PublicApi;

/**
*/
@PublicApi
public class DruidScopes
{
public static final Scope SINGLETON = new Scope()
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/guice/Jerseys.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@
import com.google.inject.TypeLiteral;
import com.google.inject.multibindings.Multibinder;
import io.druid.guice.annotations.JSR311Resource;
import io.druid.guice.annotations.PublicApi;

/**
*/
@PublicApi
public class Jerseys
{
public static void addResource(Binder binder, Class<?> resourceClazz)
Expand Down
2 changes: 2 additions & 0 deletions api/src/main/java/io/druid/guice/JsonConfigProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.google.inject.Key;
import com.google.inject.Provider;
import com.google.inject.util.Types;
import io.druid.guice.annotations.PublicApi;

import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
Expand Down Expand Up @@ -76,6 +77,7 @@
*
* @param <T> type of config object to provide.
*/
@PublicApi
public class JsonConfigProvider<T> implements Provider<Supplier<T>>
{
@SuppressWarnings("unchecked")
Expand Down
Loading