Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "MMT/QVTo/New and Noteworthy/Kepler"

< MMT
 
(11 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
==Milestone 2==
 
==Milestone 2==
  
* [https://bugs.eclipse.org/378940 378940] Duplications of OCL 2.2 operations removed
+
[https://bugs.eclipse.org/378940 378940] Duplications of OCL 2.2 operations removed
  
 
==Milestone 5==
 
==Milestone 5==
  
* [https://bugs.eclipse.org/302594 302594] Inherited properties of accessed transformations are now available
+
[https://bugs.eclipse.org/302594 302594] Inherited properties of accessed transformations are now available
* [https://bugs.eclipse.org/309762 309762] Disjunction now considers overriding mappings
+
 
* [https://bugs.eclipse.org/310991 310991] Inherited configuration properties of accessed transformations are now available
+
[https://bugs.eclipse.org/309762 309762] Disjunction now considers overriding mappings
* [https://bugs.eclipse.org/377882 377882] Resolve on a disjunction mapping no longer returns null
+
Snippet:
* [https://bugs.eclipse.org/388325 388325] += is no longer ignored on a result variable
+
<source lang="java">
* [https://bugs.eclipse.org/392080 392080] An initialized imported property is now part of the out extent
+
-- A.qvto
* [https://bugs.eclipse.org/392153 392153] The execution of an accessed transformation is now included in the trace
+
helper execute() {
* [https://bugs.eclipse.org/394498 394498] The debugger can now switch between multiple transformations/libraries
+
i.objects()[EPackage]->map m();
* [https://bugs.eclipse.org/397215 397215] null arguments may now be used with disjunctive mappings
+
return null;
* [https://bugs.eclipse.org/397218 397218] Argument/parameter type comparison is now properly done when dispatching a disjuncting mapping
+
}
* [https://bugs.eclipse.org/397959 397959] Overriding should no longer be confused by the presence/absence of a context
+
mapping EPackage :: m() : EPackage
 +
disjuncts EPackage::m1, EPackage::m2;
 +
mapping EPackage :: m1() : EPackage {
 +
name := 'm1_original'
 +
}
 +
mapping EPackage :: m2() : EPackage {
 +
name := 'm2_original'
 +
}
 +
 
 +
-- Main.qvto
 +
main() {
 +
execute();
 +
}
 +
mapping EPackage :: m1() : EPackage {
 +
name := 'm1_overridden'
 +
}
 +
</source>
 +
 
 +
[https://bugs.eclipse.org/310991 310991] Inherited configuration properties of accessed transformations are now available
 +
 
 +
[https://bugs.eclipse.org/377882 377882] Resolve on a disjunction mapping no longer returns null
 +
 
 +
[https://bugs.eclipse.org/388325 388325] += is no longer ignored on a result variable
 +
 
 +
[https://bugs.eclipse.org/392080 392080] An initialized imported property is now part of the out extent
 +
 
 +
[https://bugs.eclipse.org/392153 392153] The execution of an accessed transformation is now included in the trace
 +
 
 +
[https://bugs.eclipse.org/394498 394498] The debugger can now switch between multiple transformations/libraries
 +
 
 +
[https://bugs.eclipse.org/397215 397215] null arguments may now be used with disjunctive mappings
 +
Snippet:
 +
<source lang="java">
 +
main() {
 +
input.objects()[EPackage]->map m(null);
 +
}
 +
mapping EPackage :: m(p : EPackage) : EPackage
 +
disjuncts EPackage::m1;
 +
mapping EPackage :: m1(p : EPackage) : EPackage {
 +
name := 'pack'
 +
}
 +
</source>
 +
 
 +
[https://bugs.eclipse.org/397218 397218] Argument/parameter type comparison is now properly done when dispatching a disjuncting mapping
 +
 
 +
[https://bugs.eclipse.org/397959 397959] Overriding should no longer be confused by the presence/absence of a context
 +
Snippet:
 +
<source lang="java">
 +
-- Library.qvto
 +
mapping EPackage :: m() : EPackage {
 +
name := 'original_contextaware'
 +
}
 +
mapping m() : EPackage {
 +
name := 'original_contextless'
 +
}
 +
 
 +
-- Main.qvto
 +
main() {
 +
map m();
 +
}
 +
mapping EPackage :: m() : EPackage {
 +
name := 'overridden_contextaware'
 +
}
 +
</source>
  
 
==Milestone 6==
 
==Milestone 6==
  
* [https://bugs.eclipse.org/254962 254962] Intermediate properties are no longer ignored when cloning  
+
[https://bugs.eclipse.org/254962 254962] Intermediate properties are no longer ignored when cloning  
* [https://bugs.eclipse.org/296630 296630] Local variables now contribute to completion proposals
+
 
* [https://bugs.eclipse.org/358709 358709] resolveoneIn(...) no longer fails for override mappings
+
[https://bugs.eclipse.org/296630 296630] Local variables now contribute to completion proposals
* [https://bugs.eclipse.org/376274 376274] Nested packages may now be used in metamodel mappings
+
 
* [https://bugs.eclipse.org/388329 388329] Deployed libraries are now excluded from the Select Transformation dialog
+
[https://bugs.eclipse.org/358709 358709] resolveoneIn(...) no longer fails for override mappings
* [https://bugs.eclipse.org/388331 388331] Contextless mappings on resolve operations are available on completion proposals
+
 
* [https://bugs.eclipse.org/388801 388801] Collection-type features are initialized to Set{} rather than Set{null}
+
[https://bugs.eclipse.org/376274 376274] Nested packages may now be used in metamodel mappings
* [https://bugs.eclipse.org/397218 397218] Disjunct mapping dispatch no longer ignores the argument/parameter types
+
URI with fragment is now can be used in Metamodel mappings definition to reference nested packages:
 +
<source lang="java">
 +
platform:/resource/<plugin-id>/<ecore-path>#//<nested-package-path>
 +
</source>
 +
 
 +
[https://bugs.eclipse.org/388329 388329] Deployed libraries are now excluded from the Select Transformation dialog
 +
 
 +
[https://bugs.eclipse.org/388331 388331] Contextless mappings on resolve operations are available on completion proposals
 +
 
 +
[https://bugs.eclipse.org/388801 388801] Collection-type features are initialized to Set{} rather than Set{null}
 +
Snippet:
 +
<source lang="java">
 +
intermediate class I {
 +
coll : OrderedSet(EClass);
 +
coll2 : OrderedSet(EClass) = OrderedSet{};
 +
coll3 : OrderedSet(EClass) = OrderedSet{object EClass{}};
 +
}
 +
intermediate class C {
 +
references classes : EClass[*] = null;
 +
}
 +
 
 +
main() {
 +
var intermI : I = object I {};
 +
assert fatal (intermI.coll->isEmpty());
 +
assert fatal (intermI.coll2->isEmpty());
 +
assert fatal (not intermI.coll3->isEmpty());
 +
 +
var set : OrderedSet(I) = OrderedSet {intermI};
 +
assert fatal (set->collect(coll)->isEmpty());
 +
assert fatal (set->collect(coll2)->isEmpty());
 +
assert fatal (not set->collect(coll3)->isEmpty());
 +
 +
var c : OrderedSet(EClass) = null;
 +
assert fatal (c->oclIsUndefined());
 +
 +
var intermC : C = object C {};
 +
assert fatal (intermC.classes->isEmpty());
 +
}
 +
</source>
 +
 
 +
[https://bugs.eclipse.org/397218 397218] Disjunct mapping dispatch no longer ignores the argument/parameter types
  
 
==Milestone 7==
 
==Milestone 7==
  
* [https://bugs.eclipse.org/390182 390182] Different transformation resolvers (deployed, plugin and workspace) are now behave equally. For deployed transformations now is possible to specify source container (via "org.eclipse.m2m.qvt.oml.runtime.qvtTransformationContainer" extension point).
+
[https://bugs.eclipse.org/390182 390182] Different transformation resolvers (deployed, plugin and workspace) are now behave equally. For deployed transformations now is possible to specify source container (via "org.eclipse.m2m.qvt.oml.runtime.qvtTransformationContainer" extension point).
* [https://bugs.eclipse.org/325192 325192] Re-assignment of 'result' outside init{} mapping section is now prohibited. Incremental assignment ('+=' operator) for mutable QVTo types (List and Dict) on 'result' variable is now supported.
+
 
* [https://bugs.eclipse.org/316793 316793] Performance of transformations which create a lot of new objects are improved.
+
[https://bugs.eclipse.org/325192 325192] Re-assignment of 'result' outside init{} mapping section is now prohibited. Incremental assignment ('+=' operator) for mutable QVTo types (List and Dict) on 'result' variable is now supported.
* [https://bugs.eclipse.org/287713 287713] Validation in QVTO launch configuration is now lightweight (all checks are performed but without loading of models). "Validation" button now triggers execution of the former validation logic (that includes loading of models).
+
 
* [https://bugs.eclipse.org/288413 288413] Post-transformation cleanup now takes significantly less time to execute.
+
[https://bugs.eclipse.org/316793 316793] Performance of transformations which create a lot of new objects are improved.
* [https://bugs.eclipse.org/395353 395353] QVTO debugger now is aware of metamodel mappings.
+
 
* [https://bugs.eclipse.org/324054 324054] Introduced JUnit tests now checks consistent behavior between debug and non-debug launch configuration.
+
[https://bugs.eclipse.org/287713 287713] Validation in QVTO launch configuration is now lightweight (all checks are performed but without loading of models). "Validation" button now triggers execution of the former validation logic (that includes loading of models).
 +
 
 +
[https://bugs.eclipse.org/288413 288413] Post-transformation cleanup now takes significantly less time to execute.
 +
 
 +
[https://bugs.eclipse.org/395353 395353] QVTO debugger now is aware of metamodel mappings.
 +
 
 +
[https://bugs.eclipse.org/324054 324054] Introduced JUnit tests now checks consistent behavior between debug and non-debug launch configuration.
  
 
==RC 1==
 
==RC 1==
  
* [https://bugs.eclipse.org/406732 406732] Extensible framework for unit tests on QVTo debugger functionality (execution, stepInto/stepOver, resume, return) is provided.
+
[https://bugs.eclipse.org/406732 406732] Extensible framework for unit tests on QVTo debugger functionality (execution, stepInto/stepOver, resume, return) is provided.
* [https://bugs.eclipse.org/329971 329971] Now datatypes derived from string are compared correctly in QVTo.
+
 
 +
[https://bugs.eclipse.org/329971 329971] Now datatypes derived from string are compared correctly in QVTo.
 +
Snippet:
 +
<source lang="xml">
 +
// model.ecore
 +
<ecore:EPackage xmi:version="2.0"
 +
    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="test1"
 +
    nsURI="http://test1/1.0" nsPrefix="test1">
 +
  <eClassifiers xsi:type="ecore:EClass" name="Class1">
 +
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="attr1" lowerBound="1" eType="#//TestIdentifier"/>
 +
  </eClassifiers>
 +
  <eClassifiers xsi:type="ecore:EDataType" name="TestIdentifier" instanceClassName="java.lang.String">
 +
    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
 +
      <details key="name" value="TestIdentifier"/>
 +
      <details key="baseType" value="string"/>
 +
      <details key="pattern" value="[A-Za-z_][A-Za-z0-9_]*"/>
 +
    </eAnnotations>
 +
  </eClassifiers>
 +
</ecore:EPackage>
 +
</source>
 +
 
 +
<source lang="xml">
 +
// Instance.xmi
 +
<test1:Class1 xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:test1="http://test1/1.0" xsi:schemaLocation="http://test1/1.0 test1.ecore" attr1="TestValue"/>
 +
</source>
 +
 
 +
<source lang="java">
 +
-- Main.qvto
 +
main() {
 +
    var cls = inModel.rootObjects()![Class1];
 +
    var x: EString = cls.attr1;
 +
    var y: String = cls.attr1;
 +
    var z: TestIdentifier = cls.attr1;
 +
 
 +
    assert fatal (cls.attr1 = "TestValue");
 +
    assert fatal (x = "TestValue");
 +
    assert fatal (y = "TestValue");
 +
    assert fatal (z = "TestValue");
 +
}
 +
</source>
  
 
==RC 2==
 
==RC 2==
  
* [https://bugs.eclipse.org/396538 396538] Trace file for multiple input models is now generated correctly.
+
[https://bugs.eclipse.org/396538 396538] Trace file for multiple input models is now generated correctly.

Latest revision as of 13:24, 18 May 2014

Eclipse QVT Operational New and Noteworthy items for the Kepler 3.3.0 release.

Milestone 2

378940 Duplications of OCL 2.2 operations removed

Milestone 5

302594 Inherited properties of accessed transformations are now available

309762 Disjunction now considers overriding mappings Snippet:

-- A.qvto
helper execute() {
	i.objects()[EPackage]->map m();
	return null;		
}
mapping EPackage :: m() : EPackage 
	disjuncts EPackage::m1, EPackage::m2;
mapping EPackage :: m1() : EPackage {
	name := 'm1_original'
}
mapping EPackage :: m2() : EPackage {
	name := 'm2_original'
}
 
-- Main.qvto
main() {
	execute();
}
mapping EPackage :: m1() : EPackage {
	name := 'm1_overridden'
}

310991 Inherited configuration properties of accessed transformations are now available

377882 Resolve on a disjunction mapping no longer returns null

388325 += is no longer ignored on a result variable

392080 An initialized imported property is now part of the out extent

392153 The execution of an accessed transformation is now included in the trace

394498 The debugger can now switch between multiple transformations/libraries

397215 null arguments may now be used with disjunctive mappings Snippet:

main() {
	input.objects()[EPackage]->map m(null);
}
mapping EPackage :: m(p : EPackage) : EPackage
	disjuncts EPackage::m1;
mapping EPackage :: m1(p : EPackage) : EPackage {
	name := 'pack'
}

397218 Argument/parameter type comparison is now properly done when dispatching a disjuncting mapping

397959 Overriding should no longer be confused by the presence/absence of a context Snippet:

-- Library.qvto
mapping EPackage :: m() : EPackage {
	name := 'original_contextaware'
}
mapping m() : EPackage {
	name := 'original_contextless'
}
 
-- Main.qvto
main() {
	map m();
}
mapping EPackage :: m() : EPackage {
	name := 'overridden_contextaware'
}

Milestone 6

254962 Intermediate properties are no longer ignored when cloning

296630 Local variables now contribute to completion proposals

358709 resolveoneIn(...) no longer fails for override mappings

376274 Nested packages may now be used in metamodel mappings URI with fragment is now can be used in Metamodel mappings definition to reference nested packages:

platform:/resource/<plugin-id>/<ecore-path>#//<nested-package-path>

388329 Deployed libraries are now excluded from the Select Transformation dialog

388331 Contextless mappings on resolve operations are available on completion proposals

388801 Collection-type features are initialized to Set{} rather than Set{null} Snippet:

intermediate class I {
	coll : OrderedSet(EClass);
	coll2 : OrderedSet(EClass) = OrderedSet{};
	coll3 : OrderedSet(EClass) = OrderedSet{object EClass{}};
}
intermediate class C {
	references classes : EClass[*] = null;
}
 
main() {
	var intermI : I = object I {};
	assert fatal (intermI.coll->isEmpty());
	assert fatal (intermI.coll2->isEmpty());
	assert fatal (not intermI.coll3->isEmpty());
 
	var set : OrderedSet(I) = OrderedSet {intermI};
	assert fatal (set->collect(coll)->isEmpty());	
	assert fatal (set->collect(coll2)->isEmpty());	
	assert fatal (not set->collect(coll3)->isEmpty());	
 
	var c : OrderedSet(EClass) = null;
	assert fatal (c->oclIsUndefined());
 
	var intermC : C = object C {};
	assert fatal (intermC.classes->isEmpty());
}

397218 Disjunct mapping dispatch no longer ignores the argument/parameter types

Milestone 7

390182 Different transformation resolvers (deployed, plugin and workspace) are now behave equally. For deployed transformations now is possible to specify source container (via "org.eclipse.m2m.qvt.oml.runtime.qvtTransformationContainer" extension point).

325192 Re-assignment of 'result' outside init{} mapping section is now prohibited. Incremental assignment ('+=' operator) for mutable QVTo types (List and Dict) on 'result' variable is now supported.

316793 Performance of transformations which create a lot of new objects are improved.

287713 Validation in QVTO launch configuration is now lightweight (all checks are performed but without loading of models). "Validation" button now triggers execution of the former validation logic (that includes loading of models).

288413 Post-transformation cleanup now takes significantly less time to execute.

395353 QVTO debugger now is aware of metamodel mappings.

324054 Introduced JUnit tests now checks consistent behavior between debug and non-debug launch configuration.

RC 1

406732 Extensible framework for unit tests on QVTo debugger functionality (execution, stepInto/stepOver, resume, return) is provided.

329971 Now datatypes derived from string are compared correctly in QVTo. Snippet:

// model.ecore
<ecore:EPackage xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="test1"
    nsURI="http://test1/1.0" nsPrefix="test1">
  <eClassifiers xsi:type="ecore:EClass" name="Class1">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="attr1" lowerBound="1" eType="#//TestIdentifier"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EDataType" name="TestIdentifier" instanceClassName="java.lang.String">
    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
      <details key="name" value="TestIdentifier"/>
      <details key="baseType" value="string"/>
      <details key="pattern" value="[A-Za-z_][A-Za-z0-9_]*"/>
    </eAnnotations>
  </eClassifiers>
</ecore:EPackage>
// Instance.xmi
<test1:Class1 xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:test1="http://test1/1.0" xsi:schemaLocation="http://test1/1.0 test1.ecore" attr1="TestValue"/>
-- Main.qvto
main() {
    var cls = inModel.rootObjects()![Class1];
    var x: EString = cls.attr1;
    var y: String = cls.attr1;
    var z: TestIdentifier = cls.attr1;
 
    assert fatal (cls.attr1 = "TestValue");
    assert fatal (x = "TestValue");
    assert fatal (y = "TestValue");
    assert fatal (z = "TestValue");
}

RC 2

396538 Trace file for multiple input models is now generated correctly.

Back to the top