From 2d05e3a9755c280b94411e3f1125017be1d3cbd6 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Tue, 24 Oct 2023 15:41:44 +0200 Subject: [PATCH] fix: dialyzer problem for community edition --- apps/emqx_bridge/src/emqx_bridge_v2.erl | 3 +-- apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl | 9 +++++++-- apps/emqx_connector/src/emqx_connector_resource.erl | 11 ++++++++++- .../src/schema/emqx_connector_schema.erl | 9 +++++++-- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge_v2.erl b/apps/emqx_bridge/src/emqx_bridge_v2.erl index 4fbc3ab2b..4560f9a3d 100644 --- a/apps/emqx_bridge/src/emqx_bridge_v2.erl +++ b/apps/emqx_bridge/src/emqx_bridge_v2.erl @@ -432,11 +432,10 @@ create_dry_run_helper(BridgeType, ConnectorRawConf, BridgeV2RawConf) -> create_dry_run(Type, Conf0) -> Conf1 = maps:without([<<"name">>], Conf0), TypeBin = bin(Type), - TypeAtom = binary_to_existing_atom(TypeBin), RawConf = #{<<"bridges_v2">> => #{TypeBin => #{<<"temp_name">> => Conf1}}}, %% Check config try - #{bridges_v2 := #{TypeAtom := #{temp_name := _Conf}}} = + _ = hocon_tconf:check_plain( emqx_bridge_v2_schema, RawConf, diff --git a/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl b/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl index 8fa95369b..529f6b630 100644 --- a/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl +++ b/apps/emqx_bridge/src/schema/emqx_bridge_v2_schema.erl @@ -109,8 +109,13 @@ tags() -> roots() -> case fields(bridges_v2) of - [] -> []; - _ -> [{bridges_v2, ?HOCON(?R_REF(bridges_v2), #{importance => ?IMPORTANCE_LOW})}] + [] -> + [ + {bridges_v2, + ?HOCON(hoconsc:map(name, typerefl:map()), #{importance => ?IMPORTANCE_LOW})} + ]; + _ -> + [{bridges_v2, ?HOCON(?R_REF(bridges_v2), #{importance => ?IMPORTANCE_LOW})}] end. fields(bridges_v2) -> diff --git a/apps/emqx_connector/src/emqx_connector_resource.erl b/apps/emqx_connector/src/emqx_connector_resource.erl index 1e7f32712..04965ec02 100644 --- a/apps/emqx_connector/src/emqx_connector_resource.erl +++ b/apps/emqx_connector/src/emqx_connector_resource.erl @@ -263,12 +263,13 @@ create_dry_run(Type, Conf0, Callback) -> Conf1 = maps:without([<<"name">>], Conf0), RawConf = #{<<"connectors">> => #{TypeBin => #{<<"temp_name">> => Conf1}}}, try - #{connectors := #{TypeAtom := #{temp_name := Conf}}} = + CheckedConf = hocon_tconf:check_plain( emqx_connector_schema, RawConf, #{atom_key => true, required => false} ), + Conf = get_temp_conf(TypeAtom, CheckedConf), case emqx_connector_ssl:convert_certs(TmpPath, Conf) of {error, Reason} -> {error, Reason}; @@ -286,6 +287,14 @@ create_dry_run(Type, Conf0, Callback) -> _ = file:del_dir_r(emqx_tls_lib:pem_dir(TmpPath)) end. +get_temp_conf(TypeAtom, CheckedConf) -> + case CheckedConf of + #{connectors := #{TypeAtom := #{temp_name := Conf}}} -> + Conf; + #{connectors := #{TypeAtom := #{<<"temp_name">> := Conf}}} -> + Conf + end. + remove(ConnectorId) -> {ConnectorType, ConnectorName} = parse_connector_id(ConnectorId), remove(ConnectorType, ConnectorName, #{}, #{}). diff --git a/apps/emqx_connector/src/schema/emqx_connector_schema.erl b/apps/emqx_connector/src/schema/emqx_connector_schema.erl index eb71d88d0..452fa5820 100644 --- a/apps/emqx_connector/src/schema/emqx_connector_schema.erl +++ b/apps/emqx_connector/src/schema/emqx_connector_schema.erl @@ -258,8 +258,13 @@ tags() -> roots() -> case fields(connectors) of - [] -> []; - _ -> [{connectors, ?HOCON(?R_REF(connectors), #{importance => ?IMPORTANCE_LOW})}] + [] -> + [ + {connectors, + ?HOCON(hoconsc:map(name, typerefl:map()), #{importance => ?IMPORTANCE_LOW})} + ]; + _ -> + [{connectors, ?HOCON(?R_REF(connectors), #{importance => ?IMPORTANCE_LOW})}] end. fields(connectors) ->