Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: palantir/streams
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 2.3.0
Choose a base ref
...
head repository: palantir/streams
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: develop
Choose a head ref
Loading
Showing with 523 additions and 198 deletions.
  1. +3 −3 .bulldozer.yml
  2. +13 −13 .circleci/config.yml
  3. +2 −0 .excavator.yml
  4. +12 −0 .github/ISSUE_TEMPLATE.md
  5. +11 −0 .github/PULL_REQUEST_TEMPLATE.md
  6. +3 −0 .gitignore
  7. +0 −118 .policy.yml
  8. +28 −2 README.md
  9. +16 −10 build.gradle
  10. +5 −0 changelog/2.4.0/pr-328.v2.yml
  11. +1 −0 gradle.properties
  12. +1 −0 gradle/gradle-daemon-jdk-version
  13. +173 −0 gradle/gradle-jdks-functions.sh
  14. BIN gradle/gradle-jdks-setup.jar
  15. +80 −0 gradle/gradle-jdks-setup.sh
  16. +1 −0 gradle/jdks/11/linux-glibc/aarch64/download-url
  17. +1 −0 gradle/jdks/11/linux-glibc/aarch64/local-path
  18. +1 −0 gradle/jdks/11/linux-glibc/x86-64/download-url
  19. +1 −0 gradle/jdks/11/linux-glibc/x86-64/local-path
  20. +1 −0 gradle/jdks/11/linux-glibc/x86/download-url
  21. +1 −0 gradle/jdks/11/linux-glibc/x86/local-path
  22. +1 −0 gradle/jdks/11/linux-musl/aarch64/download-url
  23. +1 −0 gradle/jdks/11/linux-musl/aarch64/local-path
  24. +1 −0 gradle/jdks/11/linux-musl/x86-64/download-url
  25. +1 −0 gradle/jdks/11/linux-musl/x86-64/local-path
  26. +1 −0 gradle/jdks/11/macos/aarch64/download-url
  27. +1 −0 gradle/jdks/11/macos/aarch64/local-path
  28. +1 −0 gradle/jdks/11/macos/x86-64/download-url
  29. +1 −0 gradle/jdks/11/macos/x86-64/local-path
  30. +1 −0 gradle/jdks/11/windows/x86-64/download-url
  31. +1 −0 gradle/jdks/11/windows/x86-64/local-path
  32. +1 −0 gradle/jdks/11/windows/x86/download-url
  33. +1 −0 gradle/jdks/11/windows/x86/local-path
  34. +1 −0 gradle/jdks/17/linux-glibc/aarch64/download-url
  35. +1 −0 gradle/jdks/17/linux-glibc/aarch64/local-path
  36. +1 −0 gradle/jdks/17/linux-glibc/x86-64/download-url
  37. +1 −0 gradle/jdks/17/linux-glibc/x86-64/local-path
  38. +1 −0 gradle/jdks/17/linux-musl/aarch64/download-url
  39. +1 −0 gradle/jdks/17/linux-musl/aarch64/local-path
  40. +1 −0 gradle/jdks/17/linux-musl/x86-64/download-url
  41. +1 −0 gradle/jdks/17/linux-musl/x86-64/local-path
  42. +1 −0 gradle/jdks/17/macos/aarch64/download-url
  43. +1 −0 gradle/jdks/17/macos/aarch64/local-path
  44. +1 −0 gradle/jdks/17/macos/x86-64/download-url
  45. +1 −0 gradle/jdks/17/macos/x86-64/local-path
  46. +1 −0 gradle/jdks/17/windows/x86-64/download-url
  47. +1 −0 gradle/jdks/17/windows/x86-64/local-path
  48. +1 −0 gradle/jdks/21/linux-glibc/aarch64/download-url
  49. +1 −0 gradle/jdks/21/linux-glibc/aarch64/local-path
  50. +1 −0 gradle/jdks/21/linux-glibc/x86-64/download-url
  51. +1 −0 gradle/jdks/21/linux-glibc/x86-64/local-path
  52. +1 −0 gradle/jdks/21/linux-musl/aarch64/download-url
  53. +1 −0 gradle/jdks/21/linux-musl/aarch64/local-path
  54. +1 −0 gradle/jdks/21/linux-musl/x86-64/download-url
  55. +1 −0 gradle/jdks/21/linux-musl/x86-64/local-path
  56. +1 −0 gradle/jdks/21/macos/aarch64/download-url
  57. +1 −0 gradle/jdks/21/macos/aarch64/local-path
  58. +1 −0 gradle/jdks/21/macos/x86-64/download-url
  59. +1 −0 gradle/jdks/21/macos/x86-64/local-path
  60. +1 −0 gradle/jdks/21/windows/x86-64/download-url
  61. +1 −0 gradle/jdks/21/windows/x86-64/local-path
  62. BIN gradle/wrapper/gradle-wrapper.jar
  63. +1 −1 gradle/wrapper/gradle-wrapper.properties
  64. +13 −2 gradlew
  65. +10 −10 gradlew.bat
  66. +11 −1 settings.gradle
  67. +12 −0 streams/src/main/java/com/palantir/common/streams/MoreCollectors.java
  68. +63 −19 streams/src/test/java/com/palantir/common/streams/MoreCollectorsTests.java
  69. +15 −15 versions.lock
  70. +4 −4 versions.props
6 changes: 3 additions & 3 deletions .bulldozer.yml
Original file line number Diff line number Diff line change
@@ -2,9 +2,9 @@

version: 1
merge:
whitelist:
trigger:
labels: ["merge when ready"]
blacklist:
ignore:
labels: ["do not merge"]
method: squash
options:
@@ -13,5 +13,5 @@ merge:
message_delimiter: ==COMMIT_MSG==
delete_after_merge: true
update:
whitelist:
trigger:
labels: ["update me"]
26 changes: 13 additions & 13 deletions .circleci/config.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions .excavator.yml
Original file line number Diff line number Diff line change
@@ -5,5 +5,7 @@ auto-label:
versions-props/upgrade-all: [ "merge when ready" ]
circleci/manage-circleci: [ "merge when ready" ]
tags:
donotmerge: [ "do not merge" ]
roomba: [ "merge when ready" ]
automerge: [ "merge when ready" ]
autorelease: [ "autorelease" ]
12 changes: 12 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## What happened?

<!--
Describe what you've observed and why it's bad (please include whatever stacktraces/version numbers you can).
Clear steps to reproduce the behaviour are always helpful too!
-->

## What did you want to happen?

<!--
Suggest better behaviour
-->
11 changes: 11 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## Before this PR
<!-- What's wrong with the current state of the world and why change it now? -->

## After this PR
<!-- User-facing outcomes this PR delivers go below -->
==COMMIT_MSG==
==COMMIT_MSG==

## Possible downsides?
<!-- Please describe any way users could be negatively affected by this PR. -->

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -17,3 +17,6 @@
.gradle/
build/
bin/

# Gradle JDKs setup
!gradle/*
118 changes: 0 additions & 118 deletions .policy.yml

This file was deleted.

30 changes: 28 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
<p align="right">
<a href="https://autorelease.general.dmz.palantir.tech/palantir/streams"><img src="https://img.shields.io/badge/Perform%20an-Autorelease-success.svg" alt="Autorelease"></a>
</p>

# streams
Utilities for working with [Java 8 streams][Stream]. [KeyedStream](#keyedstream) makes
working with streams of Map entries readable.

[![CircleCI Build Status](https://circleci.com/gh/palantir/streams/tree/master.svg)](https://circleci.com/gh/palantir/streams)
[![Download](https://api.bintray.com/packages/palantir/releases/streams/images/download.svg) ](https://bintray.com/palantir/releases/streams/_latestVersion)
[![CircleCI Build Status](https://circleci.com/gh/palantir/streams/tree/develop.svg)](https://circleci.com/gh/palantir/streams)
[![Download](https://img.shields.io/maven-central/v/com.palantir.common/streams) ](https://central.sonatype.com/artifact/com.palantir.common/streams/)


## KeyedStream
@@ -66,3 +70,25 @@ the order in which they complete.
[ListenableFuture]: https://google.github.io/guava/releases/23.0/api/docs/com/google/common/util/concurrent/ListenableFuture.html
[Map]: https://docs.oracle.com/javase/8/docs/api/java/util/Map.html
[Stream]: https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html

## MoreCollectors

### `MoreCollectors.toImmutableMap()`

Collect a Stream of Map.Entry (e.g. a StreamEx EntryStream) into a Guava ImmutableMap, which preserves iteration order.

Beware that using StreamEx's `EntryStream#toImmutableMap()` does NOT preserve iteration order, as it uses a regular HashMap under the hood.

```diff
StreamEx.of(items)
.mapToEntry(
key -> computeValue(key.foo())
- .toImmutableMap() // does not preserve iteration order
+ .collect(MoreCollectors.toImmutableMap()); // preserves iteration order
```

This is equivalent to writing out the slightly more verbose:

```java
.collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, Map.Entry::getValue));
```
26 changes: 16 additions & 10 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -10,15 +10,16 @@ buildscript {

dependencies {
classpath 'com.palantir.jakartapackagealignment:jakarta-package-alignment:0.6.0'
classpath 'com.palantir.gradle.jdks:gradle-jdks:0.36.0'
classpath 'com.palantir.gradle.jdkslatest:gradle-jdks-latest:0.13.0'
classpath 'com.palantir.gradle.externalpublish:gradle-external-publish-plugin:1.15.0'
classpath 'com.palantir.gradle.failure-reports:gradle-failure-reports:1.9.0'
classpath 'com.palantir.javaformat:gradle-palantir-java-format:2.41.0'
classpath 'com.palantir.gradle.revapi:gradle-revapi:1.7.0'
classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:2.21.0'
classpath 'com.palantir.baseline:gradle-baseline-java:5.47.0'
classpath 'com.palantir.gradle.gitversion:gradle-git-version:3.0.0'
classpath 'com.palantir.gradle.jdks:gradle-jdks:0.62.0'
classpath 'com.palantir.gradle.jdkslatest:gradle-jdks-latest:0.17.0'
classpath 'com.palantir.gradle.externalpublish:gradle-external-publish-plugin:1.19.0'
classpath 'com.palantir.gradle.failure-reports:gradle-failure-reports:1.13.0'
classpath 'com.palantir.javaformat:gradle-palantir-java-format:2.55.0'
classpath 'com.palantir.suppressible-error-prone:gradle-suppressible-error-prone:2.4.0'
classpath 'com.palantir.gradle.revapi:gradle-revapi:1.8.0'
classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:2.31.0'
classpath 'com.palantir.baseline:gradle-baseline-java:6.15.0'
classpath 'com.palantir.gradle.gitversion:gradle-git-version:3.1.0'
classpath 'gradle.plugin.org.inferred:gradle-processors:3.7.0'
}
}
@@ -27,12 +28,13 @@ apply plugin: 'com.palantir.external-publish'
apply plugin: 'com.palantir.failure-reports'
apply plugin: 'com.palantir.baseline'
apply plugin: 'com.palantir.git-version'
apply plugin: 'com.palantir.jdks'
apply plugin: 'com.palantir.consistent-versions'
apply plugin: 'com.palantir.baseline-java-versions'
apply plugin: 'com.palantir.jdks.latest'

javaVersions {
libraryTarget = 11
libraryTarget = 17
runtime = 21
}

@@ -56,3 +58,7 @@ subprojects {
tasks.check.dependsOn(checkUnusedDependencies)
tasks.check.dependsOn(checkUnusedConstraints)
}

jdks {
daemonTarget = 17
}
5 changes: 5 additions & 0 deletions changelog/2.4.0/pr-328.v2.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
type: feature
feature:
description: MoreCollectors.toImmutableMap() convenience method
links:
- https://github.com/palantir/streams/pull/328
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
org.gradle.parallel=true
org.gradle.jvmargs = --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
palantir.jdk.setup.enabled=true
1 change: 1 addition & 0 deletions gradle/gradle-daemon-jdk-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
17
Loading