eclipse-ocl / org.eclipse.ocl

Eclipse Public License 2.0
0 stars 0 forks source link

[cs2as] Move QVTi run-time support back to QVTd #1681

Closed eclipse-ocl-bot closed 1 month ago

eclipse-ocl-bot commented 1 month ago

| --- | --- | | Bugzilla Link | 490539 | | Status | RESOLVED FIXED | | Importance | P3 normal | | Reported | Mar 28, 2016 14:43 EDT | | Modified | Apr 09, 2016 06:19 EDT | | Reporter | Ed Willink |

Description

The auto-generated CS2AS functionality uses QVTd run-time and so requires the QVTd run-time to be distributed as org.eclipse.ocl.pivot.evaluation. This has already proved inconvenient and can only get worse as API pressures come to bear after Neon release. OCL and QVTd are too tightly coupled.

Solution.

100% of the transformation run-time source (? and auto-generation tooling) is distributed by QVTd.

Auto-generation for XXX copies run-time classes from QVTd template-source to package private XXX classes, possibly aided by an auto-generated Facade.

Result: OCL can be 100% self-contained, with minimal public API. OCL updates when and only when the QVTd regeneration occurs - automatically in synchronization.

This approach should extend to auto-generation of OCL-derived Java code for e..g UML2. Some library classes get copied to keep UML2 self contained and OCL-independent.

Optionally auto-generation tooling can select copied private packages / re-used QVTd run-time, but not until we are confident enough to freeze the QVTi run-time API.

eclipse-ocl-bot commented 1 month ago

By Ed Willink on Mar 28, 2016 17:59

There is a clean repackaging:

QVTd-, OCL-build, OCL-xtext. depends on\ QVTi-runtime depends on \ OCL-pivot

where QVTi-runtime contains the old\ org.eclipse.ocl.pivot.evaluation.tx\ org.eclipse.ocl.pivot.internal.evaluation.tx\ -- except AbstractModelManger\ org.eclipse.ocl.pivot.library.model\ org.eclipse.ocl.pivot.internal.labels.TransformationInstanceLabelGenerator\ org.eclipse.ocl.pivot.internal.labels.TypedModelInstanceLabelGenerator

This causes no Mars API breakage.

To avoid distributing QVTi-runtime as part of OCL, the "Auto CS" generator should copy the QVTi-runtime classes to org.eclipse.ocl.xtext.base/src-gen which is adequate for CS2AS. However once we auto-generate e.g. Ecore2AS, the run-time must be in ocl pivot so we might as well copy to org.eclipse.ocl.pivot/src-gen from the outset.

eclipse-ocl-bot commented 1 month ago

By Ed Willink on Apr 08, 2016 07:12

(In reply to Ed Willink from comment #1)

we might as well copy to org.eclipse.ocl.pivot/src-gen from the outset.

This has been pushed to master where it demonstrates the isolation before we expose this all as API.

BUG: CopyAndRename uses relative paths and so fails if GIT repo names are unexpected. Use projects and their locationURI.

eclipse-ocl-bot commented 1 month ago

By Ed Willink on Apr 09, 2016 05:10

(In reply to Ed Willink from comment #2)

This has been pushed to master where it demonstrates the isolation before we expose this all as API.

Since there is no auto-generated CS2AS contribution for Neon, the isolated QVTi runtime copy has been deleted on master and re-instated as the first commit of the ewillink/pathElementCSWithName CS2AS development branch.

eclipse-ocl-bot commented 1 month ago

By Ed Willink on Apr 09, 2016 06:18

(In reply to Ed Willink from comment #2)

BUG: CopyAndRename uses relative paths and so fails if GIT repo names are unexpected. Use projects and their locationURI.

Fixed as an early commit on the ewillink/pathElementCSWithName CS2AS development branch.