Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
titleAutomationCompositionElementListener
public record CompositionDto(UUID compositionId,
     Map<ToscaConceptIdentifier, Map<String,                       List<AutomationCompositionElementDefinition> elementDefinitionListObject>> inPropertiesMap,
                                Map<ToscaConceptIdentifier, Map<String, Object>> outPropertiesMap) {
}

public record CompositionElementDto(UUID compositionId, ToscaConceptIdentifier elementDefinitionId,
                                    Map<StringMap<String, Object> inProperties, Map<String, Object> outProperties) {
}

public record InstanceElementDto(UUID instanceId, UUID elementId, DeployOrderToscaServiceTemplate orderedStatetoscaServiceTemplateFragment,
     Map<String, Object> inProperties, Map<String, Object> outProperties) {
}


/**
 * This                    Map<String, Object> inProperties, Map<String, Object> outProperties) {
}


/**
 * This interface interface is implemented by participant implementations to receive updates on automation composition elements.
 * Valid since New Delhi release.
 */
public interface AutomationCompositionElementListener {
    void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;

    void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;

    void lock(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;

    void unlock(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;

    void delete(CompositionElementDto compositionElement, InstanceElementDto instanceElement) throws PfModelException;

    void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
                InstanceElementDto instanceElementUpdated) throws PfModelException;

    void prime(CompositionDto composition) throws PfModelException;

    void deprime(CompositionDto composition) throws PfModelException;

    void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException;

    void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
                               DeployState deployState, LockState lockState) throws PfModelException;

    void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
                 InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException;

    void migratePrecheck(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
                 InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException;
}

...

Code Block
languagejava
titleAcElementListenerMontreal
/**
 * Wrapper of AutomationCompositionElementListener.
 * Valid since Montreal release.
 */
public abstract class AcElementListenerMontreal implements AutomationCompositionElementListener {

    privateprotected final ParticipantIntermediaryApi intermediaryApi;

    protected  AcElementListenerMontreal(ParticipantIntermediaryApi intermediaryApi) {
        this.intermediaryApi = intermediaryApi;
    }

    @Override
    public void deploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
        throws PfModelException {
        var element = new  AcElementDeploy();
        element.setId(instanceElement.elementId());
        element.setDefinition(compositionElement.elementDefinitionId());
        element.setOrderedStatesetToscaServiceTemplateFragment(instanceElement.orderedStatetoscaServiceTemplateFragment());
        element.setProperties(instanceElement.inProperties());
        Map<String, Object> properties = new HashMap<>(instanceElement.inProperties());
        properties.putAll(compositionElement.inProperties());
        deploy(instanceElement.instanceId(), element, properties);
    }

    public abstract void deploy(UUID instanceId, AcElementDeploy element, Map<String, Object> properties)
        throws PfModelException;

    @Override
    public void undeploy(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
        throws PfModelException {
        undeploy(instanceElement.instanceId(), instanceElement.elementId());
    }

    public abstract void undeploy(UUID instanceId, UUID elementId) throws PfModelException;

    @Override
    public void lock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
        throws PfModelException {
        lock(instanceElement.instanceId(), instanceElement.elementId());
    }

    public abstract void lock(UUID instanceId, UUID elementId) throws PfModelException;

    @Override
    public void unlock(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
        throws PfModelException {
        unlock(instanceElement.instanceId(), instanceElement.elementId());
    }

    public abstract void unlock(UUID instanceId, UUID elementId) throws PfModelException;

    @Override
    public void delete(CompositionElementDto compositionElement, InstanceElementDto instanceElement)
        throws PfModelException {
        delete(instanceElement.instanceId(), instanceElement.elementId());
    }

    public abstract void delete(UUID instanceId, UUID elementId) throws PfModelException;

    @Override
    public void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement, void update(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
                       InstanceElementDto instanceElementUpdated) throws PfModelException {
        var element = new  AcElementDeploy();
        element.setId(instanceElementUpdated.elementId());
        element.setDefinition(compositionElement.elementDefinitionId());
        element.setProperties(instanceElementUpdated.inProperties());
        update(instanceElementUpdated.instanceId(), element, element.getProperties());
    }

    public abstract void update(UUID instanceId, AcElementDeploy element, Map<String, Object> properties)
        throws PfModelException;

    private List<AutomationCompositionElementDefinition> createAcElementDefinitionList(CompositionDto composition) {
        List<AutomationCompositionElementDefinition> elementDefinitionList = new ArrayList<>();
        for (var entry : composition.inPropertiesMap().entrySet()) {
            elementDefinitionList.add(createAcElementDefinition(entry.getKey(), entry.getValue(),
                composition.outPropertiesMap().get(entry.getKey())));
        }
        return elementDefinitionList;
    }

   InstanceElementDto instanceElementUpdated)private throwsAutomationCompositionElementDefinition PfModelExceptioncreateAcElementDefinition(
 {
       ToscaConceptIdentifier vartoscaConceptIdentifier, elementMap<String, =Object> newproperty,
  AcElementDeploy();
      Map<String,  element.setId(instanceElementUpdated.elementId());
Object> outProperties) {
        var  element.setDefinition(compositionElement.elementDefinitionId()acElementDefinition = new AutomationCompositionElementDefinition();
        elementacElementDefinition.setOrderedState(instanceElement.orderedState())setAcElementDefinitionId(toscaConceptIdentifier);
        var toscaNodeTemplate  element.setProperties(instanceElementUpdated.inProperties()= new ToscaNodeTemplate();
        update(instanceElementUpdated.instanceId(), element, elementtoscaNodeTemplate.getPropertiessetProperties()property);
    }

    public abstract void update(UUID instanceId, AcElementDeploy element, Map<String, Object> properties)acElementDefinition.setAutomationCompositionElementToscaNodeTemplate(toscaNodeTemplate);
        acElementDefinition.setOutProperties(outProperties);
        throwsreturn PfModelExceptionacElementDefinition;
    }

    @Override
    public void prime(CompositionDto composition) throws PfModelException {
        prime(composition.compositionId(), createAcElementDefinitionList(composition.elementDefinitionList());
    }

    public abstract void prime(UUID compositionId, List<AutomationCompositionElementDefinition> elementDefinitionList)
        throws PfModelException;

    @Override
    public void deprime(CompositionDto composition) throws PfModelException {
        deprime(composition.compositionId());
    }

    public abstract void deprime(UUID compositionId) throws PfModelException;

    @Override
    public void handleRestartComposition(CompositionDto composition, AcTypeState state) throws PfModelException {
        handleRestartComposition(composition.compositionId(), composition.elementDefinitionListcreateAcElementDefinitionList(composition), state);
    }

    public abstract void handleRestartComposition(UUID compositionId,
                                                  List<AutomationCompositionElementDefinition> elementDefinitionList,
                                                  AcTypeState state) throws PfModelException;

    @Override
    public void handleRestartInstance(CompositionElementDto compositionElement, InstanceElementDto instanceElement,
        DeployState deployState, LockState lockState) throws PfModelException {
        var element = new  AcElementDeploy();
        element.setId(instanceElement.elementId());
        element.setDefinition(compositionElement.elementDefinitionId());
        element.setOrderedState(instanceElement.orderedState());
        element.setProperties(instanceElement.inProperties());
        Map<String, Object> properties = new HashMap<>(instanceElement.inProperties());
        properties.putAll(compositionElement.inProperties());
        handleRestartInstance(instanceElement.instanceId(), element, properties, deployState, lockState);
    }

    public abstract void handleRestartInstance(UUID instanceId, AcElementDeploy element,
        Map<String, Object> properties, DeployState deployState, LockState lockState) throws PfModelException;

    @Override
    public void migrate(CompositionElementDto compositionElement, CompositionElementDto compositionElementTarget,
        InstanceElementDto instanceElement, InstanceElementDto instanceElementMigrate) throws PfModelException {
        var element = new  AcElementDeploy();
        element.setId(instanceElement.elementId());
        element.setDefinition(compositionElement.elementDefinitionId());
        element.setOrderedState(instanceElement.orderedState());
        element.setProperties(instanceElement.inProperties());
        migrate(instanceElementMigrate.instanceId(), element, compositionElementTarget.compositionId(),
            element.getProperties());
    }

    public abstract void migrate(UUID instanceId, AcElementDeploy element, UUID compositionTargetId,
                                 Map<String, Object> properties) throws PfModelException; 

    @Override
    public void migratePrecheck(CompositionElementDto compositionElement,
        CompositionElementDto compositionElementTarget, InstanceElementDto instanceElement,
        InstanceElementDto instanceElementMigrate) throws PfModelException {

        intermediaryApi.updateAutomationCompositionElementState(instanceElementMigrate.instanceId(),
            instanceElementMigrate.elementId(), DeployState.DEPLOYED, null, StateChangeResult.NO_ERROR,
            "Migrate precheck not supported");
    }
}

...

Code Block
languagejava
titleAutomationCompositionElementHandler
@Component
public class AutomationCompositionElementHandler extends AcElementListenerMontreal {

    private final ParticipantIntermediaryApi intermediaryApi;

    protected public AutomationCompositionElementHandler(ParticipantIntermediaryApi intermediaryApi) {
        super(intermediaryApi);
        this.intermediaryApi = intermediaryApi;
    }

    @Override
    public void deploy(UUID automationCompositionId, AcElementDeploy element, Map<String, Object> properties)
            throws PfModelException {
----------

...