|
7 | 7 | import com.fasterxml.jackson.core.JsonGenerator; |
8 | 8 | import com.fasterxml.jackson.core.JsonParser; |
9 | 9 | import com.fasterxml.jackson.databind.Module; |
10 | | -import com.fasterxml.jackson.databind.ObjectWriter; |
11 | 10 | import com.fasterxml.jackson.databind.SerializationFeature; |
12 | 11 | import oracle.sql.json.OracleJsonFactory; |
13 | 12 | import oracle.sql.json.OracleJsonGenerator; |
14 | | -import oracle.sql.json.OracleJsonParser; |
15 | 13 | import org.hibernate.dialect.JsonHelper; |
16 | 14 | import org.hibernate.metamodel.mapping.EmbeddableMappingType; |
17 | 15 | import org.hibernate.type.descriptor.WrapperOptions; |
|
20 | 18 | import org.hibernate.type.descriptor.jdbc.AggregateJdbcType; |
21 | 19 | import org.hibernate.type.descriptor.jdbc.JdbcType; |
22 | 20 | import org.hibernate.type.descriptor.jdbc.JsonJdbcType; |
23 | | -import org.hibernate.type.format.JsonDocumentHandler; |
24 | | -import org.hibernate.type.format.ObjectArrayOsonDocumentHandler; |
25 | 21 | import org.hibernate.type.format.ObjectArrayOsonDocumentWriter; |
26 | 22 |
|
27 | 23 | import java.io.ByteArrayOutputStream; |
28 | 24 | import java.io.IOException; |
29 | | -import java.nio.ByteBuffer; |
30 | 25 |
|
31 | 26 |
|
32 | 27 | /** |
@@ -67,121 +62,6 @@ public JacksonOsonFormatMapper() { |
67 | 62 | objectMapper.disable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); |
68 | 63 | } |
69 | 64 |
|
70 | | - /** |
71 | | - * Process OSON parser tokens. |
72 | | - * This method consume one by one event coming from an OSON parser and use the given JsonDocumentHandler |
73 | | - * to populate values into Object array |
74 | | - * @param osonParser the OSON parser |
75 | | - * @param currentEvent the current of the parser |
76 | | - * @throws IOException error while reading from underlying parser |
77 | | - */ |
78 | | - private void consumeOsonTokens(OracleJsonParser osonParser, OracleJsonParser.Event currentEvent, JsonDocumentHandler handler) |
79 | | - throws IOException { |
80 | | - |
81 | | - OracleJsonParser.Event event = currentEvent; |
82 | | - |
83 | | - while ( event != null ) { |
84 | | - switch ( event ) { |
85 | | - case OracleJsonParser.Event.KEY_NAME: |
86 | | - handler.onObjectKey( osonParser.getString() ); |
87 | | - break; |
88 | | - case OracleJsonParser.Event.START_ARRAY: |
89 | | - handler.onStartArray(); |
90 | | - break; |
91 | | - case OracleJsonParser.Event.END_ARRAY: |
92 | | - handler.onEndArray(); |
93 | | - break; |
94 | | - case OracleJsonParser.Event.VALUE_DATE: |
95 | | - case OracleJsonParser.Event.VALUE_TIMESTAMP: |
96 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonDateValue( |
97 | | - osonParser.getLocalDateTime()); |
98 | | - break; |
99 | | - case OracleJsonParser.Event.VALUE_TIMESTAMPTZ: |
100 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonValue( |
101 | | - osonParser.getOffsetDateTime()); |
102 | | - break; |
103 | | - case OracleJsonParser.Event.VALUE_INTERVALDS: |
104 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonValue( |
105 | | - osonParser.getDuration()); |
106 | | - break; |
107 | | - case OracleJsonParser.Event.VALUE_INTERVALYM: |
108 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonValue( |
109 | | - osonParser.getPeriod()); |
110 | | - break; |
111 | | - case OracleJsonParser.Event.VALUE_STRING: |
112 | | - handler.onStringValue( osonParser.getString() ); |
113 | | - break; |
114 | | - case OracleJsonParser.Event.VALUE_TRUE: |
115 | | - handler.onBooleanValue( true ); |
116 | | - break; |
117 | | - case OracleJsonParser.Event.VALUE_FALSE: |
118 | | - handler.onBooleanValue( false ); |
119 | | - break; |
120 | | - case OracleJsonParser.Event.VALUE_NULL: |
121 | | - handler.onNullValue(); |
122 | | - break; |
123 | | - case OracleJsonParser.Event.VALUE_DECIMAL: |
124 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonValue( |
125 | | - osonParser.getBigDecimal()); |
126 | | - break; |
127 | | - case OracleJsonParser.Event.VALUE_DOUBLE: |
128 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonValue( |
129 | | - osonParser.getDouble()); |
130 | | - break; |
131 | | - case OracleJsonParser.Event.VALUE_FLOAT: |
132 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonValue( |
133 | | - osonParser.getFloat()); |
134 | | - break; |
135 | | - case OracleJsonParser.Event.VALUE_BINARY: |
136 | | - ((ObjectArrayOsonDocumentHandler)handler).onOsonBinaryValue( |
137 | | - osonParser.getBytes()); |
138 | | - break; |
139 | | - case OracleJsonParser.Event.START_OBJECT: |
140 | | - handler.onStartObject(); |
141 | | - break; |
142 | | - case OracleJsonParser.Event.END_OBJECT: |
143 | | - handler.onEndObject(); |
144 | | - break; |
145 | | - default: |
146 | | - throw new IOException( "Unknown OSON event " + event ); |
147 | | - |
148 | | - } |
149 | | - event = osonParser.hasNext() ? osonParser.next() : null; |
150 | | - } |
151 | | - |
152 | | - } |
153 | | - |
154 | | - |
155 | | - /** |
156 | | - * Consumes OSON bytes and populate an Object array as described in the embeddable mapping definitions. |
157 | | - * @param embeddableMappingType the embeddable mapping definitions |
158 | | - * @param source the OSON bytes as <code>byte[]</code> |
159 | | - * @param options the wrapping options |
160 | | - * @return the Object array |
161 | | - * @param <T> return type i.e., object array |
162 | | - * @throws IOException OSON parsing has failed |
163 | | - */ |
164 | | - public <T> T toObjectArray(EmbeddableMappingType embeddableMappingType, Object source, WrapperOptions options) throws IOException { |
165 | | - |
166 | | - OracleJsonParser osonParser = new OracleJsonFactory().createJsonBinaryParser( ByteBuffer.wrap( (byte[])source ) ); |
167 | | - |
168 | | - ObjectArrayOsonDocumentHandler handler = new ObjectArrayOsonDocumentHandler( embeddableMappingType, |
169 | | - options); |
170 | | - |
171 | | - consumeOsonTokens(osonParser, osonParser.next(), handler); |
172 | | - |
173 | | - return (T)handler.getObjectArray(); |
174 | | - } |
175 | | - |
176 | | - public <X>byte[] fromObjectArray(X value, JavaType<X> javaType, WrapperOptions options,EmbeddableMappingType embeddableMappingType) |
177 | | - throws IOException { |
178 | | - ByteArrayOutputStream out = new ByteArrayOutputStream(); |
179 | | - OracleJsonGenerator generator = new OracleJsonFactory().createJsonBinaryGenerator( out ); |
180 | | - ObjectArrayOsonDocumentWriter writer = new ObjectArrayOsonDocumentWriter(generator); |
181 | | - JsonHelper.serialize( embeddableMappingType, value,options,writer); |
182 | | - generator.close(); |
183 | | - return out.toByteArray(); |
184 | | - } |
185 | 65 |
|
186 | 66 | public <X>byte[] arrayToOson(X value, |
187 | 67 | JavaType<X> javaType, |
@@ -211,8 +91,7 @@ public <X>byte[] arrayToOson(X value, |
211 | 91 | @Override |
212 | 92 | public <T> void writeToTarget(T value, JavaType<T> javaType, Object target, WrapperOptions options) |
213 | 93 | throws IOException { |
214 | | - ObjectWriter writer = objectMapper.writerFor( objectMapper.constructType( javaType.getJavaType() ) ); |
215 | | - writer.writeValue( (JsonGenerator) target, value); |
| 94 | + objectMapper.writerFor( objectMapper.constructType( javaType.getJavaType() ) ).writeValue( (JsonGenerator) target, value); |
216 | 95 |
|
217 | 96 | } |
218 | 97 |
|
|
0 commit comments