docs: @Override
      public synchronized void add(DiscoveryEntry discoveryEntry) {
          logger.debug("adding discovery entry: {}", discoveryEntry);
          if (!(discoveryEntry instanceof GlobalDiscoveryEntryPersisted)) {
              return;
          }
          GlobalDiscoveryEntryPersisted globalDiscoveryEntry = (GlobalDiscoveryEntryPersisted) discoveryEntry;
          if (globalDiscoveryEntry.getDomain() == null || globalDiscoveryEntry.getInterfaceName() == null
                  || globalDiscoveryEntry.getParticipantId() == null || globalDiscoveryEntry.getAddress() == null) {
              String message = "discoveryEntry being registered is not complete: " + discoveryEntry;
              logger.error(message);
              throw new JoynrCommunicationException(message);
          }
  
          GlobalDiscoveryEntryPersisted discoveryEntryFound = entityManager.find(GlobalDiscoveryEntryPersisted.class,
                                                                                 discoveryEntry.getParticipantId());
  
          EntityTransaction transaction = entityManager.getTransaction();
          try {
              transaction.begin();
              if (discoveryEntryFound != null) {
                  entityManager.merge(discoveryEntry);
              } else {
                  entityManager.persist(discoveryEntry);
              }
              transaction.commit();
          } catch (Exception e) {
              if (transaction.isActive()) {
                  transaction.rollback();
              }
              logger.error("unable to add discoveryEntry: " + discoveryEntry, e);
          }
      }