Skip to content

Commit c343067

Browse files
committed
Simplified code in ServiceCall, in ServiceMethodInvoker, updated codecs Example1
1 parent dffde80 commit c343067

File tree

5 files changed

+45
-92
lines changed

5 files changed

+45
-92
lines changed

services-api/src/main/java/io/scalecube/services/ServiceCall.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -427,19 +427,26 @@ private Address addressLookup(ServiceMessage request) {
427427
}
428428

429429
private ServiceMessage toServiceMessage(MethodInfo methodInfo, Object request) {
430+
final ServiceMessage.Builder builder;
431+
final Object data;
432+
final String dataFormat;
433+
430434
if (request instanceof ServiceMessage) {
431-
return ServiceMessage.from((ServiceMessage) request)
432-
.qualifier(methodInfo.serviceName(), methodInfo.methodName())
433-
.headers(credentials)
434-
.dataFormatIfAbsent(contentType)
435-
.build();
435+
ServiceMessage message = (ServiceMessage) request;
436+
builder = ServiceMessage.from(message);
437+
data = message.data();
438+
dataFormat = message.dataFormat(); // data format from message
439+
} else {
440+
builder = ServiceMessage.builder();
441+
data = request;
442+
dataFormat = contentType; // data format from service call
436443
}
437444

438-
return ServiceMessage.builder()
445+
return builder
439446
.qualifier(methodInfo.serviceName(), methodInfo.methodName())
440447
.headers(credentials)
441-
.data(request)
442-
.dataFormatIfAbsent(contentType)
448+
.data(data)
449+
.dataFormat(dataFormat)
443450
.build();
444451
}
445452

services-api/src/main/java/io/scalecube/services/api/ServiceMessage.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -216,21 +216,6 @@ public Builder dataFormat(String dataFormat) {
216216
return this;
217217
}
218218

219-
/**
220-
* Setter for header {@link #HEADER_DATA_FORMAT}. Does nothing if input {@code dataFormat} is
221-
* null or {@code headers} already contains value for {@link #HEADER_DATA_FORMAT}.
222-
*
223-
* @param dataFormat data format, optional
224-
* @return self
225-
*/
226-
public Builder dataFormatIfAbsent(String dataFormat) {
227-
if (dataFormat == null) {
228-
return this;
229-
}
230-
headers.putIfAbsent(HEADER_DATA_FORMAT, dataFormat);
231-
return this;
232-
}
233-
234219
private Map<String, String> headers() {
235220
return this.headers;
236221
}

services-api/src/main/java/io/scalecube/services/methods/ServiceMethodInvoker.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -191,18 +191,19 @@ private Object toRequest(ServiceMessage message) {
191191
}
192192

193193
private ServiceMessage toResponse(Object response, String qualifier, String dataFormat) {
194+
final ServiceMessage.Builder builder;
195+
final Object data;
196+
194197
if (response instanceof ServiceMessage) {
195198
ServiceMessage message = (ServiceMessage) response;
196-
if (dataFormat != null && !dataFormat.equals(message.dataFormat())) {
197-
return ServiceMessage.from(message).qualifier(qualifier).dataFormat(dataFormat).build();
198-
}
199-
return ServiceMessage.from(message).qualifier(qualifier).build();
199+
builder = ServiceMessage.from(message);
200+
data = message.data();
201+
} else {
202+
builder = ServiceMessage.builder();
203+
data = response;
200204
}
201-
return ServiceMessage.builder()
202-
.qualifier(qualifier)
203-
.data(response)
204-
.dataFormatIfAbsent(dataFormat)
205-
.build();
205+
206+
return builder.qualifier(qualifier).data(data).dataFormat(dataFormat).build();
206207
}
207208

208209
private Context newPrincipalContext(Object authData, Context context) {

services-examples-parent/services-examples/src/main/java/io/scalecube/services/examples/codecs/Example1.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99

1010
public class Example1 {
1111

12-
public static final String CONTENT_TYPE = "application/protostuff";
12+
public static final String JSON = "application/json";
13+
public static final String PROTOSTUFF = "application/protostuff";
14+
public static final String OCTET_STREAM = "application/octet-stream";
1315

1416
/**
1517
* Start the example.
@@ -22,7 +24,7 @@ public static void main(String[] args) {
2224
Microservices.builder()
2325
.discovery(ScalecubeServiceDiscovery::new)
2426
.transport(RSocketServiceTransport::new)
25-
.contentType(CONTENT_TYPE) // need to send with non-default data format
27+
.defaultContentType(PROTOSTUFF) // set explicit default data format
2628
.startAwait();
2729

2830
final Address seedAddress = seed.discovery().address();
@@ -38,11 +40,22 @@ public static void main(String[] args) {
3840
.services(new GreetingServiceImpl())
3941
.startAwait();
4042

41-
// Create service proxy
42-
GreetingsService service = seed.call().api(GreetingsService.class);
43-
44-
// Execute the services and subscribe to service events
45-
service.sayHello("joe").subscribe(consumer -> System.out.println(consumer.message()));
43+
seed.call()
44+
.api(GreetingsService.class)
45+
.sayHello("joe (on default dataFormat PROTOSTUFF")
46+
.subscribe(consumer -> System.out.println(consumer.message()));
47+
48+
seed.call()
49+
.contentType(JSON)
50+
.api(GreetingsService.class)
51+
.sayHello("alice (on JSON dataFormat)")
52+
.subscribe(consumer -> System.out.println(consumer.message()));
53+
54+
seed.call()
55+
.contentType(OCTET_STREAM)
56+
.api(GreetingsService.class)
57+
.sayHello("bob on java native (Serializable/Externalizable) dataFormat")
58+
.subscribe(consumer -> System.out.println(consumer.message()));
4659

4760
seed.onShutdown().block();
4861
ms.onShutdown().block();

services-examples-parent/services-examples/src/main/java/io/scalecube/services/examples/codecs/Example2.java

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

0 commit comments

Comments
 (0)