public void checkIn(ISchedulingRule rule,IProgressMonitor monitor) throws CoreException {
  boolean success=false;
  try {
    if (workspace.isTreeLocked()) {
      String msg=Messages.resources_cannotModify;
      throw new ResourceException(IResourceStatus.WORKSPACE_LOCKED,null,msg,null);
    }
    jobManager.beginRule(rule,monitor);
    lock.acquire();
    incrementPreparedOperations();
    success=true;
  }
  finally {
    if (!success)     checkInFailed.set(Boolean.TRUE);
  }
}

public void checkIn ( ISchedulingRule rule , IProgressMonitor monitor ) throws CoreException { boolean success = false ; try { if ( workspace . isTreeLocked ( ) ) { String msg = Messages . resources_cannotModify ; throw new ResourceException ( IResourceStatus . WORKSPACE_LOCKED , null , msg , null ) ; } jobManager . beginRule ( rule , monitor ) ; lock . acquire ( ) ; incrementPreparedOperations ( ) ; success = true ; } finally { if ( ! success ) checkInFailed . set ( Boolean . TRUE ) ; } }
an operation calls this method and it only returns when the operation is free to run .
