test_class.file: oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncConfigImplTest.java
test_class.identifier: DefaultSyncConfigImplTest
test_case.body: @Test
      public void testInvalidMapping() {
          String[] invalidMapping = new String[] {"invalid:Mapping"};
          DefaultSyncConfig.User userConfig = DefaultSyncConfigImpl.of(ConfigurationParameters.of(PARAM_USER_PROPERTY_MAPPING, invalidMapping)).user();
          assertEquals(Collections.emptyMap(), userConfig.getPropertyMapping());
      }
test_case.class_method_signature: DefaultSyncConfigImplTest.testInvalidMapping()
test_case.full_signature: @Test public void testInvalidMapping()
test_case.identifier: testInvalidMapping
test_case.invocations: user of of assertEquals emptyMap getPropertyMapping
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testInvalidMapping()
focal_class.declarator: PARAM_NAME_DEFAULT = "default"
focal_class.modifier: public static final
focal_class.original_string: public static final String PARAM_NAME_DEFAULT = "default";
focal_class.type: String
focal_class.var_name: PARAM_NAME_DEFAULT
focal_class.declarator: PARAM_NAME = "handler.name"
focal_class.modifier: @Property(
              label = "Sync Handler Name",
              description = "Name of this sync configuration. This is used to reference this handler by the login modules.",
              value = PARAM_NAME_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "Sync Handler Name",
              description = "Name of this sync configuration. This is used to reference this handler by the login modules.",
              value = PARAM_NAME_DEFAULT
      )
      public static final String PARAM_NAME = "handler.name";
focal_class.type: String
focal_class.var_name: PARAM_NAME
focal_class.declarator: PARAM_USER_EXPIRATION_TIME_DEFAULT = "1h"
focal_class.modifier: public static final
focal_class.original_string: public static final String PARAM_USER_EXPIRATION_TIME_DEFAULT = "1h";
focal_class.type: String
focal_class.var_name: PARAM_USER_EXPIRATION_TIME_DEFAULT
focal_class.declarator: PARAM_USER_EXPIRATION_TIME = "user.expirationTime"
focal_class.modifier: @Property(
              label = "User Expiration Time",
              description = "Duration until a synced user gets expired (eg. '1h 30m' or '1d').",
              value = PARAM_USER_EXPIRATION_TIME_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "User Expiration Time",
              description = "Duration until a synced user gets expired (eg. '1h 30m' or '1d').",
              value = PARAM_USER_EXPIRATION_TIME_DEFAULT
      )
      public static final String PARAM_USER_EXPIRATION_TIME = "user.expirationTime";
focal_class.type: String
focal_class.var_name: PARAM_USER_EXPIRATION_TIME
focal_class.declarator: PARAM_USER_AUTO_MEMBERSHIP_DEFAULT = {}
focal_class.modifier: public static final
focal_class.original_string: public static final String[] PARAM_USER_AUTO_MEMBERSHIP_DEFAULT = {};
focal_class.type: String[]
focal_class.var_name: PARAM_USER_AUTO_MEMBERSHIP_DEFAULT
focal_class.declarator: PARAM_USER_AUTO_MEMBERSHIP = "user.autoMembership"
focal_class.modifier: @Property(
              label = "User auto membership",
              description = "List of groups that a synced user is added to automatically",
              value = {},
              cardinality = Integer.MAX_VALUE
      )
      public static final
focal_class.original_string: @Property(
              label = "User auto membership",
              description = "List of groups that a synced user is added to automatically",
              value = {},
              cardinality = Integer.MAX_VALUE
      )
      public static final String PARAM_USER_AUTO_MEMBERSHIP = "user.autoMembership";
focal_class.type: String
focal_class.var_name: PARAM_USER_AUTO_MEMBERSHIP
focal_class.declarator: PARAM_USER_PROPERTY_MAPPING_DEFAULT = {"rep:fullname=cn"}
focal_class.modifier: public static final
focal_class.original_string: public static final String[] PARAM_USER_PROPERTY_MAPPING_DEFAULT = {"rep:fullname=cn"};
focal_class.type: String[]
focal_class.var_name: PARAM_USER_PROPERTY_MAPPING_DEFAULT
focal_class.declarator: PARAM_USER_PROPERTY_MAPPING = "user.propertyMapping"
focal_class.modifier: @Property(
              label = "User property mapping",
              description = "List mapping definition of local properties from external ones. eg: 'profile/email=mail'." +
                      "Use double quotes for fixed values. eg: 'profile/nt:primaryType=\"nt:unstructured\"",
              value = {"rep:fullname=cn"},
              cardinality = Integer.MAX_VALUE
      )
      public static final
focal_class.original_string: @Property(
              label = "User property mapping",
              description = "List mapping definition of local properties from external ones. eg: 'profile/email=mail'." +
                      "Use double quotes for fixed values. eg: 'profile/nt:primaryType=\"nt:unstructured\"",
              value = {"rep:fullname=cn"},
              cardinality = Integer.MAX_VALUE
      )
      public static final String PARAM_USER_PROPERTY_MAPPING = "user.propertyMapping";
focal_class.type: String
focal_class.var_name: PARAM_USER_PROPERTY_MAPPING
focal_class.declarator: PARAM_USER_PATH_PREFIX_DEFAULT = ""
focal_class.modifier: public static final
focal_class.original_string: public static final String PARAM_USER_PATH_PREFIX_DEFAULT = "";
focal_class.type: String
focal_class.var_name: PARAM_USER_PATH_PREFIX_DEFAULT
focal_class.declarator: PARAM_USER_PATH_PREFIX = "user.pathPrefix"
focal_class.modifier: @Property(
              label = "User Path Prefix",
              description = "The path prefix used when creating new users.",
              value = PARAM_USER_PATH_PREFIX_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "User Path Prefix",
              description = "The path prefix used when creating new users.",
              value = PARAM_USER_PATH_PREFIX_DEFAULT
      )
      public static final String PARAM_USER_PATH_PREFIX = "user.pathPrefix";
focal_class.type: String
focal_class.var_name: PARAM_USER_PATH_PREFIX
focal_class.declarator: PARAM_USER_MEMBERSHIP_EXPIRATION_TIME_DEFAULT = "1h"
focal_class.modifier: public static final
focal_class.original_string: public static final String PARAM_USER_MEMBERSHIP_EXPIRATION_TIME_DEFAULT = "1h";
focal_class.type: String
focal_class.var_name: PARAM_USER_MEMBERSHIP_EXPIRATION_TIME_DEFAULT
focal_class.declarator: PARAM_USER_MEMBERSHIP_EXPIRATION_TIME = "user.membershipExpTime"
focal_class.modifier: @Property(
              label = "User Membership Expiration",
              description = "Time after which membership expires (eg. '1h 30m' or '1d'). Note however, that a membership sync is aways bound to a sync of the user.",
              value = PARAM_USER_MEMBERSHIP_EXPIRATION_TIME_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "User Membership Expiration",
              description = "Time after which membership expires (eg. '1h 30m' or '1d'). Note however, that a membership sync is aways bound to a sync of the user.",
              value = PARAM_USER_MEMBERSHIP_EXPIRATION_TIME_DEFAULT
      )
      public static final String PARAM_USER_MEMBERSHIP_EXPIRATION_TIME = "user.membershipExpTime";
focal_class.type: String
focal_class.var_name: PARAM_USER_MEMBERSHIP_EXPIRATION_TIME
focal_class.declarator: PARAM_USER_MEMBERSHIP_NESTING_DEPTH_DEFAULT = 0
focal_class.modifier: public static final
focal_class.original_string: public static final int PARAM_USER_MEMBERSHIP_NESTING_DEPTH_DEFAULT = 0;
focal_class.type: int
focal_class.var_name: PARAM_USER_MEMBERSHIP_NESTING_DEPTH_DEFAULT
focal_class.declarator: PARAM_USER_MEMBERSHIP_NESTING_DEPTH = "user.membershipNestingDepth"
focal_class.modifier: @Property(
              label = "User membership nesting depth",
              description = "Returns the maximum depth of group nesting when membership relations are synced. " +
                      "A value of 0 effectively disables group membership lookup. A value of 1 only adds the direct " +
                      "groups of a user. This value has no effect when syncing individual groups only when syncing a " +
                      "users membership ancestry.",
              intValue = PARAM_USER_MEMBERSHIP_NESTING_DEPTH_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "User membership nesting depth",
              description = "Returns the maximum depth of group nesting when membership relations are synced. " +
                      "A value of 0 effectively disables group membership lookup. A value of 1 only adds the direct " +
                      "groups of a user. This value has no effect when syncing individual groups only when syncing a " +
                      "users membership ancestry.",
              intValue = PARAM_USER_MEMBERSHIP_NESTING_DEPTH_DEFAULT
      )
      public static final String PARAM_USER_MEMBERSHIP_NESTING_DEPTH = "user.membershipNestingDepth";
focal_class.type: String
focal_class.var_name: PARAM_USER_MEMBERSHIP_NESTING_DEPTH
focal_class.declarator: PARAM_USER_DYNAMIC_MEMBERSHIP_DEFAULT = false
focal_class.modifier: public static final
focal_class.original_string: public static final boolean PARAM_USER_DYNAMIC_MEMBERSHIP_DEFAULT = false;
focal_class.type: boolean
focal_class.var_name: PARAM_USER_DYNAMIC_MEMBERSHIP_DEFAULT
focal_class.declarator: PARAM_USER_DYNAMIC_MEMBERSHIP = "user.dynamicMembership"
focal_class.modifier: @Property(
              label = "User Dynamic Membership",
              description = "If enabled membership of external identities (user) is no longer fully reflected " +
                      "within the repositories user management.",
              boolValue = PARAM_USER_DYNAMIC_MEMBERSHIP_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "User Dynamic Membership",
              description = "If enabled membership of external identities (user) is no longer fully reflected " +
                      "within the repositories user management.",
              boolValue = PARAM_USER_DYNAMIC_MEMBERSHIP_DEFAULT
      )
      public static final String PARAM_USER_DYNAMIC_MEMBERSHIP = "user.dynamicMembership";
focal_class.type: String
focal_class.var_name: PARAM_USER_DYNAMIC_MEMBERSHIP
focal_class.declarator: PARAM_DISABLE_MISSING_USERS_DEFAULT = false
focal_class.modifier: public static final
focal_class.original_string: public static final boolean PARAM_DISABLE_MISSING_USERS_DEFAULT = false;
focal_class.type: boolean
focal_class.var_name: PARAM_DISABLE_MISSING_USERS_DEFAULT
focal_class.declarator: PARAM_DISABLE_MISSING_USERS = "user.disableMissing"
focal_class.modifier: @Property(
          label = "Disable missing users",
          description = "If true, users that no longer exist on the external provider will be locally disabled, " +
              "and re-enabled if they become valid again. If false (default) they will be removed.",
          boolValue = false
      )
      public static final
focal_class.original_string: @Property(
          label = "Disable missing users",
          description = "If true, users that no longer exist on the external provider will be locally disabled, " +
              "and re-enabled if they become valid again. If false (default) they will be removed.",
          boolValue = false
      )
      public static final String PARAM_DISABLE_MISSING_USERS = "user.disableMissing";
focal_class.type: String
focal_class.var_name: PARAM_DISABLE_MISSING_USERS
focal_class.declarator: PARAM_GROUP_EXPIRATION_TIME_DEFAULT = "1d"
focal_class.modifier: public static final
focal_class.original_string: public static final String PARAM_GROUP_EXPIRATION_TIME_DEFAULT = "1d";
focal_class.type: String
focal_class.var_name: PARAM_GROUP_EXPIRATION_TIME_DEFAULT
focal_class.declarator: PARAM_GROUP_EXPIRATION_TIME = "group.expirationTime"
focal_class.modifier: @Property(
              label = "Group Expiration Time",
              description = "Duration until a synced group expires (eg. '1h 30m' or '1d').",
              value = PARAM_GROUP_EXPIRATION_TIME_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "Group Expiration Time",
              description = "Duration until a synced group expires (eg. '1h 30m' or '1d').",
              value = PARAM_GROUP_EXPIRATION_TIME_DEFAULT
      )
      public static final String PARAM_GROUP_EXPIRATION_TIME = "group.expirationTime";
focal_class.type: String
focal_class.var_name: PARAM_GROUP_EXPIRATION_TIME
focal_class.declarator: PARAM_GROUP_AUTO_MEMBERSHIP_DEFAULT = {}
focal_class.modifier: public static final
focal_class.original_string: public static final String[] PARAM_GROUP_AUTO_MEMBERSHIP_DEFAULT = {};
focal_class.type: String[]
focal_class.var_name: PARAM_GROUP_AUTO_MEMBERSHIP_DEFAULT
focal_class.declarator: PARAM_GROUP_AUTO_MEMBERSHIP = "group.autoMembership"
focal_class.modifier: @Property(
              label = "Group auto membership",
              description = "List of groups that a synced group is added to automatically",
              value = {},
              cardinality = Integer.MAX_VALUE
      )
      public static final
focal_class.original_string: @Property(
              label = "Group auto membership",
              description = "List of groups that a synced group is added to automatically",
              value = {},
              cardinality = Integer.MAX_VALUE
      )
      public static final String PARAM_GROUP_AUTO_MEMBERSHIP = "group.autoMembership";
focal_class.type: String
focal_class.var_name: PARAM_GROUP_AUTO_MEMBERSHIP
focal_class.declarator: PARAM_GROUP_PROPERTY_MAPPING_DEFAULT = {}
focal_class.modifier: public static final
focal_class.original_string: public static final String[] PARAM_GROUP_PROPERTY_MAPPING_DEFAULT = {};
focal_class.type: String[]
focal_class.var_name: PARAM_GROUP_PROPERTY_MAPPING_DEFAULT
focal_class.declarator: PARAM_GROUP_PROPERTY_MAPPING = "group.propertyMapping"
focal_class.modifier: @Property(
              label = "Group property mapping",
              description = "List mapping definition of local properties from external ones.",
              value = {},
              cardinality = Integer.MAX_VALUE
      )
      public static final
focal_class.original_string: @Property(
              label = "Group property mapping",
              description = "List mapping definition of local properties from external ones.",
              value = {},
              cardinality = Integer.MAX_VALUE
      )
      public static final String PARAM_GROUP_PROPERTY_MAPPING = "group.propertyMapping";
focal_class.type: String
focal_class.var_name: PARAM_GROUP_PROPERTY_MAPPING
focal_class.declarator: PARAM_GROUP_PATH_PREFIX_DEFAULT = ""
focal_class.modifier: public static final
focal_class.original_string: public static final String PARAM_GROUP_PATH_PREFIX_DEFAULT = "";
focal_class.type: String
focal_class.var_name: PARAM_GROUP_PATH_PREFIX_DEFAULT
focal_class.declarator: PARAM_GROUP_PATH_PREFIX = "group.pathPrefix"
focal_class.modifier: @Property(
              label = "Group Path Prefix",
              description = "The path prefix used when creating new groups.",
              value = PARAM_GROUP_PATH_PREFIX_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "Group Path Prefix",
              description = "The path prefix used when creating new groups.",
              value = PARAM_GROUP_PATH_PREFIX_DEFAULT
      )
      public static final String PARAM_GROUP_PATH_PREFIX = "group.pathPrefix";
focal_class.type: String
focal_class.var_name: PARAM_GROUP_PATH_PREFIX
focal_class.declarator: PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE_DEFAULT = false
focal_class.modifier: public static final
focal_class.original_string: public static final boolean PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE_DEFAULT = false;
focal_class.type: boolean
focal_class.var_name: PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE_DEFAULT
focal_class.declarator: PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE = "enableRFC7613UsercaseMappedProfile"
focal_class.modifier: @Property(
              label = "RFC7613 Username Normalization Profile",
              description = "Enable the UsercaseMappedProfile defined in RFC7613 for username normalization.",
              boolValue = PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE_DEFAULT
      )
      public static final
focal_class.original_string: @Property(
              label = "RFC7613 Username Normalization Profile",
              description = "Enable the UsercaseMappedProfile defined in RFC7613 for username normalization.",
              boolValue = PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE_DEFAULT
      )
      public static final String PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE = "enableRFC7613UsercaseMappedProfile";
focal_class.type: String
focal_class.var_name: PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE
focal_class.declarator: MILLIS_PER_HOUR = 60 * 60 * 1000
focal_class.modifier: private static final
focal_class.original_string: private static final long MILLIS_PER_HOUR = 60 * 60 * 1000;
focal_class.type: long
focal_class.var_name: MILLIS_PER_HOUR
focal_class.declarator: ONE_HOUR = ConfigurationParameters.Milliseconds.of(MILLIS_PER_HOUR)
focal_class.modifier: private static final
focal_class.original_string: private static final ConfigurationParameters.Milliseconds ONE_HOUR = ConfigurationParameters.Milliseconds.of(MILLIS_PER_HOUR);
focal_class.type: ConfigurationParameters.Milliseconds
focal_class.var_name: ONE_HOUR
focal_class.declarator: ONE_DAY = ConfigurationParameters.Milliseconds.of(24 * MILLIS_PER_HOUR)
focal_class.modifier: private static final
focal_class.original_string: private static final ConfigurationParameters.Milliseconds ONE_DAY = ConfigurationParameters.Milliseconds.of(24 * MILLIS_PER_HOUR);
focal_class.type: ConfigurationParameters.Milliseconds
focal_class.var_name: ONE_DAY
focal_class.file: oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncConfigImpl.java
focal_class.identifier: DefaultSyncConfigImpl
focal_class.class_method_signature: DefaultSyncConfigImpl.of(ConfigurationParameters params)
focal_class.full_signature: public static DefaultSyncConfig of(ConfigurationParameters params)
focal_class.identifier: of
focal_class.modifiers: public static
focal_class.parameters: (ConfigurationParameters params)
focal_class.return: DefaultSyncConfig
focal_class.signature: DefaultSyncConfig of(ConfigurationParameters params)
focal_class.class_method_signature: DefaultSyncConfigImpl.getMilliSeconds(@NotNull ConfigurationParameters params, @NotNull String paramName,
                                          @NotNull String defaultParamValue,
                                          @NotNull ConfigurationParameters.Milliseconds defaultMillis)
focal_class.full_signature: private static long getMilliSeconds(@NotNull ConfigurationParameters params, @NotNull String paramName,
                                          @NotNull String defaultParamValue,
                                          @NotNull ConfigurationParameters.Milliseconds defaultMillis)
focal_class.identifier: getMilliSeconds
focal_class.modifiers: private static
focal_class.parameters: (@NotNull ConfigurationParameters params, @NotNull String paramName,
                                          @NotNull String defaultParamValue,
                                          @NotNull ConfigurationParameters.Milliseconds defaultMillis)
focal_class.return: long
focal_class.signature: long getMilliSeconds(@NotNull ConfigurationParameters params, @NotNull String paramName,
                                          @NotNull String defaultParamValue,
                                          @NotNull ConfigurationParameters.Milliseconds defaultMillis)
focal_class.class_method_signature: DefaultSyncConfigImpl.createMapping(@NotNull String[] patterns)
focal_class.full_signature: private static Map<String, String> createMapping(@NotNull String[] patterns)
focal_class.identifier: createMapping
focal_class.modifiers: private static
focal_class.parameters: (@NotNull String[] patterns)
focal_class.return: Map<String, String>
focal_class.signature: Map<String, String> createMapping(@NotNull String[] patterns)
focal_class.superclass: extends DefaultSyncConfig
focal_method.body: public static DefaultSyncConfig of(ConfigurationParameters params) {
          DefaultSyncConfig cfg = new DefaultSyncConfigImpl()
                  .setName(params.getConfigValue(PARAM_NAME, PARAM_NAME_DEFAULT));
  
          cfg.user()
                  .setDisableMissing(params.getConfigValue(PARAM_DISABLE_MISSING_USERS, PARAM_DISABLE_MISSING_USERS_DEFAULT))
                  .setMembershipExpirationTime(getMilliSeconds(params, PARAM_USER_MEMBERSHIP_EXPIRATION_TIME, PARAM_USER_MEMBERSHIP_EXPIRATION_TIME_DEFAULT, ONE_HOUR))
                  .setMembershipNestingDepth(params.getConfigValue(PARAM_USER_MEMBERSHIP_NESTING_DEPTH, PARAM_USER_MEMBERSHIP_NESTING_DEPTH_DEFAULT))
                  .setDynamicMembership(params.getConfigValue(PARAM_USER_DYNAMIC_MEMBERSHIP, PARAM_USER_DYNAMIC_MEMBERSHIP_DEFAULT))
                  .setExpirationTime(getMilliSeconds(params, PARAM_USER_EXPIRATION_TIME, PARAM_USER_EXPIRATION_TIME_DEFAULT, ONE_HOUR))
                  .setApplyRFC7613UsernameCaseMapped(params.getConfigValue(PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE, PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE_DEFAULT))
                  .setPathPrefix(params.getConfigValue(PARAM_USER_PATH_PREFIX, PARAM_USER_PATH_PREFIX_DEFAULT))
                  .setAutoMembership(params.getConfigValue(PARAM_USER_AUTO_MEMBERSHIP, PARAM_USER_AUTO_MEMBERSHIP_DEFAULT))
                  .setPropertyMapping(createMapping(
                          params.getConfigValue(PARAM_USER_PROPERTY_MAPPING, PARAM_USER_PROPERTY_MAPPING_DEFAULT)));
  
          cfg.group()
                  .setExpirationTime(getMilliSeconds(params, PARAM_GROUP_EXPIRATION_TIME, PARAM_GROUP_EXPIRATION_TIME_DEFAULT, ONE_DAY))
                  .setApplyRFC7613UsernameCaseMapped(params.getConfigValue(PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE, PARAM_ENABLE_RFC7613_USERCASE_MAPPED_PROFILE_DEFAULT))
                  .setPathPrefix(params.getConfigValue(PARAM_GROUP_PATH_PREFIX, PARAM_GROUP_PATH_PREFIX_DEFAULT))
                  .setAutoMembership(params.getConfigValue(PARAM_GROUP_AUTO_MEMBERSHIP, PARAM_GROUP_AUTO_MEMBERSHIP_DEFAULT))
                  .setPropertyMapping(createMapping(
                          params.getConfigValue(PARAM_GROUP_PROPERTY_MAPPING, PARAM_GROUP_PROPERTY_MAPPING_DEFAULT)));
  
          return cfg;
      }
focal_method.class_method_signature: DefaultSyncConfigImpl.of(ConfigurationParameters params)
focal_method.full_signature: public static DefaultSyncConfig of(ConfigurationParameters params)
focal_method.identifier: of
focal_method.invocations: setName getConfigValue setPropertyMapping setAutoMembership setPathPrefix setApplyRFC7613UsernameCaseMapped setExpirationTime setDynamicMembership setMembershipNestingDepth setMembershipExpirationTime setDisableMissing user getConfigValue getMilliSeconds getConfigValue getConfigValue getMilliSeconds getConfigValue getConfigValue getConfigValue createMapping getConfigValue setPropertyMapping setAutoMembership setPathPrefix setApplyRFC7613UsernameCaseMapped setExpirationTime group getMilliSeconds getConfigValue getConfigValue getConfigValue createMapping getConfigValue
focal_method.modifiers: public static
focal_method.parameters: (ConfigurationParameters params)
focal_method.return: DefaultSyncConfig
focal_method.signature: DefaultSyncConfig of(ConfigurationParameters params)