code: @Override
    public void onPut(byte[] key, TypePut type)
    {
      //_watchKey.init(key);
      WatchKey watchKey = new WatchKey(key);
     
      switch (type) {
      case LOCAL:
        ArrayList<WatchEntry> listLocal = _entryMapLocal.get(watchKey);
        onPut(listLocal, key);
        break;
        
      case REMOTE:
      {
        int hash = _table.getPodHash(key);
        TablePodNodeAmp node = _table.getTablePod().getNode(hash);
        
        if (node.isSelfCopy()) {
          // copies are responsible for their own local watch events
          onPut(key, TypePut.LOCAL);
        }
        
        if (node.isSelfOwner()) {
          // only the owner sends remote watch events
          /*
          System.out.println("NSO: " +  BartenderSystem.getCurrentSelfServer().getDisplayName()
                             + " " + node.isSelfOwner() + " " + node + " " + Hex.toHex(key));
                             */
          ArrayList<WatchEntry> listRemote = _entryMapRemote.get(watchKey);
          onPut(listRemote, key);
        }
        break;
      }
        
      default:
        throw new IllegalArgumentException(String.valueOf(type));
      }
    }
docs: Notification on a table put.
  
  @param key the key of the updated row
  @param type the notification type (local/remote)