public static MotechSecurityConfiguration buildConfig( String testOption, Object configOption, String configOption2) { List<MotechURLSecurityRule> newRules = new ArrayList<MotechURLSecurityRule>(); List<Scheme> supportedSchemes = new ArrayList<>(); List<HTTPMethod> methodsRequired = new ArrayList<>(); List<String> permissionAccess = new ArrayList<>(); List<String> userAccess = new ArrayList<>(); MotechURLSecurityRule rule1 = new MotechURLSecurityRule(); MotechURLSecurityRule rule2 = new MotechURLSecurityRule(); rule1.setPattern("/**/web-api/**"); rule1.setOrigin("test"); rule1.setProtocol(HTTP); rule1.setRest(true); rule1.setVersion("1"); rule2.setPattern("/**"); rule2.setOrigin("test"); rule2.setProtocol(HTTP); rule2.setRest(true); rule2.setVersion("1"); newRules.add(rule1); newRules.add(rule2); switch (testOption) { case USER_ACCESS_TEST: userAccess.add((String) configOption); rule1.setUserAccess(userAccess); supportedSchemes.add(Scheme.BASIC); methodsRequired.add(HTTPMethod.ANY); break; case PERMISSION_ACCESS_TEST: permissionAccess.add((String) configOption); rule1.setPermissionAccess(permissionAccess); supportedSchemes.add(Scheme.BASIC); methodsRequired.add(HTTPMethod.ANY); break; case METHOD_SPECIFIC_TEST: supportedSchemes.add(Scheme.BASIC); methodsRequired.add((HTTPMethod) configOption); permissionAccess.add(configOption2); rule1.setPermissionAccess(permissionAccess); break; case LOGIN_ACCESS_TEST: supportedSchemes.add(Scheme.USERNAME_PASSWORD); supportedSchemes.add(Scheme.OPEN_ID); methodsRequired.add(HTTPMethod.ANY); rule1.setRest(false); break; case NO_SECURITY_TEST: newRules.remove(rule1); supportedSchemes.add(Scheme.NO_SECURITY); methodsRequired.add(HTTPMethod.ANY); break; default: break; } rule1.setMethodsRequired(methodsRequired); rule1.setSupportedSchemes(supportedSchemes); rule1.setActive(true); rule2.setMethodsRequired(methodsRequired); rule2.setSupportedSchemes(supportedSchemes); rule2.setActive(true); return new MotechSecurityConfiguration(newRules); }