Translations
Info
All page names need to be in English.
en da  de  fr  it  ja  km  nl  ru  zh

FLOW3 1.0.0 alpha8

From TYPO3Wiki
Jump to: navigation, search
This page belongs to the Flow Team (category Flow)

Release Notes for FLOW3 1.0.0 alpha8

This document contains information about FLOW3 version 1.0.0 alpha 8 which was released on Aptil 16th, 2010.

News

notice - Note

As an alpha release, FLOW3 1.0.0 alpha 8 is naturally not recommended for production use

Article on flow.typo3.org

What's New?

For a full list of new features and improvements please see our Changelog below.

Alpha

Again, as an alpha release, FLOW3 1.0.0 alpha 8 is naturally not recommended for production use. Be warned: It's a bit slow, eats more memory than is perhaps healthy and has not yet undergone a full security review. However these issues will be addressed in the upcoming alpha releases and we're confident that FLOW3 1.0.0 final will be a rock solid framework which performs well in production environments.

Next Release

The focus for the next release is on important features for the security framework and speed / stability improvements.

Your Feedback

We want to hear your opinion! What's your experience with this release? What went well, what didn't? What features are you missing? Join our discussions in the mailing list, IRC channel and twitter ... Check out http://flow.typo3.org/get-involved/ for ways to get involved and get in touch. Get into the FLOW3! - Your FLOW3 Core Team

Download

http://flow.typo3.org/download/

MD5 checksums can be found on the download page.

Upgrading

We again took the freedom of renaming a few classes and rewrote the persistence layer storage backend. So if you have been using FLOW3, you need to adjust your code and migrate your data.

Fear not, it is as easy as running one command:

./flow3 migrate objectmanagerusage

"migrate objectmanagerusage" adjusts your code to the new object manager API (no more ObjectFactory, get() and create() on ObjectManager).

Changelog

Changes that require end-user code adjustments

  • The object manager API was changed, use the "migrate objectmanagerusage" command to adjust your code. The most important change is the removal of the Object Factory whose create() method is now located in the Object Manager. Furthermore, the getObject() method has been renamed to get() and a few minor important API functions within the Object Manager have been modified. Please note that although calls to the Object Factory still work, they are deprecated.
  • Renamed the setting for monitoring class changes from "monitor: fileMonitor: enable" to "monitor: detectClassChanges". The changeDetectionStrategy option has been removed and must be configured through the Objects.yaml configuration if neccessary
  • Removed the switch for reflection class change detection. This function is now bound to the more general "monitor: detectClassChanges" setting
  • AOP is now always enabled. The switch for disabling only had a theoretical meaning anyway
  • The test runner does not provide an Object Manager instance anymore! You'll need to refactor your tests and use mocks instead!
  • Moved the Account model to the FLOW3 Security sub package.
-------------------------------------------------------------------------------
  FLOW3
-------------------------------------------------------------------------------

[BUGFIX]
(Documentation) Fixed a wrong provider name in the examples of the Security Framework section - r3803
(Property) The property mapper now handles optional constructor arguments of target objects correctly - r3973
(Core) Fixed the safeguard for the FLOW3_ROOTPATH environment variable in CLI context. Resolves #7286 - r4166
(AOP) Properties of the AOP proxy class are now prefixed by FLOW3_AOP_Proxy_. This fixes #6188 - r3823
(AOP) Parentheses are now correctly parsed in the regular expression defining a method name in a pointcut expression. Resolves #6529 - r3832
(Cache) findTagFilesByEntry() now returns an array even if glob() fails. Fixes #6620 - r3906
(Configuration) getConfiguration() now returns settings for all packages if asked to do so, fixes #6967 - r4002
(Core) Two compliance fixes to flow3.sh, fixes #6693, fixes #6694. T3BOARD10 Bug Auction bonus fixes. :) - r3916
(Core) FLOW3 now detects environment variables which are prepended with "REDIRECT_". This seems to happen under certain circumstances with FCGI + Apache. Resolves #6596 - r3859
(Core) Found out that the getRequestPath() method returned a wrong path in the FCGI case. Probably now finally fixes #6596 - r3865
(Core) Removed leftover SessionRegistry usage, fixes #6807. Adjusted StaticObjectContainerTemplate along the way - r3940
(Error) The debug exception handler now escapes the exception message. Resolves #6773 - r3924
(Object) Removed the obsolete SessionRegistry which was causing trouble resulting in a drastically growing session file. Fixes #6761 - r3929
(Object) The code caches are now flushed correctly if a class file has changed. Previously it could happen that AOP proxy classes were not found if its target class had been changed - r3843
(Object) The ObjectSerializer now uses a unique hash for all objects, fixes #6902 - r3991
(Object) Interfaces with no known implementation but a factory can be used now, fixes #6968, relates to #6928 - r4002
(Object) Default values of NULL for constructor arguments are now considered existing when building static object container, fixes #6914 - r4006
(Object) The static object container is now rebuilt automatically if the FLOW3 revision changed. Fixes #6846 - r3946
(Object) When building the static object container injected string values are quoted now, fixes #6847 - r3941
(Object) The object serializer now serializes only the properties of the target class if the given object is proxied - r3973
(Persistence) When ordering query results the ordering now works as expected for integers, fixes #6786 - r3966
(Persistence) Fixed left over JCR constant in AbstractSqlBackend, fixes #6153 - r3746
(Persistence) Queries using orderings but no constraints now work, fixes #6911 - r3993
(Persistence) The Persistence Manager now retrieves repository objects by object name instead of class name. Resolves #7199 - r4043
(Persistence) When an entity is replaced through reference (as opposed to through a repository), it is now handled correctly - r4035
(Persistence) Fixed a bug with persistence that hit when updated objects were to be persisted but seen through a property of another object first (order of persistObject calls). Fixes #6581, relates to #4931 - r3851
(Persistence) Existing value objects' properties are now no longer persisted (nonsense, they are immutable anyway) - r4035
(Property) Value objects are no longer map()ped built built from scratch in transformToObject(), fixes #7049 - r4019
(Property) Fixed a runtime notice in PropertyMapper, fixes #6204 - r3756
(Property) The property mapper now doesn't map properties if the source is NULL and the target is an object. This helps for example while updating objects which contain a resource which is unchanged (in which case the getUploadedFiles function returns NULL for that property) - r3870
(Property) PropertyMapper::transformToObject() now returns the result of an object converter call if it is NULL or an object. If an error object is returned, it returns NULL and adds the error to the mapping results. Fixes #6209 - r3757
(Reflection) Fixed a runtime notice in ReflectionService, fixes #6162 - r3754
(Reflection) The Reflection Service now ignores leading backslashes in class names specified in annotations. Resolves #7198 - r4043
(Reflection) ObjectAccess::getProperty() now throws an exception when a property does not exist, fixes #6005 - r3739
(Reflection) ObjectAccess know correctly recognizes isFoo() getter methods for boolean properties. Fixes #6647 - r3892
(Resource) Fixed removal of files tied to persisted resources on object removal, fixes #6909 - r3992
(Resource) When publishing persistent resources NULL for the title is now ignored as well, fixes #6780 - r3932
(Resource) Added a safeguard into the ResourceObjectConverter which detects if a file upload has previously been converted to an object. Without this check it could happen that FLOW3 tries to move the uploaded file multiple times, which doesn't work of course - r4031
(Security) The WebRedirect entry point now takes the Base URI into account. That means you'll have to specify a _relative_ URI in your settings for defining a web entry point (i.e. no leading slash!) - r3867
(Security) Evaluating runtime constraints in the policy service failed, because of a missing ; and a missing argument for the evaluation closure - r3894
(Security) Fixed the token duplication in the security context, fixes #6761 - r3939
(Security) Fixed a bug which resulted in a non working Account Repository. Fixes #6787 - r3929
(Utility) Fixed a bug in Files::emptyDirectoryRecursively() which wrongly recognized certain files as directories due to incorrect usage of the directory iterator - r3758
(Utility) The request URI is now detected correctly with PHP as Apache module as well as FastCGI (tested on Cherokee). Fixes #3029, fixes #3375 - r3833
(Validation) Added a type safeguard to the StringLengthValidator - r4031
(Validation) EmailAddressValidator accepts valid IP addresses now, fixes #6806 - r3945
(Validation) The Validator Resolver now correctly builds validator conjunctions even recursively for properties of the given data type - r3973
(Validation) The Validator Resolver now correctly handles fully qualified class names with a leading backslash specified in annotations. Fixes #6992 (boy, that was hard to find ...) - r4012
(Validation) The Generic Object Validator now also accepts NULL as a valid value - r3973

[FEATURE]
(Distribution) Added an action "migrate objectmanagerusage" to the flow3 script. Relates to #6562 - r3834
(AOP) The AOP Framework now uses the new PHP cache frontend for storing AOP proxy classes. Speeds up the initial startup of FLOW3 enormously. Relates to #6137 - r3758
(AOP) If an advice is executed can now depend on runtime evaluations, which can be configured in the pointcut expression. Relates to #5659 - r3823
(Cache) Implemented a PHP Cache Frontend which allows for effective caching of PHP code which is included with require_once() instead of runtime parsing with eval(). This significantly improves speed when used in combination with an opcode cache such as APC. Currently only the FileBackend supports PHP code caching. Resolves #6137 - r3758
(Core) Made the flow3 shell script configurable regarding PHP binary, context and paths used through Configuration/flow3.sh. Resolves #6681. T3BOARD10 Bug Auction - r3916
(Core) The flow3 shell script now uses the PHP binary specified in the PHP environment variable, resolves #6681 - r3903
(Error) Implemented a FLOW3 optimized var_dump() method - just call it with \F3\var_dump(). Relates to #6913 - r3999
(MVC) The Web Request Handler now sends an additional Content-Type header if the format found in the request is RSS or Atom. Resolves #6646 - r3889
(Object) Implemented a static object container which is automatically built. It's essentially a hardcoded version of the autowired and configured object dependencies - just a lot faster. Many tests are still missing, but the version in this commit should be mostly functional. Addresses #3740 and resolves #2123 - r3837
(Persistence) Reimplemented lazy loading, resolves #6120. See updated manual for details - r3930
(Persistence) added signals when persisting new and updated objects and when removing objects, resolves #6177 - r3769
(Persistence) Lazy loaded SplObjectStorage can now be counted without triggering activation, resolves #3337 - r3930
(Persistence) When persisting all new and dirty objects are validated now, resolves #3846. If validation fails, an exception is thrown - r4010
(Persistence) The Repository class now has countAll() and countBy*() support, resolves #6685 - r3904
(Persistence) Implemented query operators for in() and contains(), resolves #1884 - r3783
(Property) When creating object the PropertyMapper now makes use of constructor arguments, this enables value object creation and thus resolves #6869 - r3960
(Property) The PropertyMapper now only maps to settable properties and no longer relies on the class schema to determine the type for the target property - it uses the setter parameter's type if available and falls back to the class schema if needed. Resolves #5612 - r3746
(Property) The property mapper now issues a meaningful mapping error if the type hint or doc comment of a target setter is invalid. Resolves #6774 - r3925
(Reflection) When building class schemata the ReflectionService now checks value objects for a constructor and no setters, resolves #6868 - r3962
(Reflection) When building class schemata the ReflectionService now checks value objects for a constructor and no setters, resolves #6868 - r3961
(Reflection) ObjectAccess::getPropertyPath does support Arrays now, resolves #6390, relates to #7203 - r4185
(Reflection) When reflecting classes entities and value objects are checked for being declared prototype, resolves #6141 - r3746
(Reflection) ClassSchema now enforces consistency when it comes to value objects and identity/identifier properties, resolves #6140, resolves #6142 - r3746
(Security) Implemented runtime evaluations support for policy resources. Resolves #6599, relates to #5659 - r3881
(Security) The new AccountFactory now allows for convenient creation of a new account with username and password. Resolves #5846 - r3926
(Utility) Added getUploadErrorMessage() to Files - r3757
(Validation) The @validate annotations in action methods now support an object accessor syntax ($argument.subobject.subsubobject) for declaring additional validation rules referring to a property of a nested object. Resolves #6993 - r4014

[CONFIGURATION]
AOP is now always enabled. The switch for disabling only had a theoretical meaning anyway - r3843
(Reflection) Removed the switch for reflection class change detection. This function is now bound to the more general "monitor: detectClassChanges" setting - r3843
(Monitor) Renamed the setting for monitoring class changes from "monitor: fileMonitor: enable" to "monitor: detectClassChanges". The changeDetectionStrategy option has been removed and must be configured through the Objects.yaml configuration if neccessary - r3843

[DOCUMENTATION]
(AOP) Added documentation for the new runtime evaluations feature of the AOP framework. Resolves #6661 - r3900
(Persistence) Updated sequence diagrams and text to reflect current state - r3917
(Security) Updated the sequence diagrams according to the latest changes in the policy system. Relates to #6660 - r3901
(Security) Updated the documentation according to the latest changes in the policy system. Resolves #6660 - r3900

[TASK]
(Configuration) The Configuration Manager and its YAML source now doesn't depend on the YAML package anymore but refers to a YAML parser class within the FLOW3 package. Resolves #6564 - r3837
(Error) Some tiny fixes to Debugger.css, relates to #6913 - r4161
(MVC) Renamed Controller\Context (back) to Controller\ControllerContext, resolves #6949 - r4005
(Package) Now a single package can be symlinked - r3754
(Persistence) Cleaned up persistence backend structure, resolves #6124 - r3734
(Persistence) Got rid of Literal, BindVariableValue, Ordering, Selector and QueryObjectModel; relates to #6267 - r3783
(Persistence) Renamed DirtyMonitoringInterface to PersistenceMagicAspect - r3830
(Persistence) Completely rewrote dirty checking, achieves massive speedup; isNew() and isDirty() are no longer AOP'ed into objects but reside in the PersistenceManager now - r3830
(Reflection) When building class schemata properties pointing to objects not being declared entity or valueobject are skipped now - r3963
(Reflection) Determining method parameter reflection data now gives @param precendence over type hints, this fixes property mapping onto typed collections (e.g. related posts in the Blog) - r3965
(Reflection) Removed unused code, resolves #71763 - r4149
(Reflection) GenericObjectValidator now checks properties even if they are not accessible normally - r3739
(Resource) The ResourceObjectConverter now returns NULL if no file was uploaded. In case an upload error occurred or the file extension was rejected an Error object is returned (formerly it would return FALSE or throw an exception respectively). Related to #6209 - r3757
(Resource) When a persistent resource is removed, a published version is removed as well - r3992
(Security) Removed the old privileges concept. Now there is only one (implicit) access privilege. Resolves #6600, relates to #5659 - r3881
(Security) Replaced all occurrences of ACL by Policy. Resolves #6462 - r3826
(Security) Moved the security policy configuration to its own Policy.yaml file. Resolves #5440 - r3824
(Security) Removed the GrantedAuhorityInterface and replaced all uses of "Granted Authority" by "Role". Resolves #6317 - r3806
(Security) Clarified what happens to the pattern in RequestPattern\Uri, resolves #7031 - r4155
(Security) Removed the security context holder session with its interface. The whole functionality is now available directly through the security context itself. Resolves #5851 - r3895
(Security) The security context has now a method getParty() which returns the party of the first authenticated account. This method is e.g. used for runtime evaluations (current.party) in AOP or the security policy. Resolves #6135 - r3897
(Utility) In environment we no longer prohibit access to to $_SERVER, this makes use of third party code easier - r4002
(Validation) The EmailAddressValidator now rejects addresses with more than one @ sign as well as non-word characters at the end. Fixes #6089 - r3731
(Validation) Some documentation cleanup to DisjunctionValidator, resolves #6727 - r3949
(Distribution) Removed the PHP6 package from the Base distribution - r3759
(Distribution) Removed the YAML package from the Base distribution. Relates to #6564 - r3834
(Distribution) Removed the packages TYPO3CR and PHPCR from the FLOW3 Base distribution - r3732

[API]
(MVC) Controller\Argument no longer has setNewValidatorConjunction() - it was unused - r4170
(Object) Heavily refactored the Object Manager and its tests. The most important change is the removal of the Object Factory whose create() method is now located in the Object Manager. Furthermore, the getObject() method has been renamed to get() and a few minor important API functions within the Object Manager have been modified. This commit also contains a script which allows for semi automatically migrating existing code to the new API (see ./flow3 migrate objectmanagerusage). Resolves #6562 - r3837
(Persistence) Removed the DataMapperInterface. Backends should follow the defined data structure - r3930
(Persistence) Moved the BackendInterface into the Backend namespace - r3930
(Persistence) QueryInterface now has signatures for in() and contains(), relates to #1884 - r3783
(Persistence) Renamed findByUUID() to findByUuid() - r3904
(Persistence) Added countAll() and countBy*() to RepositoryInterface, relates to #6685; added some more (existing) signatures to the interface as well - r3904
(Persistence) getObjectDataByQuery(), getObjectCountByQuery() now in PersistenceManagerInterface - r3830
(Persistence) removed getBackend() from PersistenceManager, no longer needed as API methods from backend moved to PersistenceManager - r3830
(Persistence) replaceObject() moved from BackendInterface to PersistenceManagerInterface - r3830
(Resource) added deleteResource() to ResourceManager to remove persisted resources - r3769
(Security) Created two new functions for the HashService: createSaltedMd5() and validateSaltedMd5(). Resolves #7054 - r4020
(Utility) Added detectBaseUri() to Environment. Given an URI instance it tries to detect the corresponding base URI - r3866
(Utility) Renamed detectBaseUri() to getBaseUri() - r3867
(Utility) Added getScriptRequestPath() to Environment, returns the path to the actual script request relative to the document root - r3866
(Utility) Renamed getScriptRequestPathAndName() to getScriptRequestPathAndFilename() in Environment - r3866


-------------------------------------------------------------------------------
  ExtJS
-------------------------------------------------------------------------------

[TASK]
Updated ExtJS to 3.2.0 - r4150

[FEATURE]
(ExtDirect) A first, unpolished implementation of Ext Direct for FLOW3, relates to #6823 - r3937
(ExtDirect) Implemented view helper for provider generation - r3986

[BUGFIX]
(ExtDirect) Added safeguard for transaction data array - r3989


-------------------------------------------------------------------------------
  Fluid
-------------------------------------------------------------------------------

[FEATURE]
(Core) Merged the changes from the parsing-interceptors branch to trunk. Now one can register interceptors with the Fluid parser to influence the parse tree building. This comes with a replacement HtmlSpecialCharsPostProcessor and adds transparent handling of resources referenced from templates. Resolves #5257 - r3751
(ViewHelpers) To disable escaping you can now use the f:raw ViewHelper: {f:raw(value: htmlstring)}. Resolves #6844 - r3942
(ViewHelpers) Changed TagBasedViewHelper Argument from onClick to onclick (mind the spelling). This is in conformance with http://www.w3.org/TR/xhtml1/#h-4.2 - r3950
(ViewHelpers) The <f:form.error> ViewHelper now supports property paths for the "for"-Argument. Now, one can display only the errors of a given property of an object. Example: In the Blog Example, one could now write <f:form.errors for="blog.title"> - r3998
(ViewHelpers) Added "onClick" to the list of universal attributes. We'll probably need more - r3880

[BUGFIX]
(ViewHelpers) The SelectViewHelper now supports SplObjectStorage as a source for options. Fixes #7068 - r4030
(ViewHelpers) The BaseViewHelper now no longer cares for MSIE6 and renders valid output (again) - r3838


-------------------------------------------------------------------------------
  Kickstart
-------------------------------------------------------------------------------

[BUGFIX]
Fixed outdated reference to RenderingConfiguration, fixes #6316 - r3804


-------------------------------------------------------------------------------
  Party
-------------------------------------------------------------------------------

[TASK]
Moved the Account model to the FLOW3 Security sub package. Relates to #5846 - r3927


-------------------------------------------------------------------------------
  Testing
-------------------------------------------------------------------------------

[API]
The test runner does not provide an Object Manager instance anymore! You'll need to refactor your tests and use mocks instead! - r3836

Past Release Notes

If you have skipped one version while upgrading to this version, please make sure to read those ReleaseNotes (see list) also.