CHANGELOG

Path: CHANGELOG
Last Update: Fri Jan 24 17:11:35 +0000 2014

0.1.0 (August 3rd, 2006)

  • First public release

0.2.0 (September 3rd, 2006)

  • Added model transformation language (Transformer)
  • Now RGen is distributed as a gem
  • More complete documentation

0.3.0 (October 9th, 2006)

  • Improved XML Instantiator (Namespaces, Resolver, Customization)
  • Added many_to_one builder method
  • Added attribute reflection to MMBase (one_attributes, many_attributes)
  • Added copy method to Transformer
  • Added simple model dumper module
  • Fixed mmgen/mmgen.rb

0.4.0 (Aug 8th, 2007)

  • Added ECore metamodel and use it as the core metametamodel
  • Revised and extended MetamodelBuilder language
  • There is an ECore instance describing each metamodel built using MetamodelBuilder now
  • Metamodel generator is now ECore based
  • Added Ruby implementation of Boolean and Enum types
  • Switched XML Instantiator to xmlscan for performance reasons
  • Cleaned up instantiator file structure
  • Renamed RGen::XMLInstantiator into RGen::Instantiator::DefaultXMLInstantiator
  • Included xmlscan as a redistributed module
  • Added support for chardata within XML tags
  • Added (Enterprise Architect) XMI to ECore instantiator
  • Some minor fixes in NameHelper
  • Some fixes to template language
  • Added UML1.3 Metamodel
  • Added tranformation from UML1.3 to ECore

0.4.1 (Nov 25th, 2007)

  • Template language performance improvement
  • Bugfix: use true/false instead of symbols for boolean attribute default values in metamodel classes
  • Minor fixes on metamodel generator and ecore primitive type handling
  • Made transformer implementation non-recursive to prevent "stack level too deep" exception for large models
  • Minor fixes on EAInstantiator
  • Made transformer search for matching rules for superclasses
  • Bugfix: Enums are now added to EPackages created using the "ecore" method on a module
  • Bugfix: Metamodel generator now writes enum names
  • Performance improvement: don‘t require ecore transformer every time someone calls "ecore"
  • Major performance improvement of template engine (no Regexps to check \n at end of line)
  • Major performance improvement: AbstractXMLInstantiator optionally controls the garbage collector
  • Major performance improvement: ERB templates are reused in metamodel_builder
  • Added delete method to Environment

0.4.2 (Mar 2nd, 2008)

  • Performance improvement: collection feature of array extension uses hashes now to speed up array union
  • Performance improvement: find on environment hashes elements by class
  • Extended Transformer to allow sharing of result maps between several Transformer instances
  • Bugfix: User defined upper bound values are no longer overwritten by -1 in all "many" metamodel builder methods

0.4.3 (Aug 12th, 2008)

  • Performance improvement: significant speed up of metamodel reverse registration
  • Bugfix: Use object identity for metamodel to-many add/remove methods
  • Bugfix: If expand‘s :for expression evaluates to nil an error is generated (silently used current context before)
  • Template language indentation string can be set on DirectoryTemplateContainer and with the "file" command

0.4.4 (Sep 10th, 2008)

  • Added "abstract" metamodel DSL command
  • Added ecore_ext.rb with convenience methods
  • Added XMI1.1 serializer, revised XMLSerializer super class

0.4.5 (Nov 17th, 2008)

  • Updated XMI1.1 serializer to support explicit placement of elements on content level of the XMI file

0.4.6 (Mar 1st, 2009)

  • Bugfix: expand :foreach silently assumed current context if :foreach evalutated to nil
  • Bugfix: fixed unit test for non-Windows plattforms (\r\n)
  • Bugfix: depending on the Ruby version and/or platform constants used in templates could not be resolved
  • Added automatic line ending detection (\n or \r\n) for template language nl command

0.5.0 (Jun 8th, 2009)

  • Added ModelBuilder and ModelSerializer
  • Added template language "define_local" command
  • Added template language "evaluate" command
  • Fixed template language bug: indentation problem when expand continues a non-empty line
  • Fixed template language bug: template content expands several times when a template container is called recursively
  • Fixed template language bug: template resolution problem if a template file has the same name as a template directory
  • Cleaned up EA support
  • Added method to clear ecore metamodel reflection cache
  • Improved overriding of metamodel features in reopened classes

0.5.1 (Nov 10th, 2009)

  • Fixed metamodel builder bug: _register at one-side did not unregister from the element referenced by the old value
  • Added helper class for building simple model comparators

0.5.2 (Jun 13th, 2010)

  • Added has_many_attr to metamodel builder, support for "many" attributes
  • Added JSON support (json instantiator and serializer)
  • Added QualifiedNameResolver instantiation helper
  • Added reference proxy support
  • Added more generic access methods on metaclasses
  • Added ReferenceResolver resolver mixin
  • Fixed ecore xml instantiator and serializer to handle references to builtin datatypes correctly
  • Fixed bug in ecore xml serializer to not output references which are opposites of containment references

0.5.3 (Aug 13th, 2010)

  • Fixed string escaping in JSON instantiator and serializer
  • Fixed order of eClassifiers and eSubpackages within an EPackage created by reflection on a RGen module

0.5.4

  • Fixed undeterministic order of child elements in ModelSerializer
  • Fixed undeterministic order of attributes in XMI serializers
  • Fixed ModelSerializer to always serialize the to-one part of bidirectional 1:N references
  • Fixed ModelSerializer to add :as => in case of ambiguous child roles
  • Made JsonInstantiator search subpackages for unqualified class names

0.6.0

  • Added exception when trying to instantiate abstract class
  • Replaced xmlscan by dependency to nokogiri
  • Made RGen work with Ruby 1.9
  • Cleaned up intermediate attribute and reference description, improvement of metamodel load time
  • Added optional data property for MMProxy
  • Added ECoreToRuby which can create Ruby classes and modules from ECore models in memory (without metamodel generator)
  • Refactored out QualifiedNameProvider and OppositeReferenceFilter
  • Added model fragment/fragmented models support
  • Extended Instantiator::ReferenceResolver and changed it into a class
  • Moved utilities into util folder/module
  • Added FileCacheMap
  • Fixed template language bug: indenting not correct after callback into same template container and iinc/idec
  • Added support for fragmented models
  • Added FileChangeDetector utility
  • Added CachedGlob utility
  • Added index parameter to model element add methods
  • Added MMGeneric
  • Modified has_many_attr to allow the same value in the same attribute multiple times
  • Made Environment#delete faster on large models
  • Added type check of ecore defaultValueLiteral content in MetamodelBuilder
  • Many-feature setters can work with an Enumerable instead of an Array
  • Added pattern matcher utility
  • Fixed problem of Ruby hanging when exceptions occur
  • Fixed metamodel generator to quote illegal enum literal symbols
  • Imporved UML to ECore transformer and EA support

0.6.1

  • Fixed metamodel builder to not overwrite a model element‘s ‘class’ method
  • Added enum type transformation to ECoreToUML13 transformer, primitive type mapping based on instanceClassName
  • Fixed default value appearing on read after setting a feature value to nil
  • Added eIsSet and eUnset methods
  • Added eContainer and eContainingFeature methods
  • Fixed ModelFragment#elements not containing root elements
  • Added optional output of invalidation reason to FileCacheMap#load_data

0.6.2

  • Made qualified name provider work with unidirectional containment references
  • Fixed array_extension breaking the Hash[] method

0.6.3

  • Added BigDecimal support

0.6.4

  • Made FileChangeDetector and FileCacheMap robust against missing files

0.6.5

  • Fixed missing default argument of FragmentedModel#resolve
  • Added to_str to methods which aren‘t forwarded by array extension on empty arrays

0.6.6

  • Added ModelFragment#mark_resolved and ResolutionHelper
  • Added ReferenceResolver option to output failed resolutions
  • Major performance improvement of FragmentedModel#resolve
  • Fixed a Ruby 2.0 related warning

[Validate]