Skip to content

Commit dd04614

Browse files
committed
Add interfaces for action goal, result, and feedback
Implementing these interfaces in the code generation template makes it easier to pass around these types in a generic way. Note, the 'final' modifier had to be removed from generated message types in order to extend goal, result, and feedback types in action definitions. Signed-off-by: Jacob Perron <[email protected]>
1 parent fae3db9 commit dd04614

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

rcljava_common/src/main/java/org/ros2/rcljava/interfaces/ActionDefinition.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,8 @@
1515

1616
package org.ros2.rcljava.interfaces;
1717

18-
public interface ActionDefinition {}
18+
public interface ActionDefinition {
19+
interface ActionGoal<T extends ActionDefinition> {}
20+
interface ActionResult<T extends ActionDefinition> {}
21+
interface ActionFeedback<T extends ActionDefinition> {}
22+
}

rosidl_generator_java/resource/action.java.em

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ import @(action_import);
7676

7777
public class @(type_name) implements ActionDefinition {
7878

79+
public class Goal extends @(type_name)_Goal implements ActionGoal<@(type_name)> {}
80+
81+
public class Result extends @(type_name)_Result implements ActionResult<@(type_name)> {}
82+
83+
public class Feedback extends @(type_name)_Feedback implements ActionFeedback<@(type_name)> {}
84+
7985
private static final Logger logger = LoggerFactory.getLogger(@(type_name).class);
8086

8187
static {
@@ -88,10 +94,4 @@ public class @(type_name) implements ActionDefinition {
8894
}
8995

9096
public static native long getActionTypeSupport();
91-
92-
public static final Class<@(type_name)_Goal> GoalType = @(type_name)_Goal.class;
93-
94-
public static final Class<@(type_name)_Result> ResultType = @(type_name)_Result.class;
95-
96-
public static final Class<@(type_name)_Feedback> FeedbackType = @(type_name)_Feedback.class;
9797
}

rosidl_generator_java/resource/msg.java.em

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import @('.'.join(member.type.namespaced_name()));
3838
@[ end if]@
3939
@[end for]@
4040

41-
public final class @(type_name) implements MessageDefinition {
41+
public class @(type_name) implements MessageDefinition {
4242

4343
private static final Logger logger = LoggerFactory.getLogger(@(type_name).class);
4444

0 commit comments

Comments
 (0)