2

I have an Ecore model, where I'm trying to add some OCL constraints.

My problem comes when I try to make a property (a string) that is in valid IPv4 form. I guess I should use a regular expression, but I have no idea at all about how to use regex on OCLinEcore.

joe_young
  • 4,107
  • 2
  • 27
  • 38
Mario Corchero
  • 5,257
  • 5
  • 33
  • 59

2 Answers2

2

As of Eclipse Juno, you can use regular expressions in OCL. The function to call on it is matches(regex), just like in Java.

context Packet
inv ValidIPv4 : ip.matches('\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b')

Source: http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.ocl.doc%2Fhelp%2FCompleteOCLTutorial.html

If you have a previous version of Eclipse, then I suggest adding a Java constraint on your Ecore element, then validate your element through the generated Java template code.

1

As for the regex part:

\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b

Matches 0.0.0.0 through 999.999.999.999 Use this fast and simple regex if you know the data does not contain invalid IP addresses. Each of the 4 numbers is stored into a capturing group, so you can access them for further processing.

buckley
  • 13,690
  • 3
  • 53
  • 61