19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 |
23 |
24 import java.nio.charset.StandardCharsets; |
|
25 import java.util.concurrent.Flow; |
24 import java.util.concurrent.Flow; |
26 import java.util.function.Function; |
25 import java.util.function.Function; |
27 import java.net.http.HttpResponse.BodyHandler; |
26 import java.net.http.HttpResponse.BodyHandler; |
28 import java.net.http.HttpResponse.BodySubscriber; |
27 import java.net.http.HttpResponse.BodySubscriber; |
|
28 import static java.util.function.Function.identity; |
|
29 import static java.nio.charset.StandardCharsets.*; |
29 |
30 |
30 /* |
31 /* |
31 * @test |
32 * @test |
32 * @summary Basic test for Flow adapters with generic type parameters |
33 * @summary Basic test for Flow adapters with generic type parameters |
33 * @compile LineAdaptersCompileOnly.java |
34 * @compile LineAdaptersCompileOnly.java |
38 public static void main(String[] args) { |
39 public static void main(String[] args) { |
39 makesSureDifferentGenericSignaturesCompile(); |
40 makesSureDifferentGenericSignaturesCompile(); |
40 } |
41 } |
41 |
42 |
42 static void makesSureDifferentGenericSignaturesCompile() { |
43 static void makesSureDifferentGenericSignaturesCompile() { |
43 |
|
44 BodyHandler.fromLineSubscriber(new StringSubscriber()); |
44 BodyHandler.fromLineSubscriber(new StringSubscriber()); |
45 BodyHandler.fromLineSubscriber(new CharSequenceSubscriber()); |
45 BodyHandler.fromLineSubscriber(new CharSequenceSubscriber()); |
46 BodyHandler.fromLineSubscriber(new ObjectSubscriber()); |
46 BodyHandler.fromLineSubscriber(new ObjectSubscriber()); |
47 |
|
48 |
47 |
49 BodySubscriber.fromLineSubscriber(new StringSubscriber()); |
48 BodySubscriber.fromLineSubscriber(new StringSubscriber()); |
50 BodySubscriber.fromLineSubscriber(new CharSequenceSubscriber()); |
49 BodySubscriber.fromLineSubscriber(new CharSequenceSubscriber()); |
51 BodySubscriber.fromLineSubscriber(new ObjectSubscriber()); |
50 BodySubscriber.fromLineSubscriber(new ObjectSubscriber()); |
52 |
51 |
|
52 BodyHandler.fromLineSubscriber(new StringSubscriber(), identity(), "\n"); |
|
53 BodyHandler.fromLineSubscriber(new CharSequenceSubscriber(), identity(), "\r\n"); |
|
54 BodyHandler.fromLineSubscriber(new ObjectSubscriber(), identity(), "\n"); |
|
55 BodyHandler.fromLineSubscriber(new StringSubscriber(), identity(), null); |
|
56 BodyHandler.fromLineSubscriber(new CharSequenceSubscriber(), identity(), null); |
|
57 BodyHandler.fromLineSubscriber(new ObjectSubscriber(), identity(), null); |
53 |
58 |
54 BodyHandler.fromLineSubscriber(new StringSubscriber(), Function.identity(), "\n"); |
59 BodySubscriber.fromLineSubscriber(new StringSubscriber(), identity(), UTF_8, "\n"); |
55 BodyHandler.fromLineSubscriber(new CharSequenceSubscriber(), Function.identity(), "\r\n"); |
60 BodySubscriber.fromLineSubscriber(new CharSequenceSubscriber(), identity(), UTF_16, "\r\n"); |
56 BodyHandler.fromLineSubscriber(new ObjectSubscriber(), Function.identity(), "\n"); |
61 BodySubscriber.fromLineSubscriber(new ObjectSubscriber(), identity(), US_ASCII, "\n"); |
57 BodyHandler.fromLineSubscriber(new StringSubscriber(), Function.identity(), null); |
62 BodySubscriber.fromLineSubscriber(new StringSubscriber(), identity(), UTF_8, null); |
58 BodyHandler.fromLineSubscriber(new CharSequenceSubscriber(), Function.identity(), null); |
63 BodySubscriber.fromLineSubscriber(new CharSequenceSubscriber(), identity(), UTF_16, null); |
59 BodyHandler.fromLineSubscriber(new ObjectSubscriber(), Function.identity(), null); |
64 BodySubscriber.fromLineSubscriber(new ObjectSubscriber(), identity(), US_ASCII, null); |
60 |
|
61 BodySubscriber.fromLineSubscriber(new StringSubscriber(), Function.identity(), |
|
62 StandardCharsets.UTF_8, "\n"); |
|
63 BodySubscriber.fromLineSubscriber(new CharSequenceSubscriber(), Function.identity(), |
|
64 StandardCharsets.UTF_16, "\r\n"); |
|
65 BodySubscriber.fromLineSubscriber(new ObjectSubscriber(), Function.identity(), |
|
66 StandardCharsets.US_ASCII, "\n"); |
|
67 BodySubscriber.fromLineSubscriber(new StringSubscriber(), Function.identity(), |
|
68 StandardCharsets.UTF_8, null); |
|
69 BodySubscriber.fromLineSubscriber(new CharSequenceSubscriber(), Function.identity(), |
|
70 StandardCharsets.UTF_16, null); |
|
71 BodySubscriber.fromLineSubscriber(new ObjectSubscriber(), Function.identity(), |
|
72 StandardCharsets.US_ASCII, null); |
|
73 } |
65 } |
74 |
66 |
75 static class StringSubscriber implements Flow.Subscriber<String> { |
67 static class StringSubscriber implements Flow.Subscriber<String> { |
76 @Override public void onSubscribe(Flow.Subscription subscription) { } |
68 @Override public void onSubscribe(Flow.Subscription subscription) { } |
77 @Override public void onNext(String item) { } |
69 @Override public void onNext(String item) { } |
90 @Override public void onSubscribe(Flow.Subscription subscription) { } |
82 @Override public void onSubscribe(Flow.Subscription subscription) { } |
91 @Override public void onNext(Object item) { } |
83 @Override public void onNext(Object item) { } |
92 @Override public void onError(Throwable throwable) { } |
84 @Override public void onError(Throwable throwable) { } |
93 @Override public void onComplete() { } |
85 @Override public void onComplete() { } |
94 } |
86 } |
|
87 |
|
88 // --- |
|
89 |
|
90 static final Function<StringSubscriber,Integer> f1 = subscriber -> 1; |
|
91 static final Function<StringSubscriber,Number> f2 = subscriber -> 2; |
|
92 static final Function<StringSubscriberX,Integer> f3 = subscriber -> 3; |
|
93 static final Function<StringSubscriberX,Number> f4 = subscriber -> 4; |
|
94 |
|
95 static class StringSubscriberX extends StringSubscriber { |
|
96 int getIntegerX() { return 5; } |
|
97 } |
|
98 |
|
99 static void makesSureDifferentGenericFunctionSignaturesCompile() { |
|
100 BodyHandler<Integer> bh01 = BodyHandler.fromLineSubscriber(new StringSubscriber(), s -> 6, "\n"); |
|
101 BodyHandler<Number> bh02 = BodyHandler.fromLineSubscriber(new StringSubscriber(), s -> 7, "\n"); |
|
102 BodyHandler<Integer> bh03 = BodyHandler.fromLineSubscriber(new StringSubscriber(), f1, "\n"); |
|
103 BodyHandler<Number> bh04 = BodyHandler.fromLineSubscriber(new StringSubscriber(), f1, "\n"); |
|
104 BodyHandler<Number> bh05 = BodyHandler.fromLineSubscriber(new StringSubscriber(), f2, "\n"); |
|
105 BodyHandler<Integer> bh06 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), f1, "\n"); |
|
106 BodyHandler<Number> bh07 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), f1, "\n"); |
|
107 BodyHandler<Number> bh08 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), f2, "\n"); |
|
108 BodyHandler<Integer> bh09 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), StringSubscriberX::getIntegerX, "\n"); |
|
109 BodyHandler<Number> bh10 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), StringSubscriberX::getIntegerX, "\n"); |
|
110 BodyHandler<Integer> bh11 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), f3, "\n"); |
|
111 BodyHandler<Number> bh12 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), f3, "\n"); |
|
112 BodyHandler<Number> bh13 = BodyHandler.fromLineSubscriber(new StringSubscriberX(), f4, "\n"); |
|
113 |
|
114 BodySubscriber<Integer> bs01 = BodySubscriber.fromLineSubscriber(new StringSubscriber(), s -> 6, UTF_8, "\n"); |
|
115 BodySubscriber<Number> bs02 = BodySubscriber.fromLineSubscriber(new StringSubscriber(), s -> 7, UTF_8, "\n"); |
|
116 BodySubscriber<Integer> bs03 = BodySubscriber.fromLineSubscriber(new StringSubscriber(), f1, UTF_8, "\n"); |
|
117 BodySubscriber<Number> bs04 = BodySubscriber.fromLineSubscriber(new StringSubscriber(), f1, UTF_8, "\n"); |
|
118 BodySubscriber<Number> bs05 = BodySubscriber.fromLineSubscriber(new StringSubscriber(), f2, UTF_8, "\n"); |
|
119 BodySubscriber<Integer> bs06 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), f1, UTF_8, "\n"); |
|
120 BodySubscriber<Number> bs07 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), f1, UTF_8, "\n"); |
|
121 BodySubscriber<Number> bs08 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), f2, UTF_8, "\n"); |
|
122 BodySubscriber<Integer> bs09 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), StringSubscriberX::getIntegerX, UTF_8, "\n"); |
|
123 BodySubscriber<Number> bs10 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), StringSubscriberX::getIntegerX, UTF_8, "\n"); |
|
124 BodySubscriber<Integer> bs11 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), f3, UTF_8, "\n"); |
|
125 BodySubscriber<Number> bs12 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), f3, UTF_8, "\n"); |
|
126 BodySubscriber<Number> bs13 = BodySubscriber.fromLineSubscriber(new StringSubscriberX(), f4, UTF_8, "\n"); |
|
127 } |
95 } |
128 } |