refined the API, add more docs
diff --git a/avro/src/main/java/org/apache/mina/avro/codec/AvroDecoder.java b/avro/src/main/java/org/apache/mina/avro/codec/AvroDecoder.java
index 25ce582..5fbe738 100644
--- a/avro/src/main/java/org/apache/mina/avro/codec/AvroDecoder.java
+++ b/avro/src/main/java/org/apache/mina/avro/codec/AvroDecoder.java
@@ -28,14 +28,26 @@
import org.apache.mina.codec.delimited.ints.VarInt;
/**
- *
+ * Avro Decoder
*/
public class AvroDecoder<T extends GenericContainer> extends SizePrefixedDecoder<T> {
- private Schema schema;
+ /**
+ * Construct an Avro Decoder
+ *
+ * @param sizeDecoder Size decoder to decode size prefix
+ * @param payloadDecoder Avro Message decoder to decode Avro message received
+ */
+ public AvroDecoder(IoBufferDecoder<Integer> sizeDecoder, IoBufferDecoder<T> payloadDecoder) {
+ super(sizeDecoder, payloadDecoder);
+ }
- public AvroDecoder(IoBufferDecoder<Integer> sizeDecoder, IoBufferDecoder<T> payloadDecoder, Schema schema) {
+ /**
+ * Construct an Avro Decoder
+ *
+ * @param schema Avro Schema to be used
+ */
+ public AvroDecoder(Schema schema) {
super(new VarInt().getDecoder(), new AvroMessageDecoder<T>(schema));
- this.schema = schema;
}
}
diff --git a/avro/src/main/java/org/apache/mina/avro/codec/AvroEncoder.java b/avro/src/main/java/org/apache/mina/avro/codec/AvroEncoder.java
index 22c9467..597d22e 100644
--- a/avro/src/main/java/org/apache/mina/avro/codec/AvroEncoder.java
+++ b/avro/src/main/java/org/apache/mina/avro/codec/AvroEncoder.java
@@ -27,10 +27,29 @@
import org.apache.mina.codec.delimited.ints.VarInt;
/**
+ * Avro Encoder
*
+ * It used GenericContainer, parent class for Avro's GenericRecord and SpecificRecord
+ * User need to specify the type while creating the instance of the Encoder. The default
+ * Size encoder is {@code VarInt} encoder
*/
public class AvroEncoder<T extends GenericContainer> extends SizePrefixedEncoder<T> {
+
+ /**
+ * Intializes the Avro Encoder
+ *
+ * @param sizeEncoder Size Prefix encoder
+ * @param payloadEncoder Avro Encoder to encode message into Avro format
+ */
public AvroEncoder(ByteBufferEncoder<Integer> sizeEncoder, ByteBufferEncoder<T> payloadEncoder) {
+ super(sizeEncoder, payloadEncoder);
+ }
+
+ /**
+ * Intializes the Avro Encoder
+ * Default Encoder are VarInt encoder for Size and {@link AvroEncoder} for Avro encoding
+ */
+ public AvroEncoder() {
super(new VarInt().getEncoder(), new AvroMessageEncoder<T>());
}
}
diff --git a/avro/src/main/java/org/apache/mina/avro/codec/serialization/AvroMessageDecoder.java b/avro/src/main/java/org/apache/mina/avro/codec/serialization/AvroMessageDecoder.java
index 013fea1..69944a8 100644
--- a/avro/src/main/java/org/apache/mina/avro/codec/serialization/AvroMessageDecoder.java
+++ b/avro/src/main/java/org/apache/mina/avro/codec/serialization/AvroMessageDecoder.java
@@ -45,15 +45,16 @@
// Logger
public static final Logger LOG = LoggerFactory.getLogger(AvroMessageDecoder.class);
+ // Avro Schema used for decoding
private Schema schema;
/**
* Default Constructor
- * @param schema
+ * @param schema Avro Schema to be used for decoding the messages
*/
public AvroMessageDecoder(Schema schema) {
if(schema == null) {
- LOG.error("Avro Schema passed cannot be null");
+ LOG.error("Avro Schema cannot be null");
throw new IllegalArgumentException("Avro Schema cannot be null");
}
this.schema = schema;