@Override
 public void undo() {
   EndpointDescriptionsManager outputDescriptionsManager =
       getProperties().getOutputDescriptionsManager();
   outputDescriptionsManager.removeDynamicEndpointDescription(name);
   super.undo();
 }
 @Override
 public void execute() {
   EndpointDescriptionsManager outputDescriptionsManager =
       getProperties().getOutputDescriptionsManager();
   outputDescriptionsManager.addDynamicEndpointDescription(
       dynEndpointId, name, type, metaDataOutput);
   super.execute();
 }
 private void switchDynamicInputsId(String toDynamicInputId) {
   inputPane.updateDynamicEndpointIdToManage(toDynamicInputId);
   EndpointDescriptionsManager inputDescriptionsManager =
       getConfiguration().getInputDescriptionsManager();
   for (EndpointDescription ep : inputDescriptionsManager.getEndpointDescriptions()) {
     inputDescriptionsManager.removeDynamicEndpointDescriptionQuietely(ep.getName());
     ep.getMetaData().remove(ComponentConstants.INPUT_METADATA_KEY_INPUT_EXECUTION_CONSTRAINT);
     inputDescriptionsManager.addDynamicEndpointDescription(
         toDynamicInputId, ep.getName(), ep.getDataType(), ep.getMetaData(), ep.getIdentifier());
     if (!ep.getConnectedDataTypes().isEmpty()) {
       // inputs can only be connected to one ouput
       inputDescriptionsManager.addConnectedDataType(
           ep.getName(), ep.getConnectedDataTypes().get(0));
     }
   }
 }