Class FilterSpec


  • public final class FilterSpec
    extends java.lang.Object
    Represents either a filter specified in a protocol "filter" line, or a placeholder to indicate no filtering.
    Since:
    5.4
    • Field Detail

      • blobLimit

        private final long blobLimit
      • treeDepthLimit

        private final long treeDepthLimit
      • NO_FILTER

        public static final FilterSpec NO_FILTER
        A placeholder that indicates no filtering.
    • Constructor Detail

    • Method Detail

      • fromFilterLine

        public static FilterSpec fromFilterLine​(java.lang.String filterLine)
                                         throws PackProtocolException
        Process the content of "filter" line from the protocol. It has a shape like:
        • "blob:none"
        • "blob:limit=N", with N >= 0
        • "tree:DEPTH", with DEPTH >= 0
        Parameters:
        filterLine - the content of the "filter" line in the protocol
        Returns:
        a FilterSpec representing the given filter
        Throws:
        PackProtocolException - invalid filter because due to unrecognized format or negative/non-numeric filter.
      • withObjectTypes

        static FilterSpec withObjectTypes​(FilterSpec.ObjectTypes types)
        Parameters:
        types - set of permitted object types, for use in "blob:none" and "object:none" filters
        Returns:
        a filter spec which restricts to objects of the specified types
      • withBlobLimit

        static FilterSpec withBlobLimit​(long blobLimit)
        Parameters:
        blobLimit - the blob limit in a "blob:[limit]" filter line
        Returns:
        a filter spec which filters blobs above a certain size
      • withTreeDepthLimit

        static FilterSpec withTreeDepthLimit​(long treeDepthLimit)
        Parameters:
        treeDepthLimit - the tree depth limit in a "tree:[depth]" filter line
        Returns:
        a filter spec which filters blobs and trees beyond a certain tree depth
      • allowsType

        public boolean allowsType​(int type)
        Parameters:
        type - a Git object type, such as Constants.OBJ_BLOB
        Returns:
        whether this filter allows objects of the specified type
        Since:
        5.9
      • getBlobLimit

        public long getBlobLimit()
        Returns:
        -1 if this filter does not filter blobs based on size, or a non-negative integer representing the max size of blobs to allow
      • getTreeDepthLimit

        public long getTreeDepthLimit()
        Returns:
        -1 if this filter does not filter blobs and trees based on depth, or a non-negative integer representing the max tree depth of blobs and trees to fetch
      • isNoOp

        public boolean isNoOp()
        Returns:
        true if this filter doesn't filter out anything
      • filterLine

        @Nullable
        public java.lang.String filterLine()
        Returns:
        the filter line which describes this spec, e.g. "filter blob:limit=42"