private static void propertySwitch(PropertyDefinition def, Property prop, List<PropertySimple> replacementCandidates) { if (prop != null) { if (def instanceof PropertyDefinitionMap) { traverse((PropertyDefinitionMap) def, (PropertyMap) prop, replacementCandidates); } else if (def instanceof PropertyDefinitionList) { traverse((PropertyDefinitionList) def, (PropertyList) prop, replacementCandidates); } else if (def instanceof PropertyDefinitionSimple) { addIfShouldBeReplaced((PropertyDefinitionSimple) def, (PropertySimple) prop, replacementCandidates); } } }
public static void obfuscatePasswords(ConfigurationDefinition definition, Configuration config) { if (config == null || config.getMap().isEmpty()) { return; } if (definition == null || definition.getPropertyDefinitions().isEmpty()) { return; } List<PropertySimple> replacementCandidates = new ArrayList<PropertySimple>(); for(PropertyDefinition def : definition.getPropertyDefinitions().values()) { Property prop = config.get(def.getName()); propertySwitch(def, prop, replacementCandidates); } for(PropertySimple prop : replacementCandidates) { replace(prop); } }
private static void traverse(PropertyDefinitionList definition, PropertyList list, List<PropertySimple> replacementCandidates) { PropertyDefinition memberDef = definition.getMemberDefinition(); List<Property> members = list.getList(); for(Property prop : members) { propertySwitch(memberDef, prop, replacementCandidates); } }
private static void replace(PropertySimple prop) { ObfuscatedPropertySimple replacement = new ObfuscatedPropertySimple(prop); replacement.setParentList(prop.getParentList()); replacement.setParentMap(prop.getParentMap()); replacement.setConfiguration(prop.getConfiguration()); if (prop.getParentList() != null) { List<Property> list = prop.getParentList().getList(); int idx = list.indexOf(prop); list.remove(prop); list.add(idx, replacement); } else if (prop.getParentMap() != null) { Map<String, Property> map = prop.getParentMap().getMap(); replaceInMap(replacement, map); } else { Configuration conf = prop.getConfiguration(); replaceInMap(replacement, conf.getMap()); } }
private void obfuscatePasswords(ContentSource contentSource) { ConfigurationDefinition configurationDefinition = contentSource.getContentSourceType().getContentSourceConfigurationDefinition(); if (configurationDefinition == null) { ContentSourceType attachedContentSourceType = getContentSourceType(contentSource.getContentSourceType().getName()); configurationDefinition = attachedContentSourceType.getContentSourceConfigurationDefinition(); } PasswordObfuscationUtility.obfuscatePasswords(configurationDefinition, contentSource.getConfiguration()); } }
private static void traverse(PropertyDefinitionMap definition, PropertyMap map, List<PropertySimple> replacementCandidates) { for(PropertyDefinition def: definition.getMap().values()) { Property prop = map.get(def.getName()); propertySwitch(def, prop, replacementCandidates); } }