Skip to content
This repository was archived by the owner on Aug 11, 2023. It is now read-only.

Commit b907b49

Browse files
committed
Fix build.gradle to include latest Guava.
Change services to create named request and response messages (previously anonymous).
1 parent 36e4971 commit b907b49

File tree

8 files changed

+71
-77
lines changed

8 files changed

+71
-77
lines changed

rosjava/src/test/java/org/ros/node/service/ServiceIntegrationTest.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class ServiceIntegrationTest extends RosTest {
4343

4444
@Test
4545
public void testPesistentServiceConnection() throws Exception {
46-
final CountDownServiceServerListener<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response> countDownServiceServerListener =
46+
final CountDownServiceServerListener<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse> countDownServiceServerListener =
4747
CountDownServiceServerListener.newDefault();
4848
nodeMainExecutor.execute(new AbstractNodeMain() {
4949
@Override
@@ -53,15 +53,15 @@ public GraphName getDefaultNodeName() {
5353

5454
@Override
5555
public void onStart(final ConnectedNode connectedNode) {
56-
ServiceServer<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response> serviceServer =
56+
ServiceServer<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse> serviceServer =
5757
connectedNode
5858
.newServiceServer(
5959
SERVICE_NAME,
6060
test_ros.AddTwoInts._TYPE,
61-
new ServiceResponseBuilder<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response>() {
61+
new ServiceResponseBuilder<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse>() {
6262
@Override
63-
public void build(test_ros.AddTwoInts.Request request,
64-
test_ros.AddTwoInts.Response response) {
63+
public void build(test_ros.AddTwoIntsRequest request,
64+
test_ros.AddTwoIntsResponse response) {
6565
response.setSum(request.getA() + request.getB());
6666
}
6767
});
@@ -86,7 +86,7 @@ public GraphName getDefaultNodeName() {
8686

8787
@Override
8888
public void onStart(ConnectedNode connectedNode) {
89-
ServiceClient<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response> serviceClient;
89+
ServiceClient<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse> serviceClient;
9090
try {
9191
serviceClient = connectedNode.newServiceClient(SERVICE_NAME, test_ros.AddTwoInts._TYPE);
9292
// Test that requesting another client for the same service returns
@@ -97,12 +97,12 @@ public void onStart(ConnectedNode connectedNode) {
9797
} catch (ServiceNotFoundException e) {
9898
throw new RosRuntimeException(e);
9999
}
100-
test_ros.AddTwoInts.Request request = serviceClient.newMessage();
100+
test_ros.AddTwoIntsRequest request = serviceClient.newMessage();
101101
request.setA(2);
102102
request.setB(2);
103-
serviceClient.call(request, new ServiceResponseListener<test_ros.AddTwoInts.Response>() {
103+
serviceClient.call(request, new ServiceResponseListener<test_ros.AddTwoIntsResponse>() {
104104
@Override
105-
public void onSuccess(test_ros.AddTwoInts.Response response) {
105+
public void onSuccess(test_ros.AddTwoIntsResponse response) {
106106
assertEquals(response.getSum(), 4);
107107
latch.countDown();
108108
}
@@ -121,7 +121,7 @@ public void onFailure(RemoteException e) {
121121
@Test
122122
public void testRequestFailure() throws Exception {
123123
final String errorMessage = "Error!";
124-
final CountDownServiceServerListener<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response> countDownServiceServerListener =
124+
final CountDownServiceServerListener<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse> countDownServiceServerListener =
125125
CountDownServiceServerListener.newDefault();
126126
nodeMainExecutor.execute(new AbstractNodeMain() {
127127
@Override
@@ -131,15 +131,15 @@ public GraphName getDefaultNodeName() {
131131

132132
@Override
133133
public void onStart(ConnectedNode connectedNode) {
134-
ServiceServer<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response> serviceServer =
134+
ServiceServer<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse> serviceServer =
135135
connectedNode
136136
.newServiceServer(
137137
SERVICE_NAME,
138138
test_ros.AddTwoInts._TYPE,
139-
new ServiceResponseBuilder<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response>() {
139+
new ServiceResponseBuilder<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse>() {
140140
@Override
141-
public void build(test_ros.AddTwoInts.Request request,
142-
test_ros.AddTwoInts.Response response) throws ServiceException {
141+
public void build(test_ros.AddTwoIntsRequest request,
142+
test_ros.AddTwoIntsResponse response) throws ServiceException {
143143
throw new ServiceException(errorMessage);
144144
}
145145
});
@@ -158,16 +158,16 @@ public GraphName getDefaultNodeName() {
158158

159159
@Override
160160
public void onStart(ConnectedNode connectedNode) {
161-
ServiceClient<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response> serviceClient;
161+
ServiceClient<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse> serviceClient;
162162
try {
163163
serviceClient = connectedNode.newServiceClient(SERVICE_NAME, test_ros.AddTwoInts._TYPE);
164164
} catch (ServiceNotFoundException e) {
165165
throw new RosRuntimeException(e);
166166
}
167-
test_ros.AddTwoInts.Request request = serviceClient.newMessage();
168-
serviceClient.call(request, new ServiceResponseListener<test_ros.AddTwoInts.Response>() {
167+
test_ros.AddTwoIntsRequest request = serviceClient.newMessage();
168+
serviceClient.call(request, new ServiceResponseListener<test_ros.AddTwoIntsResponse>() {
169169
@Override
170-
public void onSuccess(test_ros.AddTwoInts.Response message) {
170+
public void onSuccess(test_ros.AddTwoIntsResponse message) {
171171
fail();
172172
}
173173

rosjava_bootstrap/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ dependencies {
1818
compile 'org.apache.commons:com.springsource.org.apache.commons.codec:1.3.0'
1919
compile 'org.apache.commons:com.springsource.org.apache.commons.lang:2.4.0'
2020
compile 'org.apache.commons:com.springsource.org.apache.commons.io:1.4.0'
21-
compile 'com.google.guava:guava:r07'
21+
compile 'com.google.guava:guava:12.0'
2222
testCompile 'junit:junit:4.8.2'
2323
}
2424

rosjava_bootstrap/src/main/java/org/ros/internal/message/GenerateInterfaces.java

Lines changed: 27 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,7 @@ private void writeTopicInterfaces(File outputDirectory, Collection<String> packa
7676
for (MessageIdentifier topicType : topicTypes) {
7777
String definition = messageDefinitionProviderChain.get(topicType.getType());
7878
MessageDeclaration messageDeclaration = new MessageDeclaration(topicType, definition);
79-
MessageInterfaceBuilder builder = new MessageInterfaceBuilder();
80-
builder.setMessageDeclaration(messageDeclaration);
81-
builder.setPackageName(messageDeclaration.getPackage());
82-
builder.setInterfaceName(messageDeclaration.getName());
83-
builder.setAddConstantsAndMethods(true);
84-
String content;
85-
try {
86-
content = builder.build(messageFactory);
87-
} catch (Exception e) {
88-
System.out.println(String.format("Failed to generate interface for %s: %s",
89-
topicType.getType(), e.getMessage()));
90-
continue;
91-
}
92-
File file = new File(outputDirectory, topicType.getType() + ".java");
93-
FileUtils.writeStringToFile(file, content);
79+
writeInterface(messageDeclaration, outputDirectory, true);
9480
}
9581
}
9682

@@ -117,40 +103,34 @@ private void writeServiceInterfaces(File outputDirectory, Collection<String> pac
117103
}
118104
for (MessageIdentifier serviceType : serviceTypes) {
119105
String definition = messageDefinitionProviderChain.get(serviceType.getType());
120-
121-
MessageInterfaceBuilder builder = new MessageInterfaceBuilder();
122-
builder.setMessageDeclaration(new MessageDeclaration(serviceType, definition));
123-
builder.setPackageName(serviceType.getPackage());
124-
builder.setInterfaceName(serviceType.getName());
125-
builder.setAddConstantsAndMethods(false);
126-
106+
MessageDeclaration serviceDeclaration =
107+
MessageDeclaration.of(serviceType.getType(), definition);
108+
writeInterface(serviceDeclaration, outputDirectory, false);
127109
List<String> requestAndResponse = MessageDefinitionTupleParser.parse(definition, 2);
128-
MessageDeclaration request = new MessageDeclaration(serviceType, requestAndResponse.get(0));
129-
MessageDeclaration response = new MessageDeclaration(serviceType, requestAndResponse.get(1));
130-
131-
MessageInterfaceBuilder requestBuilder = new MessageInterfaceBuilder();
132-
requestBuilder.setMessageDeclaration(request);
133-
requestBuilder.setInterfaceName("Request");
134-
requestBuilder.setAddConstantsAndMethods(true);
135-
136-
MessageInterfaceBuilder responseBuilder = new MessageInterfaceBuilder();
137-
responseBuilder.setMessageDeclaration(response);
138-
responseBuilder.setInterfaceName("Response");
139-
responseBuilder.setAddConstantsAndMethods(true);
110+
MessageDeclaration requestDeclaration =
111+
MessageDeclaration.of(serviceType.getType() + "Request", requestAndResponse.get(0));
112+
MessageDeclaration responseDeclaration =
113+
MessageDeclaration.of(serviceType.getType() + "Response", requestAndResponse.get(1));
114+
writeInterface(requestDeclaration, outputDirectory, true);
115+
writeInterface(responseDeclaration, outputDirectory, true);
116+
}
117+
}
140118

141-
String nestedContent;
142-
try {
143-
nestedContent =
144-
requestBuilder.build(messageFactory) + "\n" + responseBuilder.build(messageFactory);
145-
} catch (Exception e) {
146-
System.err.println(String.format("Failed to generate interface for %s: %s",
147-
serviceType.getType(), e.getMessage()));
148-
continue;
149-
}
150-
builder.setNestedContent(nestedContent);
151-
File file = new File(outputDirectory, serviceType.getType() + ".java");
152-
// TODO(damonkohler): Passing in null here is confusing.
153-
FileUtils.writeStringToFile(file, builder.build(null));
119+
private void writeInterface(MessageDeclaration messageDeclaration, File outputDirectory,
120+
boolean addConstantsAndMethods) {
121+
MessageInterfaceBuilder builder = new MessageInterfaceBuilder();
122+
builder.setPackageName(messageDeclaration.getPackage());
123+
builder.setInterfaceName(messageDeclaration.getName());
124+
builder.setMessageDeclaration(messageDeclaration);
125+
builder.setAddConstantsAndMethods(addConstantsAndMethods);
126+
try {
127+
String content;
128+
content = builder.build(messageFactory);
129+
File file = new File(outputDirectory, messageDeclaration.getType() + ".java");
130+
FileUtils.writeStringToFile(file, content);
131+
} catch (Exception e) {
132+
System.out.println(String.format("Failed to generate interface for %s: %s",
133+
messageDeclaration.getType(), e.getMessage()));
154134
}
155135
}
156136

rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceDescription.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,18 @@
2929
*/
3030
public class ServiceDescription extends MessageDeclaration {
3131

32+
private final String requestType;
3233
private final String requestDefinition;
34+
private final String responseType;
3335
private final String responseDefinition;
3436
private final String md5Checksum;
3537

3638
public ServiceDescription(String type, String definition, String md5Checksum) {
3739
super(MessageIdentifier.of(type), definition);
3840
this.md5Checksum = md5Checksum;
3941
List<String> requestAndResponse = MessageDefinitionTupleParser.parse(definition, 2);
42+
requestType = type + "Request";
43+
responseType = type + "Response";
4044
requestDefinition = requestAndResponse.get(0);
4145
responseDefinition = requestAndResponse.get(1);
4246
}
@@ -45,10 +49,18 @@ public String getMd5Checksum() {
4549
return md5Checksum;
4650
}
4751

52+
public String getRequestType() {
53+
return requestType;
54+
}
55+
4856
public String getRequestDefinition() {
4957
return requestDefinition;
5058
}
5159

60+
public String getResponseType() {
61+
return responseType;
62+
}
63+
5264
public String getResponseDefinition() {
5365
return responseDefinition;
5466
}

rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceRequestMessageFactory.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.ros.internal.message.service;
1818

1919
import org.ros.internal.message.DefaultMessageFactory;
20+
import org.ros.internal.message.DefaultMessageInterfaceClassProvider;
2021
import org.ros.internal.message.MessageProxyFactory;
2122
import org.ros.message.MessageDefinitionProvider;
2223
import org.ros.message.MessageFactory;
@@ -34,13 +35,13 @@ public ServiceRequestMessageFactory(MessageDefinitionProvider messageDefinitionP
3435
serviceDescriptionFactory = new ServiceDescriptionFactory(messageDefinitionProvider);
3536
messageFactory = new DefaultMessageFactory(messageDefinitionProvider);
3637
messageProxyFactory =
37-
new MessageProxyFactory(new ServiceRequestMessageInterfaceClassProvider(), messageFactory);
38+
new MessageProxyFactory(new DefaultMessageInterfaceClassProvider(), messageFactory);
3839
}
3940

4041
@Override
4142
public <T> T newFromType(String serviceType) {
4243
ServiceDescription serviceDescription = serviceDescriptionFactory.newFromType(serviceType);
43-
return messageProxyFactory.newMessageProxy(serviceType,
44+
return messageProxyFactory.newMessageProxy(serviceDescription.getRequestType(),
4445
serviceDescription.getRequestDefinition());
4546
}
4647
}

rosjava_bootstrap/src/main/java/org/ros/internal/message/service/ServiceResponseMessageFactory.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.ros.internal.message.service;
1818

1919
import org.ros.internal.message.DefaultMessageFactory;
20+
import org.ros.internal.message.DefaultMessageInterfaceClassProvider;
2021
import org.ros.internal.message.MessageProxyFactory;
2122
import org.ros.message.MessageDefinitionProvider;
2223
import org.ros.message.MessageFactory;
@@ -34,13 +35,13 @@ public ServiceResponseMessageFactory(MessageDefinitionProvider messageDefinition
3435
serviceDescriptionFactory = new ServiceDescriptionFactory(messageDefinitionProvider);
3536
messageFactory = new DefaultMessageFactory(messageDefinitionProvider);
3637
messageProxyFactory =
37-
new MessageProxyFactory(new ServiceResponseMessageInterfaceClassProvider(), messageFactory);
38+
new MessageProxyFactory(new DefaultMessageInterfaceClassProvider(), messageFactory);
3839
}
3940

4041
@Override
4142
public <T> T newFromType(String serviceType) {
4243
ServiceDescription serviceDescription = serviceDescriptionFactory.newFromType(serviceType);
43-
return messageProxyFactory.newMessageProxy(serviceType,
44+
return messageProxyFactory.newMessageProxy(serviceDescription.getResponseType(),
4445
serviceDescription.getResponseDefinition());
4546
}
4647
}

rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Client.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,18 @@ public GraphName getDefaultNodeName() {
4040

4141
@Override
4242
public void onStart(final ConnectedNode connectedNode) {
43-
ServiceClient<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response> serviceClient;
43+
ServiceClient<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse> serviceClient;
4444
try {
4545
serviceClient = connectedNode.newServiceClient("add_two_ints", test_ros.AddTwoInts._TYPE);
4646
} catch (ServiceNotFoundException e) {
4747
throw new RosRuntimeException(e);
4848
}
49-
final test_ros.AddTwoInts.Request request = serviceClient.newMessage();
49+
final test_ros.AddTwoIntsRequest request = serviceClient.newMessage();
5050
request.setA(2);
5151
request.setB(2);
52-
serviceClient.call(request, new ServiceResponseListener<test_ros.AddTwoInts.Response>() {
52+
serviceClient.call(request, new ServiceResponseListener<test_ros.AddTwoIntsResponse>() {
5353
@Override
54-
public void onSuccess(test_ros.AddTwoInts.Response response) {
54+
public void onSuccess(test_ros.AddTwoIntsResponse response) {
5555
connectedNode.getLog().info(
5656
String.format("%d + %d = %d", request.getA(), request.getB(), response.getSum()));
5757
}

rosjava_tutorial_services/src/main/java/org/ros/rosjava_tutorial_services/Server.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ public GraphName getDefaultNodeName() {
3838
@Override
3939
public void onStart(ConnectedNode connectedNode) {
4040
connectedNode.newServiceServer("add_two_ints", test_ros.AddTwoInts._TYPE,
41-
new ServiceResponseBuilder<test_ros.AddTwoInts.Request, test_ros.AddTwoInts.Response>() {
41+
new ServiceResponseBuilder<test_ros.AddTwoIntsRequest, test_ros.AddTwoIntsResponse>() {
4242
@Override
43-
public void build(test_ros.AddTwoInts.Request request,
44-
test_ros.AddTwoInts.Response response) {
43+
public void
44+
build(test_ros.AddTwoIntsRequest request, test_ros.AddTwoIntsResponse response) {
4545
response.setSum(request.getA() + request.getB());
4646
}
4747
});

0 commit comments

Comments
 (0)