5353 */
5454public class HistoryProvider implements VCSHistoryProvider {
5555
56- private final List <VCSHistoryProvider .HistoryChangeListener > listeners = new LinkedList <VCSHistoryProvider . HistoryChangeListener >();
56+ private final List <VCSHistoryProvider .HistoryChangeListener > listeners = new LinkedList <>();
5757 private static final Logger LOG = Logger .getLogger (HistoryProvider .class .getName ());
5858 private Action [] actions ;
5959
@@ -80,9 +80,9 @@ public synchronized HistoryEntry[] getHistory(File[] files, Date fromDate) {
8080 return null ;
8181 }
8282
83- List <HistoryEntry > ret = new LinkedList <HistoryEntry >();
84- Map <String , Set <File >> rev2FileMap = new HashMap <String , Set < File > >();
85- Map <String , GitRevisionInfo > rev2LMMap = new LinkedHashMap <String , GitRevisionInfo >();
83+ List <HistoryEntry > ret = new LinkedList <>();
84+ Map <String , Set <File >> rev2FileMap = new HashMap <>();
85+ Map <String , GitRevisionInfo > rev2LMMap = new LinkedHashMap <>();
8686
8787 File repositoryRoot = repositories .iterator ().next ();
8888 for (File file : files ) {
@@ -96,12 +96,8 @@ public synchronized HistoryEntry[] getHistory(File[] files, Date fromDate) {
9696 for (GitRevisionInfo h : history ) {
9797 String r = h .getRevision ();
9898 rev2LMMap .put (r , h );
99- Set <File > s = rev2FileMap .get (r );
100- if (s == null ) {
101- s = new HashSet <File >();
102- rev2FileMap .put (r , s );
103- }
104- s .add (file );
99+ rev2FileMap .computeIfAbsent (r , k -> new HashSet <File >())
100+ .add (file );
105101 }
106102 } catch (GitException ex ) {
107103 LOG .log (Level .INFO , null , ex );
@@ -110,12 +106,12 @@ public synchronized HistoryEntry[] getHistory(File[] files, Date fromDate) {
110106
111107 for (GitRevisionInfo h : rev2LMMap .values ()) {
112108 Set <File > s = rev2FileMap .get (h .getRevision ());
113- File [] involvedFiles = s .toArray (new File [0 ] );
109+ File [] involvedFiles = s .toArray (File []:: new );
114110
115111 HistoryEntry e = createHistoryEntry (h , involvedFiles , repositoryRoot );
116112 ret .add (e );
117113 }
118- return ret .toArray (new HistoryEntry [0 ] );
114+ return ret .toArray (HistoryEntry []:: new );
119115 }
120116
121117 private HistoryEntry createHistoryEntry (GitRevisionInfo h , File [] involvedFiles , File repositoryRoot ) {
@@ -150,20 +146,17 @@ public Action createShowHistoryAction(File[] files) {
150146 public void fireHistoryChange (final File [] files ) {
151147 final HistoryChangeListener [] la ;
152148 synchronized (listeners ) {
153- la = listeners .toArray (new HistoryChangeListener [0 ] );
149+ la = listeners .toArray (HistoryChangeListener []:: new );
154150 }
155- Git .getInstance ().getRequestProcessor ().post (new Runnable () {
156- @ Override
157- public void run () {
158- for (HistoryChangeListener l : la ) {
159- l .fireHistoryChanged (new HistoryEvent (HistoryProvider .this , files ));
160- }
151+ Git .getInstance ().getRequestProcessor ().post (() -> {
152+ for (HistoryChangeListener l : la ) {
153+ l .fireHistoryChanged (new HistoryEvent (HistoryProvider .this , files ));
161154 }
162155 });
163156 }
164157
165158 private class RevisionProviderImpl implements RevisionProvider {
166- private String revision ;
159+ private final String revision ;
167160
168161 public RevisionProviderImpl (String revision ) {
169162 this .revision = revision ;
@@ -230,7 +223,7 @@ private void openHistory(File[] files) {
230223 if (repositories == null || repositories .isEmpty ()) {
231224 return ;
232225 }
233- List <Node > nodes = new ArrayList <Node >(files .length );
226+ List <Node > nodes = new ArrayList <>(files .length );
234227 for (File f : files ) {
235228 nodes .add (new AbstractNode (Children .LEAF , Lookups .fixed (f )) {
236229 @ Override
@@ -239,7 +232,7 @@ public String getDisplayName() {
239232 }
240233 });
241234 }
242- SearchHistoryAction .openSearch (repositories .iterator ().next (), files , Utils .getContextDisplayName (VCSContext .forNodes (nodes .toArray (new Node [0 ] ))));
235+ SearchHistoryAction .openSearch (repositories .iterator ().next (), files , Utils .getContextDisplayName (VCSContext .forNodes (nodes .toArray (Node []:: new ))));
243236 }
244237
245238 }
@@ -267,8 +260,9 @@ protected void perform(HistoryEntry entry, Set<File> files) {
267260 @ Override
268261 protected void perform (final HistoryEntry entry , final Set <File > files ) {
269262 File root = Git .getInstance ().getRepositoryRoot (files .iterator ().next ());
270- SystemAction .get (RevertChangesAction .class ).revertFiles (root , files .toArray (new File [0 ]),
271- getRevisionShort (), Bundle .HistoryProvider_action_RevertTo_progress ());
263+ SystemAction .get (RevertChangesAction .class ).revertFiles (
264+ root , files .toArray (File []::new ), getRevisionShort (), Bundle .HistoryProvider_action_RevertTo_progress ()
265+ );
272266 }
273267 @ Override
274268 protected boolean isMultipleHistory () {
@@ -315,7 +309,7 @@ protected void perform () {
315309 }
316310
317311 private static Set <File > getRepositoryRoots (File ... files ) {
318- Set <File > repositories = GitUtils .getRepositoryRoots (new HashSet <File >(Arrays .asList (files )));
312+ Set <File > repositories = GitUtils .getRepositoryRoots (new HashSet <>(Arrays .asList (files )));
319313 if (repositories .size () != 1 ) {
320314 LOG .log (Level .WARNING , "History requested for {0} repositories" , repositories .size ()); // NOI18N
321315 return null ;
@@ -324,16 +318,16 @@ private static Set<File> getRepositoryRoots(File... files) {
324318 }
325319
326320 private class ParentProviderImpl implements ParentProvider {
327- private GitRevisionInfo info ;
328- private File [] files ;
329- private File repository ;
330- private Map <File , HistoryEntry > commonAncestors ;
321+ private final GitRevisionInfo info ;
322+ private final File [] files ;
323+ private final File repository ;
324+ private final Map <File , HistoryEntry > commonAncestors ;
331325
332326 public ParentProviderImpl (GitRevisionInfo info , File [] files , File repository ) {
333327 this .info = info ;
334328 this .files = files ;
335329 this .repository = repository ;
336- this .commonAncestors = new HashMap <File , HistoryEntry >( files .length );
330+ this .commonAncestors = new HashMap <>(( int ) Math . ceil ( files .length / 0.75 ) );
337331 }
338332
339333 @ Override
0 commit comments