Skip to content

Commit cddc17d

Browse files
authored
Fix some java compiler warnings (#79)
Signed-off-by: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>
1 parent bbed518 commit cddc17d

File tree

9 files changed

+123
-81
lines changed

9 files changed

+123
-81
lines changed

rcljava/src/main/java/org/ros2/rcljava/action/ActionServerImpl.java

Lines changed: 64 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.ros2.rcljava.action;
1717

1818
import java.lang.ref.WeakReference;
19+
import java.lang.SuppressWarnings;
1920
import java.util.ArrayList;
2021
import java.util.Collection;
2122
import java.util.HashMap;
@@ -171,6 +172,8 @@ public synchronized void abort(ResultDefinition<T> result) {
171172
/**
172173
* {@inheritDoc}
173174
*/
175+
// TODO(ivanpauno): Improve generated code API so we don't need this.
176+
@SuppressWarnings("unchecked")
174177
public synchronized void publishFeedback(FeedbackDefinition<T> feedback) {
175178
Class<? extends FeedbackMessageDefinition> feedbackMessageType =
176179
ActionServerImpl.this.actionTypeInstance.getFeedbackMessageType();
@@ -202,7 +205,7 @@ public final long getHandle() {
202205

203206
private synchronized final void toTerminalState(byte status, ResultDefinition<T> result) {
204207
nativeUpdateGoalState(this.handle, status);
205-
ResultResponseDefinition<T> resultResponse = ActionServerImpl.this.createResultResponse();
208+
ResultResponseDefinition<T> resultResponse = ActionServerImpl.this.createResultResponseUnchecked();
206209
resultResponse.setGoalStatus(status);
207210
resultResponse.setResult(result);
208211
ActionServerImpl.this.sendResult(goalInfo.getGoalId().getUuidAsList(), resultResponse);
@@ -337,6 +340,12 @@ public boolean isReady(long waitSetHandle) {
337340
return false;
338341
}
339342

343+
@SuppressWarnings("unchecked")
344+
private GoalCallback.GoalResponse
345+
handleGoalUnchecked(GoalRequestDefinition<T> requestMessage) {
346+
return this.goalCallback.handleGoal(requestMessage);
347+
}
348+
340349
private ActionServerGoalHandle<T> executeGoalRequest(
341350
RMWRequestId rmwRequestId,
342351
GoalRequestDefinition<T> requestMessage,
@@ -358,7 +367,7 @@ private ActionServerGoalHandle<T> executeGoalRequest(
358367
}
359368

360369
// Call user callback
361-
GoalCallback.GoalResponse response = this.goalCallback.handleGoal(requestMessage);
370+
GoalCallback.GoalResponse response = this.handleGoalUnchecked(requestMessage);
362371

363372
boolean accepted = GoalCallback.GoalResponse.ACCEPT_AND_DEFER == response
364373
|| GoalCallback.GoalResponse.ACCEPT_AND_EXECUTE == response;
@@ -542,17 +551,6 @@ private action_msgs.msg.GoalInfo createGoalInfo(List<Byte> goalUuid) {
542551
return goalInfo;
543552
}
544553

545-
private ResultResponseDefinition<T> createResultResponse() {
546-
ResultResponseDefinition<T> resultResponse;
547-
try {
548-
resultResponse =
549-
this.actionTypeInstance.getGetResultResponseType().getDeclaredConstructor().newInstance();
550-
} catch (ReflectiveOperationException ex) {
551-
throw new IllegalStateException("Failed to instantiate provided action type: ", ex);
552-
}
553-
return resultResponse;
554-
}
555-
556554
// This will store the result, so it can be sent to future result requests, and
557555
// will also send a result response to all requests that were already made.
558556
private void sendResult(List<Byte> goalUuid, ResultResponseDefinition<T> resultResponse) {
@@ -571,23 +569,61 @@ private void sendResult(List<Byte> goalUuid, ResultResponseDefinition<T> resultR
571569
}
572570
}
573571

572+
// TODO(ivanpauno): Improve generated code API so we don't need this.
573+
@SuppressWarnings("unchecked")
574+
private ResultRequestDefinition<T> createResultRequestUnchecked() {
575+
ResultRequestDefinition<T> resultRequest;
576+
try {
577+
resultRequest =
578+
this.actionTypeInstance.getGetResultRequestType().getDeclaredConstructor().newInstance();
579+
} catch (ReflectiveOperationException ex) {
580+
throw new IllegalStateException("Failed to instantiate provided action type: ", ex);
581+
}
582+
return resultRequest;
583+
}
584+
585+
// TODO(ivanpauno): Improve generated code API so we don't need this.
586+
@SuppressWarnings("unchecked")
587+
private ResultResponseDefinition<T> createResultResponseUnchecked() {
588+
ResultResponseDefinition<T> resultResponse;
589+
try {
590+
resultResponse =
591+
this.actionTypeInstance.getGetResultResponseType().getDeclaredConstructor().newInstance();
592+
} catch (ReflectiveOperationException ex) {
593+
throw new IllegalStateException("Failed to instantiate provided action type: ", ex);
594+
}
595+
return resultResponse;
596+
}
597+
598+
// TODO(ivanpauno): Improve generated code API so we don't need this.
599+
@SuppressWarnings("unchecked")
600+
private GoalRequestDefinition<T> newRequestUnchecked() {
601+
Class<? extends GoalRequestDefinition> requestType = this.actionTypeInstance.getSendGoalRequestType();
602+
try {
603+
return requestType.getDeclaredConstructor().newInstance();
604+
} catch (ReflectiveOperationException ex) {
605+
throw new IllegalStateException("Failed to instantiate request: ", ex);
606+
}
607+
}
608+
609+
// TODO(ivanpauno): Improve generated code API so we don't need this.
610+
@SuppressWarnings("unchecked")
611+
private GoalResponseDefinition<T> newResponseUnchecked() {
612+
Class<? extends GoalResponseDefinition> responseType = this.actionTypeInstance.getSendGoalResponseType();
613+
try {
614+
return responseType.getDeclaredConstructor().newInstance();
615+
} catch (ReflectiveOperationException ex) {
616+
throw new IllegalStateException("Failed to instantiate responce: ", ex);
617+
}
618+
}
619+
574620
/**
575621
* {@inheritDoc}
576622
*/
577623
public void execute() {
578624
if (this.isGoalRequestReady()) {
579-
Class<? extends GoalRequestDefinition> requestType = this.actionTypeInstance.getSendGoalRequestType();
580-
Class<? extends GoalResponseDefinition> responseType = this.actionTypeInstance.getSendGoalResponseType();
581-
582-
GoalRequestDefinition<T> requestMessage = null;
583-
GoalResponseDefinition<T> responseMessage = null;
584-
585-
try {
586-
requestMessage = requestType.getDeclaredConstructor().newInstance();
587-
responseMessage = responseType.getDeclaredConstructor().newInstance();
588-
} catch (ReflectiveOperationException ex) {
589-
throw new IllegalStateException("Failed to instantiate request or responce: ", ex);
590-
}
625+
GoalRequestDefinition<T> requestMessage = newRequestUnchecked();
626+
GoalResponseDefinition<T> responseMessage = newResponseUnchecked();
591627

592628
if (requestMessage != null && responseMessage != null) {
593629
long requestFromJavaConverterHandle = requestMessage.getFromJavaConverterInstance();
@@ -643,14 +679,7 @@ public void execute() {
643679
}
644680

645681
if (this.isResultRequestReady()) {
646-
Class<? extends ResultRequestDefinition> requestType = this.actionTypeInstance.getGetResultRequestType();
647-
648-
ResultRequestDefinition<T> requestMessage = null;
649-
try {
650-
requestMessage = requestType.getDeclaredConstructor().newInstance();
651-
} catch (ReflectiveOperationException ex) {
652-
throw new IllegalArgumentException("Failed to instantiate action result request: ", ex);
653-
}
682+
ResultRequestDefinition<T> requestMessage = createResultRequestUnchecked();
654683

655684
if (requestMessage != null) {
656685
long requestFromJavaConverterHandle = requestMessage.getFromJavaConverterInstance();
@@ -672,7 +701,7 @@ public void execute() {
672701

673702
ResultResponseDefinition<T> resultResponse = null;
674703
if (!goalExists) {
675-
resultResponse = this.createResultResponse();
704+
resultResponse = this.createResultResponseUnchecked();
676705
resultResponse.setGoalStatus(action_msgs.msg.GoalStatus.STATUS_UNKNOWN);
677706
} else {
678707
resultResponse = this.goalResults.get(goalUuid);
@@ -682,7 +711,7 @@ public void execute() {
682711
List<RMWRequestId> requestIds = null;
683712
requestIds = this.goalRequests.get(goalUuid);
684713
if (requestIds == null) {
685-
requestIds = new ArrayList();
714+
requestIds = new ArrayList<RMWRequestId>();
686715
this.goalRequests.put(goalUuid, requestIds);
687716
}
688717
requestIds.add(rmwRequestId);

rcljava/src/main/java/org/ros2/rcljava/node/NodeImpl.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -879,15 +879,15 @@ public rcl_interfaces.msg.ListParametersResult listParameters(
879879
}
880880

881881
public final Collection<NodeNameInfo> getNodeNames() {
882-
ArrayList<NodeNameInfo> nodeNames = new ArrayList();
882+
ArrayList<NodeNameInfo> nodeNames = new ArrayList<NodeNameInfo>();
883883
nativeGetNodeNames(this.handle, nodeNames);
884884
return nodeNames;
885885
}
886886

887887
private native static final void nativeGetNodeNames(long handle, ArrayList<NodeNameInfo> nodeNames);
888888

889889
public final Collection<NameAndTypes> getTopicNamesAndTypes() {
890-
Collection<NameAndTypes> namesAndTypes = new ArrayList();
890+
Collection<NameAndTypes> namesAndTypes = new ArrayList<NameAndTypes>();
891891
nativeGetTopicNamesAndTypes(this.handle, namesAndTypes);
892892
return namesAndTypes;
893893
}
@@ -896,7 +896,7 @@ private static native final void nativeGetTopicNamesAndTypes(
896896
long handle, Collection<NameAndTypes> namesAndTypes);
897897

898898
public final Collection<NameAndTypes> getServiceNamesAndTypes() {
899-
Collection<NameAndTypes> namesAndTypes = new ArrayList();
899+
Collection<NameAndTypes> namesAndTypes = new ArrayList<NameAndTypes>();
900900
nativeGetServiceNamesAndTypes(this.handle, namesAndTypes);
901901
return namesAndTypes;
902902
}
@@ -905,7 +905,7 @@ private static native final void nativeGetServiceNamesAndTypes(
905905
long handle, Collection<NameAndTypes> namesAndTypes);
906906

907907
public final Collection<EndpointInfo> getPublishersInfo(final String topicName) {
908-
ArrayList<EndpointInfo> returnValue = new ArrayList();
908+
ArrayList<EndpointInfo> returnValue = new ArrayList<EndpointInfo>();
909909
nativeGetPublishersInfo(this.handle, topicName, returnValue);
910910
return returnValue;
911911
}
@@ -914,7 +914,7 @@ private native static final void nativeGetPublishersInfo(
914914
final long handle, final String topicName, ArrayList<EndpointInfo> endpointInfo);
915915

916916
public final Collection<EndpointInfo> getSubscriptionsInfo(final String topicName) {
917-
ArrayList<EndpointInfo> returnValue = new ArrayList();
917+
ArrayList<EndpointInfo> returnValue = new ArrayList<EndpointInfo>();
918918
nativeGetSubscriptionsInfo(this.handle, topicName, returnValue);
919919
return returnValue;
920920
}
@@ -925,7 +925,7 @@ private native static final void nativeGetSubscriptionsInfo(
925925
public final Collection<NameAndTypes> getPublisherNamesAndTypesByNode(
926926
String nodeName, String nodeNamespace)
927927
{
928-
Collection<NameAndTypes> namesAndTypes = new ArrayList();
928+
Collection<NameAndTypes> namesAndTypes = new ArrayList<NameAndTypes>();
929929
nativeGetPublisherNamesAndTypesByNode(this.handle, nodeName, nodeNamespace, namesAndTypes);
930930
return namesAndTypes;
931931
}
@@ -936,7 +936,7 @@ private static native final Collection<NameAndTypes> nativeGetPublisherNamesAndT
936936
public final Collection<NameAndTypes> getSubscriptionNamesAndTypesByNode(
937937
String nodeName, String nodeNamespace)
938938
{
939-
Collection<NameAndTypes> namesAndTypes = new ArrayList();
939+
Collection<NameAndTypes> namesAndTypes = new ArrayList<NameAndTypes>();
940940
nativeGetSubscriptionNamesAndTypesByNode(this.handle, nodeName, nodeNamespace, namesAndTypes);
941941
return namesAndTypes;
942942
}
@@ -947,7 +947,7 @@ private static native final Collection<NameAndTypes> nativeGetSubscriptionNamesA
947947
public final Collection<NameAndTypes> getServiceNamesAndTypesByNode(
948948
String nodeName, String nodeNamespace)
949949
{
950-
Collection<NameAndTypes> namesAndTypes = new ArrayList();
950+
Collection<NameAndTypes> namesAndTypes = new ArrayList<NameAndTypes>();
951951
nativeGetServiceNamesAndTypesByNode(this.handle, nodeName, nodeNamespace, namesAndTypes);
952952
return namesAndTypes;
953953
}
@@ -958,7 +958,7 @@ private static native final Collection<NameAndTypes> nativeGetServiceNamesAndTyp
958958
public final Collection<NameAndTypes> getClientNamesAndTypesByNode(
959959
String nodeName, String nodeNamespace)
960960
{
961-
Collection<NameAndTypes> namesAndTypes = new ArrayList();
961+
Collection<NameAndTypes> namesAndTypes = new ArrayList<NameAndTypes>();
962962
nativeGetClientNamesAndTypesByNode(this.handle, nodeName, nodeNamespace, namesAndTypes);
963963
return namesAndTypes;
964964
}

rcljava/src/main/java/org/ros2/rcljava/publisher/PublisherImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ public final WeakReference<Node> getNodeReference() {
117117
public final
118118
<T extends PublisherEventStatus> EventHandler<T, Publisher>
119119
createEventHandler(Supplier<T> factory, Consumer<T> callback) {
120-
final WeakReference<Collection<EventHandler>> weakEventHandlers = new WeakReference(
121-
this.eventHandlers);
120+
final WeakReference<Collection<EventHandler>> weakEventHandlers =
121+
new WeakReference<Collection<EventHandler>>(this.eventHandlers);
122122
Consumer<EventHandler> disposeCallback = new Consumer<EventHandler>() {
123123
public void accept(EventHandler eventHandler) {
124124
Collection<EventHandler> eventHandlers = weakEventHandlers.get();
@@ -129,7 +129,7 @@ public void accept(EventHandler eventHandler) {
129129
};
130130
T status = factory.get();
131131
long eventHandle = nativeCreateEvent(this.handle, status.getPublisherEventType());
132-
EventHandler<T, Publisher> eventHandler = new EventHandlerImpl(
132+
EventHandler<T, Publisher> eventHandler = new EventHandlerImpl<T, Publisher>(
133133
new WeakReference<Publisher>(this), eventHandle, factory, callback, disposeCallback);
134134
this.eventHandlers.add(eventHandler);
135135
return eventHandler;

rcljava/src/main/java/org/ros2/rcljava/subscription/SubscriptionImpl.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ public final WeakReference<Node> getNodeReference() {
129129
public final
130130
<T extends SubscriptionEventStatus> EventHandler<T, Subscription>
131131
createEventHandler(Supplier<T> factory, Consumer<T> callback) {
132-
final WeakReference<Collection<EventHandler>> weakEventHandlers = new WeakReference(
133-
this.eventHandlers);
132+
final WeakReference<Collection<EventHandler>> weakEventHandlers =
133+
new WeakReference<Collection<EventHandler>>(this.eventHandlers);
134134
Consumer<EventHandler> disposeCallback = new Consumer<EventHandler>() {
135135
public void accept(EventHandler eventHandler) {
136136
Collection<EventHandler> eventHandlers = weakEventHandlers.get();
@@ -141,8 +141,9 @@ public void accept(EventHandler eventHandler) {
141141
};
142142
T status = factory.get();
143143
long eventHandle = nativeCreateEvent(this.handle, status.getSubscriptionEventType());
144-
EventHandler<T, Subscription> eventHandler = new EventHandlerImpl(
145-
new WeakReference<Subscription>(this), eventHandle, factory, callback, disposeCallback);
144+
EventHandler<T, Subscription> eventHandler =
145+
new EventHandlerImpl<T, Subscription>(
146+
new WeakReference<Subscription>(this), eventHandle, factory, callback, disposeCallback);
146147
this.eventHandlers.add(eventHandler);
147148
return eventHandler;
148149
}

rcljava/src/test/java/org/ros2/rcljava/client/ClientTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public static void setupOnce() throws Exception {
5454
{
5555
// Configure log4j. Doing this dynamically so that Android does not complain about missing
5656
// the log4j JARs, SLF4J uses Android's native logging mechanism instead.
57-
Class c = Class.forName("org.apache.log4j.BasicConfigurator");
57+
Class<?> c = Class.forName("org.apache.log4j.BasicConfigurator");
5858
Method m = c.getDeclaredMethod("configure", (Class<?>[]) null);
5959
Object o = m.invoke(null, (Object[]) null);
6060
}

0 commit comments

Comments
 (0)