/**
   * Sets the parameter indicated by the urn, with the given value.
   *
   * <p>The parameter is to be found in one of the registered parameterizable. Otherwise, a
   * ParameterizationException will be thrown.
   *
   * @see eu.artemis.demanes.parameterization.Parameterizable#setParameter(eu.artemis
   *     .demanes.datatypes.ANES_URN, java.lang.Object)
   */
  @Override
  public void setParameter(ANES_URN urn, Object value) throws ParameterizationException {
    UUID uid = UUID.randomUUID();
    logger.trace(
        new LogEntry(
            this.getClass().getName(),
            LogConstants.LOG_LEVEL_TRACE,
            "Param",
            "Setting parameter " + urn + " from broker (" + uid + ")"));

    Parameterizable parameterizable = findURNOwner(urn);
    if (parameterizable != null) {
      parameterizable.setParameter(urn, value);
    } else {
      logger.error(
          new LogEntry(
              this.getClass().getName(),
              LogConstants.LOG_LEVEL_ERROR,
              "Param",
              "Setting unknown parameter " + urn));
      throw new ParameterizationURNException();
    }

    logger.trace(
        new LogEntry(
            this.getClass().getName(),
            LogConstants.LOG_LEVEL_TRACE,
            "Param",
            "Parameter set (" + uid + ")"));
  }