Putting it all together

Here's the complete code for this scenario solution:

Figure 1. Complete listing for a façade "modify" method
// ...
  public void modifySomeEntityDetails(
    final SomeEntityDetails details)
      throws AppException, InformationalException {

    // retrieve the instance of the entity
    final SomeEntity someEntity = someEntityDAO
        .get(details.details.someEntityID);

    // set the fields
    setSomeEntityDetails(someEntity, details.details);

    // do the modify, passing the version number from the client
    someEntity.modify(details.details.versionNo);

  }

  /**
   * Maps client details to the setters on the service-layer API
   *
   * @param someEntity
   *          the service-layer instance of the entity
   * @param someEntityDtls
   *          the client details to map
   *
   */
  private void setSomeEntityDetails(final SomeEntity someEntity,
      final SomeEntityDtls someEntityDtls) {

    // map the details
    someEntity.setName(someEntityDtls.name);

    final DateRange dateRange =
      new DateRange(someEntityDtls.startDate,
        someEntityDtls.endDate);
    someEntity.setDateRange(dateRange);
    // ...more mappings
  }

  // ...