# Author: Christophe Herreman # Version: $Revision: 802 $, $Date: 2008-07-03 16:41:42 +0200 (Thu, 03 Jul 2008) $, $Author: cherreman $ # Since: 0.1 PRANA FRAMEWORK CHANGELOG ========================= Note: dates are in DD.MM.YYYY format Changes in version 0.6 (03.07.2008) ----------------------------------- General * major refactoring of the IoC container, parser and application context to remove dependencies on the Flex framework classes. For ActionScript only projects use the XMLApplicationContext, for Flex/AIR projects use the FlexXMLApplicationContext. * added new prana/puremvc integration sample - "prana-sample-anotherArch101Demo". Description of new features is given in "prana-sample-anotherArch101Demo/resources/docs/pranaPureMvcIntegration-FurtherDevelopment.txt" document. * object postprocessors are now automatically instantiated when placed in XML context * introduced reference resolvers to handle references in application contexts * introduced node parsers to allow extensibility of the application context parser * introduced property editors Package org.pranaframework.cairngorm * refactored package layout * added abstract business delegate * added support for command factories in frontcontroller Package org.pranaframework.domain * introduced domain package for base domain objects * added Entity, Enum, ValueObject Package org.pranaframework.flexunit * added "FlexUnitTestCase.assertLength" * added "FlexUnitTestCase.assertArrayContains" Package org.pranaframework.ioc * "ObjectDefinitionScope.fromName" now returns SINGLETON if scope was not found Package org.pranaframework.ioc.factory.support * AbstractObjectFactory now uses configurable reference resolvers * added FlexXMLApplicationContext * fixed object creation from static factory method (arguments were not passed) Package org.pranaframework.ioc.factory.xml * fixed bug in XML merging from imports * refactored XSD to use group for subtypes * added support for "import" tag in XMLObjectFactory Package org.pranaframework.ioc.factory.xml.preprocessors * added MethodInvocationPreprocessor that handles "method-invocation" elements * fixed replacement of template parameters in TemplatePreprocessor Package org.pranaframework.objects * added property editors Package org.pranaframework.puremvc * added IIocConfigNameAware and IocConfigNameAwarePostProcessors. This addition enables much more natural usage of configured pure mvc elements (proxies, mediators, commands) in prana/puremvc integration. * IocProxy, IocMediator, IocSimpleCommand, IocMacroCommand and IocFacade are now extended from theirs puremvc counterparts. Usage patterns are same as before. Classes extended from IocProxy, IocMediator, IocSimpleCommand and IocMacroCommand are now fully compatible with typical "pure" PureMVC applications and can be used there without modification if they are not using IoC specific API. * added IocManagedMacroCommand * removed methods retrieveProxyByConfigName(), removeProxyByConfigName(), removeMediatorByConfigName() and retrieveMediatorByConfigName() from IIocFacade and its corresponding default IocFacade implementation. Instead of these methods, "standard" PureMvc method implementations (retrieveProxy(), removeProxy(), retrieveMediator() and removeMediator()) in IocFacade should be used. * IocFacade can now be constructed without configSource parameter. Now initializeIocContainer() method can be used for IoC container initialization after construction. This can be very useful in scenarios when application needs a control over GUI before IoC container can be initialized. For example, during application startup, when application wants to bring some kind of splash screen or something, controlled by PureMVC elements. Package org.pranaframework.reflection * replaced Map with Object for cache implementation in Type * added IInvocationHandler to handle invocations on a proxy Package org.pranaframework.utils * added "Assert.arrayContains" * renamed "ClassUtils.getParentClasss" to "ClassUtils.getSuperClass" * added "ClassUtils.getName" * added "ClassUtils.getNameFromFullyQualifiedName" * added "ClassUtils.getSuperClassName" * added "ClassUtils.getFullyQualifiedSuperClassName" * added "ClassUtils.getImplementedInterfaceNames" * added "ClassUtils.getFullyQualifiedImplementedInterfaceNames" * added "ClassUtils.getImplementedInterfaces" * added "ClassUtils.convertFullyQualifiedName" * added "ObjectUtils.getNumProperties" * added "ObjectUtils.getKeys" * added "DictionaryUtils.getKeys" Changes in version 0.5 (21.04.2008) ----------------------------------- General * improved documentation * added support for loading property files in application context * removed modified Cairngorm Store by Renaun Erickson * added updated Cairngorm Store that uses AMF3 and Mock data * prana-sample-puremvcArch101Demo updated to match PureMVC 2.0.3 related change (thanks to Ryan Gardner for supplying a patch) * project layout refactored for all Prana's projects * build system added and refactored for all Prana's projects * prana-install project introduced to ease configuration of Prana's projects for Eclipse/Flex Builder and Ant environments * prana-tools project added with initial version of template based project creation tool * "sample" template added in prana-tools * prana-tools-internal project added to host internal utilities (i.e. release build script) * XSD is now available for xml object definition files - http://www.pranaframework.org/schema/objects/prana-objects-0.5.xsd * added namespace support for xml object definition files * introduced Application Context concept as an XMLObjectFactory extension Package org.pranaframework.cairngorm * fixed changewatcher for property chain in EventSequence (thx Tony Hillerson) * "responder" property now has a public setter * added IResponderAware that defines a "responder" setter * made the responder argument optional in AbstractRemoteObjectDelegate * changed order of constructor arguments AbstractRemoteObjectDelegate Package org.pranaframework.collections * added Properties Package org.pranaframework.context * added IApplicationContext * added IApplicationContextAware * added IConfigurableApplicationContext Package org.pranaframework.context.support * added ApplicationContextAwareProcessor * added XMLApplicationContext Package org.pranaframework.ioc.loader * XmlObjectDefinitionsLoader handles loading of property files Package org.pranaframework.ioc.factory.config * added IConfigurableListableObjectFactory * added IConfigurableObjectFactory * added IObjectFactoryPostProcessor Package org.pranaframework.ioc.factory.support * replaced ObjectFactory with AbstractObjectFactory Package org.pranaframework.ioc.factory.xml.parser * "parse" method in XmlObjectDefinitionsParser now gets an optional Properties collection * fixed parsing of inline Dictionary entries Package org.pranaframework.ioc.factory.xml.parser.preprocessors * added PropertiesPreprocessor to apply properties to object definitions Package org.pranaframework.utils * added DictionaryUtils for working with Dictionary objects * added PropertiesUtils for working with Properties objects * added XMLUtils for working with XML objects * added "ObjectUtils.getClassInfo" which is the same as ObjectUtil.getClassInfo() in the Flex framework but adds support for primitive types * fixed "ObjectUtils.forInstance" to support primitive types * added support for Application Domains in "ClassUtils.forName" and "ClassUtils.forInstance" Package org.pranaframework.puremvc * updated dependencies to PureMVC 2.0.3 (thanks to Ryan Gardner for supplying a patch) * support for multiple configuration files added in PureMvc integration Changes in version 0.4 (26.01.2008) ----------------------------------- General * introduction of PureMVC support * added PureMVC sample application * nightly builds available at http://prana.herrodius.com * fixed config.xsl to ignore _svn folders Package org.pranaframework.cairngorm * fixed early dispatching of events in EventSequence Package org.pranaframework.collections * added "remove" method to IMap and Map * changed "size" and "values" methods to getters * Map now extends Dictionary instead of Proxy Package org.pranaframework.config * AppSettings now extends Proxy instead of Map Package org.pranaframework.ioc * added check for valid IList before creating cursor * added "isLazyInit" and "initMethod" properties to IObjectDefinition and ObjectDefinition * added support for init method in ObjectContainer * added "removeObjectFromInternalCache" method * enhancements to "getObject" * added post processing capabilities to ObjectContainer Package org.pranaframework.ioc.factory * added IObjectContainerAware Package org.pranaframework.ioc.factory.config * added ObjectContainerAwarePostProcessor * added LoggingTargetFactoryObject Package org.pranaframework.ioc.parser * added support for lazy init and init method in XmlObjectDefinitionsParser * fixed "parseProperties" because of Map refactoring, keys were not strings in XmlObjectDefinitionsParser Package org.pranaframework.puremvc * initial release Package org.pranaframework.utils * added Parse port from the Fit framework * added HtmlUtils utility methods for working with html * added "isExplicitInstanceOf" method to ObjectUtils Changes in version 0.3.1 (26.12.2007) ------------------------------------- General * improved documentation * build file now handles releases Package org.pranaframework.collections * IMap and Map now have "get" and "put" methods to support data binding * IMap now implements ICollectionView * added MapViewCursor Package org.pranaframework.config * AppSettings no longer implements IEventDispatcher because Map now does Package org.pranaframework.ioc * added support for factory objects in ObjectContainer through IFactoryObject interface * added ObjectDefinitionScope enum * IObjectDefinition now has "scope" getter and setter * added "scope" getter and setter to ObjectDefinition * "isSingleton" in ObjectDefinition now alters scope property instead of having a private member * ObjectContainer.getObject() is now able to return singleton or prototype objects Package org.pranaframework.ioc.factory * added "isSingleton" getter to IFactoryObject * added AbstractFactoryObject base class for factory objects Package org.pranaframework.ioc.factory.config * added RandomNumberFactoryObject to return random numbers * added FieldRetrievingFactoryObject to retrieve static or non-static fields from an object Package org.pranaframework.ioc.parser * added scopeAttributePreprocessor to XmlObjectDefintionsParser to set up scope attributes on object definitions Package org.pranaframework.ioc.util * added singleton and scope attributes to Constants Package org.pranaframework.reflection * added Field as a base class for all fields * Accessor now extends Field instead of AbstractMember * Constant now extends Field instead of AbstractMember * Type now extends Field instead of AbstractMember * Variable now extends Field instead of AbstractMember Package org.pranaframework.utils * TypeConverter.execute() can now return a class Changes in version 0.3 (24.11.2007) ----------------------------------- General * added Movie sample application based on article by Martin Fowler * improved documentation * moved Cairngorm related classes to org.pranaframework.cairngorm * Cairngorm Store sample now has different configuration of service locator Package org.pranaframework.cairngorm * added support for event sequencing * CairngormFrontController now checks for commands implementing the ICommands interface * implementation of CairngormServiceLocator Package org.pranaframework.errors * added ClassNotFoundError for retrieving a class by name when class was not found Package org.pranaframework.ioc * added serializer to create an application context from an object * added support for initializing object with IInitializingObject * added support for templates in application context * added support for definitions, parsed to Dictionary * added support for definitions, parsed to ArrayList * made container spring context compliant * improved error handling when creating object from object definitions * rewrote preprocessing of xml application context, now using chain of preprocessors * fixed creation of object without id, id is now auto generated * fixed order for object definitions so that they no longer need to be chronological Package org.pranaframework.reflection * added metadata introspection * added "getFullName" method to Method class * changed arguments in "invoke" method from ... to array Package org.pranaframework.utils * added "forName" method in ClassUtils for retrieving Class objects via class names * added "getParentClass" method in ClassUtils that returns the parent class of a given class * added "isSubclassOf" method in ClassUtils that returns if a class extends another class * added StringUtils * added DisplayObjectContainerUtils * added MethodInvoker to support initializing objects from application context * added "state" method to Assert class * changed TypeConverter so that it can return Class objects Changes in version 0.2 (26.04.2007) ----------------------------------- General * changed general classpath from be.indiegroup.prana to org.pranaframework * added first implementation of a Reflection API * improved documentation Package org.pranaframework.events * added XMLSocketEvent with eventname enum Package org.pranaframework.logging * added SOSTarget for SOS console logging Package org.pranaframework.reflection * first implementation Package org.pranaframework.utils * added ClassUtils which provides general utilities for working with Class objects Changes in version 0.1.1 (10.4.2007) ------------------------------------ General * improved documentation Package be.indiegroup.prana.ioc.factory * added IFactoryObject interface * added AbstractFactoryObject class Package be.indiegroup.prana.ioc.util * added CairngormFrontController Changes in version 0.1 (8.4.2007) --------------------------------- General * initial release: basic implementation of an Inversion of Control (IoC) container