Skip to content

Commit 5086fea

Browse files
authored
Merge pull request eugenp#4993 from lor6/avro-error
Avro error
2 parents a0d17ad + c3d9f21 commit 5086fea

File tree

3 files changed

+96
-74
lines changed

3 files changed

+96
-74
lines changed

apache-avro/src/main/java/com/baeldung/avro/util/serealization/AvroDeSerealizer.java

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,37 @@
55
import org.apache.avro.io.Decoder;
66
import org.apache.avro.io.DecoderFactory;
77
import org.apache.avro.specific.SpecificDatumReader;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
810

911
import java.io.IOException;
1012

1113
public class AvroDeSerealizer {
1214

13-
public AvroHttpRequest deSerealizeAvroHttpRequestJSON(byte[] data){
14-
DatumReader<AvroHttpRequest> reader = new SpecificDatumReader<>(AvroHttpRequest.class);
15-
Decoder decoder = null;
16-
try {
17-
decoder = DecoderFactory.get().jsonDecoder(AvroHttpRequest.getClassSchema(), new String(data));
18-
return reader.read(null, decoder);
19-
} catch (IOException e) {
15+
private static Logger logger = LoggerFactory.getLogger(AvroDeSerealizer.class);
16+
17+
public AvroHttpRequest deSerealizeAvroHttpRequestJSON(byte[] data) {
18+
DatumReader<AvroHttpRequest> reader = new SpecificDatumReader<>(AvroHttpRequest.class);
19+
Decoder decoder = null;
20+
try {
21+
decoder = DecoderFactory.get()
22+
.jsonDecoder(AvroHttpRequest.getClassSchema(), new String(data));
23+
return reader.read(null, decoder);
24+
} catch (IOException e) {
25+
logger.error("Deserialization error" + e.getMessage());
26+
}
2027
return null;
2128
}
22-
}
2329

24-
public AvroHttpRequest deSerealizeAvroHttpRequestBinary(byte[] data){
25-
DatumReader<AvroHttpRequest> employeeReader = new SpecificDatumReader<>(AvroHttpRequest.class);
26-
Decoder decoder = DecoderFactory.get().binaryDecoder(data, null);
27-
try {
28-
return employeeReader.read(null, decoder);
29-
} catch (IOException e) {
30+
public AvroHttpRequest deSerealizeAvroHttpRequestBinary(byte[] data) {
31+
DatumReader<AvroHttpRequest> employeeReader = new SpecificDatumReader<>(AvroHttpRequest.class);
32+
Decoder decoder = DecoderFactory.get()
33+
.binaryDecoder(data, null);
34+
try {
35+
return employeeReader.read(null, decoder);
36+
} catch (IOException e) {
37+
logger.error("Deserialization error" + e.getMessage());
38+
}
3039
return null;
3140
}
3241
}
33-
}

apache-avro/src/main/java/com/baeldung/avro/util/serealization/AvroSerealizer.java

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,48 @@
33
import com.baeldung.avro.util.model.AvroHttpRequest;
44
import org.apache.avro.io.*;
55
import org.apache.avro.specific.SpecificDatumWriter;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
68

79
import java.io.ByteArrayOutputStream;
810
import java.io.IOException;
911

1012
public class AvroSerealizer {
1113

12-
public byte[] serealizeAvroHttpRequestJSON(AvroHttpRequest request){
13-
DatumWriter<AvroHttpRequest> writer = new SpecificDatumWriter<>(AvroHttpRequest.class);
14-
byte[] data = new byte[0];
15-
ByteArrayOutputStream stream = new ByteArrayOutputStream();
16-
Encoder jsonEncoder = null;
17-
try {
18-
jsonEncoder = EncoderFactory.get().jsonEncoder(AvroHttpRequest.getClassSchema(), stream);
19-
writer.write(request, jsonEncoder);
20-
jsonEncoder.flush();
21-
data = stream.toByteArray();
22-
} catch (IOException e) {
23-
data =null;
24-
}
25-
return data;
26-
}
14+
private static final Logger logger = LoggerFactory.getLogger(AvroSerealizer.class);
2715

28-
public byte[] serealizeAvroHttpRequestBinary(AvroHttpRequest request){
29-
DatumWriter<AvroHttpRequest> writer = new SpecificDatumWriter<>(AvroHttpRequest.class);
30-
byte[] data = new byte[0];
31-
ByteArrayOutputStream stream = new ByteArrayOutputStream();
32-
Encoder jsonEncoder = EncoderFactory.get().binaryEncoder(stream,null);
33-
try {
34-
writer.write(request, jsonEncoder);
35-
jsonEncoder.flush();
36-
data = stream.toByteArray();
37-
} catch (IOException e) {
38-
data = null;
16+
public byte[] serealizeAvroHttpRequestJSON(AvroHttpRequest request) {
17+
DatumWriter<AvroHttpRequest> writer = new SpecificDatumWriter<>(AvroHttpRequest.class);
18+
byte[] data = new byte[0];
19+
ByteArrayOutputStream stream = new ByteArrayOutputStream();
20+
Encoder jsonEncoder = null;
21+
try {
22+
jsonEncoder = EncoderFactory.get()
23+
.jsonEncoder(AvroHttpRequest.getClassSchema(), stream);
24+
writer.write(request, jsonEncoder);
25+
jsonEncoder.flush();
26+
data = stream.toByteArray();
27+
} catch (IOException e) {
28+
logger.error("Serialization error " + e.getMessage());
29+
}
30+
return data;
3931
}
4032

41-
return data;
42-
}
33+
public byte[] serealizeAvroHttpRequestBinary(AvroHttpRequest request) {
34+
DatumWriter<AvroHttpRequest> writer = new SpecificDatumWriter<>(AvroHttpRequest.class);
35+
byte[] data = new byte[0];
36+
ByteArrayOutputStream stream = new ByteArrayOutputStream();
37+
Encoder jsonEncoder = EncoderFactory.get()
38+
.binaryEncoder(stream, null);
39+
try {
40+
writer.write(request, jsonEncoder);
41+
jsonEncoder.flush();
42+
data = stream.toByteArray();
43+
} catch (IOException e) {
44+
logger.error("Serialization error " + e.getMessage());
45+
}
46+
47+
return data;
48+
}
4349

4450
}

apache-avro/src/test/java/com/baeldung/avro/util/serealization/AvroSerealizerDeSerealizerTest.java

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -24,52 +24,60 @@ public void setUp() throws Exception {
2424
serealizer = new AvroSerealizer();
2525
deSerealizer = new AvroDeSerealizer();
2626

27-
ClientIdentifier clientIdentifier = ClientIdentifier.newBuilder().
28-
setHostName("localhost").setIpAddress("255.255.255.0").build();
27+
ClientIdentifier clientIdentifier = ClientIdentifier.newBuilder()
28+
.setHostName("localhost")
29+
.setIpAddress("255.255.255.0")
30+
.build();
2931

3032
List<CharSequence> employees = new ArrayList();
3133
employees.add("James");
3234
employees.add("Alice");
3335
employees.add("David");
3436
employees.add("Han");
3537

36-
request = AvroHttpRequest.newBuilder().setRequestTime(01l)
37-
.setActive(Active.YES).setClientIdentifier(clientIdentifier)
38-
.setEmployeeNames(employees).build();
38+
request = AvroHttpRequest.newBuilder()
39+
.setRequestTime(01l)
40+
.setActive(Active.YES)
41+
.setClientIdentifier(clientIdentifier)
42+
.setEmployeeNames(employees)
43+
.build();
3944
}
4045

4146
@After
4247
public void tearDown() throws Exception {
4348
}
4449

45-
@Test
46-
public void WhenSerialized_UsingJSONEncoder_ObjectGetsSerialized(){
47-
byte[] data = serealizer.serealizeAvroHttpRequestJSON(request);
48-
assertTrue(Objects.nonNull(data));
49-
assertTrue(data.length > 0);
50-
}
50+
@Test
51+
public void WhenSerializedUsingJSONEncoder_thenObjectGetsSerialized() {
52+
byte[] data = serealizer.serealizeAvroHttpRequestJSON(request);
53+
assertTrue(Objects.nonNull(data));
54+
assertTrue(data.length > 0);
55+
}
5156

52-
@Test
53-
public void WhenSerialized_UsingBinaryEncoder_ObjectGetsSerialized(){
54-
byte[] data = serealizer.serealizeAvroHttpRequestBinary(request);
55-
assertTrue(Objects.nonNull(data));
56-
assertTrue(data.length > 0);
57-
}
57+
@Test
58+
public void WhenSerializedUsingBinaryEncoder_thenObjectGetsSerialized() {
59+
byte[] data = serealizer.serealizeAvroHttpRequestBinary(request);
60+
assertTrue(Objects.nonNull(data));
61+
assertTrue(data.length > 0);
62+
}
5863

59-
@Test
60-
public void WhenDeserialize_UsingJSONDecoder_ActualAndExpectedObjectsAreEqual(){
61-
byte[] data = serealizer.serealizeAvroHttpRequestJSON(request);
62-
AvroHttpRequest actualRequest = deSerealizer.deSerealizeAvroHttpRequestJSON(data);
63-
assertEquals(actualRequest,request);
64-
assertTrue(actualRequest.getRequestTime().equals(request.getRequestTime()));
65-
}
64+
@Test
65+
public void WhenDeserializeUsingJSONDecoder_thenActualAndExpectedObjectsAreEqual() {
66+
byte[] data = serealizer.serealizeAvroHttpRequestJSON(request);
67+
AvroHttpRequest actualRequest = deSerealizer.deSerealizeAvroHttpRequestJSON(data);
68+
assertEquals(actualRequest, request);
69+
assertTrue(actualRequest.getRequestTime()
70+
.equals(request.getRequestTime()));
71+
}
6672

67-
@Test
68-
public void WhenDeserialize_UsingBinaryecoder_ActualAndExpectedObjectsAreEqual(){
69-
byte[] data = serealizer.serealizeAvroHttpRequestBinary(request);
70-
AvroHttpRequest actualRequest = deSerealizer.deSerealizeAvroHttpRequestBinary(data);
71-
assertEquals(actualRequest,request);
72-
assertTrue(actualRequest.getRequestTime().equals(request.getRequestTime()));
73-
}
73+
@Test
74+
public void WhenDeserializeUsingBinaryecoder_thenActualAndExpectedObjectsAreEqual() {
75+
byte[] data = serealizer.serealizeAvroHttpRequestBinary(request);
76+
AvroHttpRequest actualRequest = deSerealizer.deSerealizeAvroHttpRequestBinary(data);
77+
assertEquals(actualRequest, request);
78+
assertTrue(actualRequest.getRequestTime()
79+
.equals(request.getRequestTime()));
80+
}
81+
7482
}
7583

0 commit comments

Comments
 (0)