11package networkservlet ;
22
3+ import com .atlassian .bitbucket .auth .AuthenticationContext ;
4+ import com .atlassian .bitbucket .commit .Commit ;
5+ import com .atlassian .bitbucket .commit .CommitRequest ;
6+ import com .atlassian .bitbucket .commit .CommitService ;
7+ import com .atlassian .bitbucket .commit .graph .*;
8+ import com .atlassian .bitbucket .repository .AbstractRefCallback ;
9+ import com .atlassian .bitbucket .repository .Ref ;
10+ import com .atlassian .bitbucket .repository .Repository ;
11+ import com .atlassian .bitbucket .repository .RepositoryService ;
12+ import com .atlassian .bitbucket .scm .ScmService ;
13+ import com .atlassian .bitbucket .user .ApplicationUser ;
14+ import com .atlassian .bitbucket .user .SecurityService ;
15+ import com .atlassian .bitbucket .util .Page ;
16+ import com .atlassian .bitbucket .util .PageUtils ;
17+ import com .atlassian .plugin .webresource .WebResourceManager ;
318import com .atlassian .soy .renderer .SoyException ;
419import com .atlassian .soy .renderer .SoyTemplateRenderer ;
5-
6- import com .atlassian .stash .content .Changeset ;
7- import com .atlassian .stash .repository .*;
8- import com .atlassian .stash .commit .CommitService ;
9- import com .atlassian .stash .user .SecurityService ;
10- import com .atlassian .plugin .webresource .WebResourceManager ;
11- import com .atlassian .stash .exception .NoSuchEntityException ;
12-
13- import com .atlassian .stash .commit .graph .*;
14- import com .atlassian .stash .user .StashAuthenticationContext ;
15- import com .atlassian .stash .user .StashUser ;
16- import com .atlassian .stash .util .*;
17- import com .atlassian .stash .scm .ScmService ;
1820import com .google .common .collect .ImmutableMap ;
1921
20- import org .slf4j .Logger ;
21- import org .slf4j .LoggerFactory ;
22-
2322import javax .annotation .Nonnull ;
2423import javax .servlet .ServletException ;
2524import javax .servlet .http .HttpServlet ;
3231import java .util .Map ;
3332
3433public class NetworkServlet extends HttpServlet {
35- private static final Logger log = LoggerFactory .getLogger (NetworkServlet .class );
3634
37- static final String NETWORK_PAGE = "stash .plugin.network" ;
38- static final String NETWORK_PAGE_FRAGMENT = "stash .plugin.network_fragment" ;
35+ static final String NETWORK_PAGE = "bitbucket .plugin.network" ;
36+ static final String NETWORK_PAGE_FRAGMENT = "bitbucket .plugin.network_fragment" ;
3937
38+ private final AuthenticationContext authenticationContext ;
39+ private final CommitService commitService ;
4040 private final RepositoryService repositoryService ;
41- private final RepositoryMetadataService repositoryMetadataService ;
41+ private final ScmService scmService ;
42+ private final SecurityService securityService ;
4243 private final SoyTemplateRenderer soyTemplateRenderer ;
43- private final CommitService commitService ;
4444 private final WebResourceManager webResourceManager ;
45- private final SecurityService securityService ;
46- private final StashAuthenticationContext stashAuthenticationContext ;
47- private final ScmService scmService ;
4845
49- public NetworkServlet (SoyTemplateRenderer soyTemplateRenderer ,
50- RepositoryService repositoryService ,
51- RepositoryMetadataService repositoryMetadataService ,
46+ public NetworkServlet (AuthenticationContext authenticationContext ,
5247 CommitService commitService ,
53- WebResourceManager webResourceManager ,
48+ RepositoryService repositoryService ,
49+ ScmService scmService ,
5450 SecurityService securityService ,
55- StashAuthenticationContext stashAuthenticationContext ,
56- ScmService scmService ) {
57- this .soyTemplateRenderer = soyTemplateRenderer ;
58- this .repositoryService = repositoryService ;
59- this .repositoryMetadataService = repositoryMetadataService ;
51+ SoyTemplateRenderer soyTemplateRenderer ,
52+ WebResourceManager webResourceManager ) {
53+ this .authenticationContext = authenticationContext ;
6054 this .commitService = commitService ;
61- this .webResourceManager = webResourceManager ;
62- this .securityService = securityService ;
63- this .stashAuthenticationContext = stashAuthenticationContext ;
55+ this .repositoryService = repositoryService ;
6456 this .scmService = scmService ;
57+ this .securityService = securityService ;
58+ this .soyTemplateRenderer = soyTemplateRenderer ;
59+ this .webResourceManager = webResourceManager ;
6560 }
6661
6762 @ Override
@@ -80,34 +75,34 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se
8075 return ;
8176 }
8277 final Repository repository = repositoryService .getBySlug (components [1 ], components [2 ]);
83- final StashUser user = stashAuthenticationContext .getCurrentUser ();
78+ final ApplicationUser user = authenticationContext .getCurrentUser ();
8479 // Ensure we have a valid repository and user
8580 if (repository == null || user == null ) {
8681 resp .sendError (HttpServletResponse .SC_NOT_FOUND );
8782 return ;
8883 }
8984
9085 Map <String , List <Ref >> labels = getLabels (repository );
91- Page <Changeset > changesets = this .getChangesets (repository , labels , limit , offset );
86+ Page <Commit > commits = this .getCommits (repository , labels , limit , offset );
9287
9388 webResourceManager .requireResource ("com.plugin.commitgraph.commitgraph:commitgraph-resources" );
94- render (resp , (contentsOnly ? NETWORK_PAGE_FRAGMENT : NETWORK_PAGE ), ImmutableMap .< String , Object > of (
95- "repository" , repository ,
96- "changesetPage " , changesets ,
97- "labels" , labels ,
98- "limit" , limit ,
99- "page" , (page + 1 )
89+ render (resp , (contentsOnly ? NETWORK_PAGE_FRAGMENT : NETWORK_PAGE ), ImmutableMap .of (
90+ "repository" , repository ,
91+ "commitPage " , commits ,
92+ "labels" , labels ,
93+ "limit" , limit ,
94+ "page" , (page + 1 )
10095 ));
10196 }
10297
10398 protected Map <String , List <Ref >> getLabels (Repository repository ) {
104- final Map <String , List <Ref >> labels = new HashMap <String , List < Ref > >();
99+ final Map <String , List <Ref >> labels = new HashMap <>();
105100 scmService .getCommandFactory (repository ).heads (new AbstractRefCallback () {
106101 @ Override
107102 public boolean onRef (@ Nonnull Ref ref ) {
108- List <Ref > refs = labels .get (ref .getLatestChangeset ());
103+ List <Ref > refs = labels .get (ref .getLatestCommit ());
109104 if (refs == null ) {
110- labels .put (ref .getLatestChangeset (), refs = new ArrayList <Ref >());
105+ labels .put (ref .getLatestCommit (), refs = new ArrayList <>());
111106 }
112107 refs .add (ref );
113108 return true ;
@@ -116,34 +111,28 @@ public boolean onRef(@Nonnull Ref ref) {
116111 return labels ;
117112 }
118113
119- protected Page <Changeset > getChangesets (final Repository repository ,
114+ protected Page <Commit > getCommits (final Repository repository ,
120115 final Map <String , List <Ref >> labels ,
121116 final Integer limit ,
122117 final Integer offset ) {
123- final ArrayList <Changeset > changesets = new ArrayList <Changeset >();
118+ final ArrayList <Commit > commits = new ArrayList <>();
124119 TraversalRequest request = new TraversalRequest .Builder ().repository (repository ).include (labels .keySet ()).build ();
125- final Integer counter = 0 ;
126- long startTime = System .currentTimeMillis ();
127- final StashUser user = stashAuthenticationContext .getCurrentUser ();
120+ final ApplicationUser user = authenticationContext .getCurrentUser ();
128121 commitService .traverse (request , new TraversalCallback () {
129122 private Integer counter ;
130123 @ Override
131- public void onStart (TraversalContext context ) {
124+ public void onStart (@ Nonnull TraversalContext context ) {
132125 this .counter = 0 ;
133126 }
134127 @ Override
135- public TraversalStatus onNode (final CommitGraphNode node ) {
136- Boolean captured = false ;
128+ public TraversalStatus onNode (final @ Nonnull CommitGraphNode node ) {
137129 if (counter >= offset && counter < (offset + limit )) {
138- securityService .impersonating (user , "Reading repository changesets" )
139- .call (new UncheckedOperation <Boolean >() {
140- @ Override
141- public Boolean perform () {
142- changesets .add (commitService .getChangeset (repository , node .getCommit ().getId ()));
143- return true ;
144- }
130+ securityService .impersonating (user , "Reading repository commits" )
131+ .call (() -> {
132+ commits .add (commitService .getCommit (
133+ new CommitRequest .Builder (repository , node .getCommit ().getId ()).build ()));
134+ return true ;
145135 });
146- captured = true ;
147136 } else if (counter >= (offset + limit )) {
148137 return TraversalStatus .FINISH ;
149138 }
@@ -156,9 +145,9 @@ public Boolean perform() {
156145 }
157146 }
158147 });
159- // System.out.println("Graph traversal time: " + String.valueOf(System.currentTimeMillis() - startTime) + "ms");
148+
160149 // Convert the arraylist to a page
161- return PageUtils .createPage (changesets , PageUtils .newRequest (0 , changesets .size ()));
150+ return PageUtils .createPage (commits , PageUtils .newRequest (0 , commits .size ()));
162151 }
163152
164153 protected void render (HttpServletResponse resp , String templateName , Map <String , Object > data ) throws IOException , ServletException {
0 commit comments