Skip to content

Commit eaed8c9

Browse files
core: move the builders to the respective class and mark the constructors protected
1 parent ced1784 commit eaed8c9

File tree

20 files changed

+146
-182
lines changed

20 files changed

+146
-182
lines changed

api/src/main/java/io/grpc/InternalStatus.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ private InternalStatus() {}
4444
@Internal
4545
public static final StatusRuntimeException asRuntimeException(Status status,
4646
@Nullable Metadata trailers, boolean fillInStackTrace) {
47-
return new StatusRuntimeExceptionBuilder()
47+
return new StatusRuntimeException.Builder()
4848
.setStatus(status)
4949
.setTrailers(trailers)
5050
.setFillInStackTrace(fillInStackTrace)

api/src/main/java/io/grpc/Status.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -522,30 +522,30 @@ public boolean isOk() {
522522
* to recover this {@link Status} instance when the returned exception is in the causal chain.
523523
*/
524524
public StatusRuntimeException asRuntimeException() {
525-
return new StatusRuntimeExceptionBuilder().setStatus(this).build();
525+
return new StatusRuntimeException.Builder().setStatus(this).build();
526526
}
527527

528528
/**
529529
* Same as {@link #asRuntimeException()} but includes the provided trailers in the returned
530530
* exception.
531531
*/
532532
public StatusRuntimeException asRuntimeException(@Nullable Metadata trailers) {
533-
return new StatusRuntimeExceptionBuilder().setStatus(this).setTrailers(trailers).build();
533+
return new StatusRuntimeException.Builder().setStatus(this).setTrailers(trailers).build();
534534
}
535535

536536
/**
537537
* Convert this {@link Status} to an {@link Exception}. Use {@link #fromThrowable}
538538
* to recover this {@link Status} instance when the returned exception is in the causal chain.
539539
*/
540540
public StatusException asException() {
541-
return new StatusExceptionBuilder().setStatus(this).build();
541+
return new StatusException.Builder().setStatus(this).build();
542542
}
543543

544544
/**
545545
* Same as {@link #asException()} but includes the provided trailers in the returned exception.
546546
*/
547547
public StatusException asException(@Nullable Metadata trailers) {
548-
return new StatusExceptionBuilder().setStatus(this).setTrailers(trailers).build();
548+
return new StatusException.Builder().setStatus(this).setTrailers(trailers).build();
549549
}
550550

551551
/** A string representation of the status useful for debugging. */

api/src/main/java/io/grpc/StatusException.java

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class StatusException extends Exception {
3535
*
3636
* @since 1.0.0
3737
*/
38-
StatusException(Status status, @Nullable Metadata trailers, boolean fillInStackTrace) {
38+
protected StatusException(Status status, @Nullable Metadata trailers, boolean fillInStackTrace) {
3939
super(Status.formatThrowableMessage(status), status.getCause());
4040
this.status = status;
4141
this.trailers = trailers;
@@ -69,4 +69,57 @@ public final Status getStatus() {
6969
public final Metadata getTrailers() {
7070
return trailers;
7171
}
72+
73+
/**
74+
* Builder for creating a {@link StatusException}.
75+
*
76+
* @since 1.62.0
77+
*/
78+
public static class Builder {
79+
private Status status;
80+
private Metadata trailers = null;
81+
private boolean fillInStackTrace = true;
82+
83+
/**
84+
* Sets the status.
85+
*
86+
* @since 1.62.0
87+
*/
88+
public Builder setStatus(final Status status) {
89+
this.status = status;
90+
return this;
91+
}
92+
93+
/**
94+
* Sets the trailers.
95+
*
96+
* @since 1.62.0
97+
*/
98+
public Builder setTrailers(final Metadata trailers) {
99+
this.trailers = trailers;
100+
return this;
101+
}
102+
103+
/**
104+
* Sets whether to fill in the stack trace.
105+
*
106+
* @since 1.62.0
107+
*/
108+
public Builder setFillInStackTrace(final boolean fillInStackTrace) {
109+
this.fillInStackTrace = fillInStackTrace;
110+
return this;
111+
}
112+
113+
/**
114+
* Builds the exception.
115+
*
116+
* @since 1.62.0
117+
*/
118+
public StatusException build() {
119+
final StatusException statusException =
120+
new StatusException(status, trailers, fillInStackTrace);
121+
statusException.fillInStackTrace();
122+
return statusException;
123+
}
124+
}
72125
}

api/src/main/java/io/grpc/StatusExceptionBuilder.java

Lines changed: 0 additions & 69 deletions
This file was deleted.

api/src/main/java/io/grpc/StatusRuntimeException.java

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ public class StatusRuntimeException extends RuntimeException {
3737
*
3838
* @since 1.0.0
3939
*/
40-
StatusRuntimeException(Status status, @Nullable Metadata trailers, boolean fillInStackTrace) {
40+
protected StatusRuntimeException(Status status, @Nullable Metadata trailers,
41+
boolean fillInStackTrace) {
4142
super(Status.formatThrowableMessage(status), status.getCause());
4243
this.status = status;
4344
this.trailers = trailers;
@@ -72,4 +73,57 @@ public final Status getStatus() {
7273
public final Metadata getTrailers() {
7374
return trailers;
7475
}
76+
77+
/**
78+
* Builder for creating a {@link StatusRuntimeException}.
79+
*
80+
* @since 1.62.0
81+
*/
82+
public static class Builder {
83+
private Status status;
84+
private Metadata trailers = null;
85+
private boolean fillInStackTrace = true;
86+
87+
/**
88+
* Sets the status.
89+
*
90+
* @since 1.62.0
91+
*/
92+
public Builder setStatus(final Status status) {
93+
this.status = status;
94+
return this;
95+
}
96+
97+
/**
98+
* Sets the trailers.
99+
*
100+
* @since 1.62.0
101+
*/
102+
public Builder setTrailers(final Metadata trailers) {
103+
this.trailers = trailers;
104+
return this;
105+
}
106+
107+
/**
108+
* Sets whether to fill in the stack trace.
109+
*
110+
* @since 1.62.0
111+
*/
112+
public Builder setFillInStackTrace(final boolean fillInStackTrace) {
113+
this.fillInStackTrace = fillInStackTrace;
114+
return this;
115+
}
116+
117+
/**
118+
* Builds the exception.
119+
*
120+
* @since 1.62.0
121+
*/
122+
public StatusRuntimeException build() {
123+
final StatusRuntimeException statusRuntimeException =
124+
new StatusRuntimeException(status, trailers, fillInStackTrace);
125+
statusRuntimeException.fillInStackTrace();
126+
return statusRuntimeException;
127+
}
128+
}
75129
}

api/src/main/java/io/grpc/StatusRuntimeExceptionBuilder.java

Lines changed: 0 additions & 70 deletions
This file was deleted.

api/src/test/java/io/grpc/StatusExceptionTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class StatusExceptionTest {
3131
@Test
3232
public void internalCtorRemovesStack() {
3333
StackTraceElement[] trace =
34-
new StatusExceptionBuilder().setStatus(Status.CANCELLED).setTrailers(null)
34+
new StatusException.Builder().setStatus(Status.CANCELLED).setTrailers(null)
3535
.setFillInStackTrace(false).build().getStackTrace();
3636

3737
assertThat(trace).isEmpty();
@@ -40,7 +40,7 @@ public void internalCtorRemovesStack() {
4040
@Test
4141
public void normalCtorKeepsStack() {
4242
StackTraceElement[] trace =
43-
new StatusExceptionBuilder().setStatus(Status.CANCELLED).setTrailers(null)
43+
new StatusException.Builder().setStatus(Status.CANCELLED).setTrailers(null)
4444
.build().getStackTrace();
4545

4646
assertThat(trace).isNotEmpty();
@@ -49,7 +49,7 @@ public void normalCtorKeepsStack() {
4949
@Test
5050
public void extendPreservesStack() {
5151
StackTraceElement[] trace =
52-
new StatusExceptionBuilder().setStatus(Status.CANCELLED).build().getStackTrace();
52+
new StatusException.Builder().setStatus(Status.CANCELLED).build().getStackTrace();
5353

5454
assertThat(trace).isNotEmpty();
5555
}

api/src/test/java/io/grpc/StatusRuntimeExceptionTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class StatusRuntimeExceptionTest {
3131
@Test
3232
public void internalCtorRemovesStack() {
3333
StackTraceElement[] trace =
34-
new StatusRuntimeExceptionBuilder().setStatus(Status.CANCELLED).setTrailers(null)
34+
new StatusRuntimeException.Builder().setStatus(Status.CANCELLED).setTrailers(null)
3535
.setFillInStackTrace(false).build().getStackTrace();
3636

3737
assertThat(trace).isEmpty();
@@ -40,7 +40,7 @@ public void internalCtorRemovesStack() {
4040
@Test
4141
public void normalCtorKeepsStack() {
4242
StackTraceElement[] trace =
43-
new StatusRuntimeExceptionBuilder().setStatus(Status.CANCELLED).setTrailers(null)
43+
new StatusRuntimeException.Builder().setStatus(Status.CANCELLED).setTrailers(null)
4444
.build().getStackTrace();
4545

4646
assertThat(trace).isNotEmpty();
@@ -49,7 +49,7 @@ public void normalCtorKeepsStack() {
4949
@Test
5050
public void extendPreservesStack() {
5151
StackTraceElement[] trace =
52-
new StatusRuntimeExceptionBuilder().setStatus(Status.CANCELLED).build().getStackTrace();
52+
new StatusRuntimeException.Builder().setStatus(Status.CANCELLED).build().getStackTrace();
5353

5454
assertThat(trace).isNotEmpty();
5555
}

core/src/test/java/io/grpc/internal/AbstractServerStreamTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import io.grpc.InternalStatus;
3535
import io.grpc.Metadata;
3636
import io.grpc.Status;
37-
import io.grpc.StatusRuntimeExceptionBuilder;
37+
import io.grpc.StatusRuntimeException;
3838
import io.grpc.internal.AbstractServerStream.TransportState;
3939
import io.grpc.internal.MessageFramerTest.ByteWritableBuffer;
4040
import java.io.ByteArrayInputStream;
@@ -127,7 +127,7 @@ public void messagesAvailable(StreamListener.MessageProducer producer) {
127127
@Override
128128
public void halfClosed() {
129129
if (streamListenerMessageQueue.isEmpty()) {
130-
throw new StatusRuntimeExceptionBuilder().setStatus(Status.INTERNAL.withDescription(
130+
throw new StatusRuntimeException.Builder().setStatus(Status.INTERNAL.withDescription(
131131
"Half close without request")).build();
132132
}
133133
}

0 commit comments

Comments
 (0)