// Copied from org.eclipse.ocl.examples.test.xtext.PivotDocumentationExamples.java | |
EPackage.Registry registry = new EPackageRegistryImpl(); | |
registry.put(EXTLibraryPackage.eNS_URI, EXTLibraryPackage.eINSTANCE); | |
PivotEnvironmentFactory environmentFactory = new PivotEnvironmentFactory(registry, null); | |
OCL ocl = OCL.newInstance(environmentFactory); | |
// get an OCL text file via some hypothetical API | |
URI uri = getInputURI("/model/parsingDocumentsExample.ocl"); | |
Map<String, ExpressionInOCL> constraintMap = new HashMap<String, ExpressionInOCL>(); | |
// parse the contents as an OCL document | |
Resource pivotResource = ocl.parse(uri); | |
for (TreeIterator<EObject> tit = pivotResource.getAllContents(); tit.hasNext(); ) { | |
EObject next = tit.next(); | |
if (next instanceof Constraint) { | |
Constraint constraint = (Constraint)next; | |
String stereotype = constraint.getStereotype(); | |
if (UMLReflection.INVARIANT.equals(stereotype)) { | |
ExpressionInOCL expressionInOCL = ocl.getSpecification(constraint); | |
if (expressionInOCL != null) { | |
String name = constraint.getName(); | |
if (name != null) { | |
constraintMap.put(name, expressionInOCL); | |
System.out.printf("%s: %s%n", name, expressionInOCL.getBodyExpression()); | |
} | |
} | |
} | |
} | |
} |