private void completeCapabilities(PrismObject<ResourceType> resource, boolean forceRefresh, Map<String,Collection<Object>> capabilityMap, Collection<ItemDelta<?, ?>> modifications,
OperationResult result) throws SchemaException, ObjectNotFoundException, CommunicationException, ConfigurationException {
ResourceType resourceType = resource.asObjectable();
ConnectorSpec defaultConnectorSpec = getDefaultConnectorSpec(resource);
CapabilitiesType resourceCapType = resourceType.getCapabilities();
if (resourceCapType == null) {
resourceCapType = new CapabilitiesType();
resourceType.setCapabilities(resourceCapType);
}
completeConnectorCapabilities(defaultConnectorSpec, resourceCapType, ResourceType.F_CAPABILITIES, forceRefresh,
capabilityMap==null?null:capabilityMap.get(null),
modifications, result);
for (ConnectorInstanceSpecificationType additionalConnectorType: resource.asObjectable().getAdditionalConnector()) {
ConnectorSpec connectorSpec = getConnectorSpec(resource, additionalConnectorType);
CapabilitiesType connectorCapType = additionalConnectorType.getCapabilities();
if (connectorCapType == null) {
connectorCapType = new CapabilitiesType();
additionalConnectorType.setCapabilities(connectorCapType);
}
ItemPath itemPath = additionalConnectorType.asPrismContainerValue().getPath().append(ConnectorInstanceSpecificationType.F_CAPABILITIES);
completeConnectorCapabilities(connectorSpec, connectorCapType, itemPath, forceRefresh,
capabilityMap==null?null:capabilityMap.get(additionalConnectorType.getName()),
modifications, result);
}
}