Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.parser.antlr;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.parser.antlr;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.parser.antlr;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.parser.antlr;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
parser grammar InternalBasicsParser;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
parser grammar InternalRosParser;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
lexer grammar InternalBasicsLexer;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
lexer grammar InternalRosLexer;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.scoping;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.scoping;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.serializer;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.serializer;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.serializer;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.serializer;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.services;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.services;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.validation;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.validation;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* generated by Xtext 2.30.0
* generated by Xtext 2.38.0
*/
package de.fraunhofer.ipa.ros.validation;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ import ros.ServiceClient
import ros.ServiceServer
import ros.Subscriber
import ros.Parameter
import ros.ParameterValue
import ros.ParameterBase64Type
import ros.ParameterDate
import ros.QualityOfService

/**
* This class contains custom validation rules.
Expand Down Expand Up @@ -45,19 +43,23 @@ class RosValidator extends AbstractRosValidator {
}}
@Check
def void checkNameConventionsPackage (Package rospackage) {
for (char c : rospackage.name.toCharArray){
if (Character.isUpperCase(c)){
error("The name of a package has to follow the ROS naming conventions: Capital letters are not allowed", null, INVALID_NAME);
}
}
for (char c : rospackage.name.toCharArray){
if (Character.isUpperCase(c)){
error("The name of a package has to follow the ROS naming conventions: Capital letters are not allowed", null, INVALID_NAME);
}
}
}
@Check
def void checkNameConventionsParameters (Parameter parameter) {
for (char c : parameter.name.toCharArray){
if (Character.isUpperCase(c)){
warning("The name of a parameter has to follow the ROS naming conventions: Capital letters are not recommended", null, INVALID_NAME);
}
}
for (i : 0 ..< parameter.name.length) {
val c = parameter.name.charAt(i)
if (Character.isUpperCase(c)) {
val remaining = parameter.name.substring(i)
if (!remaining.contains(".")) {
warning("The name of a parameter has to follow the ROS naming conventions: Capital letters are not recommended", null, INVALID_NAME);
}
}
}
}

/* Customize Syntax Error Messages */
Expand Down Expand Up @@ -141,4 +143,24 @@ class RosValidator extends AbstractRosValidator {
// // allow the use of numbers
//

}
public static val INVALID_VALUE = 'invalidValue'
@Check
def void CheckQoS (QualityOfService qos){
CheckDuration(qos.leaseDuration)
CheckDuration(qos.lifespan)
CheckDuration(qos.deadline)
}

def void CheckDuration(String duration)
{
if(duration != 'infinite' && duration !== null){
try{
Integer.parseInt(duration)
}
catch (NumberFormatException e){
error("Durations of lease_duration, lifespan, deadline should be specified as a string of nanoseconds which can convert to int, or as infinite", null, INVALID_VALUE)
}
}
}

}
4 changes: 4 additions & 0 deletions plugins/de.fraunhofer.ipa.ros/model/ros.ecore
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,10 @@
defaultValueLiteral="reliable"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Durability" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
defaultValueLiteral="transient_local"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Liveliness" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="LeaseDuration" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Lifespan" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Deadline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TopicSpecMsgRef" eSuperTypes="PrimitivesTypes.ecore#//AbstractType">
<eStructuralFeatures xsi:type="ecore:EReference" name="Reference" lowerBound="1"
Expand Down
4 changes: 4 additions & 0 deletions plugins/de.fraunhofer.ipa.ros/model/ros.genmodel
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,10 @@
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute ros.ecore#//QualityOfService/Depth"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute ros.ecore#//QualityOfService/Reliability"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute ros.ecore#//QualityOfService/Durability"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute ros.ecore#//QualityOfService/Liveliness"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute ros.ecore#//QualityOfService/LeaseDuration"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute ros.ecore#//QualityOfService/Lifespan"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute ros.ecore#//QualityOfService/Deadline"/>
</genClasses>
<genClasses ecoreClass="ros.ecore#//TopicSpecMsgRef">
<genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference ros.ecore#//TopicSpecMsgRef/Reference"/>
Expand Down
56 changes: 28 additions & 28 deletions plugins/de.fraunhofer.ipa.ros/src/primitives/MessagePart.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,55 +25,55 @@
*/
public interface MessagePart extends EObject {
/**
* Returns the value of the '<em><b>Type</b></em>' containment reference.
* <!-- begin-user-doc -->
* Returns the value of the '<em><b>Type</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Type</em>' containment reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Type</em>' containment reference.
* @see #setType(AbstractType)
* @see primitives.PrimitivesPackage#getMessagePart_Type()
* @model containment="true" required="true"
* @generated
*/
* @return the value of the '<em>Type</em>' containment reference.
* @see #setType(AbstractType)
* @see primitives.PrimitivesPackage#getMessagePart_Type()
* @model containment="true" required="true"
* @generated
*/
AbstractType getType();

/**
* Sets the value of the '{@link primitives.MessagePart#getType <em>Type</em>}' containment reference.
* <!-- begin-user-doc -->
* Sets the value of the '{@link primitives.MessagePart#getType <em>Type</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Type</em>' containment reference.
* @see #getType()
* @generated
*/
* @param value the new value of the '<em>Type</em>' containment reference.
* @see #getType()
* @generated
*/
void setType(AbstractType value);

/**
* Returns the value of the '<em><b>Data</b></em>' attribute.
* <!-- begin-user-doc -->
* Returns the value of the '<em><b>Data</b></em>' attribute.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Data</em>' attribute isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Data</em>' attribute.
* @see #setData(String)
* @see primitives.PrimitivesPackage#getMessagePart_Data()
* @model required="true"
* @generated
*/
* @return the value of the '<em>Data</em>' attribute.
* @see #setData(String)
* @see primitives.PrimitivesPackage#getMessagePart_Data()
* @model required="true"
* @generated
*/
String getData();

/**
* Sets the value of the '{@link primitives.MessagePart#getData <em>Data</em>}' attribute.
* <!-- begin-user-doc -->
* Sets the value of the '{@link primitives.MessagePart#getData <em>Data</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Data</em>' attribute.
* @see #getData()
* @generated
*/
* @param value the new value of the '<em>Data</em>' attribute.
* @see #getData()
* @generated
*/
void setData(String value);

} // MessagePart
Loading