private static void validatePropertyMap(AbstractPropertyMap propertyMap, AbstractPropertyMap currentPropertyMap, PropertyDefinitionMap propertyDefinitionMap, List<String> errorMessages) { // if the entire map is read-only then the new map must match the current map if the current map is non-empty if (propertyDefinitionMap.isReadOnly() && null != currentPropertyMap && !currentPropertyMap.getMap().isEmpty()) { if (!propertyMap.getMap().equals(currentPropertyMap.getMap())) { errorMessages.add("ReadOnly property '" + propertyDefinitionMap.getName() + "' has a value " + propertyMap.getMap() + " different than the current value " + currentPropertyMap.getMap() + "]. It is not allowed to change."); return; } } Map<String, PropertyDefinition> childPropertyDefinitions = propertyDefinitionMap.getMap(); for (PropertyDefinition childPropertyDefinition : childPropertyDefinitions.values()) { validateProperty(childPropertyDefinition, propertyMap, currentPropertyMap, errorMessages); } }
private boolean hasErrors(AbstractPropertyMap configuration) { if (configuration instanceof PropertyMap) { if (((PropertyMap) configuration).getErrorMessage() != null) { return true; } } for (Map.Entry<String, Property> entry : configuration.getMap().entrySet()) { if (hasErrors(entry.getValue())) { return true; } } return false; }
private static void unmaskPropertyMap(AbstractPropertyMap propertyMap, PropertyMap unmaskedPropertyMap) { if (unmaskedPropertyMap == null) { // The map does not exist in the unmasked config, so no unmasking is possible. return; } Map<String, Property> memberProperties = propertyMap.getMap(); for (Property memberProperty : memberProperties.values()) { unmaskProperty(memberProperty.getName(), propertyMap, unmaskedPropertyMap); } }
private static Map<String, Map<String, Integer>> createMemberNameValueFrequenciesMap( List<AbstractPropertyMap> sourceParentPropertyMaps) { Map<String, Map<String, Integer>> nameValueFrequenciesMap = new HashMap<String, Map<String, Integer>>(); for (AbstractPropertyMap map : sourceParentPropertyMaps) { for (String propertyName : map.getMap().keySet()) { PropertySimple propertySimple = map.getSimple(propertyName); String propertyValue = (propertySimple != null) ? propertySimple.getStringValue() : null; Map<String, Integer> valueFrequencies = nameValueFrequenciesMap.get(propertyName); if (valueFrequencies == null) { valueFrequencies = new HashMap<String, Integer>(); nameValueFrequenciesMap.put(propertyName, valueFrequencies); } Integer valueFrequency = (valueFrequencies.containsKey(propertyValue)) ? (valueFrequencies .get(propertyValue) + 1) : 1; valueFrequencies.put(propertyValue, valueFrequency); } } return nameValueFrequenciesMap; }
PropertyMap unmaskedPropertyMap = unmaskedParentPropertyMap.getMap(property.getName()); unmaskPropertyMap(propertyMap, unmaskedPropertyMap); } else if (property instanceof PropertyList) {
protected void setNode(PropertyDefinition propDef, AbstractPropertyMap parentPropMap, Augeas augeas, AugeasNode parentNode) { String propName = getAugeasPathRelativeToParent(propDef, parentNode, augeas); AugeasNode node = (propName.equals(".")) ? parentNode : new AugeasNode(parentNode, propName); if (isPropertyDefined(propDef, parentPropMap)) { // The property *is* defined, which means we either need to add or update the corresponding node in the // Augeas tree. if (propDef instanceof PropertyDefinitionSimple) { PropertyDefinitionSimple propDefSimple = (PropertyDefinitionSimple) propDef; PropertySimple propSimple = parentPropMap.getSimple(propDefSimple.getName()); setNodeFromPropertySimple(augeas, node, propDefSimple, propSimple); } else if (propDef instanceof PropertyDefinitionMap) { PropertyDefinitionMap propDefMap = (PropertyDefinitionMap) propDef; PropertyMap propMap = parentPropMap.getMap(propDefMap.getName()); setNodeFromPropertyMap(propDefMap, propMap, augeas, node); } else if (propDef instanceof PropertyDefinitionList) { PropertyDefinitionList propDefList = (PropertyDefinitionList) propDef; PropertyList propList = parentPropMap.getList(propDefList.getName()); setNodeFromPropertyList(propDefList, propList, augeas, node); } else { throw new IllegalStateException("Unsupported PropertyDefinition subclass: " + propDef.getClass().getName()); } } else { // The property *is not* defined - remove the corresponding node from the Augeas tree if it exists. removeNodeIfItExists(augeas, node); } }
private static void mergeOpenPropertyMap(List<AbstractPropertyMap> memberParentPropertyMaps, AbstractPropertyMap groupParentPropertyMap) { for (String groupMemberPropertyName : groupParentPropertyMap.getMap().keySet()) { PropertySimple groupMemberProperty = groupParentPropertyMap.getSimple(groupMemberPropertyName); if (groupMemberProperty != null && groupMemberProperty.getOverride() != null && groupMemberProperty.getOverride()) { for (AbstractPropertyMap sourceParentPropertyMap : memberParentPropertyMaps) { PropertySimple sourcePropertySimple = sourceParentPropertyMap.getSimple(groupMemberPropertyName); if (sourcePropertySimple == null) { sourcePropertySimple = new PropertySimple(groupMemberPropertyName, groupMemberProperty .getStringValue()); sourceParentPropertyMap.put(sourcePropertySimple); } else { sourcePropertySimple.setStringValue(groupMemberProperty.getStringValue()); } } } } }
private void merge(AbstractPropertyMap base, AbstractPropertyMap changes) { for (Map.Entry<String, Property> changesEntry : changes.getMap().entrySet()) { String changesPropertyName = changesEntry.getKey(); Property changesProperty = changesEntry.getValue();
+ OPENMAP_PROPERTIES_TABLE_STYLE_CLASS + "'>"); addOpenMapMemberPropertiesTableHeaders(rootPanel, propertyDefinitionMap); for (Property property : this.propertyMap.getMap().values()) { if (!(property instanceof PropertySimple)) { throw new IllegalStateException("Open map " + this.propertyMap
private static void normalizeProperty(PropertyDefinition propertyDefinition, AbstractPropertyMap parentPropertyMap, boolean normalizeRequiredDefaults, boolean normalizeOptionalDefaults) { if (parentPropertyMap.getMap().keySet().contains(propertyDefinition.getName())) // property is already set PropertyMap propertyMap = parentPropertyMap.getMap(propertyDefinition.getName()); PropertyDefinitionMap propertyDefinitionMap = (PropertyDefinitionMap) propertyDefinition; normalizePropertyMap(propertyMap, propertyDefinitionMap, false,
for (AbstractPropertyMap sourceParentPropertyMap : sourceParentPropertyMaps) { PropertyMap nestedSourceParentPropertyMap = sourceParentPropertyMap .getMap(propertyDefinition.getName()); nestedSourceParentPropertyMaps .add((nestedSourceParentPropertyMap != null) ? nestedSourceParentPropertyMap : new PropertyMap(
private static void validateProperty(PropertyDefinition propertyDefinition, AbstractPropertyMap parentPropertyMap, AbstractPropertyMap currentParentPropertyMap, List<String> errorMessages) { if (parentPropertyMap.getMap().keySet().contains(propertyDefinition.getName())) // property is already set PropertyMap propertyMap = parentPropertyMap.getMap(propertyDefinition.getName()); PropertyMap currentPropertyMap = (null == currentParentPropertyMap) ? null : currentParentPropertyMap .getMap(propertyDefinition.getName()); PropertyDefinitionMap propertyDefinitionMap = (PropertyDefinitionMap) propertyDefinition; validatePropertyMap(propertyMap, currentPropertyMap, propertyDefinitionMap, errorMessages);
List<AbstractPropertyMap> nestedSourceParentPropertyMaps = new ArrayList<AbstractPropertyMap>(); for (AbstractPropertyMap sourceParentPropertyMap : memberParentPropertyMaps) nestedSourceParentPropertyMaps.add(sourceParentPropertyMap.getMap(propertyDefinition.getName())); PropertyMap groupPropertyMap = groupParentPropertyMap.getMap(propertyDefinition.getName()); groupParentPropertyMap.put(groupPropertyMap); mergePropertyMap((PropertyDefinitionMap) propertyDefinition, nestedSourceParentPropertyMaps,
PropertyMap propertyMap = parentPropertyMap.getMap(propertyDefinition.getName()); PropertyDefinitionMap propertyDefinitionMap = (PropertyDefinitionMap) propertyDefinition; maskPropertyMap(propertyMap, propertyDefinitionMap);