public class DiscoverConfigurationImpl extends ConnectorAPIOperationRunner implements DiscoverConfigurationApiOp
NO_TIMEOUT
Constructor and Description |
---|
DiscoverConfigurationImpl(ConnectorOperationalContext context,
Connector connector) |
Modifier and Type | Method and Description |
---|---|
Map<String,SuggestedValues> |
discoverConfiguration()
Discovers additional configuration properties.
|
void |
testPartialConfiguration()
Tests partial configuration of the connector.
|
getConnector, getNormalizer, getOperationalContext
public DiscoverConfigurationImpl(ConnectorOperationalContext context, Connector connector)
public void testPartialConfiguration()
DiscoverConfigurationApiOp
Tests partial configuration of the connector.
It is similar to TestApiOp
, however, it is supposed to be much more forgiving.
While the TestApiOp.test()
is supposed to test complete connector configuration,
making sure that all features of the connector are working, this method does not make
such a completeness requirement.
The testPartialConfiguration() is supposed to test the very minimal configuration set,
which is usually just a set of mandatory configuration properties.
For most connectors this will be probably just a hostname, username and password.
This method returns successfully if the minimal configuration is correct, i.e. the connector could at least establish a basic connection to the resource. Return from this method does NOT indicate that connector is fully operational. This method will raise an appropriate exception in case that the configuration test fails.
Development note: Currently the connector does not have any means to know which configuration properties were explicitly configured, and which were set to default values. Therefore the connector does not know what parts of the configuration should be tested. E.g. CSV connector has "," as default value for separator. Connector has no way to tell whether the "," was explicitly configured by system administrator (hence it should test it), or it was set as a default value (hence it should NOT test it). For now, this is unlikely to be a major problem. There is probably some very basic set of configuration properties that are intuitively understood sa minimal configuration. Later, if that would cause problems, we can add a method to AbstractConfiguration or Configuration that could be used to retrieve a list of properties that were explicitly configured.
testPartialConfiguration
in interface DiscoverConfigurationApiOp
public Map<String,SuggestedValues> discoverConfiguration()
DiscoverConfigurationApiOp
Discovers additional configuration properties. The connector is supposed to use minimal configuration to connect to the resource, then use the connection to discover additional configuration properties. Discovered configuration properties are returned from this method (if any).
Only discovered values are present in the map. There is no need to add all configuration properties, or even repeat the configured values. Empty map means no suggestions, i.e. the current configuration is complete. Empty list of values in a specific means that there are no valid values. The connector suggests that the property should be configured with no value at all (null). In that case the connector knows that there should be no values. On the other hand, if a suggestion for a particular property is not present, the connector does not make any suggestion. The connector does not know anything about the property. Note: It may be difficult to distinguish explicitly configured properties and default values. Please see note in testPartialConfiguration() description.
Single-valued configuration properties can have multiple suggestions, e.i a list of suggested values can be returned. Individual suggested values should be considered to be options. One of them (or none at all) should be selected by the user. Similar approach applies to multi-valued configuration properties. However, in that case more than one of the values can be selected. I.e. the user can choose any combination of the suggested values (or no value at all).
Note: So far there is no support for suggesting several combinations of multi-valued configuration properties. This can be added later, by allowing suggested values to be collections (lists). However, this is not supported yet. For now the suggested values must be primitive (i.e. non-complex, non-collection) data types. We do not want to support it now, as it can be confusing in case that the value itself is complex (e.g a map). Therefore we leave this decision for the future when the design for complex values is more mature.
discoverConfiguration
in interface DiscoverConfigurationApiOp
Copyright © 2022. All rights reserved.