Skip to content

Commit 013f71a

Browse files
committed
HHH-17404 add new contributor to AUTHORS list
removed some unchecked cast warning
1 parent 5f6f6e5 commit 013f71a

File tree

5 files changed

+49
-38
lines changed

5 files changed

+49
-38
lines changed

AUTHORS.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
# Corporate contributors
66

77
Red Hat, Inc.
8+
Oracle, Corporation.
89

910
# Individual contributors
1011

hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/JsonHelper.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public static void serializeArray(JavaType<?> elementJavaType, JdbcType elementJ
9595
writer.nullValue();
9696
}
9797
else {
98-
writer.serializeJsonValue( value ,(JavaType<Object>) elementJavaType,elementJdbcType,options);
98+
writer.serializeJsonValue( value ,(JavaType<?>) elementJavaType,elementJdbcType,options);
9999
}
100100
}
101101
writer.endArray();
@@ -135,15 +135,11 @@ private static void serialize(MappingType mappedType, Object value, WrapperOptio
135135
else if ( mappedType instanceof EmbeddableMappingType ) {
136136
serialize( (EmbeddableMappingType) mappedType, value, options, writer );
137137
}
138-
else if ( mappedType instanceof BasicType<?> ) {
139-
//noinspection unchecked
140-
final BasicType<Object> basicType = (BasicType<Object>) mappedType;
141-
138+
else if ( mappedType instanceof BasicType<?> basicType) {
142139
if ( isArrayType(basicType.getJdbcType())) {
143140
final int length = Array.getLength( value );
144141
writer.startArray();
145142
if ( length != 0 ) {
146-
//noinspection unchecked
147143
final JavaType<Object> elementJavaType = ( (BasicPluralJavaType<Object>) basicType.getJdbcJavaType() ).getElementJavaType();
148144
final JdbcType elementJdbcType = ( (ArrayJdbcType) basicType.getJdbcType() ).getElementJdbcType();
149145
final Object domainArray = basicType.convertToRelationalValue( value );

hibernate-core/src/main/java/org/hibernate/type/format/JsonDocumentWriter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ public interface JsonDocumentWriter {
8383
* @param options the wrapping options
8484
* @return this instance
8585
*/
86-
JsonDocumentWriter serializeJsonValue(Object value,
87-
JavaType<Object> javaType,
86+
<T> JsonDocumentWriter serializeJsonValue(Object value,
87+
JavaType<T> javaType,
8888
JdbcType jdbcType,
8989
WrapperOptions options);
9090
}

hibernate-core/src/main/java/org/hibernate/type/format/OsonDocumentWriter.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public JsonDocumentWriter stringValue(String value) {
100100
}
101101

102102
@Override
103-
public JsonDocumentWriter serializeJsonValue(Object value, JavaType<Object> javaType, JdbcType jdbcType, WrapperOptions options) {
103+
public <T> JsonDocumentWriter serializeJsonValue(Object value, JavaType<T> javaType, JdbcType jdbcType, WrapperOptions options) {
104104
serializeValue(value, javaType, jdbcType, options);
105105
return this;
106106
}
@@ -114,8 +114,8 @@ public JsonDocumentWriter serializeJsonValue(Object value, JavaType<Object> java
114114
* @param jdbcType the JDBC SQL type of the value
115115
* @param options the wapping options.
116116
*/
117-
private void serializeValue(Object value,
118-
JavaType<Object> javaType,
117+
private <T> void serializeValue(Object value,
118+
JavaType<T> javaType,
119119
JdbcType jdbcType,
120120
WrapperOptions options) {
121121
switch ( jdbcType.getDefaultSqlTypeCode() ) {
@@ -132,23 +132,23 @@ private void serializeValue(Object value,
132132
generator.write( ((Enum<?>) value ).ordinal() );
133133
break;
134134
}
135-
generator.write( javaType.unwrap( value,Integer.class,options ) );
135+
generator.write( javaType.unwrap( (T)value,Integer.class,options ) );
136136
break;
137137
case SqlTypes.BOOLEAN:
138-
generator.write( javaType.unwrap( value,Boolean.class,options ) );
138+
generator.write( javaType.unwrap( (T)value,Boolean.class,options ) );
139139
break;
140140
case SqlTypes.BIT:
141-
generator.write( javaType.unwrap( value,Integer.class,options ) );
141+
generator.write( javaType.unwrap( (T)value,Integer.class,options ) );
142142
break;
143143
case SqlTypes.BIGINT:
144-
generator.write( javaType.unwrap( value, BigInteger.class,options ) );
144+
generator.write( javaType.unwrap( (T)value, BigInteger.class,options ) );
145145
break;
146146
case SqlTypes.FLOAT:
147-
generator.write( javaType.unwrap( value,Float.class,options ) );
147+
generator.write( javaType.unwrap( (T)value,Float.class,options ) );
148148
break;
149149
case SqlTypes.REAL:
150150
case SqlTypes.DOUBLE:
151-
generator.write( javaType.unwrap( value,Double.class,options ) );
151+
generator.write( javaType.unwrap( (T)value,Double.class,options ) );
152152
break;
153153
case SqlTypes.CHAR:
154154
case SqlTypes.NCHAR:
@@ -169,40 +169,40 @@ private void serializeValue(Object value,
169169
case SqlTypes.MATERIALIZED_NCLOB:
170170
case SqlTypes.ENUM:
171171
case SqlTypes.NAMED_ENUM:
172-
generator.write( javaType.toString( value ) );
172+
generator.write( javaType.toString( (T)value ) );
173173
break;
174174
case SqlTypes.DATE:
175-
DATE dd = new DATE(javaType.unwrap( value,java.sql.Date.class,options ));
175+
DATE dd = new DATE(javaType.unwrap( (T)value,java.sql.Date.class,options ));
176176
OracleJsonDate jsonDate = new OracleJsonDateImpl(dd.shareBytes());
177177
generator.write(jsonDate);
178178
break;
179179
case SqlTypes.TIME:
180180
case SqlTypes.TIME_WITH_TIMEZONE:
181181
case SqlTypes.TIME_UTC:
182-
generator.write( javaType.toString( value ) );
182+
generator.write( javaType.toString( (T)value ) );
183183
break;
184184
case SqlTypes.TIMESTAMP:
185-
TIMESTAMP TS = new TIMESTAMP(javaType.unwrap( value, Timestamp.class, options ));
185+
TIMESTAMP TS = new TIMESTAMP(javaType.unwrap( (T)value, Timestamp.class, options ));
186186
OracleJsonTimestamp writeTimeStamp = new OracleJsonTimestampImpl(TS.shareBytes());
187187
generator.write(writeTimeStamp);
188188
break;
189189
case SqlTypes.TIMESTAMP_WITH_TIMEZONE:
190-
OffsetDateTime dateTime = javaType.unwrap( value, OffsetDateTime.class, options );
190+
OffsetDateTime dateTime = javaType.unwrap( (T)value, OffsetDateTime.class, options );
191191
generator.write( dateTime );
192192
break;
193193
case SqlTypes.TIMESTAMP_UTC:
194-
OffsetDateTime odt = javaType.unwrap( value, OffsetDateTime.class, options );
194+
OffsetDateTime odt = javaType.unwrap( (T)value, OffsetDateTime.class, options );
195195
generator.write( odt );
196196
break;
197197
case SqlTypes.NUMERIC:
198198
case SqlTypes.DECIMAL:
199-
BigDecimal bd = javaType.unwrap( value, BigDecimal.class, options );
199+
BigDecimal bd = javaType.unwrap( (T)value, BigDecimal.class, options );
200200
generator.write( bd );
201201
break;
202202

203203
case SqlTypes.DURATION:
204204
case SqlTypes.UUID:
205-
generator.write( javaType.toString( value ) );
205+
generator.write( javaType.toString( (T)value ) );
206206
break;
207207
case SqlTypes.BINARY:
208208
case SqlTypes.VARBINARY:
@@ -211,7 +211,7 @@ private void serializeValue(Object value,
211211
case SqlTypes.BLOB:
212212
case SqlTypes.MATERIALIZED_BLOB:
213213
// how to handle
214-
byte[] bytes = javaType.unwrap( value, byte[].class, options );
214+
byte[] bytes = javaType.unwrap( (T)value, byte[].class, options );
215215
generator.write( bytes );
216216
break;
217217
case SqlTypes.ARRAY:

hibernate-core/src/main/java/org/hibernate/type/format/StringJsonDocumentWriter.java

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public JsonDocumentWriter objectKey(String key) {
108108
throw new IllegalArgumentException( "key cannot be null or empty" );
109109
}
110110

111-
if (this.processingStates.getCurrent().equals( JsonProcessingState.OBJECT )) {
111+
if (JsonProcessingState.OBJECT.equals(this.processingStates.getCurrent())) {
112112
// we have started an object, and we are adding an item key: we do add a separator.
113113
this.appender.append( StringJsonDocumentMarker.SEPARATOR.getMarkerCharacter() );
114114
}
@@ -222,13 +222,24 @@ public JsonDocumentWriter stringValue(String value) {
222222
}
223223

224224
@Override
225-
public JsonDocumentWriter serializeJsonValue(Object value, JavaType<Object> javaType, JdbcType jdbcType, WrapperOptions options) {
225+
public <T> JsonDocumentWriter serializeJsonValue(Object value, JavaType<T> javaType, JdbcType jdbcType, WrapperOptions options) {
226226
addItemsSeparator();
227227
convertedBasicValueToString(value, options,this.appender,javaType,jdbcType);
228228
moveProcessingStateMachine();
229229
return this;
230230
}
231231

232+
private <T> void convertedCastBasicValueToString(Object value,
233+
WrapperOptions options,
234+
JsonAppender appender,
235+
JavaType<T> javaType,
236+
JdbcType jdbcType) {
237+
assert javaType.isInstance( value );
238+
//noinspection unchecked
239+
convertedBasicValueToString( (T) value, options, appender, javaType, jdbcType );
240+
}
241+
242+
232243
/**
233244
* Converts a value to String according to its mapping type.
234245
* This method serializes the value and writes it into the underlying appender
@@ -238,12 +249,15 @@ public JsonDocumentWriter serializeJsonValue(Object value, JavaType<Object> java
238249
* @param jdbcType the JDBC SQL type of the value
239250
* @param options the wapping options.
240251
*/
241-
private void convertedBasicValueToString(
252+
private <T> void convertedBasicValueToString(
242253
Object value,
243254
WrapperOptions options,
244255
JsonAppender appender,
245-
JavaType<Object> javaType,
256+
JavaType<T> javaType,
246257
JdbcType jdbcType) {
258+
259+
assert javaType.isInstance( value );
260+
247261
switch ( jdbcType.getDefaultSqlTypeCode() ) {
248262
case SqlTypes.TINYINT:
249263
case SqlTypes.SMALLINT:
@@ -264,7 +278,7 @@ private void convertedBasicValueToString(
264278
case SqlTypes.REAL:
265279
case SqlTypes.DOUBLE:
266280
// These types fit into the native representation of JSON, so let's use that
267-
javaType.appendEncodedString( appender, value );
281+
javaType.appendEncodedString( appender, (T)value );
268282
break;
269283
case SqlTypes.CHAR:
270284
case SqlTypes.NCHAR:
@@ -290,15 +304,15 @@ private void convertedBasicValueToString(
290304
// These literals can contain the '"' character, so we need to escape it
291305
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
292306
appender.startEscaping();
293-
javaType.appendEncodedString( appender, value );
307+
javaType.appendEncodedString( appender, (T)value );
294308
appender.endEscaping();
295309
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
296310
break;
297311
case SqlTypes.DATE:
298312
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
299313
JdbcDateJavaType.INSTANCE.appendEncodedString(
300314
appender,
301-
javaType.unwrap( value, java.sql.Date.class, options )
315+
javaType.unwrap( (T)value, java.sql.Date.class, options )
302316
);
303317
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
304318
break;
@@ -308,23 +322,23 @@ private void convertedBasicValueToString(
308322
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
309323
JdbcTimeJavaType.INSTANCE.appendEncodedString(
310324
appender,
311-
javaType.unwrap( value, java.sql.Time.class, options )
325+
javaType.unwrap( (T)value, java.sql.Time.class, options )
312326
);
313327
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
314328
break;
315329
case SqlTypes.TIMESTAMP:
316330
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
317331
JdbcTimestampJavaType.INSTANCE.appendEncodedString(
318332
appender,
319-
javaType.unwrap( value, java.sql.Timestamp.class, options )
333+
javaType.unwrap( (T)value, java.sql.Timestamp.class, options )
320334
);
321335
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
322336
break;
323337
case SqlTypes.TIMESTAMP_WITH_TIMEZONE:
324338
case SqlTypes.TIMESTAMP_UTC:
325339
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
326340
DateTimeFormatter.ISO_OFFSET_DATE_TIME.formatTo(
327-
javaType.unwrap( value, OffsetDateTime.class, options ),
341+
javaType.unwrap( (T)value, OffsetDateTime.class, options ),
328342
appender
329343
);
330344
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
@@ -335,7 +349,7 @@ private void convertedBasicValueToString(
335349
case SqlTypes.UUID:
336350
// These types need to be serialized as JSON string, but don't have a need for escaping
337351
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
338-
javaType.appendEncodedString( appender, value );
352+
javaType.appendEncodedString( appender, (T)value );
339353
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
340354
break;
341355
case SqlTypes.BINARY:
@@ -346,7 +360,7 @@ private void convertedBasicValueToString(
346360
case SqlTypes.MATERIALIZED_BLOB:
347361
// These types need to be serialized as JSON string, and for efficiency uses appendString directly
348362
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
349-
appender.write( javaType.unwrap( value, byte[].class, options ) );
363+
appender.write( javaType.unwrap( (T)value, byte[].class, options ) );
350364
appender.append( StringJsonDocumentMarker.QUOTE.getMarkerCharacter() );
351365
break;
352366
case SqlTypes.ARRAY:

0 commit comments

Comments
 (0)