<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Swiz Framework</title>
	<atom:link href="http://swizframework.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://swizframework.org</link>
	<description>Brutally simple micro-architecture for Rich Internet Application development with Adobe Flex</description>
	<lastBuildDate>Thu, 20 May 2010 02:50:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Swiz 1.0.0 RC1 Available Now!!</title>
		<link>http://swizframework.org/2010/05/swiz-1-0-0-rc1-available-now/</link>
		<comments>http://swizframework.org/2010/05/swiz-1-0-0-rc1-available-now/#comments</comments>
		<pubDate>Tue, 18 May 2010 20:54:23 +0000</pubDate>
		<dc:creator>benclinkinbeard</dc:creator>
				<category><![CDATA[releases]]></category>

		<guid isPermaLink="false">http://swizframework.org/?p=231</guid>
		<description><![CDATA[It&#8217;s been a long time coming, and we&#8217;ve still got a ways to go in terms of documentation and examples, but the RC1 release is here!!! First the important bits:
Swiz RC1 Release Zip (contains SWC, source and ASDocs)
RC1 Release Notes
Swiz RC1 tag on GitHub
You may have noticed the download link is pointing to a JIRA [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long time coming, and we&#8217;ve still got a ways to go in terms of documentation and examples, but the RC1 release is here!!! First the important bits:</p>
<p><a href="http://swizframework.jira.com/wiki/download/attachments/1998854/swiz-framework-1.0.0-RC1.zip">Swiz RC1 Release Zip (contains SWC, source and ASDocs)</a><br />
<a href="http://swizframework.jira.com/wiki/display/SWIZ/Release+Notes">RC1 Release Notes</a><br />
<a href="http://github.com/swiz/swiz-framework/tree/v1.0.0-RC1">Swiz RC1 tag on GitHub</a></p>
<p>You may have noticed the download link is pointing to a JIRA instance. Well, that is because Swiz has a new home, including a <a href="http://swizframework.jira.com/wiki/display/SWIZ/Home">Confluence wiki</a> and a <a href="http://swizframework.jira.com/browse/SWIZ">JIRA bug tracker</a>! We are still ironing out the details around community access to the bug tracker but intend for it to be as open as possible. You will also notice that the wiki shell is in place but some bare spots remain. We&#8217;re working hard to fill out the content as soon as possible.</p>
<p>With that said, go forth and enjoy! Use it, beat on it, report bugs in JIRA and hit up the <a href="http://groups.google.com/group/swiz-framework">mailing list</a> with questions or comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://swizframework.org/2010/05/swiz-1-0-0-rc1-available-now/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Swiz 1.0.0 Beta Now Available!</title>
		<link>http://swizframework.org/2010/03/swiz-1-0-0-beta-now-available/</link>
		<comments>http://swizframework.org/2010/03/swiz-1-0-0-beta-now-available/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:52:46 +0000</pubDate>
		<dc:creator>benclinkinbeard</dc:creator>
				<category><![CDATA[releases]]></category>

		<guid isPermaLink="false">http://swizframework.org/?p=213</guid>
		<description><![CDATA[Whew! It&#8217;s been a while since the alpha release and have we ever been busy! Due to the monstrous list of changes and improvements you see below, we&#8217;re not going to try covering all of them in depth in this post. Many of these features will get posts of their own, so keep an eye [...]]]></description>
			<content:encoded><![CDATA[<p>Whew! It&#8217;s been a while since the alpha release and have we ever been busy! Due to the monstrous list of changes and improvements you see below, we&#8217;re not going to try covering all of them in depth in this post. Many of these features will get posts of their own, so keep an eye out for those coming soon. In the meantime check out the changes, dive into <a href="http://github.com/swiz/swiz-framework/tree/v1.0.0-beta">the code</a> or <a href="http://www.swizframework.org/files/swiz-v1.0.0-beta.swc" onClick="javascript: pageTracker._trackPageview('/releases/v1.0.0-beta');">grab the SWC</a> and <a href="http://groups.google.com/group/swiz-framework">head over to the list</a> with any questions or comments.</p>
<p><strong>Update:</strong> Because I am a bone head, and I was running low on time, there were some potential problems with the initial SWC. The two files below *actually* support pop up injection, and the one whose name implies as much is compiled with the Flex SDK set to external. If you are using Flex I would recommend that one, so you can choose which SDK to build against. If you are using pure AS3 you will need to use the one with the SDK included, as we have not yet completely separated the logging from the Flex framework. Sorry for any inconvenience.</p>
<p><a href="http://www.swizframework.org/files/swiz-v1.0.0-beta-patched-externalSDK.swc" onClick="javascript: pageTracker._trackPageview('/releases/v1.0.0-beta-patched-externalSDK');">v1.0.0-beta-patched-externalSDK</a><br />
<a href="http://www.swizframework.org/files/swiz-v1.0.0-beta-patched.swc" onClick="javascript: pageTracker._trackPageview('/releases/v1.0.0-beta-patched');">v1.0.0-beta-patched</a></p>
<p>Changes and additions in Swiz 1.0.0 Beta:</p>
<ul>
<li>SwizConfig
<ul>
<li>SwizConfig is back and better than ever</li>
<li>injectionEvent, injectionEventPhase and injectionEventPriority fully customizes the listener that triggers inspection of your views</li>
<li>injectionMarkerFunction allows you to specify a decision maker function that determines if a view should be inspected and processed. Easily checked for property existence, interface implementation or any other custom criteria.</li>
</ul>
<ul>
<li>eventPackages and viewPackages support for .* &#8211; we&#8217;ve seen people get tripped up by specifying packages with a trailing *, so we added support for it</li>
<li>loggingTargets to see what Swiz is doing behind the scenes</li>
</ul>
</li>
<li>Parent and child Swiz relationships
<ul>
<li>Swiz instances declared on IEventDispatcher instances that are descendents of another Swiz dispatcher become child instances</li>
<li>Child instances can use beans declared in parent instances</li>
<li>Child instances inherit eventPackages and viewPackages from their parent</li>
<li>Parent instances can mediate events dispatched from child instance</li>
</ul>
</li>
<li>ISwizInterfaces
<ul>
<li>ISwizInterface is the parent interface for a few interfaces beans can implement to have Swiz give them special treatment. Interfaces are fulfilled after all metadata has been processed. The interfaces are as follows:</li>
<li>ISwizAware &#8211; Implementers will be provided with a reference to their containing Swiz instance.</li>
<li>IBeanFactoryAware &#8211; Implementers will be provided with a reference to the BeanFactory for their containing Swiz instance.</li>
<li>IDispatcherAware &#8211; Implementers will be provided with a reference to the event dispatcher used by their containing Swiz instance. Useful for non-display list beans that need to dispatch system events.</li>
<li>IInitializing &#8211; Implementers will have their init() method called.</li>
</ul>
</li>
<li>Service utils
<ul>
<li>Consistent with our principle of never making you extend Swiz classes, we&#8217;ve moved the functionality previously provided by AbstractController into their own utility classes.</li>
<li>executeServiceCall() is now provided by ServiceRequestUtil</li>
<li>executeURLRequest() is now provided by URLRequestUtil</li>
<li>You can instantiate these classes directly, but the recommended practice is to define them as beans and inject them by type.</li>
<li>AbstractController still provides these methods in order to ease migration pains. Convert to the utilities when you&#8217;re ready.</li>
</ul>
</li>
<li>Generic chaining support
<ul>
<li>We have added a fantastic, robust and extensible chaining infrastructure to the framework.</li>
<li>Event chains and command chains available &#8220;out of the box&#8221;</li>
<li>Create custom chain types by extending a base class and overriding a single method</li>
</ul>
</li>
<li>Processor priorities
<ul>
<li>Metadata processor execution is now ordered using a priority property</li>
<li>Configure your custom processors to run at any position in the list of default processors</li>
</ul>
</li>
<li>Ignore metadata starting with _
<ul>
<li>Thanks to some new metadata generated by Flex 4 debug builds, we ignore all metadata tags starting with an underscore</li>
</ul>
</li>
<li>Support for multiple Mediate tags
<ul>
<li>You can now pile on as many [Mediate] tags as you want to a method, and it will be called in response to all the specified events</li>
</ul>
</li>
<li>Support for [Mediate( "MyEvent.*" )] syntax
<ul>
<li>To facilitate easy support for front controllers and the command pattern, specify that you want a method to be called in response to all event types matching public static constant values on a given class</li>
<li>Currently in raw form, will be refined in future versions</li>
</ul>
</li>
<li>Support for properties on dynamic events
<ul>
<li>We&#8217;ve corrected the logic that runs in response to tags like [Mediate( event="MyEvent.FOO", properties="username, password" )] to allow the use of dynamic event classes</li>
</ul>
</li>
<li>Storage beans
<ul>
<li>SharedObjectBean and EncryptedLocalStorageBean added to simplify usage of this type of functionality</li>
</ul>
</li>
<li>[VirtualBean] has been renamed [Outject]
<ul>
<li>Same functionality, new name</li>
</ul>
</li>
<li>Initialization changes
<ul>
<li>We completely revamped the way Swiz initializes and processes beans</li>
<li>Prototype is now correctly implemented offering deferred instantiation and (by default) a fresh copy to each request for its type/name</li>
<li>Each bean is fully initialized and processed before being handed back to whoever requested it, providing full support for proper cascading</li>
</ul>
</li>
<li>[Inject] is the new [Autowire]
<ul>
<li>[Autowire] is still supported, and will continue to be for the foreseeable future, but it has officially been deprecated</li>
<li>If you are listening to Swiz&#8217;s logging, you will get a warning for each [Autowire] tag instance</li>
<li>Injections are now considered required by default. If a dependency is optional, use the following format [Inject( required="false" )]</li>
</ul>
</li>
<li>Metadata processors API updated
<ul>
<li>Processors that deal with one tag at a time can simply extend BaseMetadataProcessor and override the public function setUpMetadataTag( metadataTag:IMetadataTag, bean:Bean ):void</li>
<li>Processors that need to process groups of tags for purposes of ordering or coordination may override public function setUpMetadataTags( metadataTags:Array, bean:Bean ):void</li>
<li>Corresponding tearDown methods are provided as well</li>
<li>If you prefer not to extend a Swiz class simply implement IMetadataProcessor</li>
</ul>
</li>
<li>Metadata processors can support multiple tag names
<ul>
<li>metadataNames specifies the tag names a processor will handle. This is how InjectProcessor handles both [Inject] and [Autowire]</li>
</ul>
</li>
<li>[PostConstruct]
<ul>
<li>We&#8217;ve added support for [PostConstruct], which can be used to decorate methods that will be run after all [Inject] tags have been processed.</li>
<li>Supports an order attribute for executing multiple methods in a specific sequence</li>
</ul>
</li>
<li>SwizLogger and loggingTargets
<ul>
<li>Swiz&#8217;s internal classes now use the static SwizLogger class to properly log output in a standardized way</li>
<li>The loggingTargets property of SwizConfig allows you to specify an array of ILoggingTarget instances, with full support for filtering, message customization, etc</li>
<li>Work in progress, logging has not yet been fully implemented across all Swiz classes. Swiz will be *very* chatty before everything is said and done.</li>
</ul>
</li>
<li>MockDelegateUtil
<ul>
<li>TestUtil has been renamed and reworked into MockDelegateUtil</li>
<li>Provides createMockResult( mockData:Object, delay:int = 10 ):AsyncToken and createMockFault( fault:Fault = null, delay:int = 10 ):AsyncToken methods</li>
</ul>
</li>
<li>AMFUtil
<ul>
<li>Useful for parsing stored AMF3 data, particularly helpful when combined with MockDelegateUtil to create a mock service layer</li>
</ul>
</li>
<li>Added FlexFormatter prefs to GitHub</li>
<li>Pop up support
<ul>
<li>Pop up views can now be properly wired</li>
</ul>
</li>
<li>IBeanProvider.dispatcher implemented
<ul>
<li>BeanProvider and BeanLoader now include a dispatcher property (again) that is the IEventDispatcher used for &#8220;system events&#8221; in a Swiz instance.</li>
<li>Useful for providing non-view classes a way to dispatch events that will be heard by Swiz.</li>
<li>Same instance provided to implementers of IDispatcherAware</li>
</ul>
</li>
<li>Main dispatcher processed as bean
<ul>
<li>The main view/event dispatcher on which Swiz is defined can now be properly wired</li>
</ul>
</li>
</ul>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://swizframework.org/2010/03/swiz-1-0-0-beta-now-available/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Swiz 1.0 &#8211; Reflection API and Custom Metadata Processors</title>
		<link>http://swizframework.org/2009/12/swiz-1-0-reflection-api-and-custom-metadata-processors/</link>
		<comments>http://swizframework.org/2009/12/swiz-1-0-reflection-api-and-custom-metadata-processors/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 14:24:46 +0000</pubDate>
		<dc:creator>benclinkinbeard</dc:creator>
				<category><![CDATA[learning-swiz]]></category>

		<guid isPermaLink="false">http://swizframework.org/?p=177</guid>
		<description><![CDATA[As I mentioned in the last post, one of the coolest things in Swiz 1.0 is support for custom metadata processors. In actuality, this feature emerged somewhat organically as we discussed the 1.0 architecture and how we wanted to implement metadata processing. We quickly realized that exposing the system used to implement Autowire and Mediate [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned in the <a href="http://swizframework.org/2009/12/swiz-1-0-0-alpha-released/">last post</a>, one of the coolest things in Swiz 1.0 is support for custom metadata processors. In actuality, this feature emerged somewhat organically as we discussed the 1.0 architecture and how we wanted to implement metadata processing. We quickly realized that exposing the system used to implement Autowire and Mediate (VirtualBean came later) would make for an incredibly powerful extension mechanism. The backbone of these processors is the metadata focused reflection API that was implemented. This post aims to explain the reflection API in order to facilitate an understanding of the topic and, by extension, how to implement custom metadata processors.</p>
<h4>Reflection classes</h4>
<p>The <a href="http://github.com/swiz/swiz-framework/tree/master/src/org/swizframework/reflection/">org.swizframework.reflection package</a> contains, not surprisingly, the classes used in the reflection API.</p>
<p>The core concept in the reflection API is that of a metadata host. A metadata host is anything that has been decorated with metadata, whether it be a class, property or method. The related classes and interfaces are as follows, with <code>IMetadataHost</code> being the primary interface involved.</p>
<ul>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/IMetadataHost.as">IMetadataHost</a></li>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/BaseMetadataHost.as">BaseMetadataHost</a></li>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/MetadataHostClass.as">MetadataHostClass</a></li>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/MetadataHostMethod.as">MetadataHostMethod</a></li>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/MetadataHostProperty.as">MetadataHostProperty</a></li>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/MethodParameter.as">MethodParameter</a></li>
</ul>
<p>There are also classes to represent the metadata tags themselves, and the arguments they can contain.</p>
<ul>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/IMetadataTag.as">IMetadataTag</a></li>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/BaseMetadataTag.as">BaseMetadataTag</a></li>
<li><a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/MetadataArg.as">MetadataArg</a></li>
</ul>
<p>A fully reflected representation of a class is stored as an instance of <a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/TypeDescriptor.as">TypeDescriptor</a>, and those instances are tracked in <a href="http://github.com/swiz/swiz-framework/blob/master/src/org/swizframework/reflection/TypeCache.as">TypeCache</a> to prevent reflection of any single type more than once.</p>
<p>A solid understanding of this system will go a long way in making the authoring of custom metadata processors easier for you.</p>
<h4>Custom Metadata Processors</h4>
<p>I&#8217;m not going to cover all of the classes in <a href="http://github.com/swiz/swiz-framework/tree/master/src/org/swizframework/processors/">org.swizframework.processors</a> in this post but I would encourage you to do so before going too far into custom processor development. (If you would like to see another post going into more depth around these classes let us know in the comments.) To understand the basics simply look at the example below, taken from the posted demo apps (<a href="http://swizframework.org/files/examples/1.0.0-alpha/flex3/">Flex 3</a>, <a href="http://swizframework.org/files/examples/1.0.0-alpha/as3/">AS3</a>) with some additional comments added.</p>
<p><script src="http://gist.github.com/256958.js?file=RandomProcessor.as"></script></p>
<h4>Registering your processors</h4>
<p>You then simply register your custom processors with Swiz, which looks like the following in Flex and AS3, respectively.<br />
<script src="http://gist.github.com/256961.js?file=gistfile1.txt"></script><br />
<script src="http://gist.github.com/256967.js?file=gistfile1.as"></script></p>
<h4>Keep your metadata!!!</h4>
<p>This is essential! You need to instruct mxmlc to retain any custom metadata tags you are interested in, because by default it will not include anything but its built in tags like [Bindable]. You do this by adding a compiler argument to your project that looks like <code>-keep-as3-metadata+=Random,Clock</code>. Note the +=, rather than a plain old equals. Without the plus mxmlc will discard [Bindable] and friends, and you will be sad.</p>
<h4>Conclusion</h4>
<p>That&#8217;s it! That is all there is to implementing custom metadata processing in Swiz 1.0. This is obviously a very simple example, but hopefully you can see the potential here. There is a slightly more involved example called <a href="http://github.com/swiz/swiz-examples/blob/master/as3/SwizDemoAppAS3/src/processors/ClockProcessor.as">ClockProcessor</a> that creates a timer and updates the decorated property with the current time every second, but even that is just scratching the surface of what is possible. We hope to see a robust library of Swiz extensions start to emerge from the community over time in the form of custom metadata processors. Things like [TwitterTimeline], [AmazonWishlist] and others are just some of the ideas we&#8217;ve had during development, and we can&#8217;t wait to see what others build.</p>
<p>As always, head on over to the <a href="http://groups.google.com/group/swiz-framework">mailing list</a> with any questions, comments, concerns or code samples!</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://swizframework.org/2009/12/swiz-1-0-reflection-api-and-custom-metadata-processors/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Swiz 1.0.0 alpha released!</title>
		<link>http://swizframework.org/2009/12/swiz-1-0-0-alpha-released/</link>
		<comments>http://swizframework.org/2009/12/swiz-1-0-0-alpha-released/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 20:06:37 +0000</pubDate>
		<dc:creator>benclinkinbeard</dc:creator>
				<category><![CDATA[releases]]></category>

		<guid isPermaLink="false">http://swizframework.org/?p=161</guid>
		<description><![CDATA[It&#8217;s here! The alpha release of Swiz 1.0.0 is officially in the wild! First, links.
Swiz 1.0.0 alpha source code
Swiz 1.0.0 alpha example projects (SwizDemoApp &#038; SwizDemoAppAS3)
Live Demo App &#8211; Flex 3
Live Demo App &#8211; AS3
(The examples are heavily commented so view the source!)
Swiz 1.0.0-alpha represents the current state of a clean slate rewrite of the [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s here! The alpha release of Swiz 1.0.0 is officially in the wild! First, links.</p>
<p><a href="http://github.com/swiz/swiz-framework/downloads">Swiz 1.0.0 alpha source code</a><br />
<a href="http://github.com/swiz/swiz-examples/downloads">Swiz 1.0.0 alpha example projects</a> (SwizDemoApp &#038; SwizDemoAppAS3)<br />
<a href="http://swizframework.org/files/examples/1.0.0-alpha/flex3/">Live Demo App &#8211; Flex 3</a><br />
<a href="http://swizframework.org/files/examples/1.0.0-alpha/as3/">Live Demo App &#8211; AS3</a></p>
<p>(The examples are heavily commented so view the source!)</p>
<p>Swiz 1.0.0-alpha represents the current state of a clean slate rewrite of the Swiz Framework. While discussing and planning new features and refactorings a few months ago, we decided we&#8217;d rather start fresh. Accommodating things like modularity and pure AS3 projects, as well as some ideas we had in mind were more easily accomplished (and let&#8217;s face it, more fun to do) by starting with a blank slate and building only what was necessary, in the cleanest way possible That being said, this release definitely lives up to its alpha name, and will not allow you to simply drop the SWC into an existing Swiz project. (I mean you can, but nothing will work.) So let&#8217;s talk about some changes.</p>
<p><strong>Quick disclaimer:</strong> I am *positive* there are features and/or changes I am forgetting to mention here. Generally speaking, if something is missing from the framework it most likely has just not been implemented in the new code base yet. Please direct all questions, concerns and suggestions to the <a href="http://groups.google.com/group/swiz-framework">mailing list</a>.</p>
<h4>Autowiring</h4>
<p>Autowiring has been greatly improved. A good way to think about autowiring now is that it is similar to the <code>&lt;mx:Binding&gt;</code> tag in Flex. The bean attribute has been &#8220;renamed&#8221; to source, but bean will still work in order to ease migration. Eventually, you will start getting deprecation warnings if you use bean. We have also added support for default attributes, so <code>[Autowire( "someModel" )]</code> is equivalent to <code>[Autowire( source="someModel" )]</code>.</p>
<h5>destination</h5>
<p>There is an optional destination attribute. The destination attribute allows you to create a class-level <code>[Autowire]</code> tag, and tell it where to assign the autowired value. We did this because it was pointed out that users were commonly creating public, bindable properties that served no purpose other than being an autowire destination and a binding source. You can use this format to do things like this:</p>
<p><script src="http://gist.github.com/256301.js?file=destination+attribute+demo"></script></p>
<h5>Dot notation</h5>
<p>As you may have noticed in the above sample, the <code>source</code> and <code>destination</code> attributes both support dot notation. This was a highly requested feature, and also vital to supporting the <code>destination</code> syntax. There is no limit to the number of levels you can drill down, but it should generally only be used as necessary. We have also removed support for the <code>property</code> attribute, since it is negated by the dot notation support.</p>
<h5>Setter injection</h5>
<p>Swiz now supports single argument setter injection as well. The only reason it is limited to single argument methods is that we would like to get community feedback before implementing further support. Should support be added for additional argument methods? Usage is as follows.</p>
<p><script src="http://gist.github.com/256329.js?file=Setter_injection_demo.as"></script></p>
<h5>Planned future improvements</h5>
<p>In addition to the <code>twoWay</code> and <code>view</code> attributes that exist today, we also plan to add two new attributes in coming releases. First is a <code>bind</code> attribute that, if set to false will cause Swiz to perform a one time value assignment with no bindings created. The default value is/will be true. Second will be a <code>lazy</code> attribute, which will also default to true. Now that Swiz is modular, one of the biggest remaining things to implement is inter-instance communication. We will be creating a system that allows Swiz instances to share and inherit beans, as well as some other potential communication mechanisms. The <code>lazy</code> attribute is related to that system in that, if set to false it will cause Swiz to throw an error if that particular dependency is not available when the tag is processed. The default behavior is that Swiz simply makes note of that unfulfilled dependency, and as new objects are added to the system they are checked against the missing dependencies. This allows you to define beans/dependencies in any order and not worry about precedence.</p>
<h4>Custom metadata processors</h4>
<p>This, in my opinion, is the coolest thing in Swiz 1.0.0. What we have done is to open up the exact mechanism Swiz uses to implement tags like <code>[Autowire]</code>, <code>[Mediate]</code> and <code>[VirtualBean]</code> so that you can create and process your own custom metadata tags. There will need to be a future post dedicated to this topic and the reflection system it relies on, but for now be sure to check out the examples. There are two custom processors in the example apps that show how easy it is to create these powerful framework extensions. When creating your own though, don&#8217;t forget you have to add compiler args in order for mxmlc to retain your custom metadata tags.</p>
<h4>VirtualBean</h4>
<p>If you were paying attention in the previous paragraph you may have noticed mention of a new built in tag, <code>[VirtualBean]</code>. As I alluded to above, it is not ideal to reference bean properties in <code>[Autowire]</code> tags. Not only does it create a reliance on that specific object structure which will break if somebody changes it, it is also usually not appropriate for a view or other destination to have that implementation knowledge in the first place. Enter the <code>VirtualBean</code> tag. When placed on a public property of an existing bean it transforms that property into an &#8220;independent&#8221; bean of its own, removing the need for dot notation and the associated concerns that go along with it. If your view only needs a collection or two from your model there is no longer any reason to wire in the whole model or to include a property name reference in your <code>[Autowire]</code> tag. Usage is as follows.</p>
<p><script src="http://gist.github.com/256331.js?file=VirtualBean_creation.as"></script><br />
<script src="http://gist.github.com/256331.js?file=VirtualBean_usage.as"></script></p>
<h4>Instantiation and configuration</h4>
<p>Lastly, you will notice that instantiation and configuration of the framework look quite different in the demo apps. This is explained a bit in the comments of the apps but I will repeat it here: these aspects will likely change a bit before the final release. We have not yet implemented <code>SwizConfig</code> at all in this release, but that will be a part of the final release. Other minor details may change as well, but creating an instance of the framework will remain as dead simple as shown in these demos.</p>
<h4>Check it out!</h4>
<p>So that is it for now. Take a look at the heavily commented demo apps. Browse, download, clone and otherwise examine the framework code. We are eager to get your thoughts, feedback, submissions, patches etc. so don&#8217;t be shy! The team&#8217;s immediate tasks are to further clean up the code you see today and smother it in unit test coverage, so there is still time to influence the API! Give it a spin and <a href="http://groups.google.com/group/swiz-framework">tell us what you think</a>!</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://swizframework.org/2009/12/swiz-1-0-0-alpha-released/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
