docs: private void executeLock( ITransaction transaction,
                                HttpServletRequest req,
                                HttpServletResponse resp ) throws LockFailedException, IOException, ServletException {
  
          // Mac OS lock request workaround
          if (macLockRequest) {
              logger.trace("DoLock.execute() : do workaround for user agent '" + userAgent + "'");
  
              doMacLockRequestWorkaround(transaction, req, resp);
          } else {
              // Getting LockInformation from request
              if (getLockInformation(req, resp)) {
                  int depth = getDepth(req);
                  int lockDuration = getTimeout(req);
  
                  boolean lockSuccess = false;
                  if (exclusive) {
                      lockSuccess = resourceLocks.exclusiveLock(transaction, path, lockOwner, depth, lockDuration);
                  } else {
                      lockSuccess = resourceLocks.sharedLock(transaction, path, lockOwner, depth, lockDuration);
                  }
  
                  if (lockSuccess) {
                      // Locks successfully placed - return information about
                      LockedObject lo = resourceLocks.getLockedObjectByPath(transaction, path);
                      if (lo != null) {
                          generateXMLReport(resp, lo);
                      } else {
                          resp.sendError(WebdavStatus.SC_INTERNAL_SERVER_ERROR);
                      }
                  } else {
                      sendLockFailError(req, resp);
  
                      throw new LockFailedException();
                  }
              } else {
                  // information for LOCK could not be read successfully
                  resp.setContentType("text/xml; charset=UTF-8");
                  resp.sendError(WebdavStatus.SC_BAD_REQUEST);
              }
          }
      }