6969import jakarta .servlet .http .HttpServletRequest ;
7070import org .apache .commons .lang3 .SystemUtils ;
7171import org .apache .lucene .queryparser .classic .QueryParserBase ;
72+ import org .jetbrains .annotations .Nullable ;
73+ import org .jetbrains .annotations .VisibleForTesting ;
7274import org .opengrok .indexer .configuration .RuntimeEnvironment ;
7375import org .opengrok .indexer .history .Annotation ;
7476import org .opengrok .indexer .history .HistoryGuru ;
@@ -715,10 +717,11 @@ public static void readableLine(int num, Writer out, Annotation annotation, Stri
715717 }
716718 }
717719
718- private static void writeAnnotation (int num , Writer out , Annotation annotation , String userPageLink ,
719- String userPageSuffix , String project ) throws IOException {
720- String revision = annotation .getRevision (num );
721- boolean enabled = annotation .isEnabled (num );
720+ @ VisibleForTesting
721+ static void writeAnnotation (int lineNum , Writer out , Annotation annotation , @ Nullable String userPageLink ,
722+ @ Nullable String userPageSuffix , String project ) throws IOException {
723+ String revision = annotation .getRevision (lineNum );
724+ boolean enabled = annotation .isEnabled (lineNum );
722725 out .write ("<span class=\" blame\" >" );
723726 if (enabled ) {
724727 out .write (ANCHOR_CLASS_START );
@@ -750,38 +753,18 @@ private static void writeAnnotation(int num, Writer out, Annotation annotation,
750753 buf .append ("<span class=\" most_recent_revision\" >" );
751754 buf .append ('*' );
752755 }
753- htmlize (annotation .getRevisionForDisplay (num ), buf );
756+ htmlize (annotation .getRevisionForDisplay (lineNum ), buf );
754757 if (isMostRecentRevision ) {
755758 buf .append (SPAN_END ); // recent revision span
756759 }
757760 out .write (buf .toString ());
758761 buf .setLength (0 );
759762 if (enabled ) {
760- RuntimeEnvironment env = RuntimeEnvironment .getInstance ();
761-
762763 out .write (ANCHOR_END );
763764
764- // Write link to search the revision in current project.
765- out .write (ANCHOR_CLASS_START );
766- out .write ("search\" href=\" " + env .getUrlPrefix ());
767- out .write (QueryParameters .DEFS_SEARCH_PARAM_EQ );
768- out .write (AMP );
769- out .write (QueryParameters .REFS_SEARCH_PARAM_EQ );
770- out .write (AMP );
771- out .write (QueryParameters .PATH_SEARCH_PARAM_EQ );
772- out .write (project );
773- out .write (AMP );
774- out .write (QueryParameters .HIST_SEARCH_PARAM_EQ );
775- out .write (QUOTE );
776- out .write (uriEncode (revision ));
777- out .write (""&" );
778- out .write (QueryParameters .TYPE_SEARCH_PARAM_EQ );
779- out .write ("\" title=\" Search history for this revision" );
780- out .write (CLOSE_QUOTED_TAG );
781- out .write ("S" );
782- out .write (ANCHOR_END );
765+ writeAnnotationSearchLink (out , project , revision );
783766 }
784- String a = annotation .getAuthor (num );
767+ String a = annotation .getAuthor (lineNum );
785768 if (userPageLink == null ) {
786769 out .write (HtmlConsts .SPAN_A );
787770 htmlize (a , buf );
@@ -805,6 +788,30 @@ private static void writeAnnotation(int num, Writer out, Annotation annotation,
805788 out .write (SPAN_END );
806789 }
807790
791+ private static void writeAnnotationSearchLink (Writer out , String projectName , String revision ) throws IOException {
792+ RuntimeEnvironment env = RuntimeEnvironment .getInstance ();
793+
794+ // Write link to search the revision in current project.
795+ out .write (ANCHOR_CLASS_START );
796+ out .write ("search\" href=\" " + env .getUrlPrefix ());
797+ out .write (QueryParameters .DEFS_SEARCH_PARAM_EQ );
798+ out .write (AMP );
799+ out .write (QueryParameters .REFS_SEARCH_PARAM_EQ );
800+ out .write (AMP );
801+ out .write (QueryParameters .PATH_SEARCH_PARAM_EQ );
802+ out .write (projectName );
803+ out .write (AMP );
804+ out .write (QueryParameters .HIST_SEARCH_PARAM_EQ );
805+ out .write (QUOTE );
806+ out .write (uriEncode (revision ));
807+ out .write (""&" );
808+ out .write (QueryParameters .TYPE_SEARCH_PARAM_EQ );
809+ out .write ("\" title=\" Search history for this revision" );
810+ out .write (CLOSE_QUOTED_TAG );
811+ out .write ("S" );
812+ out .write (ANCHOR_END );
813+ }
814+
808815 /**
809816 * Generate a string from the given path and date in a way that allows
810817 * stable lexicographic sorting (i.e. gives always the same results) as a
0 commit comments