Skip to content

Commit dd4568c

Browse files
authored
Remove redundant lambda expression (#125)
**Motivation:** See #124 for more. **Modification:** Remove redundant static variables which are used only once and use method reference instead to improve code readability. **Result:** Closes #124
1 parent 5ef46b6 commit dd4568c

File tree

5 files changed

+46
-65
lines changed

5 files changed

+46
-65
lines changed

src/main/java/io/asyncer/r2dbc/mysql/MySqlConnection.java

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -76,36 +76,6 @@ public final class MySqlConnection implements Connection, ConnectionState {
7676

7777
private static final ServerVersion TX_LEVEL_8X = ServerVersion.create(8, 0, 0);
7878

79-
/**
80-
* Convert initialize result to {@link InitData}.
81-
*/
82-
private static final Function<MySqlResult, Publisher<InitData>> INIT_HANDLER = r ->
83-
r.map((row, meta) -> new InitData(convertIsolationLevel(row.get(0, String.class)),
84-
convertLockWaitTimeout(row.get(1, Long.class)),
85-
row.get(2, String.class), null));
86-
87-
private static final Function<MySqlResult, Publisher<InitData>> FULL_INIT = r -> r.map((row, meta) -> {
88-
IsolationLevel level = convertIsolationLevel(row.get(0, String.class));
89-
long lockWaitTimeout = convertLockWaitTimeout(row.get(1, Long.class));
90-
String product = row.get(2, String.class);
91-
String systemTimeZone = row.get(3, String.class);
92-
String timeZone = row.get(4, String.class);
93-
ZoneId zoneId;
94-
95-
if (timeZone == null || timeZone.isEmpty() || "SYSTEM".equalsIgnoreCase(timeZone)) {
96-
if (systemTimeZone == null || systemTimeZone.isEmpty()) {
97-
logger.warn("MySQL does not return any timezone, trying to use system default timezone");
98-
zoneId = ZoneId.systemDefault();
99-
} else {
100-
zoneId = convertZoneId(systemTimeZone);
101-
}
102-
} else {
103-
zoneId = convertZoneId(timeZone);
104-
}
105-
106-
return new InitData(level, lockWaitTimeout, product, zoneId);
107-
});
108-
10979
private static final BiConsumer<ServerMessage, SynchronousSink<Boolean>> PING = (message, sink) -> {
11080
if (message instanceof ErrorMessage) {
11181
ErrorMessage msg = (ErrorMessage) message;
@@ -456,9 +426,9 @@ static Mono<MySqlConnection> init(Client client, Codecs codecs, ConnectionContex
456426

457427
if (context.shouldSetServerZoneId()) {
458428
query.append(",@@system_time_zone AS s,@@time_zone AS t");
459-
handler = FULL_INIT;
429+
handler = MySqlConnection::fullInit;
460430
} else {
461-
handler = INIT_HANDLER;
431+
handler = MySqlConnection::init;
462432
}
463433

464434
return new TextSimpleStatement(client, codecs, context, query.toString())
@@ -477,6 +447,36 @@ static Mono<MySqlConnection> init(Client client, Codecs codecs, ConnectionContex
477447
});
478448
}
479449

450+
private static Publisher<InitData> init(MySqlResult r) {
451+
return r.map((row, meta) -> new InitData(convertIsolationLevel(row.get(0, String.class)),
452+
convertLockWaitTimeout(row.get(1, Long.class)),
453+
row.get(2, String.class), null));
454+
}
455+
456+
private static Publisher<InitData> fullInit(MySqlResult r) {
457+
return r.map((row, meta) -> {
458+
IsolationLevel level = convertIsolationLevel(row.get(0, String.class));
459+
long lockWaitTimeout = convertLockWaitTimeout(row.get(1, Long.class));
460+
String product = row.get(2, String.class);
461+
String systemTimeZone = row.get(3, String.class);
462+
String timeZone = row.get(4, String.class);
463+
ZoneId zoneId;
464+
465+
if (timeZone == null || timeZone.isEmpty() || "SYSTEM".equalsIgnoreCase(timeZone)) {
466+
if (systemTimeZone == null || systemTimeZone.isEmpty()) {
467+
logger.warn("MySQL does not return any timezone, trying to use system default timezone");
468+
zoneId = ZoneId.systemDefault();
469+
} else {
470+
zoneId = convertZoneId(systemTimeZone);
471+
}
472+
} else {
473+
zoneId = convertZoneId(timeZone);
474+
}
475+
476+
return new InitData(level, lockWaitTimeout, product, zoneId);
477+
});
478+
}
479+
480480
/**
481481
* Creates a {@link ZoneId} from MySQL timezone result, or fallback to system default timezone if not
482482
* found.

src/main/java/io/asyncer/r2dbc/mysql/MySqlConnectionConfiguration.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ public final class MySqlConnectionConfiguration {
4747
*/
4848
private static final int DEFAULT_PORT = 3306;
4949

50-
private static final Predicate<String> DEFAULT_SERVER_PREPARE = sql -> false;
51-
5250
/**
5351
* {@code true} if {@link #domain} is hostname, otherwise {@link #domain} is unix domain socket path.
5452
*/
@@ -685,7 +683,7 @@ public Builder useClientPrepareStatement() {
685683
* @since 0.8.1
686684
*/
687685
public Builder useServerPrepareStatement() {
688-
return useServerPrepareStatement(DEFAULT_SERVER_PREPARE);
686+
return useServerPrepareStatement((sql) -> false);
689687
}
690688

691689
/**

src/main/java/io/asyncer/r2dbc/mysql/MySqlResult.java

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242

4343
import java.util.function.BiConsumer;
4444
import java.util.function.BiFunction;
45-
import java.util.function.Consumer;
4645
import java.util.function.Function;
4746
import java.util.function.Predicate;
4847

@@ -57,20 +56,6 @@
5756
*/
5857
public final class MySqlResult implements Result {
5958

60-
private static final Consumer<ReferenceCounted> RELEASE = ReferenceCounted::release;
61-
62-
private static final BiConsumer<Segment, SynchronousSink<Long>> ROWS_UPDATED = (segment, sink) -> {
63-
if (segment instanceof UpdateCount) {
64-
sink.next(((UpdateCount) segment).value());
65-
} else if (segment instanceof Message) {
66-
sink.error(((Message) segment).exception());
67-
} else if (segment instanceof ReferenceCounted) {
68-
ReferenceCountUtil.safeRelease(segment);
69-
}
70-
};
71-
72-
private static final BiFunction<Long, Long, Long> SUM = Long::sum;
73-
7459
private final Flux<Segment> segments;
7560

7661
private MySqlResult(Flux<Segment> segments) {
@@ -79,7 +64,15 @@ private MySqlResult(Flux<Segment> segments) {
7964

8065
@Override
8166
public Mono<Long> getRowsUpdated() {
82-
return segments.handle(ROWS_UPDATED).reduce(SUM);
67+
return segments.<Long>handle((segment, sink) -> {
68+
if (segment instanceof UpdateCount) {
69+
sink.next(((UpdateCount) segment).value());
70+
} else if (segment instanceof Message) {
71+
sink.error(((Message) segment).exception());
72+
} else if (segment instanceof ReferenceCounted) {
73+
ReferenceCountUtil.safeRelease(segment);
74+
}
75+
}).reduce(Long::sum);
8376
}
8477

8578
@Override
@@ -168,7 +161,7 @@ static MySqlResult toResult(boolean binary, Codecs codecs, ConnectionContext con
168161
requireNonNull(messages, "messages must not be null");
169162

170163
return new MySqlResult(OperatorUtils.discardOnCancel(messages)
171-
.doOnDiscard(ReferenceCounted.class, RELEASE)
164+
.doOnDiscard(ReferenceCounted.class, ReferenceCounted::release)
172165
.handle(new MySqlSegments(binary, codecs, context, generatedKeyName)));
173166
}
174167

@@ -220,10 +213,6 @@ public Row row() {
220213

221214
@Override
222215
public ReferenceCounted touch(Object hint) {
223-
if (this.fields.length == 0) {
224-
return this;
225-
}
226-
227216
for (FieldValue field : this.fields) {
228217
field.touch(hint);
229218
}

src/main/java/io/asyncer/r2dbc/mysql/client/ReactorNettyClient.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646

4747
import java.util.concurrent.atomic.AtomicBoolean;
4848
import java.util.function.BiConsumer;
49-
import java.util.function.Consumer;
5049
import java.util.function.Function;
5150

5251
import static io.asyncer.r2dbc.mysql.internal.util.AssertUtils.require;
@@ -63,8 +62,6 @@ final class ReactorNettyClient implements Client {
6362

6463
private static final boolean INFO_ENABLED = logger.isInfoEnabled();
6564

66-
private static final Consumer<ReferenceCounted> RELEASE = ReferenceCounted::release;
67-
6865
private final Connection connection;
6966

7067
private final ConnectionContext context;
@@ -153,7 +150,7 @@ public <T> Flux<T> exchange(ClientMessage request,
153150
.doOnSubscribe(ignored -> emitNextRequest(request))
154151
.handle(handler)
155152
.doOnTerminate(requestQueue))
156-
.doOnDiscard(ReferenceCounted.class, RELEASE);
153+
.doOnDiscard(ReferenceCounted.class, ReferenceCounted::release);
157154

158155
requestQueue.submit(RequestTask.wrap(request, sink, responses));
159156
}).flatMapMany(Function.identity());
@@ -187,7 +184,7 @@ public <T> Flux<T> exchange(FluxExchangeable<T> exchangeable) {
187184
});
188185

189186
requestQueue.submit(RequestTask.wrap(exchangeable, sink, OperatorUtils.discardOnCancel(responses)
190-
.doOnDiscard(ReferenceCounted.class, RELEASE)
187+
.doOnDiscard(ReferenceCounted.class, ReferenceCounted::release)
191188
.doOnCancel(exchangeable::dispose)));
192189
}).flatMapMany(Function.identity());
193190
}

src/main/java/io/asyncer/r2dbc/mysql/message/client/PreparedExecuteMessage.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import java.util.ArrayList;
2828
import java.util.Arrays;
2929
import java.util.List;
30-
import java.util.function.Consumer;
3130

3231
import static io.asyncer.r2dbc.mysql.internal.util.AssertUtils.requireNonNull;
3332

@@ -59,8 +58,6 @@ public final class PreparedExecuteMessage implements ClientMessage, Disposable {
5958

6059
private static final byte EXECUTE_FLAG = 0x17;
6160

62-
private static final Consumer<MySqlParameter> DISPOSE = MySqlParameter::dispose;
63-
6461
private final int statementId;
6562

6663
/**
@@ -131,7 +128,7 @@ public Flux<ByteBuf> encode(ByteBufAllocator allocator, ConnectionContext contex
131128
writeTypes(buf, size);
132129

133130
Flux<ByteBuf> parameters = OperatorUtils.discardOnCancel(Flux.fromArray(values))
134-
.doOnDiscard(MySqlParameter.class, DISPOSE)
131+
.doOnDiscard(MySqlParameter.class, MySqlParameter::dispose)
135132
.concatMap(MySqlParameter::publishBinary);
136133

137134
return Flux.just(buf).concatWith(parameters);

0 commit comments

Comments
 (0)