Skip to content

Commit

Permalink
fix code after review (javadoc in ModelService and cleanup code in Mo…
Browse files Browse the repository at this point in the history
…delController)
  • Loading branch information
skublik committed Jun 28, 2022
1 parent 3738228 commit b82db02
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -420,51 +420,43 @@ <T extends ObjectType> Integer countObjects(Class<T> type, ObjectQuery query, Co
* Test the resource connection and basic resource connector functionality.
* </p>
* <p>
* This operation will NOT throw exception in case the resource connection
* fails. It such case it will indicate the failure in the return message,
* but the operation itself succeeds. The operations fails only if the
* provided arguments are wrong, in case of system error, system
* misconfiguration, etc.
* </p>
* <p>
* This returns OperationResult instead of taking it as in/out argument.
* This is different from the other methods. The testResource method is not
* using OperationResult to track its own execution but rather to track the
* execution of resource tests (that in fact happen in provisioning).
* Work same as {@link com.evolveum.midpoint.provisioning.api.ProvisioningService#testResource(PrismObject, Task, OperationResult)}.
* </p>
*
* @param resourceOid OID of resource to test
* @return results of executed tests
* @throws ObjectNotFoundException specified object does not exist
* @throws IllegalArgumentException wrong OID format
*/
OperationResult testResource(String resourceOid, Task task, OperationResult parentResult) throws ObjectNotFoundException, SchemaException, ConfigurationException;
OperationResult testResource(String resourceOid, Task task, OperationResult parentResult)
throws ObjectNotFoundException, SchemaException, ConfigurationException;


/**
* <p>
* Test partial resource connector configuration. Testing only basic connection.
* </p>
* <p>
* This operation will NOT throw exception in case the resource connection
* fails. It such case it will indicate the failure in the return message,
* but the operation itself succeeds. The operations fails only if the
* provided arguments are wrong, in case of system error, system
* misconfiguration, etc.
* </p>
* <p>
* This returns OperationResult instead of taking it as in/out argument.
* This is different from the other methods. The testResourcePartialConfiguration method is not
* using OperationResult to track its own execution but rather to track the
* execution of resource partial configuration test.
* Method work with OperationResult same as method
* {@link com.evolveum.midpoint.provisioning.api.ProvisioningService#testResource(PrismObject, Task, OperationResult)}.
* </p>
*
* @param resource resource to test
* @return results of executed partial test
* @throws ObjectNotFoundException specified object does not exist
*/
OperationResult testResourcePartialConfiguration(PrismObject<ResourceType> resource, Task task, OperationResult parentResult) throws ObjectNotFoundException, SchemaException, ConfigurationException;
OperationResult testResourcePartialConfiguration(PrismObject<ResourceType> resource, Task task, OperationResult parentResult)
throws ObjectNotFoundException, SchemaException, ConfigurationException;

/**
* <p>
* Method work same as
* {@link com.evolveum.midpoint.provisioning.api.ProvisioningService#discoverConfiguration(PrismObject, OperationResult)}.
* </p>
*
* @param resource resource with minimal connector configuration
* @return Suggested configuration properties wrapped in DiscoveredConfiguration.
*/
DiscoveredConfiguration discoverResourceConnectorConfiguration(PrismObject<ResourceType> resource, OperationResult result);


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1452,17 +1452,15 @@ public OperationResult testResourcePartialConfiguration(PrismObject<ResourceType
LOGGER.debug("Finished testing partial configuration of resource: {}, result: {} ", resource, testResult.getStatus());
LOGGER.trace("Test result:\n{}", lazy(() -> testResult.dump(false)));
return testResult;
} catch (Throwable ex) {
LOGGER.error("Error testing partial configuration of resource: {}: {}: {}",
resource, ex.getClass().getSimpleName(), ex.getMessage(), ex);
throw ex;
} finally {
exitModelMethodNoRepoCache();
}
}

@Override
public DiscoveredConfiguration discoverResourceConnectorConfiguration(PrismObject<ResourceType> resource, OperationResult result) {
public DiscoveredConfiguration discoverResourceConnectorConfiguration(
PrismObject<ResourceType> resource, OperationResult result) {

Validate.notNull(resource, "Resource must not be null.");
LOGGER.trace("Discover connector configuration for resource: {}", resource);

Expand All @@ -1472,10 +1470,6 @@ public DiscoveredConfiguration discoverResourceConnectorConfiguration(PrismObjec
LOGGER.debug("Finished discover connector configuration for resource: {}, result: {} ", resource, result.getStatus());
LOGGER.trace("Discover connector configuration result:\n{}", lazy(() -> result.dump(false)));
return discoverConfiguration;
} catch (Throwable ex) {
LOGGER.error("Error discover connector configuration for resource: {}: {}: {}",
resource, ex.getClass().getSimpleName(), ex.getMessage(), ex);
throw ex;
} finally {
exitModelMethodNoRepoCache();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,14 +157,13 @@ ConnectorInstance getConfiguredAndInitializedConnectorInstance(
boolean forceFresh,
@NotNull OperationResult result)
throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException {
return getConfiguredAndInitializedConnectorInstance(connectorSpec, forceFresh, true, true, result);
return getConfiguredAndInitializedConnectorInstance(connectorSpec, forceFresh, true, result);
}

private ConnectorInstance getConfiguredAndInitializedConnectorInstance(
@NotNull ConnectorSpec connectorSpec,
boolean forceFresh,
boolean isCaching,
boolean needInitialize,
boolean productionUse,
@NotNull OperationResult result)
throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException {

Expand All @@ -173,23 +172,23 @@ private ConnectorInstance getConfiguredAndInitializedConnectorInstance(

if (forceFresh && connectorCacheEntry.isConfigured()) {
LOGGER.debug("FORCE in connector cache: reconfiguring cached connector {}", connectorSpec);
configureConnector(connectorInstance, connectorSpec, isCaching, needInitialize, result);
configureConnector(connectorInstance, connectorSpec, productionUse, result);
// Connector is cached already. No need to put it into cache.
return connectorInstance;
}

if (connectorCacheEntry.isConfigured() && !isFresh(connectorCacheEntry, connectorSpec)) {
LOGGER.trace("Reconfiguring connector {} because the configuration is not fresh", connectorSpec);
configureConnector(connectorInstance, connectorSpec, isCaching, needInitialize, result);
configureConnector(connectorInstance, connectorSpec, productionUse, result);
// Connector is cached already. No need to put it into cache. We just need to update the configuration.
connectorCacheEntry.setConfiguration(connectorSpec.getConnectorConfiguration());
return connectorInstance;
}

if (!connectorCacheEntry.isConfigured()) {
LOGGER.trace("Configuring new connector {}", connectorSpec);
configureConnector(connectorInstance, connectorSpec, isCaching, needInitialize, result);
if (isCaching) {
configureConnector(connectorInstance, connectorSpec, productionUse, result);
if (productionUse) {
cacheConfiguredConnector(connectorCacheEntry, connectorSpec);
}
}
Expand All @@ -202,7 +201,7 @@ ConnectorInstance getConfiguredConnectorInstance(
@NotNull OperationResult result)
throws ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException {

return getConfiguredAndInitializedConnectorInstance(connectorSpec, false, false, false, result);
return getConfiguredAndInitializedConnectorInstance(connectorSpec, false, false, result);
}

/**
Expand Down Expand Up @@ -302,8 +301,10 @@ private ConnectorInstance createConnectorInstance(ConnectorSpec connectorSpec, O

}

private void configureConnector(ConnectorInstance connector, ConnectorSpec connectorSpec, boolean isCaching, boolean needInitialize, OperationResult result)
private void configureConnector(
ConnectorInstance connector, ConnectorSpec connectorSpec, boolean productionUse, OperationResult result)
throws SchemaException, CommunicationException, ConfigurationException {

PrismContainerValue<ConnectorConfigurationType> connectorConfigurationVal = connectorSpec.getConnectorConfiguration() != null ?
connectorSpec.getConnectorConfiguration().getValue() : null;
if (connectorConfigurationVal == null) {
Expand All @@ -325,10 +326,10 @@ private void configureConnector(ConnectorInstance connector, ConnectorSpec conne
connectorConfigurationVal,
new ConnectorConfigurationOptions()
.generateObjectClasses(ResourceTypeUtil.getSchemaGenerationConstraints(resource))
.doNotCache(!isCaching),
.doNotCache(!productionUse),
result);

if (needInitialize) {
if (productionUse) {
ResourceSchema resourceSchema = ResourceSchemaFactory.getRawSchema(resource);
CapabilityCollectionType connectorCapabilities = connectorSpec.getNativeCapabilities();

Expand Down

0 comments on commit b82db02

Please sign in to comment.