private static void addRepresentation(PropertyDefinitionList pl, StringBuilder bld) { bld.append(pl.getName()); addRepresentation(pl.getMemberDefinition(), bld); } }
private static void validatePropertyListSize(PropertyList propertyList, PropertyDefinitionList propertyDefinitionList, List<String> errorMessages) { int listMin = propertyDefinitionList.getMin(); int listMax = propertyDefinitionList.getMax(); if (listMin == 0 && listMax == Integer.MAX_VALUE) { return; } int listSize = propertyList.getList().size(); if (listMin == 0 && listMax < Integer.MAX_VALUE && listSize > listMax) { errorMessages.add("The list property '" + propertyDefinitionList.getName() + "' should contain " + listMax + " row(s) at most"); } else if (listMin > 0 && listMax == Integer.MAX_VALUE && listSize < listMin) { errorMessages.add("The list property '" + propertyDefinitionList.getName() + "' should contain at least " + listMin + " row(s)"); } else if (listSize < listMin || listSize > listMax) { errorMessages.add("The list property '%s' should contain a minimum of " + listMin + " and a maximum of " + listMax + " row(s)"); } }
@Nullable private String getListMemberMapKey(PropertyDefinitionList propDefList) { Configuration pluginConfig = this.resourceContext.getPluginConfiguration(); PropertyMap mapKeyNames = pluginConfig.getMap("listMemberMapKeyNames"); if (mapKeyNames == null) { return null; } String listName = propDefList.getName(); return mapKeyNames.getSimpleValue(listName, null); }
public Property createPropertyList(PropertyDefinitionList propDefList, AugeasNode node) throws AugeasRhqException { PropertyList propList = new PropertyList(propDefList.getName()); List<AugeasNode> nodes = tree.matchRelative(node, propDefList.getName()); PropertyDefinition listMemberPropDef = propDefList.getMemberDefinition(); for (AugeasNode listMemberNode : nodes) { propList.add(loadProperty(listMemberPropDef, listMemberNode)); } return propList; } }
public void updateList(PropertyDefinitionList propDef, Property prop, AugeasNode listNode, int seq) throws AugeasRhqException { PropertyList listProperty = null; PropertyDefinition childDefinition = propDef.getMemberDefinition(); if (prop instanceof PropertyList) { PropertyList lst = (PropertyList) prop; listProperty = (PropertyList) lst.getList().get(seq - 1); } if (prop instanceof PropertyMap) { PropertyMap map = (PropertyMap) prop; listProperty = (PropertyList) map.get(propDef.getName()); } List<AugeasNode> nodes = tree.matchRelative(listNode, propDef.getName()); AugeasNode node; if (nodes.isEmpty() || nodes.size() < seq) { node = tree.createNode(listNode, propDef.getName(), null, seq); nodes.add(node); } else node = nodes.get(seq); int i = 1; for (Property prp : listProperty.getList()) { System.out.println(prp.getName()); updateProperty(childDefinition, listProperty, node, i); i = i + 1; } }
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); } }
String propertyName = propDef.getName(); PropertyList propertyList = new PropertyList(propertyName); PropertyDefinition memberDefinition = propDef.getMemberDefinition();
log.error("\n\n!! Member definition for new list property [" + newList.getName() + "] is null - check and fix the plugin descriptor\n"); return;
private static void adaptPropertyList(PropertyList source, PropertyList target, PropertyDefinitionList definition, Object parent, boolean adaptReadonlyProperties) { if ((adaptReadonlyProperties || !definition.isReadOnly())) { if (target == null) { target = new PropertyList(definition.getName()); add(parent, target); } if (target.getList().isEmpty()) { PropertyDefinition memberDef = definition.getMemberDefinition(); for (Property p : source.getList()) { PropertyType type = conforms(p, memberDef); if (type != null && type != PropertyType.UNKNOWN) { Property targetMember = instantiateDefaultProperty(memberDef); target.add(targetMember); adaptProperty(p, targetMember, memberDef, target, adaptReadonlyProperties); } } } } }
protected Property createPropertyList(PropertyDefinitionList propDefList, Augeas augeas, AugeasNode node) { PropertyDefinition listMemberPropDef = propDefList.getMemberDefinition(); if (!(listMemberPropDef instanceof PropertyDefinitionMap)) { throw new IllegalArgumentException( "Invalid Resource ConfigurationDefinition - only lists of maps are supported."); } PropertyDefinitionMap listMemberPropDefMap = (PropertyDefinitionMap) listMemberPropDef; PropertyList propList = new PropertyList(propDefList.getName()); String mapKey = getListMemberMapKey(propDefList); String mapPath = getAugeasPathRelativeToParent(listMemberPropDefMap, node, augeas); String listMemberPathsExpression = node.getPath() + AugeasNode.SEPARATOR_CHAR + mapPath; List<String> listMemberPaths = augeas.match(listMemberPathsExpression); for (String listMemberPath : listMemberPaths) { AugeasNode listMemberNode = new AugeasNode(listMemberPath); PropertyMap listMemberPropMap = new PropertyMap(listMemberPropDefMap.getName()); propList.add(listMemberPropMap); // Add the "key" prop, if defined, to the map. if (mapKey != null) { PropertySimple keyProp = new PropertySimple(mapKey, listMemberNode.getName()); listMemberPropMap.put(keyProp); } // Populate the rest of the map child properties. populatePropertyMap(listMemberPropDefMap, listMemberPropMap, augeas, listMemberNode); } return propList; }
PropertyList listProperty = this.propertyMap.getList(listPropertyDefinition.getName());
if (null != currentPropertyList && !currentPropertyList.getList().isEmpty()) { if (!currentPropertyList.equals(propertyList)) { errorMessages.add("ReadOnly property '" + propertyDefinitionList.getName() + "' has a value " + propertyList.getList() + " different than the current value " + currentPropertyList.getList() + "]. It is not allowed to change.");