Skip to content
Snippets Groups Projects
Unverified Commit fe41a5db authored by Juan Ignacio Ubeira's avatar Juan Ignacio Ubeira Committed by GitHub
Browse files

Merge pull request #70 from exo-core/action-generation

Action generation
parents 608812f2 5a2cdcb0
No related branches found
No related tags found
No related merge requests found
Showing
with 282 additions and 6 deletions
......@@ -24,6 +24,12 @@ import org.ros.exception.RosMessageRuntimeException;
import org.ros.internal.message.definition.MessageDefinitionProviderChain;
import org.ros.internal.message.definition.MessageDefinitionTupleParser;
import org.ros.internal.message.action.ActionDefinitionFileProvider;
import org.ros.internal.message.action.ActionGenerationTemplateActionGoal;
import org.ros.internal.message.action.ActionGenerationTemplateActionResult;
import org.ros.internal.message.action.ActionGenerationTemplateActionFeedback;
import org.ros.internal.message.action.ActionGenerationTemplateGoal;
import org.ros.internal.message.action.ActionGenerationTemplateResult;
import org.ros.internal.message.action.ActionGenerationTemplateFeedback;
import org.ros.internal.message.service.ServiceDefinitionFileProvider;
import org.ros.internal.message.topic.TopicDefinitionFileProvider;
import org.ros.message.MessageDeclaration;
......@@ -46,6 +52,15 @@ public class GenerateInterfaces {
private final ActionDefinitionFileProvider actionDefinitionFileProvider;
private final MessageDefinitionProviderChain messageDefinitionProviderChain;
private final MessageFactory messageFactory;
private final MessageGenerationTemplate actionGenerationTemplateGoal = new ActionGenerationTemplateGoal();
private final MessageGenerationTemplate actionGenerationTemplateResult = new ActionGenerationTemplateResult();
private final MessageGenerationTemplate actionGenerationTemplateFeedback = new ActionGenerationTemplateFeedback();
private final MessageGenerationTemplate actionGenerationTemplateActionGoal = new ActionGenerationTemplateActionGoal();
private final MessageGenerationTemplate actionGenerationTemplateActionResult = new ActionGenerationTemplateActionResult();
private final MessageGenerationTemplate actionGenerationTemplateActionFeedback = new ActionGenerationTemplateActionFeedback();
static private final String ROS_PACKAGE_PATH = "ROS_PACKAGE_PATH";
public GenerateInterfaces() {
......@@ -153,16 +168,39 @@ public class GenerateInterfaces {
writeInterface(actionDeclaration, outputDirectory, false);
List<String> goalResultAndFeedback = MessageDefinitionTupleParser.parse(definition, 3);
MessageDeclaration goalDeclaration =
MessageDeclaration.of(actionType.getType() + "Goal", goalResultAndFeedback.get(0));
MessageDeclaration resultDeclaration =
MessageDeclaration.of(actionType.getType() + "Result", goalResultAndFeedback.get(1));
MessageDeclaration feedbackDeclaration =
MessageDeclaration.of(actionType.getType() + "Feedback", goalResultAndFeedback.get(2));
MessageDeclaration goalDeclaration = MessageDeclaration.of(
actionType.getType() + "Goal",
actionGenerationTemplateGoal.applyTemplate(goalResultAndFeedback.get(0))
);
MessageDeclaration resultDeclaration = MessageDeclaration.of(
actionType.getType() + "Result",
actionGenerationTemplateResult.applyTemplate(goalResultAndFeedback.get(1))
);
MessageDeclaration feedbackDeclaration = MessageDeclaration.of(
actionType.getType() + "Feedback",
actionGenerationTemplateFeedback.applyTemplate(goalResultAndFeedback.get(2))
);
MessageDeclaration actionGoalDeclaration = MessageDeclaration.of(
actionType.getType() + "ActionGoal",
actionGenerationTemplateActionGoal.applyTemplate(actionType.getType())
);
MessageDeclaration actionResultDeclaration = MessageDeclaration.of(
actionType.getType() + "ActionResult",
actionGenerationTemplateActionResult.applyTemplate(actionType.getType())
);
MessageDeclaration actionFeedbackDeclaration = MessageDeclaration.of(
actionType.getType() + "ActionFeedback",
actionGenerationTemplateActionFeedback.applyTemplate(actionType.getType())
);
writeInterface(goalDeclaration, outputDirectory, true);
writeInterface(resultDeclaration, outputDirectory, true);
writeInterface(feedbackDeclaration, outputDirectory, true);
writeInterface(actionGoalDeclaration, outputDirectory, true);
writeInterface(actionResultDeclaration, outputDirectory, true);
writeInterface(actionFeedbackDeclaration, outputDirectory, true);
}
}
......
/*
* Copyright (C) 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.ros.internal.message;
/**
* @author arne.peters@tum.de (Arne Peters)
*/
public interface MessageGenerationTemplate {
/**
* @return returns this {@link Message} as a {@link RawMessage}
*/
public String applyTemplate(String messageSource);
}
/*
* Copyright (C) 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.ros.internal.message.action;
import org.ros.internal.message.MessageGenerationTemplate;
/**
* @author arne.peters@tum.de (Arne Peters)
*/
public class ActionGenerationTemplateActionFeedback implements MessageGenerationTemplate {
/**
* @return returns this {@link Message} as a {@link RawMessage}
*/
public String applyTemplate(String messageSource) {
return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" +
"\n" +
"Header header\n" +
"actionlib_msgs/GoalStatus status\n" +
messageSource + "Feedback feedback";
}
}
/*
* Copyright (C) 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.ros.internal.message.action;
import org.ros.internal.message.MessageGenerationTemplate;
/**
* @author arne.peters@tum.de (Arne Peters)
*/
public class ActionGenerationTemplateActionGoal implements MessageGenerationTemplate {
/**
* @return returns this {@link Message} as a {@link RawMessage}
*/
public String applyTemplate(String messageSource) {
return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" +
"\n" +
"Header header\n" +
"actionlib_msgs/GoalID goal_id\n" +
messageSource + "Goal goal";
}
}
/*
* Copyright (C) 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.ros.internal.message.action;
import org.ros.internal.message.MessageGenerationTemplate;
/**
* @author arne.peters@tum.de (Arne Peters)
*/
public class ActionGenerationTemplateActionResult implements MessageGenerationTemplate {
/**
* @return returns this {@link Message} as a {@link RawMessage}
*/
public String applyTemplate(String messageSource) {
return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" +
"\n" +
"Header header\n" +
"actionlib_msgs/GoalStatus status\n" +
messageSource + "Result result";
}
}
/*
* Copyright (C) 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.ros.internal.message.action;
import org.ros.internal.message.MessageGenerationTemplate;
/**
* @author arne.peters@tum.de (Arne Peters)
*/
public class ActionGenerationTemplateFeedback implements MessageGenerationTemplate {
/**
* @return returns this {@link Message} as a {@link RawMessage}
*/
public String applyTemplate(String messageSource) {
return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" +
"#feedback definition\n" +
messageSource;
}
}
/*
* Copyright (C) 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.ros.internal.message.action;
import org.ros.internal.message.MessageGenerationTemplate;
/**
* @author arne.peters@tum.de (Arne Peters)
*/
public class ActionGenerationTemplateGoal implements MessageGenerationTemplate {
/**
* @return returns this {@link Message} as a {@link RawMessage}
*/
public String applyTemplate(String messageSource) {
return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" +
"#goal definition" +
messageSource;
}
}
/*
* Copyright (C) 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.ros.internal.message.action;
import org.ros.internal.message.MessageGenerationTemplate;
/**
* @author arne.peters@tum.de (Arne Peters)
*/
public class ActionGenerationTemplateResult implements MessageGenerationTemplate {
/**
* @return returns this {@link Message} as a {@link RawMessage}
*/
public String applyTemplate(String messageSource) {
return "# ====== DO NOT MODIFY! AUTOGENERATED FROM AN ACTION DEFINITION ======\n" +
"#result definition" +
messageSource;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment