package component context CalculationComponent def: all_component_inputs: Set(ComponentReferenceInputDefinition) = inputs->select( i : InputDefinition | i.oclIsKindOf(ComponentReferenceInputDefinition)) def: all_masters: Set(infrastructure::MasterServer) = all_component_inputs->collect(i: ComponentReferenceInputDefinition | i.component.masterOn) inv all_master_contained: self.masterOn->includesAll(all_masters) ... endpackage
!ENTRY org.openscada.configuration.validation 4 1 2013-08-07 11:52:49.075 !MESSAGE Failed to parse OCL constraints in org.openscada.configuration.validation:constraints/comp.ocl !STACK 0 org.eclipse.ocl.SyntaxException: 1:1:1:102 "import component: 'platform:/plugin/org.openscada.configuration.component.model/model/component.ecore'" misplaced construct(s) at org.eclipse.ocl.util.OCLUtil.checkForErrors(OCLUtil.java:356) at org.eclipse.ocl.OCL.parse(OCL.java:323) at org.openscada.configuration.validation.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:168) at org.openscada.configuration.validation.ocl.OCLConstraintProvider.parseConstraints(OCLConstraintProvider.java:141) at org.openscada.configuration.validation.ocl.OCLConstraintProvider.setInitializationData(OCLConstraintProvider.java:98) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:251) at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55) at org.eclipse.emf.validation.internal.service.ProviderDescriptor.getProvider(ProviderDescriptor.java:268) at org.eclipse.emf.validation.internal.service.ConstraintCache.execute(ConstraintCache.java:285) at org.eclipse.emf.validation.internal.service.ConstraintCache.getBatchConstraints(ConstraintCache.java:386)
public void loadOCL(String path) throws FileNotFoundException, ParserException{ EPackage.Registry registry = new EPackageRegistryImpl(); registry.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE); PivotEnvironmentFactory environmentFactory = new PivotEnvironmentFactory(registry, null); OCL ocl = OCL.newInstance(environmentFactory); URI uri = URI.createFileURI("./example/petstore/petstore_invariants.ocl"); Resource resource = ocl.parse(uri); constraints = new ArrayList<Constraint>(); for(TreeIterator<EObject> iterator = resource.getAllContents();iterator.hasNext();){ EObject next = iterator.next(); if(next instanceof Constraint){ constraints.add((Constraint)next); } } }
Exception in thread "main" java.lang.RuntimeException: Cannot create a resource for './example/petstore/petstore_invariants.ocl'; a registered resource factory is needed at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:403) at org.eclipse.ocl.examples.pivot.OCL.load(OCL.java:616) at org.eclipse.ocl.examples.pivot.OCL.parse(OCL.java:624) at org.modelexecution.fumltesting.ocl.OclUmlLoader.loadOCL(OclUmlLoader.java:30) at org.modelexecution.fumltesting.ocl.OclUtilTest.main(OclUtilTest.java:44)