99package org .elasticsearch .cluster ;
1010
1111import org .elasticsearch .Version ;
12- import org .elasticsearch .common .collect .ImmutableOpenIntMap ;
1312import org .elasticsearch .common .collect .ImmutableOpenMap ;
1413import org .elasticsearch .common .io .stream .StreamInput ;
1514import org .elasticsearch .common .io .stream .StreamOutput ;
@@ -81,33 +80,6 @@ public static <K, T> MapDiff<K, T, ImmutableOpenMap<K, T>> diff(
8180 return before .equals (after ) ? emptyDiff () : ImmutableOpenMapDiff .create (before , after , keySerializer , valueSerializer );
8281 }
8382
84- /**
85- * Calculates diff between two ImmutableOpenIntMaps of Diffable objects
86- */
87- public static <T extends Diffable <T >> MapDiff <Integer , T , ImmutableOpenIntMap <T >> diff (
88- ImmutableOpenIntMap <T > before ,
89- ImmutableOpenIntMap <T > after ,
90- KeySerializer <Integer > keySerializer
91- ) {
92- assert after != null && before != null ;
93- return before .equals (after )
94- ? emptyDiff ()
95- : ImmutableOpenIntMapDiff .create (before , after , keySerializer , DiffableValueSerializer .getWriteOnlyInstance ());
96- }
97-
98- /**
99- * Calculates diff between two ImmutableOpenIntMaps of non-diffable objects
100- */
101- public static <T > MapDiff <Integer , T , ImmutableOpenIntMap <T >> diff (
102- ImmutableOpenIntMap <T > before ,
103- ImmutableOpenIntMap <T > after ,
104- KeySerializer <Integer > keySerializer ,
105- ValueSerializer <Integer , T > valueSerializer
106- ) {
107- assert after != null && before != null ;
108- return before .equals (after ) ? emptyDiff () : ImmutableOpenIntMapDiff .create (before , after , keySerializer , valueSerializer );
109- }
110-
11183 /**
11284 * Calculates diff between two Maps of Diffable objects.
11385 */
@@ -151,17 +123,6 @@ public static <K, T> MapDiff<K, T, ImmutableOpenMap<K, T>> readImmutableOpenMapD
151123 return diffOrEmpty (new ImmutableOpenMapDiff <>(in , keySerializer , valueSerializer ));
152124 }
153125
154- /**
155- * Loads an object that represents difference between two ImmutableOpenMaps
156- */
157- public static <T > MapDiff <Integer , T , ImmutableOpenIntMap <T >> readImmutableOpenIntMapDiff (
158- StreamInput in ,
159- KeySerializer <Integer > keySerializer ,
160- ValueSerializer <Integer , T > valueSerializer
161- ) throws IOException {
162- return diffOrEmpty (new ImmutableOpenIntMapDiff <>(in , keySerializer , valueSerializer ));
163- }
164-
165126 /**
166127 * Loads an object that represents difference between two Maps of Diffable objects
167128 */
@@ -184,18 +145,6 @@ public static <K, T extends Diffable<T>> MapDiff<K, T, ImmutableOpenMap<K, T>> r
184145 return diffOrEmpty (new ImmutableOpenMapDiff <>(in , keySerializer , diffableValueReader ));
185146 }
186147
187- /**
188- * Loads an object that represents difference between two ImmutableOpenIntMaps of Diffable objects using Diffable proto object
189- */
190- public static <T extends Diffable <T >> MapDiff <Integer , T , ImmutableOpenIntMap <T >> readImmutableOpenIntMapDiff (
191- StreamInput in ,
192- KeySerializer <Integer > keySerializer ,
193- Reader <T > reader ,
194- Reader <Diff <T >> diffReader
195- ) throws IOException {
196- return diffOrEmpty (new ImmutableOpenIntMapDiff <>(in , keySerializer , new DiffableValueReader <>(reader , diffReader )));
197- }
198-
199148 /**
200149 * Loads an object that represents difference between two Maps of Diffable objects using Diffable proto object
201150 */
@@ -380,88 +329,6 @@ public ImmutableOpenMap<K, T> apply(ImmutableOpenMap<K, T> map) {
380329 }
381330 }
382331
383- /**
384- * Represents differences between two ImmutableOpenIntMap of (possibly diffable) objects
385- *
386- * @param <T> the object type
387- */
388- private static class ImmutableOpenIntMapDiff <T > extends MapDiff <Integer , T , ImmutableOpenIntMap <T >> {
389-
390- private ImmutableOpenIntMapDiff (
391- KeySerializer <Integer > keySerializer ,
392- ValueSerializer <Integer , T > valueSerializer ,
393- List <Integer > deletes ,
394- List <Map .Entry <Integer , Diff <T >>> diffs ,
395- List <Map .Entry <Integer , T >> upserts
396- ) {
397- super (keySerializer , valueSerializer , deletes , diffs , upserts );
398- }
399-
400- private ImmutableOpenIntMapDiff (StreamInput in , KeySerializer <Integer > keySerializer , ValueSerializer <Integer , T > valueSerializer )
401- throws IOException {
402- super (in , keySerializer , valueSerializer );
403- }
404-
405- private static <T > ImmutableOpenIntMapDiff <T > create (
406- ImmutableOpenIntMap <T > before ,
407- ImmutableOpenIntMap <T > after ,
408- KeySerializer <Integer > keySerializer ,
409- ValueSerializer <Integer , T > valueSerializer
410- ) {
411- assert after != null && before != null ;
412-
413- int inserts = 0 ;
414- var upserts = new ArrayList <Map .Entry <Integer , T >>();
415- var diffs = new ArrayList <Map .Entry <Integer , Diff <T >>>();
416- for (Map .Entry <Integer , T > entry : after .entrySet ()) {
417- T beforeValue = before .get (entry .getKey ());
418- if (beforeValue == null ) {
419- upserts .add (entry );
420- inserts ++;
421- } else if (entry .getValue ().equals (beforeValue ) == false ) {
422- if (valueSerializer .supportsDiffableValues ()) {
423- diffs .add (new AbstractMap .SimpleEntry <>(entry .getKey (), valueSerializer .diff (entry .getValue (), beforeValue )));
424- } else {
425- upserts .add (entry );
426- }
427- }
428- }
429-
430- int expectedDeletes = before .size () + inserts - after .size ();
431- var deletes = new ArrayList <Integer >(expectedDeletes );
432- if (expectedDeletes > 0 ) {
433- for (Integer key : before .keySet ()) {
434- if (after .containsKey (key ) == false ) {
435- deletes .add (key );
436- if (--expectedDeletes == 0 ) {
437- break ;
438- }
439- }
440- }
441- }
442-
443- return new ImmutableOpenIntMapDiff <>(keySerializer , valueSerializer , deletes , diffs , upserts );
444- }
445-
446- @ Override
447- public ImmutableOpenIntMap <T > apply (ImmutableOpenIntMap <T > map ) {
448- ImmutableOpenIntMap .Builder <T > builder = ImmutableOpenIntMap .builder (map );
449-
450- for (Integer part : deletes ) {
451- builder .remove (part );
452- }
453-
454- for (Map .Entry <Integer , Diff <T >> diff : diffs ) {
455- builder .put (diff .getKey (), diff .getValue ().apply (builder .get (diff .getKey ())));
456- }
457-
458- for (Map .Entry <Integer , T > upsert : upserts ) {
459- builder .put (upsert .getKey (), upsert .getValue ());
460- }
461- return builder .build ();
462- }
463- }
464-
465332 /**
466333 * Represents differences between two maps of objects and is used as base class for different map implementations.
467334 *
0 commit comments