code: @Process(actionType = ModifySaslSecurity.class)
      public void modifySaslSecurity(final ModifySaslSecurity action, final Dispatcher.Channel channel) {
  
          final List<Property> connectors = getModelsFor(action.getConnectorAddress());
          Outcome<FunctionContext> outcome = new Outcome<FunctionContext>() {
              @Override
              public void onFailure(FunctionContext context) {
                  channel.nack(context.getError());
              }
  
              @Override
              public void onSuccess(FunctionContext context) {
                  lastModifiedInstance = action.getConnectorName();
                  read(action.getConnectorAddress().getResourceType(), connectors, channel);
              }
          };
  
          // It's not guaranteed that the security singleton already exists. If the parent connector
          // was created by the console, it does exists. However if the parent connector was created using
          // the CLI we need to create the security singleton before we try to modify it.
          AddressTemplate securityAddress = action.getConnectorAddress().append("security=" + SASL_SINGLETON);
          new Async<FunctionContext>(new Progress.Nop()).waterfall(new FunctionContext(), outcome,
                  new VerifySaslSingleton(dispatcher, statementContext, action.getConnectorName(), securityAddress),
                  new CreateSaslSingleton(dispatcher, statementContext, action.getConnectorName(), securityAddress) {
                      @Override
                      public void execute(Control<FunctionContext> control) {
                          int status = control.getContext().pop();
                          if (status == 200) {
                              control.proceed();
                          } else {
                              super.execute(control);
                          }
                      }
                  },
                  new ModifySaslSingleton(dispatcher, statementContext, action.getConnectorName(), securityAddress,
                          action.getChangedValues()));
      }
docs: ------------------------------------------------------ connector singleton resources