Skip to content

Commit ffd545f

Browse files
dmealingclaude
andcommitted
refactor(integration-tests): dedupe @dbColumnType reads in OMDB adapter
Pre-merge simplifier pass over Phase B Unit 3. Behavior-preserving: - Extract hasDbColumnType(mf, expected) — isTimestampTzField and maybeParseJson shared the identical defensive attr-read pattern (hasMetaAttr + getMetaAttr().getValueAsString() guarded by try/catch). - Add a static import for CoreDBMetaDataProvider and ObjectMapper, dropping the repeated fully-qualified references. No wire-shape change: TIMESTAMPTZ, INTEGER/BIGINT narrowing, and jsonb parsing are untouched. Full Java integration suite green (38 tests). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent d35ad79 commit ffd545f

1 file changed

Lines changed: 12 additions & 13 deletions

File tree

server/java/integration-tests/src/test/java/com/metaobjects/integration/ObjectManagerDbAdapter.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.metaobjects.integration;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.metaobjects.database.CoreDBMetaDataProvider;
35
import com.metaobjects.field.MetaField;
46
import com.metaobjects.integration.Scenarios.QuerySpec;
57
import com.metaobjects.integration.Scenarios.SortSpec;
@@ -277,17 +279,20 @@ private static Object coerceWireType(MetaField<?> mf, Object value, Map<String,
277279

278280
/** True for a {@code field.timestamp} carrying {@code @dbColumnType: timestamp_with_tz}. */
279281
private static boolean isTimestampTzField(MetaField<?> mf) {
282+
return hasDbColumnType(mf, CoreDBMetaDataProvider.DB_COLUMN_TYPE_TIMESTAMP_TZ);
283+
}
284+
285+
/** True when {@code mf} carries {@code @dbColumnType: <expected>} (false on any read error). */
286+
private static boolean hasDbColumnType(MetaField<?> mf, String expected) {
280287
try {
281-
return mf.hasMetaAttr(com.metaobjects.database.CoreDBMetaDataProvider.DB_COLUMN_TYPE)
282-
&& com.metaobjects.database.CoreDBMetaDataProvider.DB_COLUMN_TYPE_TIMESTAMP_TZ.equals(
283-
mf.getMetaAttr(com.metaobjects.database.CoreDBMetaDataProvider.DB_COLUMN_TYPE).getValueAsString());
288+
return mf.hasMetaAttr(CoreDBMetaDataProvider.DB_COLUMN_TYPE)
289+
&& expected.equals(mf.getMetaAttr(CoreDBMetaDataProvider.DB_COLUMN_TYPE).getValueAsString());
284290
} catch (Exception e) {
285291
return false;
286292
}
287293
}
288294

289-
private static final com.fasterxml.jackson.databind.ObjectMapper JSON =
290-
new com.fasterxml.jackson.databind.ObjectMapper();
295+
private static final ObjectMapper JSON = new ObjectMapper();
291296

292297
/**
293298
* R6 Plan 2b: an open-JSON column ({@code @dbColumnType: jsonb}) is a
@@ -297,15 +302,9 @@ private static boolean isTimestampTzField(MetaField<?> mf) {
297302
* normalization. Non-jsonb fields and non-string values pass through unchanged.
298303
*/
299304
private static Object maybeParseJson(MetaField<?> mf, Object value) {
300-
boolean isOpenJsonb;
301-
try {
302-
isOpenJsonb = mf.hasMetaAttr(com.metaobjects.database.CoreDBMetaDataProvider.DB_COLUMN_TYPE)
303-
&& com.metaobjects.database.CoreDBMetaDataProvider.DB_COLUMN_TYPE_JSONB.equals(
304-
mf.getMetaAttr(com.metaobjects.database.CoreDBMetaDataProvider.DB_COLUMN_TYPE).getValueAsString());
305-
} catch (Exception e) {
306-
isOpenJsonb = false;
305+
if (!hasDbColumnType(mf, CoreDBMetaDataProvider.DB_COLUMN_TYPE_JSONB) || !(value instanceof String s)) {
306+
return value;
307307
}
308-
if (!isOpenJsonb || !(value instanceof String s)) return value;
309308
try {
310309
return JSON.readValue(s, Object.class);
311310
} catch (Exception e) {

0 commit comments

Comments
 (0)