private static void populateManagedPropertyFromProperty( Property property, PropertyDefinition propertyDefinition, @NotNull ManagedProperty managedProperty, @Nullable PropertySimple customProperty) { // See if there is a custom adapter defined for this property. PropertyAdapter propertyAdapter = PropertyAdapterFactory.getCustomPropertyAdapter(customProperty); MetaValue metaValue = managedProperty.getValue(); if (metaValue != null) { LOG.trace( "Populating existing MetaValue of type " + metaValue.getMetaType() + " from RHQ property " + property + " with definition " + propertyDefinition + "..."); if (propertyAdapter == null) { propertyAdapter = PropertyAdapterFactory.getPropertyAdapter(metaValue); } propertyAdapter.populateMetaValueFromProperty(property, metaValue, propertyDefinition); } else { MetaType metaType = managedProperty.getMetaType(); if (propertyAdapter == null) { propertyAdapter = PropertyAdapterFactory.getPropertyAdapter(metaType); } LOG.trace( "Converting property " + property + " with definition " + propertyDefinition + " to MetaValue of type " + metaType + "..."); metaValue = propertyAdapter.convertToMetaValue(property, propertyDefinition, metaType); managedProperty.setValue(metaValue); } }
protected void createComponentTest( String templateName, Map<String, MetaValue> propValues, String deploymentName, ComponentType componentType, String componentName) throws Exception { ManagementView mgtView = getManagementView(); DeploymentTemplateInfo dsInfo = mgtView.getTemplate(templateName); assertNotNull("template " + templateName + " found", dsInfo); Map<String, ManagedProperty> props = dsInfo.getProperties(); for (String propName : propValues.keySet()) { ManagedProperty prop = props.get(propName); // If the property does not exist on the template we don't set it if (prop == null) continue; log.debug("template property before: " + prop.getName() + "," + prop.getValue()); assertNotNull("property " + propName + " found in template " + templateName, prop); prop.setValue(propValues.get(propName)); log.debug("template property after: " + prop.getName() + "," + prop.getValue()); } // Assert map composite if (dsInfo.getProperties().get("config-property") != null) assertTrue( dsInfo.getProperties().get("config-property").getMetaType() instanceof MapCompositeMetaType); mgtView.applyTemplate(deploymentName, dsInfo); // reload the view activeView = null; mgtView = getManagementView(); ManagedComponent dsMC = getManagedComponent(mgtView, componentType, componentName); assertNotNull(dsMC); Set<String> mcPropNames = new HashSet<String>(dsMC.getPropertyNames()); for (String propName : propValues.keySet()) { ManagedProperty prop = dsMC.getProperty(propName); log.debug("Checking: " + propName); assertNotNull(propName, prop); Object propValue = prop.getValue(); Object expectedValue = propValues.get(propName); if (propValue instanceof MetaValue) { if (prop.getMetaType().isComposite()) { // TODO / FIXME - compare composites log.warn("Not checking composite: " + propValue); } else { // Compare the MetaValues assertEquals(prop.getName(), expectedValue, propValue); } } else if (propValue != null) { fail(prop.getName() + " is not a MetaValue: " + propValue); } mcPropNames.remove(propName); } if (!mcPropNames.isEmpty()) { log.warn(getName() + "> untested properties: " + mcPropNames); for (String propName : mcPropNames) { ManagedProperty prop = dsMC.getProperty(propName); log.info(prop); } } }