<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://www.stubbles.org/feeds/atom.xml" rel="self" title="Stubblog" type="application/atom+xml" />
    <link href="http://www.stubbles.org/"                        rel="alternate"    title="Stubblog" type="text/html" />
    <link href="http://www.stubbles.org/rss.php?version=2.0"     rel="alternate"    title="Stubblog" type="application/rss+xml" />
    <title type="html">Stubblog</title>
    <subtitle type="html">Less slogan, more code.</subtitle>
    <icon>http://www.stubbles.org/templates/default/img/s9y_banner_small.png</icon>
    <id>http://www.stubbles.org/</id>
    <updated>2011-12-04T15:46:54Z</updated>
    <generator uri="http://www.s9y.org/" version="1.1">Serendipity 1.1 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://www.stubbles.org/archives/100-vfsStream-0.11.1-released.html" rel="alternate" title="vfsStream 0.11.1 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-12-04T15:46:54Z</published>
        <updated>2011-12-04T15:46:54Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=100</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=100</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
            <category scheme="http://www.stubbles.org/categories/5-vfsStream" label="vfsStream" term="vfsStream" />
    
        <id>http://www.stubbles.org/archives/100-guid.html</id>
        <title type="html">vfsStream 0.11.1 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Today we released vfsStream 0.11.1 which contains an important bugfix for usages of mkdir(). Until 0.11.1 calls to mkdir() with vfsStream URLs replace already existing directories or files, instead of returning false and trigger a warning. This has been fixed with 0.11.1. Thanks to Julien Fontanet for reporting the issue.<br />
<br />
As always you can get the new release via our <a href="http://www.stubbles.org/exit.php?url_id=577&amp;entry_id=100" title="https://github.com/mikey179/vfsStream/wiki/Install"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Install';return true;" onmouseout="window.status='';return true;">pear channel</a>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/99-vfsStream-0.11.0-released.html" rel="alternate" title="vfsStream 0.11.0 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-11-29T21:12:52Z</published>
        <updated>2011-11-29T21:12:52Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=99</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=99</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
            <category scheme="http://www.stubbles.org/categories/4-Planet-PHP" label="Planet PHP" term="Planet PHP" />
            <category scheme="http://www.stubbles.org/categories/5-vfsStream" label="vfsStream" term="vfsStream" />
    
        <id>http://www.stubbles.org/archives/99-guid.html</id>
        <title type="html">vfsStream 0.11.0 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Some minutes ago vfsStream 0.11.0 was released with several bug fixes and new features. Unfortunately this introduces a BC break to the vfsStream::create() method introduced with 0.10.0. While in 0.10.0 it completely replaced the directory structure this is not the case any more. It now only adds the given structure to an existing structure, either to the directory given with the second parameter, or to the root directory without removing any other childs of the root directory. If you want to replace the whole directory tree you can use the vfsStream::setup() method which now has a third parameter. See <a href="http://www.stubbles.org/exit.php?url_id=574&amp;entry_id=99" title="https://github.com/mikey179/vfsStream/wiki/Createcomplexstructures"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Createcomplexstructures';return true;" onmouseout="window.status='';return true;">create complex directory structures documentation</a> for code examples.<br />
<br />
Another new feature is the possibility to import a file system structure from disc into vfsStream. This way you can emulate an existing file structure in vfsStream without having to recreate it from scratch. See <a href="http://www.stubbles.org/exit.php?url_id=575&amp;entry_id=99" title="https://github.com/mikey179/vfsStream/wiki/Copyfromfilesystem"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Copyfromfilesystem';return true;" onmouseout="window.status='';return true;">copy from file system documentation</a> for more details.<br />
<br />
Additionally, three bugs were fixed: unlink() does not remove non-empty directory any more, vfsStreamDirectory::hasChild() now doesn't give false positives for nested paths (patch provided by Andrew Coulton), and opening a file for reading only doesn't update the modification time any more (initial patch provided by Ludovic Chabant).<br />
<br />
Thanks to all contributors and issue reporters for their help to improve vfsStream.<br />
<br />
As always you can get the new release via our <a href="http://www.stubbles.org/exit.php?url_id=576&amp;entry_id=99" title="https://github.com/mikey179/vfsStream/wiki/Install"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Install';return true;" onmouseout="window.status='';return true;">pear channel</a>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/98-vfsStream-0.10.1-released.html" rel="alternate" title="vfsStream 0.10.1 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-08-22T13:03:00Z</published>
        <updated>2011-08-22T13:03:00Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=98</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=98</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
            <category scheme="http://www.stubbles.org/categories/4-Planet-PHP" label="Planet PHP" term="Planet PHP" />
            <category scheme="http://www.stubbles.org/categories/5-vfsStream" label="vfsStream" term="vfsStream" />
    
        <id>http://www.stubbles.org/archives/98-guid.html</id>
        <title type="html">vfsStream 0.10.1 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Today vfsStream 0.10.1 has been released, containing two bug fixes. The first was a problem with the vfsStream::create() functionality introduced with 0.10.0, where using numeric directories failed because of implicit type conversions (in PHP) and explicit type checks (in vfsStream). Thanks to <a href="http://www.stubbles.org/exit.php?url_id=571&amp;entry_id=98" title="https://github.com/mathieuk"  onmouseover="window.status='https://github.com/mathieuk';return true;" onmouseout="window.status='';return true;">Mathieu Kooiman</a> for finding this issue and providing a patch.<br />
<br />
The other fix is a mix of a documentation and type hinting fix: now you can only use directories as root instance - before it was allowed to add files as vfsStream root with with vfsStreamWrapper::setRoot(), however this failed latest when trying to access other files with a directory name. Starting with 0.10.1 you can not add files as root any more, and this was also used to change the return type documentation so you can get better auto completion when retrieving a directory object with vfsStreamWrapper::getRoot(). Thanks to <a href="http://www.stubbles.org/exit.php?url_id=572&amp;entry_id=98" title="https://github.com/kabanovdmitry"  onmouseover="window.status='https://github.com/kabanovdmitry';return true;" onmouseout="window.status='';return true;">Dmitry Kabanov</a> for reporting this issue.<br />
<br />
As always you can get the new release via our <a href="http://www.stubbles.org/exit.php?url_id=573&amp;entry_id=98" title="https://github.com/mikey179/vfsStream/wiki/Install"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Install';return true;" onmouseout="window.status='';return true;">pear channel</a>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/97-vfsStream-0.10.0-released.html" rel="alternate" title="vfsStream 0.10.0 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-07-22T13:41:00Z</published>
        <updated>2011-07-28T05:50:13Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=97</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=97</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
            <category scheme="http://www.stubbles.org/categories/4-Planet-PHP" label="Planet PHP" term="Planet PHP" />
            <category scheme="http://www.stubbles.org/categories/5-vfsStream" label="vfsStream" term="vfsStream" />
    
        <id>http://www.stubbles.org/archives/97-guid.html</id>
        <title type="html">vfsStream 0.10.0 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Not even ten days after the release of vfsStream 0.9.0 today the fresh version 0.10.0 hits the streets, containing various improvements to make your life with vfsStream much easier. Especially when you want to create more than just two or three files it's really noisy to create the directory structure. To ease this vfsStream now provides a vfsStream::create() method which accepts an array and builds the directory structure from it. See <a href="http://www.stubbles.org/exit.php?url_id=567&amp;entry_id=97" title="https://github.com/mikey179/vfsStream/wiki/Createcomplexstructures"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Createcomplexstructures';return true;" onmouseout="window.status='';return true;">create complex directory structures</a> for more details.<br />
<br />
Another improvement is that vfsStream now supports flock() meaning that you can call flock() with a vfsStream file url and afterwards check the file instance whether the lock was set correctly. Another requested feature was the possibility to print out directory structures, but I had the idea of providing even more possibilities on what you could do when inspecting the directory structure. For a more detailed view on what this new feature provides check the <a href="http://www.stubbles.org/exit.php?url_id=568&amp;entry_id=97" title="https://github.com/mikey179/vfsStream/wiki/Visitors"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Visitors';return true;" onmouseout="window.status='';return true;">wiki page about Visitors</a>.<br />
<br />
Also this release introduces a BC break. As announced with 0.9.0 the then deprecated method vfsStreamContent::setFilemtime() was removed now - please use fsStreamContent::lastModified() instead.<br />
<br />
In order to ensure better compatibility between PHP 5.2 and 5.3 calling support for stream_set_blocking(), stream_set_timeout() and stream_set_write_buffer() on 5.3 was added. However calls with these functions always return false and do not have any influence on vfsStream, which is rather because concrete usage scenarios are a bit unclear at the moment. If you have any ideas or feature requests on how vfsStream should treat such calls feel free to add your comments on <a href="http://www.stubbles.org/exit.php?url_id=569&amp;entry_id=97" title="https://github.com/mikey179/vfsStream/issues/15"  onmouseover="window.status='https://github.com/mikey179/vfsStream/issues/15';return true;" onmouseout="window.status='';return true;">issue #15</a>.<br />
<br />
You can get the new release via our <a href="http://www.stubbles.org/exit.php?url_id=570&amp;entry_id=97" title="https://github.com/mikey179/vfsStream/wiki/Install"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Install';return true;" onmouseout="window.status='';return true;">pear channel</a>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/96-vfsStream-0.9.0-released.html" rel="alternate" title="vfsStream 0.9.0 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-07-13T13:32:56Z</published>
        <updated>2011-07-16T19:31:17Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=96</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/4-Planet-PHP" label="Planet PHP" term="Planet PHP" />
            <category scheme="http://www.stubbles.org/categories/5-vfsStream" label="vfsStream" term="vfsStream" />
    
        <id>http://www.stubbles.org/archives/96-guid.html</id>
        <title type="html">vfsStream 0.9.0 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Today the new 0.9.0 release of vfsStream was shipped to our PEAR channel. This release ships with a new feature that allows (unit) test scenarios which make use of file access time and file attribute modification time. While there is no restriction on usage of the file access time, support for file attribute modification time is still quite limited due to the fact that PHP's stream wrapper do not support changing file attributes via chmod(), chown() and chgrp(). However, this might change with PHP 5.4 but this is some month away from today.<br />
<br />
Another issue fixed (well, kind of) is the problem that calls to stream_select() with vfsStream-URLs did not cause problems with PHP 5.2 but with 5.3 - this release makes sure that vfsStream behaves the same under both versions. Unfortunately it continues that stream_select() does not work with vfsStream-URLs as the only possible implementation of the stream_cast() method was to return false. Actually it is expected to return the underlying resource, but there is no such resource in vfsStream, and returning resources pointing to data:// scheme URLs does not work either.<br />
<br />
More changes are the deprecation of the vfsStreamAbstractContent::setFilemtime() method in favor of vfsStreamAbstractContent::lastModified(), which means the aforementioned is scheduled to be removed with the next minor release (most likely 0.10.0). You should change your code accordingly if you make use of this method. Last but not least there was a bug that not all given URLs were resolved correctly, leading to the problem that in the second parameter of rename() and in mkdir() no dots could be used, which is fixed now.<br />
<br />
You can get the new release via our <a href="http://www.stubbles.org/exit.php?url_id=565&amp;entry_id=96" title="https://github.com/mikey179/vfsStream/wiki/Install"  onmouseover="window.status='https://github.com/mikey179/vfsStream/wiki/Install';return true;" onmouseout="window.status='';return true;">pear channel</a>.<br />
<br />
By the way, did you notice that development of vfsStream has moved to <a href="http://www.stubbles.org/exit.php?url_id=566&amp;entry_id=96" title="https://github.com/mikey179/vfsStream"  onmouseover="window.status='https://github.com/mikey179/vfsStream';return true;" onmouseout="window.status='';return true;">Github</a>?<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/95-Stubbles-1.6.0-released.html" rel="alternate" title="Stubbles 1.6.0 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-03-14T16:16:07Z</published>
        <updated>2011-03-14T16:16:07Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=95</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=95</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
    
        <id>http://www.stubbles.org/archives/95-guid.html</id>
        <title type="html">Stubbles 1.6.0 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Today we released Stubbles 1.6.0, which is another major step of abandoning our XJConf for PHP dependency. The variant manager configuration can still be done using XML, but we don't use XJConf any more, but an own parser which is much simpler and uses less resources. It is not as powerful as XJConf, but powerful enough for all features required for variant configuration, and still being able to extend this configuration with user-defined tags. So the 1.6 series will also be the last one where XJConf is bundled. In the 1.7 series XJConf will not be part of the release any more, and all XJConf related code will be moved into a separate project.<br />
<br />
Another improvement is the fact that there is no need any more for specific annotation classes. If no specific annotation class is present the new stubGenericAnnotation class will be used. This is sufficient for most use cases, and Stubbles will only use the new generic class internally.<br />
<br />
One last improvement is the possibility to use injection providers for constant values as well. Until now it was only possible to set a concrete value for a constant, but starting with 1.6.0 it can now be bound to an injection provider which may calculate the value at runtime or use other classes to retrieve the actual value.<br />
<br />
See the full <a href="http://www.stubbles.org/exit.php?url_id=562&amp;entry_id=95" title="http://stubbles.net/wiki/Changelog"  onmouseover="window.status='http://stubbles.net/wiki/Changelog';return true;" onmouseout="window.status='';return true;">changelog</a> for all details of changes for this release. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/94-Stubbles-1.6.0-RC1.html" rel="alternate" title="Stubbles 1.6.0 RC1" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-03-01T21:04:42Z</published>
        <updated>2011-03-01T21:04:42Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=94</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=94</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
    
        <id>http://www.stubbles.org/archives/94-guid.html</id>
        <title type="html">Stubbles 1.6.0 RC1</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                To start with the Stubbles 1.6 series the first release candidate 1.6.0 RC1 is now available:<br />
<a href="http://www.stubbles.org/exit.php?url_id=559&amp;entry_id=94" title="http://downloads.stubbles.net/rc/stubbles-1.6.0RC1.tgz"  onmouseover="window.status='http://downloads.stubbles.net/rc/stubbles-1.6.0RC1.tgz';return true;" onmouseout="window.status='';return true;">http://downloads.stubbles.net/rc/stubbles-1.6.0RC1.tgz</a><br />
<br />
Please test it thoroughly with your applications and report any bugs into our <a href="http://www.stubbles.org/exit.php?url_id=560&amp;entry_id=94" title="http://stubbles.net/newticket"  onmouseover="window.status='http://stubbles.net/newticket';return true;" onmouseout="window.status='';return true;">Trac installation</a>.<br />
<br />
For a list of changes please see the <a href="http://www.stubbles.org/exit.php?url_id=561&amp;entry_id=94" title="http://stubbles.net/wiki/Changelog"  onmouseover="window.status='http://stubbles.net/wiki/Changelog';return true;" onmouseout="window.status='';return true;">changelog</a>.<br />
<br />
If no obstacles rise up the scheduled release for 1.6.0 is March 8th. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/93-Stubbles-1.5.1-released.html" rel="alternate" title="Stubbles 1.5.1 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-02-23T15:19:33Z</published>
        <updated>2011-02-23T15:19:33Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=93</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=93</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
    
        <id>http://www.stubbles.org/archives/93-guid.html</id>
        <title type="html">Stubbles 1.5.1 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Today we released Stubbles 1.5.1. This is a bugfix release, fixing one bug inside the XML/XSL view engine that prohibited usage of the common page path for including xsl stylesheets from the common project. You can get the release from our <a href="http://www.stubbles.org/exit.php?url_id=558&amp;entry_id=93" title="http://downloads.stubbles.net/"  onmouseover="window.status='http://downloads.stubbles.net/';return true;" onmouseout="window.status='';return true;">downloads page</a>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/92-Stubbles-for-XP-an-experiment.html" rel="alternate" title="Stubbles for XP: an experiment" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-02-14T20:46:38Z</published>
        <updated>2011-02-15T14:46:59Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=92</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=92</wfw:commentRss>
    
    
        <id>http://www.stubbles.org/archives/92-guid.html</id>
        <title type="html">Stubbles for XP: an experiment</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Last Friday I went to farewell party of a friend of mine, and on this evening I talked with Alex Kiesel who is one of the <a href="http://www.stubbles.org/exit.php?url_id=554&amp;entry_id=92" title="http://xp-framework.net/"  onmouseover="window.status='http://xp-framework.net/';return true;" onmouseout="window.status='';return true;">XP framework</a> developers about various things, injection support within the XP framework amongst them. As you might or might not know, both Stubbles and XP are similar in some areas, mostly because the developers share a common mindset about what a framework should provide and how things should be done. This got me into thinking about the injection topic more deeply, as I was convinced that a port of the Stubbles IoC package should be feasible without any large efforts, providing the same features as in Stubbles.<br />
<br />
Over the weekend I stopped thinking about it and fired my IDE to just code it. And as it turned out, the port was almost a no-brainer. I got everything to work very quickly, and was able to port the test cases as well, gathering 33 running tests.<br />
<br />
Unfortunately there is one feature which the XP port can not provide, which is named injection for more than one argument on constructors or setter methods. This means if you need to have a named injection you require a single setter method for each named injection. This is due to the fact that XP does not provide annotations for method parameters, so the @Named annotation can only be applied to methods and therefore is used for all arguments of such an annotated method.<br />
<br />
While the idea of "Stubbles for XP" has been thought more than once in the past and this little experiment shows it is possible, it would still be a long way to go, and the IoC package is just a very small part of it. However, to have room for more experiments of such a kind I named the experiment "Stubbles for XP". If you are interested in the source just have a look at the <a href="http://www.stubbles.org/exit.php?url_id=555&amp;entry_id=92" title="http://stubbles.net/browser/labs/experiments/general/stubbles-for-xp"  onmouseover="window.status='http://stubbles.net/browser/labs/experiments/general/stubbles-for-xp';return true;" onmouseout="window.status='';return true;">subversion repository</a>. If you just want to play around with it you might simply download the <a href="http://www.stubbles.org/exit.php?url_id=556&amp;entry_id=92" title="http://downloads.stubbles.net/xp/stubbles-for-xp-0.1.1.xar"  onmouseover="window.status='http://downloads.stubbles.net/xp/stubbles-for-xp-0.1.1.xar';return true;" onmouseout="window.status='';return true;">stubbles-for-xp-0.1.1.xar</a> file.<br />
<br />
<s>However, there is one more caveat until now: I had to patch lang.XPClass because I found no suitable way to call its newInstance() method with a list of arguments, and I don't wanted to use call_user_func_array(). So if you decide to play with it you need to apply a <a href="http://www.stubbles.org/exit.php?url_id=557&amp;entry_id=92" title="http://stubbles.net/browser/labs/experiments/general/stubbles-for-xp/src/main/resources/xpclass.patch?format=txt"  onmouseover="window.status='http://stubbles.net/browser/labs/experiments/general/stubbles-for-xp/src/main/resources/xpclass.patch?format=txt';return true;" onmouseout="window.status='';return true;">patch</a>. The patch was developed against 5.8.1-dev, but also successfully tested with 5.7.13, same applies to the port itself.</s><br />
<br />
<strong>Update:</strong> thanks to a hint from Timm it is now possible to use the 0.1.1 release against XP without applying the aforementioned patch.<br />
<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/91-On-annotations-and-logic.html" rel="alternate" title="On annotations and logic" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-01-26T00:01:00Z</published>
        <updated>2011-01-25T23:08:19Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=91</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=91</wfw:commentRss>
    
    
        <id>http://www.stubbles.org/archives/91-guid.html</id>
        <title type="html">On annotations and logic</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                When we started Stubbles and implemented the annotation feature we drafted them as first class citizens within the code, being classes containing their data and also with the possibility to contain logic. While this was quite a good idea in the beginning and it offered a lot of possibilities and freedom to implement features which revolve around the usage of annotations, I came to the opinion that it's not such a good idea at all.<br />
<br />
The most simplest reason for this is the idea that annotations are markup. They mark (or, to keep the notion, annotate) code as being special or to be treated in some special kind of way, depending on the scenario where the code is used in, with scenario meaning something like creating the object graph for the application, serializing data to XML or into a database, or populating objects with values from a given source. What is common to all these scenarios is that you have some kind of logic which treats arbitrary objects where both logic and treated objects don't know anything about each other. The only thing which ties them together and tells the logic how to to treat the object are annotations, they give hints how the logic should perform in regard to the object.<br />
<br />
From a design point of view this makes it clear why annotations should not contain logic. If annotations contain parts of such logic, it becomes splitted and possibly cluttered throughout different classes: in the main class of the logic, possibly in any subclasses which you can and should not prevent if required, and in annotations. It's basically a violation of the <a href="http://www.stubbles.org/exit.php?url_id=549&amp;entry_id=91" title="http://en.wikipedia.org/wiki/Single_responsibility_principle"  onmouseover="window.status='http://en.wikipedia.org/wiki/Single_responsibility_principle';return true;" onmouseout="window.status='';return true;">single responsibility principle</a>. The single responsibility of an annotation is to mark up code, not to execute logic which is not related to the markup itself.<br />
<br />
A second reason is that logic in annotations does not promote code reusage. It's bound to the specific annotation, and there is no way to reuse it in another scenario without annotations. Probably the logic is useful in another way, were informations about how to treat an object does not come from annotations - than it is really helpful to not have any part of the logic in annotations. Or the other way round, it's even harder to reuse other code within the logic constrained in annotations as you are limited to what you can insert into the scope in which annotations are read and created.<br />
<br />
What does this mean for Stubbles? In the past days I've revisited all framework code which makes use of annotations, and changed it in a way that all parts of the logic are in specialised classes which are part of the logic. This allowed to get two improvements: for the filter annotations api this means that annotated filters can now be created in exactly the same manner as filters which are explicitly requested, via the same source and configuration. The other improvement is within the XML serializer, it lead to much clearer and simpler code then we had before. The improvements are part of the next milestone release 1.6.0 (no release date yet).<br />
<br />
I'm also questioning the requirement of the possibility to have different annotation classes. However, I did not came to a final conclusion on this issue yet, but in regard to the language and environment I think it might be enough to have a single annotation class which simply works as data container, maybe even to force logic out of annotations this way. On the other hand, having a separate class might be a good way to provide validation of the annotation values and to prevent wrong usage of the annotation.<br />
<br />
One might also consider the point of being able to restrict annotations to certain places, e.g. to restrict the usage of annotations just to methods or properties. But is this really required, e.g. does it provide a useful feature? This has to be answered with no if viewed from the logic, as the logic simply ignores annotations on places it does not use. It might be answered with yes as wrongly placed annotations could raise errors and inform the developer he placed the annotation on a wrong place, leading to cleaner code. But, this only comes into play if annotations on such a place are read at all. If an annotation is in the wrong place, but this place is never parsed for annotations, no such error will ever be raised. The question is: does this tiny positive point outweigh the additional complexity for developers who want to create their own logic with annotations? I don't think so, which leaves validation of annotation values as only use case for having separate annotation classes. Currently the trend is towards having a generic annotation class as data container, but for the moment I will leave the possibility to have a specific annotation class in case it becomes clear that a generic class is not always the answer. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/90-Stubbles-1.5.0-released.html" rel="alternate" title="Stubbles 1.5.0 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-01-20T22:05:06Z</published>
        <updated>2011-01-20T22:14:13Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=90</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=90</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
    
        <id>http://www.stubbles.org/archives/90-guid.html</id>
        <title type="html">Stubbles 1.5.0 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                A new year, a new minor release. With Stubbles 1.5.0 we continue to adhere to our release early, release often approach. The release contains further improvements on our IoC feature, as well as API improvements for various classes in the ipo package. A major change however is that we discontinue to provide several different versions of the release. Until now, all releases contained various packaged versions of the framework classes inside the lib directory. This has changed, starting with 1.5.0 we only provide the stubbles.php file. For a full list of changes please see the <a href="http://www.stubbles.org/exit.php?url_id=547&amp;entry_id=90" title="http://stubbles.net/wiki/Changelog"  onmouseover="window.status='http://stubbles.net/wiki/Changelog';return true;" onmouseout="window.status='';return true;">changelog</a>.<br />
<br />
But we don't stop at this point. Work on the 1.6.0 release has already started and will see tweaks to how we use annotations. But more on this in a separate blog post coming soon. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/89-Stubbles-1.5.0-RC1.html" rel="alternate" title="Stubbles 1.5.0 RC1" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2011-01-12T18:09:30Z</published>
        <updated>2011-01-12T18:15:16Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=89</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=89</wfw:commentRss>
    
    
        <id>http://www.stubbles.org/archives/89-guid.html</id>
        <title type="html">Stubbles 1.5.0 RC1</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                To start with the Stubbles 1.5 series the first release candidate 1.5.0 RC1 is now available:<br />
<a href="http://www.stubbles.org/exit.php?url_id=543&amp;entry_id=89" title="http://downloads.stubbles.net/rc/stubbles-1.5.0RC1.tgz"  onmouseover="window.status='http://downloads.stubbles.net/rc/stubbles-1.5.0RC1.tgz';return true;" onmouseout="window.status='';return true;">http://downloads.stubbles.net/rc/stubbles-1.5.0RC1.tgz</a><br />
<br />
Please test it thoroughly with your applications and report any bugs into our <a href="http://www.stubbles.org/exit.php?url_id=544&amp;entry_id=89" title="http://stubbles.net/newticket"  onmouseover="window.status='http://stubbles.net/newticket';return true;" onmouseout="window.status='';return true;">Trac installation</a>.<br />
<br />
For a list of changes please see the <a href="http://www.stubbles.org/exit.php?url_id=545&amp;entry_id=89" title="http://stubbles.net/wiki/Changelog"  onmouseover="window.status='http://stubbles.net/wiki/Changelog';return true;" onmouseout="window.status='';return true;">changelog</a>.<br />
<br />
If no obstacles rise up the scheduled release for 1.5.0 is January 19th.<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/88-Stubbles-1.3.4-and-1.4.4-released.html" rel="alternate" title="Stubbles 1.3.4 and 1.4.4 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-12-31T14:41:33Z</published>
        <updated>2011-01-20T22:14:42Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=88</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=88</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
    
        <id>http://www.stubbles.org/archives/88-guid.html</id>
        <title type="html">Stubbles 1.3.4 and 1.4.4 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                On the last day of 2010 the probably last releases of the Stubbles 1.3 and 1.4 series are now available: releases 1.3.4 and 1.4.4. Both contain bug fixes for handling of variant cookies so that detecting a variant from cookies now works properly.<br />
<br />
You can get the latest release from our <a href="http://www.stubbles.org/exit.php?url_id=548&amp;entry_id=88" title="http://downloads.stubbles.net/"  onmouseover="window.status='http://downloads.stubbles.net/';return true;" onmouseout="window.status='';return true;">downloads page</a>.  
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/87-Stubbles-1.3.3-and-1.4.3-released.html" rel="alternate" title="Stubbles 1.3.3 and 1.4.3 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-12-17T14:46:56Z</published>
        <updated>2010-12-17T14:58:43Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=87</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=87</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
    
        <id>http://www.stubbles.org/archives/87-guid.html</id>
        <title type="html">Stubbles 1.3.3 and 1.4.3 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Today we released Stubbles 1.3.3 and 1.4.3. The releases include improvements for the XML/XSL view engine. One of them is the removal of a required xsl-imports.ini configuration file if only the default imports should be used - as the engine would not work without the default imports properly the configuration file needs only to be used if there are additional user-defined XSL stylesheets to be imported.<br />
<br />
The other improvements revolve around the variant support. Until now the cookie which stores the variant was not re-evaluated when the variant configuration changed. This is different now, as the name of the variant configuration is now stored in another cookie. If the name of the variant configuration changes the variant cookie will not be used to determine the correct variant for the user. This means the user will get a fresh new variant, even if he has the name of an older variant in his cookie and the old variant is still configured, which is especially useful when starting a new variant test.<br />
<br />
In order to ease selecting the correct variant when working in development or stage mode, especially when it comes to random variants, the stage assistant now contains a variant selector which can be used to change the current variant of the website.<br />
<br />
You can get the latest release from our <a href="http://www.stubbles.org/exit.php?url_id=539&amp;entry_id=87" title="http://downloads.stubbles.net/"  onmouseover="window.status='http://downloads.stubbles.net/';return true;" onmouseout="window.status='';return true;">downloads page</a>. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://www.stubbles.org/archives/86-Stubbles-1.3.2-and-1.4.2-released.html" rel="alternate" title="Stubbles 1.3.2 and 1.4.2 released" />
        <author>
            <name>Frank Kleine</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2010-12-06T16:25:09Z</published>
        <updated>2010-12-06T16:25:09Z</updated>
        <wfw:comment>http://www.stubbles.org/wfwcomment.php?cid=86</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://www.stubbles.org/rss.php?version=atom1.0&amp;type=comments&amp;cid=86</wfw:commentRss>
    
            <category scheme="http://www.stubbles.org/categories/1-Announcements" label="Announcements" term="Announcements" />
    
        <id>http://www.stubbles.org/archives/86-guid.html</id>
        <title type="html">Stubbles 1.3.2 and 1.4.2 released</title>
        <content type="xhtml" xml:base="http://www.stubbles.org/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Today we released the bugfix releases Stubbles 1.3.2 and 1.4.2. The releases fix a bug with the rdbms pdo implementation which caused a fatal error when trying to fetch a column on a result set. The other fix is for the stubProperties class where iterating over the sections was broken causing that after a first iteration the internal pointer was not reset to the start when starting the second iteration. Get the releases from our <a href="http://www.stubbles.org/exit.php?url_id=537&amp;entry_id=86" title="http://downloads.stubbles.net/"  onmouseover="window.status='http://downloads.stubbles.net/';return true;" onmouseout="window.status='';return true;">downloads page</a>. 
            </div>
        </content>
        
    </entry>

</feed>
