Skip to content

Commit 34de285

Browse files
committed
Cache milestones per state
1 parent 980377e commit 34de285

4 files changed

Lines changed: 22 additions & 15 deletions

File tree

src/main/java/com/junichi11/netbeans/modules/github/issues/GitHubCache.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public final class GitHubCache {
8282
// @GuardedBy("this")
8383
private List<User> collaborators;
8484
// @GuardedBy("this")
85-
private List<Milestone> milestones;
85+
private final Map<String, List<Milestone>> milestoneMap = Collections.synchronizedMap(new HashMap<String, List<Milestone>>());
8686
// @GuardedBy("this")
8787
private List<Label> labels;
8888
// @GuardedBy("this")
@@ -152,23 +152,26 @@ public synchronized List<User> getCollaborators() {
152152
/**
153153
* Get milestones. If there is a cache, it is returned.
154154
*
155+
* @param state open, closed or all
155156
* @return milestones
156157
*/
157-
public List<Milestone> getMilestones() {
158-
return getMilestones(false);
158+
public List<Milestone> getMilestones(String state) {
159+
return getMilestones(state, false);
159160
}
160161

161162
/**
162163
* Get milestones.
163164
*
165+
* @param state open, closed or all
164166
* @param force {@code true} if don't use cache data, otherwise
165167
* {@code false}
166168
* @return milestones
167169
*/
168-
public synchronized List<Milestone> getMilestones(boolean force) {
169-
if (milestones == null || force) {
170-
if (milestones != null) {
171-
milestones.clear();
170+
public synchronized List<Milestone> getMilestones(String state, boolean force) {
171+
List<Milestone> milestone = milestoneMap.get(state);
172+
if (milestone == null || force) {
173+
if (milestone != null) {
174+
milestone.clear();
172175
}
173176
Repository gHRepository = repository.getRepository();
174177
GitHubClient client = repository.createGitHubClient();
@@ -177,12 +180,13 @@ public synchronized List<Milestone> getMilestones(boolean force) {
177180
}
178181
MilestoneService milestoneService = new MilestoneService(client);
179182
try {
180-
milestones = milestoneService.getMilestones(gHRepository, "open"); // NOI18N
183+
milestone = milestoneService.getMilestones(gHRepository, state);
184+
milestoneMap.put(state, milestone);
181185
} catch (IOException ex) {
182186
LOGGER.log(Level.WARNING, "{0} : Can''t get milestones. {1}", new Object[]{repository.getFullName(), ex.getMessage()}); // NOI18N
183187
}
184188
}
185-
return milestones;
189+
return milestone;
186190
}
187191

188192
/**

src/main/java/com/junichi11/netbeans/modules/github/issues/issue/ui/GitHubIssuePanel.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
import org.eclipse.egit.github.core.PullRequestMarker;
9999
import org.eclipse.egit.github.core.RepositoryCommit;
100100
import org.eclipse.egit.github.core.User;
101+
import org.eclipse.egit.github.core.service.IssueService;
101102
import org.netbeans.api.annotations.common.CheckForNull;
102103
import org.openide.DialogDescriptor;
103104
import org.openide.DialogDisplayer;
@@ -454,7 +455,7 @@ public void update() {
454455
}
455456

456457
private void updateMilestones(GitHubCache cache, boolean force) {
457-
List<Milestone> milestones = cache.getMilestones(force);
458+
List<Milestone> milestones = cache.getMilestones(IssueService.STATE_OPEN, force);
458459
milestoneComboBoxModel.removeAllElements();
459460
milestoneComboBoxModel.addElement(null);
460461
for (Milestone milestone : milestones) {
@@ -1310,15 +1311,15 @@ private void newMilestoneButtonActionPerformed(java.awt.event.ActionEvent evt) {
13101311
if (repository == null) {
13111312
return;
13121313
}
1313-
GitHubCache cache = GitHubCache.create(repository);
1314-
Milestone milestone = MilestonePanel.showDialog(cache.getMilestones());
1314+
Milestone milestone = MilestonePanel.showDialog(repository.getMilestones("all", false)); // NOI18N
13151315
if (milestone != null) {
13161316
Milestone newMilestone = repository.addMilestone(milestone);
13171317
if (newMilestone == null) {
13181318
// show dialog
13191319
UiUtils.showErrorDialog(Bundle.GitHubIssuePanel_message_addMilestone_error());
13201320
return;
13211321
}
1322+
GitHubCache cache = GitHubCache.create(repository);
13221323
updateMilestones(cache, true);
13231324
Issue issue = getIssue().getIssue();
13241325
if (issue != null) {

src/main/java/com/junichi11/netbeans/modules/github/issues/query/ui/GitHubQueryPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public GitHubQueryPanel(GitHubQuery query, JComponent table) {
137137

138138
// milestone
139139
GitHubRepository repository = query.getRepository();
140-
List<Milestone> milestones = repository.getMilestones();
140+
List<Milestone> milestones = repository.getMilestones("all", false); // NOI18N
141141
setComboBox(milestoneComboBox, milestoneComboBoxModel, milestones.toArray());
142142

143143
// add listener

src/main/java/com/junichi11/netbeans/modules/github/issues/repository/GitHubRepository.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,11 +282,13 @@ private String getPropertyValue(String propertyName) {
282282
/**
283283
* Get milestones.
284284
*
285+
* @param state open, closed or all
286+
* @param force {@code true} if refresh the cache, otherwise {@code false}
285287
* @return milestones
286288
*/
287-
public List<Milestone> getMilestones() {
289+
public List<Milestone> getMilestones(String state, boolean force) {
288290
GitHubCache cache = GitHubCache.create(this);
289-
return cache.getMilestones();
291+
return cache.getMilestones(state, force);
290292
}
291293

292294
/**

0 commit comments

Comments
 (0)