/** * Removes PropertyDefinition items from the configuration * * @param newConfigDef new configuration being merged into the existing one * @param existingConfigDef existing persisted configuration * @param existingProperties list of existing properties to inspect for potential removal */ private ConfigurationDefinition removeNoLongerUsedProperties(ConfigurationDefinition newConfigDef, ConfigurationDefinition existingConfigDef, List<PropertyDefinition> existingProperties) { List<PropertyDefinition> propDefsToDelete = new ArrayList<PropertyDefinition>(); for (PropertyDefinition existingPropDef : existingProperties) { PropertyDefinition newPropDef = newConfigDef.get(existingPropDef.getName()); if (newPropDef == null) { // not in new configuration propDefsToDelete.add(existingPropDef); } } if (!propDefsToDelete.isEmpty()) { log.debug("Deleting obsolete props from configDef [" + existingConfigDef + "]: " + propDefsToDelete); for (PropertyDefinition propDef : propDefsToDelete) { existingConfigDef.getPropertyDefinitions().remove(propDef.getName()); existingProperties.remove(propDef); // does not operate on original list!! } existingConfigDef = entityManager.merge(existingConfigDef); } return existingConfigDef; }
PropertyDefinition propertyDefinition = null; if (definition != null) { propertyDefinition = definition.get(propertyName);
if (existingPropertyDefinitions != null) { for (PropertyDefinition newProperty : newPropertyDefinitions) { PropertyDefinition existingProp = existingDefinition.get(newProperty.getName()); if (existingProp != null) { log.debug("Updating nonGrouped property [" + existingProp + "]");
/** * Return a value object for the passed property. The type is determined by looking at the operation definition * @param prop Property to evaluate * @param operationName Name of the operation to look at * @return Value or null on failure */ Object getObjectForProperty(PropertySimple prop, String operationName) { ConfigurationDefinition parameterDefinitions = getParameterDefinitionsForOperation(operationName); if (parameterDefinitions == null) return null; PropertyDefinition pd = parameterDefinitions.get(prop.getName()); if (pd instanceof PropertyDefinitionSimple) { PropertyDefinitionSimple pds = (PropertyDefinitionSimple) pd; return getObjectForProperty(prop, pds); } else { LOG.warn("Property [" + prop.getName() + "] is not understood yet"); return null; } }
/** * Return a value object for the passed property, which is part of a list. The type is determined by * looking at the operation definition and PropertyList#getMemberDefinition * @param prop Property to evaluate * @param propertyList Outer list * @param operationName Name of the operation * @return Value or null on failure */ Object getObjectForPropertyList(PropertySimple prop, PropertyList propertyList, String operationName) { ConfigurationDefinition parameterDefinitions = getParameterDefinitionsForOperation(operationName); if (parameterDefinitions == null) return null; PropertyDefinition def = parameterDefinitions.get(propertyList.getName()); if (def instanceof PropertyDefinitionList) { PropertyDefinitionList definitionList = (PropertyDefinitionList) def; PropertyDefinition tmp = definitionList.getMemberDefinition(); if (tmp instanceof PropertyDefinitionSimple) { return getObjectForProperty(prop, (PropertyDefinitionSimple) tmp); } } return null; }