-
Notifications
You must be signed in to change notification settings - Fork 4.6k
/
MessageDeserializer.java
256 lines (221 loc) · 8.53 KB
/
MessageDeserializer.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
/*
* 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.hadoop.hive.metastore.messaging;
/**
* Interface for converting HCat events from String-form back to EventMessage instances.
*/
public abstract class MessageDeserializer {
/**
* Method to construct EventMessage from string.
*/
public EventMessage getEventMessage(String eventTypeString, String messageBody) {
switch (EventMessage.EventType.valueOf(eventTypeString)) {
case CREATE_DATABASE:
return getCreateDatabaseMessage(messageBody);
case ALTER_DATABASE:
return getAlterDatabaseMessage(messageBody);
case DROP_DATABASE:
return getDropDatabaseMessage(messageBody);
case CREATE_TABLE:
return getCreateTableMessage(messageBody);
case ALTER_TABLE:
return getAlterTableMessage(messageBody);
case DROP_TABLE:
return getDropTableMessage(messageBody);
case ADD_PARTITION:
return getAddPartitionMessage(messageBody);
case ALTER_PARTITION:
return getAlterPartitionMessage(messageBody);
case DROP_PARTITION:
return getDropPartitionMessage(messageBody);
case CREATE_FUNCTION:
return getCreateFunctionMessage(messageBody);
case DROP_FUNCTION:
return getDropFunctionMessage(messageBody);
case INSERT:
return getInsertMessage(messageBody);
case ADD_PRIMARYKEY:
return getAddPrimaryKeyMessage(messageBody);
case ADD_FOREIGNKEY:
return getAddForeignKeyMessage(messageBody);
case ADD_UNIQUECONSTRAINT:
return getAddUniqueConstraintMessage(messageBody);
case ADD_NOTNULLCONSTRAINT:
return getAddNotNullConstraintMessage(messageBody);
case ADD_DEFAULTCONSTRAINT:
return getAddDefaultConstraintMessage(messageBody);
case ADD_CHECKCONSTRAINT:
return getAddCheckConstraintMessage(messageBody);
case DROP_CONSTRAINT:
return getDropConstraintMessage(messageBody);
case OPEN_TXN:
return getOpenTxnMessage(messageBody);
case COMMIT_TXN:
return getCommitTxnMessage(messageBody);
case ABORT_TXN:
return getAbortTxnMessage(messageBody);
case ALLOC_WRITE_ID:
return getAllocWriteIdMessage(messageBody);
case ACID_WRITE:
return getAcidWriteMessage(messageBody);
case UPDATE_TABLE_COLUMN_STAT:
return getUpdateTableColumnStatMessage(messageBody);
case DELETE_TABLE_COLUMN_STAT:
return getDeleteTableColumnStatMessage(messageBody);
case UPDATE_PARTITION_COLUMN_STAT:
return getUpdatePartitionColumnStatMessage(messageBody);
case DELETE_PARTITION_COLUMN_STAT:
return getDeletePartitionColumnStatMessage(messageBody);
case COMMIT_COMPACTION:
return getCommitCompactionMessage(messageBody);
default:
throw new IllegalArgumentException("Unsupported event-type: " + eventTypeString);
}
}
/**
* Method to de-serialize CreateDatabaseMessage instance.
*/
public abstract CreateDatabaseMessage getCreateDatabaseMessage(String messageBody);
/**
* Method to de-serialize AlterDatabaseMessage instance.
*/
public abstract AlterDatabaseMessage getAlterDatabaseMessage(String messageBody);
/**
* Method to de-serialize DropDatabaseMessage instance.
*/
public abstract DropDatabaseMessage getDropDatabaseMessage(String messageBody);
/**
* Method to de-serialize CreateTableMessage instance.
*/
public abstract CreateTableMessage getCreateTableMessage(String messageBody);
/**
* Method to de-serialize AlterTableMessge
* @param messageBody string message
* @return object message
*/
public abstract AlterTableMessage getAlterTableMessage(String messageBody);
/**
* Method to de-serialize DropTableMessage instance.
*/
public abstract DropTableMessage getDropTableMessage(String messageBody);
/**
* Method to de-serialize AddPartitionMessage instance.
*/
public abstract AddPartitionMessage getAddPartitionMessage(String messageBody);
/**
* Method to deserialize AlterPartitionMessage
* @param messageBody the message in serialized form
* @return message in object form
*/
public abstract AlterPartitionMessage getAlterPartitionMessage(String messageBody);
/**
* Method to de-serialize DropPartitionMessage instance.
*/
public abstract DropPartitionMessage getDropPartitionMessage(String messageBody);
/**
* Method to de-serialize CreateFunctionMessage instance.
*/
public abstract CreateFunctionMessage getCreateFunctionMessage(String messageBody);
/**
* Method to de-serialize DropFunctionMessage instance.
*/
public abstract DropFunctionMessage getDropFunctionMessage(String messageBody);
/**
* Method to deserialize InsertMessage
* @param messageBody the message in serialized form
* @return message in object form
*/
public abstract InsertMessage getInsertMessage(String messageBody);
/**
* Method to de-serialize AddPrimaryKeyMessage instance.
*/
public abstract AddPrimaryKeyMessage getAddPrimaryKeyMessage(String messageBody);
/**
* Method to de-serialize AddForeignKeyMessage instance.
*/
public abstract AddForeignKeyMessage getAddForeignKeyMessage(String messageBody);
/**
* Method to de-serialize AddUniqueConstraintMessage instance.
*/
public abstract AddUniqueConstraintMessage getAddUniqueConstraintMessage(String messageBody);
/**
* Method to de-serialize AddNotNullConstraintMessage instance.
*/
public abstract AddNotNullConstraintMessage getAddNotNullConstraintMessage(String messageBody);
/**
* Method to de-serialize AddDefaultConstraintMessage instance.
*/
public abstract AddDefaultConstraintMessage getAddDefaultConstraintMessage(String messageBody);
/**
* Method to de-serialize AddCheckConstraintMessage instance.
*/
public abstract AddCheckConstraintMessage getAddCheckConstraintMessage(String messageBody);
/**
* Method to de-serialize DropConstraintMessage instance.
*/
public abstract DropConstraintMessage getDropConstraintMessage(String messageBody);
/**
* Method to de-serialize OpenTxnMessage instance.
*/
public abstract OpenTxnMessage getOpenTxnMessage(String messageBody);
/**
* Method to de-serialize CommitTxnMessage instance.
*/
public abstract CommitTxnMessage getCommitTxnMessage(String messageBody);
/**
* Method to de-serialize AbortTxnMessage instance.
*/
public abstract AbortTxnMessage getAbortTxnMessage(String messageBody);
/*
* Method to de-serialize AllocWriteIdMessage instance.
*/
public abstract AllocWriteIdMessage getAllocWriteIdMessage(String messageBody);
/*
* Method to de-serialize AcidWriteMessage instance.
*/
public abstract AcidWriteMessage getAcidWriteMessage(String messageBody);
/**
* Method to de-serialize UpdateTableColumnStatMessage instance.
*/
public abstract UpdateTableColumnStatMessage getUpdateTableColumnStatMessage(String messageBody);
/**
* Method to de-serialize DeleteTableColumnStatMessage instance.
*/
public abstract DeleteTableColumnStatMessage getDeleteTableColumnStatMessage(String messageBody);
/**
* Method to de-serialize UpdatePartitionColumnStatMessage instance.
*/
public abstract UpdatePartitionColumnStatMessage getUpdatePartitionColumnStatMessage(String messageBody);
/**
* Method to de-serialize DeletePartitionColumnStatMessage instance.
*/
public abstract DeletePartitionColumnStatMessage getDeletePartitionColumnStatMessage(String messageBody);
/**
* Method to de-serialize CommitCompactionMessage instance.
*/
public abstract CommitCompactionMessage getCommitCompactionMessage(String messageBody);
/**
* Method to de-serialize any string passed. Need to be over-ridden by specific serialization subclasses.
*/
public String deSerializeGenericString(String messageBody) {
return messageBody;
}
// Protection against construction.
protected MessageDeserializer() {}
}