code: package com.beijunyi.parallelgit.utils.io;
  
  import javax.annotation.Nonnull;
  import javax.annotation.Nullable;
  
  import com.beijunyi.parallelgit.utils.TreeUtils;
  import org.eclipse.jgit.dircache.DirCacheEditor;
  import org.eclipse.jgit.dircache.DirCacheEntry;
  import org.eclipse.jgit.lib.FileMode;
  import org.eclipse.jgit.lib.ObjectId;
  
  public class CacheEntryUpdate extends DirCacheEditor.PathEdit {
  
    private ObjectId newBlob;
    private FileMode newFileMode;
  
    public CacheEntryUpdate(String entryPath) {
      super(TreeUtils.normalizeNodePath(entryPath));
    }
  
    @Nonnull
    public CacheEntryUpdate setNewBlob(@Nullable ObjectId blob) {
      this.newBlob = blob;
      return this;
    }
  
    @Nonnull
    public CacheEntryUpdate setNewFileMode(@Nullable FileMode fileMode) {
      this.newFileMode = fileMode;
      return this;
    }
  
    @Override
    public void apply(DirCacheEntry ent) {
      if(newBlob != null)
        ent.setObjectId(newBlob);
      if(newFileMode != null)
        ent.setFileMode(newFileMode);
    }
  
  }
  