You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by mp...@apache.org on 2013/01/24 04:44:43 UTC
git commit: FLUME-1865. Rename the Sequence File formatters to
Serializer to be consistent with the rest of Flume.
Updated Branches:
refs/heads/trunk c7a8ece37 -> 380588d0e
FLUME-1865. Rename the Sequence File formatters to Serializer to be consistent with the rest of Flume.
(Hari Shreedharan via Mike Percy)
Project: http://git-wip-us.apache.org/repos/asf/flume/repo
Commit: http://git-wip-us.apache.org/repos/asf/flume/commit/380588d0
Tree: http://git-wip-us.apache.org/repos/asf/flume/tree/380588d0
Diff: http://git-wip-us.apache.org/repos/asf/flume/diff/380588d0
Branch: refs/heads/trunk
Commit: 380588d0e3f5e95664053d921615bd3971cdf385
Parents: c7a8ece
Author: Mike Percy <mp...@apache.org>
Authored: Wed Jan 23 19:43:14 2013 -0800
Committer: Mike Percy <mp...@apache.org>
Committed: Wed Jan 23 19:43:14 2013 -0800
----------------------------------------------------------------------
.../apache/flume/sink/hdfs/HDFSSequenceFile.java | 22 ++--
.../apache/flume/sink/hdfs/HDFSTextFormatter.java | 79 -------------
.../apache/flume/sink/hdfs/HDFSTextSerializer.java | 79 +++++++++++++
.../flume/sink/hdfs/HDFSWritableFormatter.java | 77 ------------
.../flume/sink/hdfs/HDFSWritableSerializer.java | 77 ++++++++++++
.../apache/flume/sink/hdfs/SeqFileFormatter.java | 68 -----------
.../flume/sink/hdfs/SeqFileFormatterFactory.java | 89 --------------
.../flume/sink/hdfs/SeqFileFormatterType.java | 37 ------
.../flume/sink/hdfs/SequenceFileSerializer.java | 68 +++++++++++
.../sink/hdfs/SequenceFileSerializerFactory.java | 90 +++++++++++++++
.../sink/hdfs/SequenceFileSerializerType.java | 38 ++++++
.../apache/flume/sink/hdfs/MyCustomFormatter.java | 58 ---------
.../apache/flume/sink/hdfs/MyCustomSerializer.java | 58 +++++++++
.../apache/flume/sink/hdfs/TestBucketWriter.java | 6 +-
.../sink/hdfs/TestHDFSEventSinkOnMiniCluster.java | 6 +-
.../sink/hdfs/TestSeqFileFormatterFactory.java | 58 ---------
.../hdfs/TestSequenceFileSerializerFactory.java | 59 ++++++++++
17 files changed, 487 insertions(+), 482 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSSequenceFile.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSSequenceFile.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSSequenceFile.java
index e127f6a..3bd25f4 100644
--- a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSSequenceFile.java
+++ b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSSequenceFile.java
@@ -39,7 +39,7 @@ public class HDFSSequenceFile implements HDFSWriter {
private SequenceFile.Writer writer;
private String writeFormat;
private Context serializerContext;
- private SeqFileFormatter formatter;
+ private SequenceFileSerializer serializer;
private boolean useRawLocalFileSystem;
public HDFSSequenceFile() {
@@ -48,14 +48,15 @@ public class HDFSSequenceFile implements HDFSWriter {
@Override
public void configure(Context context) {
- // use binary writable format by default
- writeFormat = context.getString("hdfs.writeFormat", SeqFileFormatterType.Writable.name());
+ // use binary writable serialize by default
+ writeFormat = context.getString("hdfs.writeFormat",
+ SequenceFileSerializerType.Writable.name());
useRawLocalFileSystem = context.getBoolean("hdfs.useRawLocalFileSystem",
false);
serializerContext = new Context(
- context.getSubProperties(SeqFileFormatterFactory.CTX_PREFIX));
- formatter = SeqFileFormatterFactory
- .getFormatter(writeFormat, serializerContext);
+ context.getSubProperties(SequenceFileSerializerFactory.CTX_PREFIX));
+ serializer = SequenceFileSerializerFactory
+ .getSerializer(writeFormat, serializerContext);
logger.info("writeFormat = " + writeFormat + ", UseRawLocalFileSystem = "
+ useRawLocalFileSystem);
}
@@ -82,17 +83,18 @@ public class HDFSSequenceFile implements HDFSWriter {
if (conf.getBoolean("hdfs.append.support", false) == true && hdfs.isFile
(dstPath)) {
FSDataOutputStream outStream = hdfs.append(dstPath);
- writer = SequenceFile.createWriter(conf, outStream, formatter.getKeyClass(),
- formatter.getValueClass(), compType, codeC);
+ writer = SequenceFile.createWriter(conf, outStream, serializer
+ .getKeyClass(),
+ serializer.getValueClass(), compType, codeC);
} else {
writer = SequenceFile.createWriter(hdfs, conf, dstPath,
- formatter.getKeyClass(), formatter.getValueClass(), compType, codeC);
+ serializer.getKeyClass(), serializer.getValueClass(), compType, codeC);
}
}
@Override
public void append(Event e) throws IOException {
- for (SeqFileFormatter.Record record : formatter.format(e)) {
+ for (SequenceFileSerializer.Record record : serializer.serialize(e)) {
writer.append(record.getKey(), record.getValue());
}
}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextFormatter.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextFormatter.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextFormatter.java
deleted file mode 100644
index 4b39f5d..0000000
--- a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextFormatter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.flume.sink.hdfs;
-
-import java.util.Collections;
-import org.apache.flume.Context;
-import org.apache.flume.Event;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.io.LongWritable;
-
-public class HDFSTextFormatter implements SeqFileFormatter {
-
- private Text makeText(Event e) {
- Text textObject = new Text();
- textObject.set(e.getBody(), 0, e.getBody().length);
- return textObject;
- }
-
- @Override
- public Class<LongWritable> getKeyClass() {
- return LongWritable.class;
- }
-
- @Override
- public Class<Text> getValueClass() {
- return Text.class;
- }
-
- @Override
- public Iterable<Record> format(Event e) {
- Object key = getKey(e);
- Object value = getValue(e);
- return Collections.singletonList(new Record(key, value));
- }
-
- private Object getKey(Event e) {
- // Write the data to HDFS
- String timestamp = e.getHeaders().get("timestamp");
- long eventStamp;
-
- if (timestamp == null) {
- eventStamp = System.currentTimeMillis();
- } else {
- eventStamp = Long.valueOf(timestamp);
- }
- return new LongWritable(eventStamp);
- }
-
- private Object getValue(Event e) {
- return makeText(e);
- }
-
- public static class Builder implements SeqFileFormatter.Builder {
-
- @Override
- public SeqFileFormatter build(Context context) {
- return new HDFSTextFormatter();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextSerializer.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextSerializer.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextSerializer.java
new file mode 100644
index 0000000..32fd206
--- /dev/null
+++ b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSTextSerializer.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.flume.sink.hdfs;
+
+import java.util.Collections;
+import org.apache.flume.Context;
+import org.apache.flume.Event;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.LongWritable;
+
+public class HDFSTextSerializer implements SequenceFileSerializer {
+
+ private Text makeText(Event e) {
+ Text textObject = new Text();
+ textObject.set(e.getBody(), 0, e.getBody().length);
+ return textObject;
+ }
+
+ @Override
+ public Class<LongWritable> getKeyClass() {
+ return LongWritable.class;
+ }
+
+ @Override
+ public Class<Text> getValueClass() {
+ return Text.class;
+ }
+
+ @Override
+ public Iterable<Record> serialize(Event e) {
+ Object key = getKey(e);
+ Object value = getValue(e);
+ return Collections.singletonList(new Record(key, value));
+ }
+
+ private Object getKey(Event e) {
+ // Write the data to HDFS
+ String timestamp = e.getHeaders().get("timestamp");
+ long eventStamp;
+
+ if (timestamp == null) {
+ eventStamp = System.currentTimeMillis();
+ } else {
+ eventStamp = Long.valueOf(timestamp);
+ }
+ return new LongWritable(eventStamp);
+ }
+
+ private Object getValue(Event e) {
+ return makeText(e);
+ }
+
+ public static class Builder implements SequenceFileSerializer.Builder {
+
+ @Override
+ public SequenceFileSerializer build(Context context) {
+ return new HDFSTextSerializer();
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableFormatter.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableFormatter.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableFormatter.java
deleted file mode 100644
index cece506..0000000
--- a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableFormatter.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.flume.sink.hdfs;
-
-import org.apache.flume.Context;
-import org.apache.flume.Event;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.LongWritable;
-
-import java.util.Collections;
-
-public class HDFSWritableFormatter implements SeqFileFormatter {
-
- private BytesWritable makeByteWritable(Event e) {
- BytesWritable bytesObject = new BytesWritable();
- bytesObject.set(e.getBody(), 0, e.getBody().length);
- return bytesObject;
- }
-
- @Override
- public Class<LongWritable> getKeyClass() {
- return LongWritable.class;
- }
-
- @Override
- public Class<BytesWritable> getValueClass() {
- return BytesWritable.class;
- }
-
- @Override
- public Iterable<Record> format(Event e) {
- Object key = getKey(e);
- Object value = getValue(e);
- return Collections.singletonList(new Record(key, value));
- }
-
- private Object getKey(Event e) {
- String timestamp = e.getHeaders().get("timestamp");
- long eventStamp;
-
- if (timestamp == null) {
- eventStamp = System.currentTimeMillis();
- } else {
- eventStamp = Long.valueOf(timestamp);
- }
- return new LongWritable(eventStamp);
- }
-
- private Object getValue(Event e) {
- return makeByteWritable(e);
- }
-
- public static class Builder implements SeqFileFormatter.Builder {
-
- @Override
- public SeqFileFormatter build(Context context) {
- return new HDFSWritableFormatter();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableSerializer.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableSerializer.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableSerializer.java
new file mode 100644
index 0000000..b25a6ea
--- /dev/null
+++ b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/HDFSWritableSerializer.java
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.flume.sink.hdfs;
+
+import org.apache.flume.Context;
+import org.apache.flume.Event;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.io.LongWritable;
+
+import java.util.Collections;
+
+public class HDFSWritableSerializer implements SequenceFileSerializer {
+
+ private BytesWritable makeByteWritable(Event e) {
+ BytesWritable bytesObject = new BytesWritable();
+ bytesObject.set(e.getBody(), 0, e.getBody().length);
+ return bytesObject;
+ }
+
+ @Override
+ public Class<LongWritable> getKeyClass() {
+ return LongWritable.class;
+ }
+
+ @Override
+ public Class<BytesWritable> getValueClass() {
+ return BytesWritable.class;
+ }
+
+ @Override
+ public Iterable<Record> serialize(Event e) {
+ Object key = getKey(e);
+ Object value = getValue(e);
+ return Collections.singletonList(new Record(key, value));
+ }
+
+ private Object getKey(Event e) {
+ String timestamp = e.getHeaders().get("timestamp");
+ long eventStamp;
+
+ if (timestamp == null) {
+ eventStamp = System.currentTimeMillis();
+ } else {
+ eventStamp = Long.valueOf(timestamp);
+ }
+ return new LongWritable(eventStamp);
+ }
+
+ private Object getValue(Event e) {
+ return makeByteWritable(e);
+ }
+
+ public static class Builder implements SequenceFileSerializer.Builder {
+
+ @Override
+ public SequenceFileSerializer build(Context context) {
+ return new HDFSWritableSerializer();
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatter.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatter.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatter.java
deleted file mode 100644
index c25931c..0000000
--- a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.flume.sink.hdfs;
-
-import org.apache.flume.Context;
-import org.apache.flume.Event;
-
-public interface SeqFileFormatter {
-
- Class<?> getKeyClass();
-
- Class<?> getValueClass();
-
- /**
- * Format the given event into zero, one or more SequenceFile records
- *
- * @param e
- * event
- * @return a list of records corresponding to the given event
- */
- Iterable<Record> format(Event e);
-
- /**
- * Knows how to construct this output formatter.<br/>
- * <b>Note: Implementations MUST provide a public a no-arg constructor.</b>
- */
- public interface Builder {
- public SeqFileFormatter build(Context context);
- }
-
- /**
- * A key-value pair making up a record in an HDFS SequenceFile
- */
- public static class Record {
- private final Object key;
- private final Object value;
-
- public Record(Object key, Object value) {
- this.key = key;
- this.value = value;
- }
-
- public Object getKey() {
- return key;
- }
-
- public Object getValue() {
- return value;
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterFactory.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterFactory.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterFactory.java
deleted file mode 100644
index 20409ba..0000000
--- a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterFactory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.flume.sink.hdfs;
-
-import com.google.common.base.Preconditions;
-import org.apache.flume.Context;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SeqFileFormatterFactory {
-
- private static final Logger logger =
- LoggerFactory.getLogger(SeqFileFormatterFactory.class);
-
- /**
- * {@link Context} prefix
- */
- static final String CTX_PREFIX = "writeFormat.";
-
- @SuppressWarnings("unchecked")
- static SeqFileFormatter getFormatter(String formatType, Context context) {
-
- Preconditions.checkNotNull(formatType,
- "format type must not be null");
-
- // try to find builder class in enum of known formatters
- SeqFileFormatterType type;
- try {
- type = SeqFileFormatterType.valueOf(formatType);
- } catch (IllegalArgumentException e) {
- logger.debug("Not in enum, loading builder class: {}", formatType);
- type = SeqFileFormatterType.Other;
- }
- Class<? extends SeqFileFormatter.Builder> builderClass =
- type.getBuilderClass();
-
- // handle the case where they have specified their own builder in the config
- if (builderClass == null) {
- try {
- Class c = Class.forName(formatType);
- if (c != null && SeqFileFormatter.Builder.class.isAssignableFrom(c)) {
- builderClass = (Class<? extends SeqFileFormatter.Builder>) c;
- } else {
- logger.error("Unable to instantiate Builder from {}", formatType);
- return null;
- }
- } catch (ClassNotFoundException ex) {
- logger.error("Class not found: " + formatType, ex);
- return null;
- } catch (ClassCastException ex) {
- logger.error("Class does not extend " +
- SeqFileFormatter.Builder.class.getCanonicalName() + ": " +
- formatType, ex);
- return null;
- }
- }
-
- // build the builder
- SeqFileFormatter.Builder builder;
- try {
- builder = builderClass.newInstance();
- } catch (InstantiationException ex) {
- logger.error("Cannot instantiate builder: " + formatType, ex);
- return null;
- } catch (IllegalAccessException ex) {
- logger.error("Cannot instantiate builder: " + formatType, ex);
- return null;
- }
-
- return builder.build(context);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterType.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterType.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterType.java
deleted file mode 100644
index ff3eb84..0000000
--- a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SeqFileFormatterType.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.flume.sink.hdfs;
-
-public enum SeqFileFormatterType {
- Writable(HDFSWritableFormatter.Builder.class),
- Text(HDFSTextFormatter.Builder.class),
- Other(null);
-
- private final Class<? extends SeqFileFormatter.Builder> builderClass;
-
- SeqFileFormatterType(Class<? extends SeqFileFormatter.Builder> builderClass) {
- this.builderClass = builderClass;
- }
-
- public Class<? extends SeqFileFormatter.Builder> getBuilderClass() {
- return builderClass;
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializer.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializer.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializer.java
new file mode 100644
index 0000000..ec2b760
--- /dev/null
+++ b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializer.java
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flume.sink.hdfs;
+
+import org.apache.flume.Context;
+import org.apache.flume.Event;
+
+public interface SequenceFileSerializer {
+
+ Class<?> getKeyClass();
+
+ Class<?> getValueClass();
+
+ /**
+ * Format the given event into zero, one or more SequenceFile records
+ *
+ * @param e
+ * event
+ * @return a list of records corresponding to the given event
+ */
+ Iterable<Record> serialize(Event e);
+
+ /**
+ * Knows how to construct this output formatter.<br/>
+ * <b>Note: Implementations MUST provide a public a no-arg constructor.</b>
+ */
+ public interface Builder {
+ public SequenceFileSerializer build(Context context);
+ }
+
+ /**
+ * A key-value pair making up a record in an HDFS SequenceFile
+ */
+ public static class Record {
+ private final Object key;
+ private final Object value;
+
+ public Record(Object key, Object value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public Object getKey() {
+ return key;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerFactory.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerFactory.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerFactory.java
new file mode 100644
index 0000000..5678836
--- /dev/null
+++ b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerFactory.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.flume.sink.hdfs;
+
+import com.google.common.base.Preconditions;
+import org.apache.flume.Context;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SequenceFileSerializerFactory {
+
+ private static final Logger logger =
+ LoggerFactory.getLogger(SequenceFileSerializerFactory.class);
+
+ /**
+ * {@link Context} prefix
+ */
+ static final String CTX_PREFIX = "writeFormat.";
+
+ @SuppressWarnings("unchecked")
+ static SequenceFileSerializer getSerializer(String formatType,
+ Context context) {
+
+ Preconditions.checkNotNull(formatType,
+ "serialize type must not be null");
+
+ // try to find builder class in enum of known formatters
+ SequenceFileSerializerType type;
+ try {
+ type = SequenceFileSerializerType.valueOf(formatType);
+ } catch (IllegalArgumentException e) {
+ logger.debug("Not in enum, loading builder class: {}", formatType);
+ type = SequenceFileSerializerType.Other;
+ }
+ Class<? extends SequenceFileSerializer.Builder> builderClass =
+ type.getBuilderClass();
+
+ // handle the case where they have specified their own builder in the config
+ if (builderClass == null) {
+ try {
+ Class c = Class.forName(formatType);
+ if (c != null && SequenceFileSerializer.Builder.class.isAssignableFrom(c)) {
+ builderClass = (Class<? extends SequenceFileSerializer.Builder>) c;
+ } else {
+ logger.error("Unable to instantiate Builder from {}", formatType);
+ return null;
+ }
+ } catch (ClassNotFoundException ex) {
+ logger.error("Class not found: " + formatType, ex);
+ return null;
+ } catch (ClassCastException ex) {
+ logger.error("Class does not extend " +
+ SequenceFileSerializer.Builder.class.getCanonicalName() + ": " +
+ formatType, ex);
+ return null;
+ }
+ }
+
+ // build the builder
+ SequenceFileSerializer.Builder builder;
+ try {
+ builder = builderClass.newInstance();
+ } catch (InstantiationException ex) {
+ logger.error("Cannot instantiate builder: " + formatType, ex);
+ return null;
+ } catch (IllegalAccessException ex) {
+ logger.error("Cannot instantiate builder: " + formatType, ex);
+ return null;
+ }
+
+ return builder.build(context);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerType.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerType.java b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerType.java
new file mode 100644
index 0000000..4351488
--- /dev/null
+++ b/flume-ng-sinks/flume-hdfs-sink/src/main/java/org/apache/flume/sink/hdfs/SequenceFileSerializerType.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.flume.sink.hdfs;
+
+public enum SequenceFileSerializerType {
+ Writable(HDFSWritableSerializer.Builder.class),
+ Text(HDFSTextSerializer.Builder.class),
+ Other(null);
+
+ private final Class<? extends SequenceFileSerializer.Builder> builderClass;
+
+ SequenceFileSerializerType(
+ Class<? extends SequenceFileSerializer.Builder> builderClass) {
+ this.builderClass = builderClass;
+ }
+
+ public Class<? extends SequenceFileSerializer.Builder> getBuilderClass() {
+ return builderClass;
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomFormatter.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomFormatter.java b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomFormatter.java
deleted file mode 100644
index ab1e463..0000000
--- a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomFormatter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.flume.sink.hdfs;
-
-import org.apache.flume.Context;
-import org.apache.flume.Event;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.LongWritable;
-
-import java.util.Arrays;
-
-public class MyCustomFormatter implements SeqFileFormatter {
-
- @Override
- public Class<LongWritable> getKeyClass() {
- return LongWritable.class;
- }
-
- @Override
- public Class<BytesWritable> getValueClass() {
- return BytesWritable.class;
- }
-
- @Override
- public Iterable<Record> format(Event e) {
- return Arrays.asList(
- new Record(new LongWritable(1234L), new BytesWritable(new byte[10])),
- new Record(new LongWritable(4567L), new BytesWritable(new byte[20]))
- );
- }
-
- public static class Builder implements SeqFileFormatter.Builder {
-
- @Override
- public SeqFileFormatter build(Context context) {
- return new MyCustomFormatter();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomSerializer.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomSerializer.java b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomSerializer.java
new file mode 100644
index 0000000..72164fd
--- /dev/null
+++ b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/MyCustomSerializer.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.flume.sink.hdfs;
+
+import org.apache.flume.Context;
+import org.apache.flume.Event;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.io.LongWritable;
+
+import java.util.Arrays;
+
+public class MyCustomSerializer implements SequenceFileSerializer {
+
+ @Override
+ public Class<LongWritable> getKeyClass() {
+ return LongWritable.class;
+ }
+
+ @Override
+ public Class<BytesWritable> getValueClass() {
+ return BytesWritable.class;
+ }
+
+ @Override
+ public Iterable<Record> serialize(Event e) {
+ return Arrays.asList(
+ new Record(new LongWritable(1234L), new BytesWritable(new byte[10])),
+ new Record(new LongWritable(4567L), new BytesWritable(new byte[20]))
+ );
+ }
+
+ public static class Builder implements SequenceFileSerializer.Builder {
+
+ @Override
+ public SequenceFileSerializer build(Context context) {
+ return new MyCustomSerializer();
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestBucketWriter.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestBucketWriter.java b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestBucketWriter.java
index 829d7e8..ebe277c 100644
--- a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestBucketWriter.java
+++ b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestBucketWriter.java
@@ -195,7 +195,7 @@ public class TestBucketWriter {
open = true;
}
};
- HDFSTextFormatter formatter = new HDFSTextFormatter();
+ HDFSTextSerializer serializer = new HDFSTextSerializer();
File tmpFile = File.createTempFile("flume", "test");
tmpFile.deleteOnExit();
String path = tmpFile.getParent();
@@ -280,7 +280,7 @@ public class TestBucketWriter {
final String PREFIX = "BRNO_IS_CITY_IN_CZECH_REPUBLIC";
MockHDFSWriter hdfsWriter = new MockHDFSWriter();
- HDFSTextFormatter formatter = new HDFSTextFormatter();
+ HDFSTextSerializer formatter = new HDFSTextSerializer();
BucketWriter bucketWriter = new BucketWriter(ROLL_INTERVAL, 0, 0, 0, ctx,
"/tmp", "file", PREFIX, ".tmp", null, null, SequenceFile.CompressionType.NONE, hdfsWriter,
timedRollerPool, null,
@@ -299,7 +299,7 @@ public class TestBucketWriter {
final String SUFFIX = "WELCOME_TO_THE_HELLMOUNTH";
MockHDFSWriter hdfsWriter = new MockHDFSWriter();
- HDFSTextFormatter formatter = new HDFSTextFormatter();
+ HDFSTextSerializer serializer = new HDFSTextSerializer();
BucketWriter bucketWriter = new BucketWriter(ROLL_INTERVAL, 0, 0, 0, ctx,
"/tmp", "file", "", SUFFIX, null, null, SequenceFile.CompressionType.NONE, hdfsWriter,
timedRollerPool, null,
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestHDFSEventSinkOnMiniCluster.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestHDFSEventSinkOnMiniCluster.java b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestHDFSEventSinkOnMiniCluster.java
index bcd19e9..2e71069 100644
--- a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestHDFSEventSinkOnMiniCluster.java
+++ b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestHDFSEventSinkOnMiniCluster.java
@@ -6,9 +6,9 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -153,7 +153,7 @@ public class TestHDFSEventSinkOnMiniCluster {
}
/**
- * Writes two events in GZIP-compressed format.
+ * Writes two events in GZIP-compressed serialize.
*/
@Test
public void simpleHDFSGZipCompressedTest() throws EventDeliveryException, IOException {
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSeqFileFormatterFactory.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSeqFileFormatterFactory.java b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSeqFileFormatterFactory.java
deleted file mode 100644
index 9d17785..0000000
--- a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSeqFileFormatterFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.flume.sink.hdfs;
-
-import org.apache.flume.Context;
-import org.junit.Test;
-
-import static org.junit.Assert.assertTrue;
-
-public class TestSeqFileFormatterFactory {
-
- @Test
- public void getTextFormatter() {
- SeqFileFormatter formatter =
- SeqFileFormatterFactory.getFormatter("Text", new Context());
-
- assertTrue(formatter != null);
- assertTrue(formatter.getClass().getName(),
- formatter instanceof HDFSTextFormatter);
- }
-
- @Test
- public void getWritableFormatter() {
- SeqFileFormatter formatter =
- SeqFileFormatterFactory.getFormatter("Writable", new Context());
-
- assertTrue(formatter != null);
- assertTrue(formatter.getClass().getName(),
- formatter instanceof HDFSWritableFormatter);
- }
-
- @Test
- public void getCustomFormatter() {
- SeqFileFormatter formatter = SeqFileFormatterFactory.getFormatter(
- "org.apache.flume.sink.hdfs.MyCustomFormatter$Builder", new Context());
-
- assertTrue(formatter != null);
- assertTrue(formatter.getClass().getName(),
- formatter instanceof MyCustomFormatter);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/flume/blob/380588d0/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSequenceFileSerializerFactory.java
----------------------------------------------------------------------
diff --git a/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSequenceFileSerializerFactory.java b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSequenceFileSerializerFactory.java
new file mode 100644
index 0000000..6381edc
--- /dev/null
+++ b/flume-ng-sinks/flume-hdfs-sink/src/test/java/org/apache/flume/sink/hdfs/TestSequenceFileSerializerFactory.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.flume.sink.hdfs;
+
+import org.apache.flume.Context;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+public class TestSequenceFileSerializerFactory {
+
+ @Test
+ public void getTextFormatter() {
+ SequenceFileSerializer formatter =
+ SequenceFileSerializerFactory.getSerializer("Text", new Context());
+
+ assertTrue(formatter != null);
+ assertTrue(formatter.getClass().getName(),
+ formatter instanceof HDFSTextSerializer);
+ }
+
+ @Test
+ public void getWritableFormatter() {
+ SequenceFileSerializer formatter =
+ SequenceFileSerializerFactory.getSerializer("Writable", new Context());
+
+ assertTrue(formatter != null);
+ assertTrue(formatter.getClass().getName(),
+ formatter instanceof HDFSWritableSerializer);
+ }
+
+ @Test
+ public void getCustomFormatter() {
+ SequenceFileSerializer formatter = SequenceFileSerializerFactory
+ .getSerializer(
+ "org.apache.flume.sink.hdfs.MyCustomSerializer$Builder", new Context());
+
+ assertTrue(formatter != null);
+ assertTrue(formatter.getClass().getName(),
+ formatter instanceof MyCustomSerializer);
+ }
+
+}