<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>composer-commits@incubator.apache.org Archives</title>
<link rel="self" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/?format=atom"/>
<link href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/"/>
<id>http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/</id>
<updated>2013-05-18T17:40:12Z</updated>
<entry>
<title>svn commit: r655913 - in /incubator/composer/trunk: BUILD.txt LICENSE.txt composer-core/ composer-site/ composer-tck/ pom.xml</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200805.mbox/%3c20080513152645.0138E2388A0D@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080513152645-0138E2388A0D@eris-apache-org%3e</id>
<updated>2008-05-13T15:26:44Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: hammant&#010;Date: Tue May 13 08:26:44 2008&#010;New Revision: 655913&#010;&#010;URL: http://svn.apache.org/viewvc?rev=655913&amp;view=rev&#010;Log:&#010;marriage called off&#010;&#010;Removed:&#010;    incubator/composer/trunk/BUILD.txt&#010;    incubator/composer/trunk/LICENSE.txt&#010;    incubator/composer/trunk/composer-core/&#010;    incubator/composer/trunk/composer-site/&#010;    incubator/composer/trunk/composer-tck/&#010;    incubator/composer/trunk/pom.xml&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618315 - /incubator/composer/trunk/pom.xml</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204162113.643BC1A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204162113-643BC1A9832@eris-apache-org%3e</id>
<updated>2008-02-04T16:21:13Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 08:21:12 2008&#010;New Revision: 618315&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618315&amp;view=rev&#010;Log:&#010;Removed snapshot repositories - which should be activated on demand via settings profile.&#010;&#010;Modified:&#010;    incubator/composer/trunk/pom.xml&#010;&#010;Modified: incubator/composer/trunk/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/pom.xml?rev=618315&amp;r1=618314&amp;r2=618315&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/pom.xml (original)&#010;+++ incubator/composer/trunk/pom.xml Mon Feb  4 08:21:12 2008&#010;@@ -41,42 +41,8 @@&#010;     &lt;/developerConnection&gt;&#010;     &lt;url&gt;https://svn.apache.org/repos/asf/incubator/composer/trunk&lt;/url&gt;&#010;   &lt;/scm&gt;&#010;-  &lt;repositories&gt;&#010;-    &lt;repository&gt;&#010;-      &lt;id&gt;apache-snapshot-repository&lt;/id&gt;&#010;-      &lt;name&gt;Apache Snapshot Repository&lt;/name&gt;&#010;-      &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;&#010;-      &lt;snapshots&gt;&#010;-        &lt;enabled&gt;true&lt;/enabled&gt;&#010;-      &lt;/snapshots&gt;&#010;-    &lt;/repository&gt;&#010;-    &lt;repository&gt;&#010;-      &lt;id&gt;codehaus-snapshots-repository&lt;/id&gt;&#010;-      &lt;name&gt;Codehaus Snapshots Repository&lt;/name&gt;&#010;-      &lt;url&gt;http://snapshots.repository.codehaus.org&lt;/url&gt;&#010;-      &lt;snapshots&gt;&#010;-        &lt;enabled&gt;true&lt;/enabled&gt;&#010;-      &lt;/snapshots&gt;&#010;-    &lt;/repository&gt;&#010;-  &lt;/repositories&gt;&#010;-  &lt;pluginRepositories&gt;&#010;-    &lt;pluginRepository&gt;&#010;-      &lt;id&gt;apache-snapshot-repository&lt;/id&gt;&#010;-      &lt;name&gt;Apache Snapshot Repository&lt;/name&gt;&#010;-      &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;&#010;-      &lt;snapshots&gt;&#010;-        &lt;enabled&gt;true&lt;/enabled&gt;&#010;-      &lt;/snapshots&gt;&#010;-    &lt;/pluginRepository&gt;&#010;-    &lt;pluginRepository&gt;&#010;-      &lt;id&gt;codehaus-snapshots-repository&lt;/id&gt;&#010;-      &lt;name&gt;Codehaus Snapshots Repository&lt;/name&gt;&#010;-      &lt;url&gt;http://snapshots.repository.codehaus.org&lt;/url&gt;&#010;-      &lt;snapshots&gt;&#010;-        &lt;enabled&gt;true&lt;/enabled&gt;&#010;-      &lt;/snapshots&gt;&#010;-    &lt;/pluginRepository&gt;&#010;-  &lt;/pluginRepositories&gt;&#010;+  &lt;repositories/&gt;&#010;+  &lt;pluginRepositories/&gt;&#010;   &lt;distributionManagement&gt;&#010;     &lt;repository&gt;&#010;       &lt;id&gt;apache.org&lt;/id&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618279 - in /incubator/composer/trunk/composer-site/src: resources/ site/content/ site/content/containers/ site/resources/images/ site/templates/</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204133848.853551A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204133848-853551A9832@eris-apache-org%3e</id>
<updated>2008-02-04T13:38:44Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 05:38:42 2008&#010;New Revision: 618279&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618279&amp;view=rev&#010;Log:&#010;Yet more docs cleanup.&#010;&#010;Added:&#010;    incubator/composer/trunk/composer-site/src/site/resources/images/juicer-in-container-hierarchy.png&#010;      - copied unchanged from r618229, incubator/composer/trunk/composer-site/src/site/resources/images/juicer-in-pico-hierarchy.png&#010;Removed:&#010;    incubator/composer/trunk/composer-site/src/resources/&#010;    incubator/composer/trunk/composer-site/src/site/resources/images/juicer-in-pico-hierarchy.png&#010;Modified:&#010;    incubator/composer/trunk/composer-site/src/site/content/comparisons.html&#010;    incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/command-line-arguments-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/system-properties-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/faq.html&#010;    incubator/composer/trunk/composer-site/src/site/content/index.html&#010;    incubator/composer/trunk/composer-site/src/site/content/introduction.html&#010;    incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html&#010;    incubator/composer/trunk/composer-site/src/site/content/properties.html&#010;    incubator/composer/trunk/composer-site/src/site/content/setter-injection.html&#010;    incubator/composer/trunk/composer-site/src/site/templates/skin.html&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/comparisons.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/comparisons.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/comparisons.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/comparisons.html Mon Feb  4 05:38:42&#010;2008&#010;@@ -154,7 +154,7 @@&#010;           &lt;/div&gt;&#010;           &#010; &#010;-          &lt;p&gt;Familiar? Hopefully not &lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/smile.gif"&#010;height="20" width="20" align="absmiddle" alt="" border="0" /&gt;Static plays no part in a&#010;good IoC container/component design. This includes static launching of Java Webstart (JNLP)&#010;applications. If you have to keep mainable functionaility separate your components away from&#010;the main() class so they may be instntiated separately. In .NET you'll have to make sure that&#010;the application assembly is a small bootstrap to a component one.&lt;/p&gt;&#010;+          &lt;p&gt;Familiar? Hopefully not &lt;img class="emoticon" src="images/smile.gif"&#010;height="20" width="20" align="absmiddle" alt="" border="0" /&gt;Static plays no part in a&#010;good IoC container/component design. This includes static launching of Java Webstart (JNLP)&#010;applications. If you have to keep mainable functionaility separate your components away from&#010;the main() class so they may be instntiated separately. In .NET you'll have to make sure that&#010;the application assembly is a small bootstrap to a component one.&lt;/p&gt;&#010;         &lt;/div&gt;&#010;         &lt;div&gt;&#010;           &lt;h3&gt;JNDI (Java API)&lt;/h3&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html Mon&#010;Feb  4 05:38:42 2008&#010;@@ -21,11 +21,11 @@&#010;     &lt;/li&gt;&#010;     &lt;li&gt;A dependency may be made immutable by making the dependency reference &lt;em&gt;final&lt;/em&gt;&lt;/li&gt;&#010; &lt;/ul&gt;&#010;-&lt;p&gt;&lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/information.gif"&#010;alt="" align="middle" border="0" height="16" width="16" /&gt; Martin Fowler explains &lt;a&#010;href="http://www.martinfowler.com/articles/injection.html#ConstructorInjectionWithPicocontainer"&gt;Constructor&#010;+&lt;p&gt;&lt;img class="emoticon" src="images/information.gif" alt="" align="middle" border="0"&#010;height="16" width="16" /&gt; Martin Fowler explains &lt;a href="http://www.martinfowler.com/articles/injection.html#ConstructorInjectionWithPicocontainer"&gt;Constructor&#010;                                                                                         &#010;            Injection&lt;/a&gt;&#010;                                                           in more detail.&lt;br /&gt;&#010;     &lt;br /&gt;&#010;-    &lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/information.gif"&#010;alt="" align="middle" border="0" height="16" width="16" /&gt; Container also supports &lt;a&#010;href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt;.&lt;/p&gt;&#010;+    &lt;img class="emoticon" src="images/information.gif" alt="" align="middle" border="0"&#010;height="16" width="16" /&gt; Container also supports &lt;a href="setter-injection.html" title="Setter&#010;Injection"&gt;Setter Injection&lt;/a&gt;.&lt;/p&gt;&#010; &#010; &lt;h2&gt;Origin&lt;/h2&gt;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/containers/command-line-arguments-container.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/containers/command-line-arguments-container.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/containers/command-line-arguments-container.html&#010;(original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/containers/command-line-arguments-container.html&#010;Mon Feb  4 05:38:42 2008&#010;@@ -41,14 +41,14 @@&#010; &#010; ...&#010; &#010;-java -jar myAppJar.jar -cp containercontainer-2.0.jar timeout=100 spellingWebServiceURL=http://ws.com/someService.wsdl&lt;/pre&gt;&#010;+java -jar myAppJar.jar -cp composer-core.jar timeout=100 spellingWebServiceURL=http://ws.com/someService.wsdl&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Here is another manual use forcing an association between a item in the properties&#010;file, and the relative position of a parameter in the constructor:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010; &lt;pre&gt;mpc.addComponent(BigFatComponent.class, ConfigParameter(&amp;quot;config1&amp;quot;),&#010;ConfigParameter(&amp;quot;moreConfig&amp;quot;));&#010; ...&#010; &#010;-java -jar myAppJar.jar -cp containercontainer-2.0.jar config1=http://ws.com/someService.wsd&#010;moreConfig=100 &lt;/pre&gt;&#010;+java -jar myAppJar.jar -cp composer-core.jar config1=http://ws.com/someService.wsd moreConfig=100&#010;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Type conversion is automatic in many cases. Properties in a properties file are&#010;clearly strings. Parameters can be any of:&lt;/p&gt;&#010;         &lt;ul&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/containers/system-properties-container.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/containers/system-properties-container.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/containers/system-properties-container.html&#010;(original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/containers/system-properties-container.html&#010;Mon Feb  4 05:38:42 2008&#010;@@ -44,7 +44,7 @@&#010; &lt;p&gt; System properties can be set for the scope of the application only, as you start&#010;the application: &lt;/p&gt;&#010; &lt;div class="source"&gt;&#010; &lt;pre&gt;&#010;-java -Dwebservice.url=http://servicehost/service -Dwebservice.timeout=50 -jar myAppJar.jar&#010;-cp containercontainer-2.0.jar&lt;/pre&gt;&#010;+java -Dwebservice.url=http://servicehost/service -Dwebservice.timeout=50 -jar myAppJar.jar&#010;-cp composer-core.jar&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Type conversion is automatic in many cases. Properties in a properties file are&#010;clearly strings. Parameters can be any of:&lt;/p&gt;&#010; &lt;ul&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/faq.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/faq.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/faq.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/faq.html Mon Feb  4 05:38:42 2008&#010;@@ -217,7 +217,7 @@&#010; 0&gt;hellos&#010; 1&gt; 1&#010; 2&gt; @Foo$Bar()&#010;-Exception in thread "main" java.lang.NoClassDefFoundError: org/containercontainer/annotations/Inject&#010;+Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/composer/core/annotations/Inject&#010;         at Foo.main(Foo.java:32)&lt;/pre&gt;&#010; &lt;/div&gt;&#010;   &lt;p&gt;The class loads, but the @Inject annotation is not present in the set of declared&#010;annotations, but another in the classpath is.  Lastly when accessed explicitly, there is an&#010;exception thrown.  Contrast to, the same run with Guice in the classpath:&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/index.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/index.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/index.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/index.html Mon Feb  4 05:38:42&#010;2008&#010;@@ -7,9 +7,9 @@&#010; &#010; &lt;body&gt;&#010; &#010;-&lt;h2&gt;What is Container?&lt;/h2&gt;&#010;+&lt;h2&gt;What is Apache Composer?&lt;/h2&gt;&#010; &#010;-&lt;p&gt;Container is a  highly embeddable full service Inversion of Control (IoC) container&#010;+&lt;p&gt;Apache Composer is a  highly embeddable full service Inversion of Control (IoC)&#010;container&#010; for components honour the Dependency Injection pattern.&lt;/p&gt;&#010; &lt;p&gt;You could use it as a lightweight alternative to Sun's J2EE patterns for web applications&#010;or general solutions. &lt;/p&gt;&#010; &lt;p&gt;What is Dependency Injection? Martin Fowler has a good &lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;article&lt;/a&gt;&#010;from 2003, but here is another view: It is a good design pattern that, for large enterprise&#010;applications, facilitates: &lt;/p&gt;&#010;@@ -31,10 +31,8 @@&#010;   &lt;li&gt;has made development staff looking after it miserable&lt;/li&gt;&#010;   &lt;li&gt;suffers repeated allegations of being unable to be developed without complete&#010;rewrite &lt;/li&gt;&#010; &lt;/ul&gt;&#010;-&lt;p&gt;Despite it being very compact in size (the core is ~128K and it&#010;-has no mandatory dependencies outside the JDK), Container supports different dependency injection&#010;types (Constructor, Setter, Annotated Field and Method) and offers multiple lifecycle and&#010;monitoring strategies.&lt;/p&gt;&#010;-&lt;p&gt;Container has originally been implemented in Java but is also&#010;-available for other platforms and languages. These are detailed &lt;a href="http://docs.codehaus.org/display/PICO/Ports"&gt;here&lt;/a&gt;.&lt;/p&gt;&#010;+&lt;p&gt;Despite it being very compact in size (the core is ~128K and it has no &lt;b&gt;mandatory&lt;/b&gt;&#010;dependencies outside the JDK), &#010;+Apache Composer supports different dependency injection types (Constructor, Setter, Annotated&#010;Field and Method) and offers multiple lifecycle and monitoring strategies.&lt;/p&gt;&#010; &lt;div class="section"&gt;&#010; &lt;h3&gt;Getting Started&lt;/h3&gt;&#010; &lt;p&gt;Take a look at the &lt;a href="introduction.html"&gt;introduction&lt;/a&gt;. &lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/introduction.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/introduction.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/introduction.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/introduction.html Mon Feb  4 05:38:42&#010;2008&#010;@@ -5,14 +5,12 @@&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &#010;-&lt;p&gt;Authors: Aslak Hellesoy, Jon Tirsen&lt;/p&gt;&#010;-&#010; &lt;h2&gt;Basics&lt;/h2&gt;&#010; &#010;-&lt;p&gt;This is a quick introduction to Container's most important features. Read through&#010;it to get an idea of what&#010;-   Container is and isn't. &lt;/p&gt;&#010;+&lt;p&gt;This is a quick introduction to Apache Composer's most important features. Read&#010;through it to get an idea of what&#010;+   Composer is and isn't. &lt;/p&gt;&#010; &#010;-&lt;p&gt;Container's most important feature is its ability to instantiate arbitrary objects.&#010;This is done through its API,&#010;+&lt;p&gt;Composer's most important feature is its ability to instantiate - or compose - arbitrary&#010;objects. This is done through its API,&#010;    which is similar to a hash table. You can put java.lang.Class objects in and get object&#010;instances back.&lt;/p&gt;&#010; &#010; &lt;p&gt;Example:&lt;/p&gt;&#010;@@ -26,8 +24,8 @@&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;(i)&lt;a&#010;-    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableContainer.html"&gt;MutableContainer&#010;-                                                                                        &#010;                                      API&lt;sup&gt;&lt;img&#010;+    href="javadoc/core/org/apache/composer/core/MutableContainer.html"&gt;&#010;+    MutableContainer API&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle"&#010;alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010; &#010;@@ -39,8 +37,8 @@&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010; &#010;-&lt;p&gt;With a trivial example such as this there is no point in using Container. This was&#010;just to illustrate the basic&#010;-   API. Container becomes useful with larger number of classes and interfaces having complex&#010;dependencies between&#010;+&lt;p&gt;With a trivial example such as this there is no point in using a container. This&#010;was just to illustrate the basic&#010;+   API. A container becomes useful with larger number of classes and interfaces having complex&#010;dependencies between&#010;    each other:&lt;/p&gt;&#010; &lt;table&gt;&#010;     &lt;tbody&gt;&#010;@@ -63,9 +61,7 @@&#010;         can be configured dynamically. Container is able to&#010;         instantiate a complex graph of several interdependent objects.&lt;/p&gt;&#010; &#010;-        &lt;h2&gt;Write some simple classes&#010;-                                                                                        &#010;    and interfaces with&#010;-                                                                                        &#010;    dependencies&lt;/h2&gt;&#010;+        &lt;h2&gt;Write some simple classes and interfaces with dependencies&lt;/h2&gt;&#010; &#010; &lt;p&gt;The "Juicer Example" diagram above could translate to the following code (we added&#010;a concrete Peelable):&lt;/p&gt;&#010; &#010;@@ -149,8 +145,7 @@&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;(i)&lt;a&#010;-    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableContainer.html"&gt;MutableContainer&#010;-                                                                                        &#010;                                      API&lt;sup&gt;&lt;img&#010;+    href="javadoc/core/org/apache/composer/core/MutableContainer.html"&gt;MutableContainer&#010;API&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle"&#010;alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010; &#010;@@ -246,7 +241,7 @@&#010;         &lt;h2&gt;Lifecycle&lt;/h2&gt;&#010; &#010; &lt;p&gt;Container has support for &lt;a href="lifecycle.html" title="Lifecycle"&gt;Lifecycle&lt;/a&gt;.&#010;If your classes implement &lt;a&#010;-    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/Startable.html"&gt;Startable&lt;sup&gt;&lt;img&#010;+    href="javadoc/core/org/apache/composer/core//Startable.html"&gt;Startable&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle"&#010;alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;, you can control the lifecycle of all your objects&#010;with a simple method call on the&#010;                            container. The container will figure out the correct order of&#010;invocation of start()/stop()&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html Mon&#010;Feb  4 05:38:42 2008&#010;@@ -292,7 +292,7 @@&#010; &#010; &lt;p&gt;Component is the correct name for things managed in an IoC sense. However very small&#010;ordinary classes are manageable&#010;    using IoC tricks, though this is for the very brave or extremists &lt;img class="emoticon"&#010;-                                                                          src="http://docs.codehaus.org/images/icons/emoticons/smile.gif"&#010;+                                                                          src="images/smile.gif"&#010;                                                                           height="20" width="20"&#010;align="absmiddle"&#010;                                                                           alt="" border="0"&#010;/&gt;&lt;/p&gt;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/properties.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/properties.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/properties.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/properties.html Mon Feb  4 05:38:42&#010;2008&#010;@@ -81,6 +81,6 @@&#010;   &lt;li&gt;USE_NAMES - use the parameter names of the component's constructor (or injection&#010;method) for the binding of configuration or components.&lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;h3&gt;Custom Properties&lt;/h3&gt;&#010;-&lt;p&gt;You can make your own properties quite easily - check out the source to &lt;a href="http://svn.codehaus.org/containercontainer/java/2.x/trunk/container/container/src/java/org/containercontainer/Characteristics.java"&gt;Characteristics.java&lt;/a&gt;&#010;and the classes that refer to it in Container (various implementations of ComponentFactory&#010;and ComponentAdapter). &lt;/p&gt;&#010;+&lt;p&gt;You can make your own properties quite easily - check out the source to &lt;a href="https://svn.apache.org/repos/asf/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/Characteristics.java"&gt;Characteristics.java&lt;/a&gt;&#010;and the classes that refer to it in Container (various implementations of ComponentFactory&#010;and ComponentAdapter). &lt;/p&gt;&#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/setter-injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/setter-injection.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/setter-injection.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/setter-injection.html Mon Feb&#010; 4 05:38:42 2008&#010;@@ -68,7 +68,7 @@&#010;     &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt;&#010;variant where an object gets all&#010;                                                                                    dependencies&#010;via setter methods.&#010;                                                                                    Container&#010;support this with&#010;-    &lt;a href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/defaults/SetterInjectionComponentAdapter.html"&gt;SetterInjectionComponentAdapter&lt;/a&gt;,&#010;+    &lt;a href="javadoc/core/org/apache/composer/core/injectors/SetterInjection.html"&gt;SetterInjection&lt;/a&gt;,&#010;                                                                                         &#010;                                                                                         &#010;      but&#010;                                                                                         &#010;                                                                                         &#010;      the&#010;                                                                                         &#010;                                                                                         &#010;      Container&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/templates/skin.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/templates/skin.html?rev=618279&amp;r1=618278&amp;r2=618279&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/templates/skin.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/templates/skin.html Mon Feb  4 05:38:42&#010;2008&#010;@@ -30,7 +30,7 @@&#010; &#010; &lt;body class="composite"&gt;&#010; &#010;-&lt;div id="banner"&gt;&lt;img src=""&#010;+&lt;div id="banner"&gt;&lt;img src="http://www.apache.org/images/asf-logo.gif"&#010;   alt="Apache Composer" /&gt;&#010; &lt;div class="clear"&gt;&#010; &lt;/div&gt;&#010;@@ -54,9 +54,6 @@&#010;   &lt;/#if&gt; &lt;/#list&gt;&#010; &lt;/ul&gt;&#010; &lt;/#list&gt;&#010;-&lt;h1&gt;Hosted by&lt;/h1&gt;&#010;-&lt;img alt="Hosted at Codehaus"&#010;-  src="http://ci.codehaus.org/codehaus-small.png" /&gt;&lt;br /&gt;&#010; &lt;h1&gt;Tools&lt;/h1&gt;&#010; &lt;img alt="Build with Maven 2"&#010;   src="http://maven.apache.org/images/logos/maven-feather.png" /&gt; &lt;br /&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618262 - in /incubator/composer/trunk/composer-core/src/test/java: ./ org/apache/composer/core/monitors/</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204125501.2941C1A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204125501-2941C1A9832@eris-apache-org%3e</id>
<updated>2008-02-04T12:54:59Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 04:54:59 2008&#010;New Revision: 618262&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618262&amp;view=rev&#010;Log:&#010;Fixed configuration for monitors' tests.&#010;&#010;Added:&#010;    incubator/composer/trunk/composer-core/src/test/java/log4j.xml&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/AbstractComponentMonitorTestCase.java&#010;      - copied, changed from r618229, incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/ComponentMonitorHelperTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/test.properties   (with props)&#010;Removed:&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/ComponentMonitorHelperTestCase.java&#010;Modified:&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerLog4JComponentMonitorTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerLog4JComponentMonitorTestCase.java&#010;&#010;Added: incubator/composer/trunk/composer-core/src/test/java/log4j.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/log4j.xml?rev=618262&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/log4j.xml (added)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/log4j.xml Mon Feb  4 04:54:59 2008&#010;@@ -0,0 +1,31 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&lt;!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&gt;&#010;+&#010;+&lt;log4j:configuration debug="false" threshold="null" xmlns:log4j="http://jakarta.apache.org/log4j/"&gt;&#010;+&#009;&#010;+&#009;&lt;appender class="org.apache.composer.core.monitors.ForTestSakeAppender" name="FILE"&gt;&#010;+&#009;&#009;&lt;layout class="org.apache.log4j.PatternLayout"&gt;&#010;+&#009;&#009;&#009;&lt;param name="ConversionPattern" value="%d %-5p [%c] %m%n"/&gt;&#010;+&#009;&#009;&lt;/layout&gt;&#010;+&#009;&lt;/appender&gt;&#010;+&#010;+&#009;&lt;appender class="org.apache.log4j.ConsoleAppender" name="CONSOLE"&gt;&#010;+&#009;&#009;&lt;layout class="org.apache.log4j.PatternLayout"&gt;&#010;+&#009;&#009;&#009;&lt;param name="ConversionPattern" value="%d %-5p [%c] %m%n"/&gt;&#010;+&#009;&#009;&lt;/layout&gt;&#010;+&#009;&lt;/appender&gt;&#010;+&#010;+&#009;&lt;logger additivity="true" name="org.apache.composer.core"&gt;&#010;+&#009;&#009;&lt;level value="DEBUG"/&gt;&#010;+&#009;&#009;&lt;appender-ref ref="FILE"/&gt;&#010;+&#009;&lt;/logger&gt;&#010;+&#010;+    &lt;logger additivity="true" name="java.lang"&gt;&#010;+        &lt;level value="DEBUG"/&gt;&#010;+        &lt;appender-ref ref="FILE"/&gt;&#010;+    &lt;/logger&gt;&#010;+&#010;+&#009;&lt;root&gt;&#010;+&#009;&#009;&lt;level value="DEBUG"/&gt;&#010;+&#009;&lt;/root&gt;&#010;+&lt;/log4j:configuration&gt;&#010;\ No newline at end of file&#010;&#010;Copied: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/AbstractComponentMonitorTestCase.java&#010;(from r618229, incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/ComponentMonitorHelperTestCase.java)&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/AbstractComponentMonitorTestCase.java?p2=incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/AbstractComponentMonitorTestCase.java&amp;p1=incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/ComponentMonitorHelperTestCase.java&amp;r1=618229&amp;r2=618262&amp;rev=618262&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/ComponentMonitorHelperTestCase.java&#010;(original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/AbstractComponentMonitorTestCase.java&#010;Mon Feb  4 04:54:59 2008&#010;@@ -39,7 +39,7 @@&#010;  * @author Mauro Talevi&#010;  * @author Juze Peleteiro&#010;  */&#010;-public abstract class ComponentMonitorHelperTestCase {&#010;+public abstract class AbstractComponentMonitorTestCase {&#010;     private ComponentMonitor componentMonitor;&#010;     private Constructor constructor;&#010;     private Method method;&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerCommonsLoggingComponentMonitorTestCase.java?rev=618262&amp;r1=618261&amp;r2=618262&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;(original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;Mon Feb  4 04:54:59 2008&#010;@@ -18,13 +18,13 @@&#010; &#010; import org.apache.composer.core.ComponentMonitor;&#010; import org.apache.composer.core.monitors.CommonsLoggingComponentMonitor;&#010;-import org.apache.composer.core.monitors.ComponentMonitorHelperTestCase;&#010;+import org.apache.composer.core.monitors.AbstractComponentMonitorTestCase;&#010; &#010; import java.io.IOException;&#010; import java.lang.reflect.Constructor;&#010; import java.lang.reflect.Method;&#010; &#010;-public class MultipleLoggerCommonsLoggingComponentMonitorTestCase extends ComponentMonitorHelperTestCase&#010;{&#010;+public class MultipleLoggerCommonsLoggingComponentMonitorTestCase extends AbstractComponentMonitorTestCase&#010;{&#010; &#010;     String logPrefixName = String.class.getName();&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerLog4JComponentMonitorTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerLog4JComponentMonitorTestCase.java?rev=618262&amp;r1=618261&amp;r2=618262&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerLog4JComponentMonitorTestCase.java&#010;(original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/MultipleLoggerLog4JComponentMonitorTestCase.java&#010;Mon Feb  4 04:54:59 2008&#010;@@ -17,7 +17,7 @@&#010; package org.apache.composer.core.monitors;&#010; &#010; import org.apache.composer.core.ComponentMonitor;&#010;-import org.apache.composer.core.monitors.ComponentMonitorHelperTestCase;&#010;+import org.apache.composer.core.monitors.AbstractComponentMonitorTestCase;&#010; import org.apache.composer.core.monitors.Log4JComponentMonitor;&#010; &#010; import java.io.IOException;&#010;@@ -28,7 +28,7 @@&#010;  * @author Paul Hammant&#010;  * @author Mauro Talevi&#010;  */&#010;-public class MultipleLoggerLog4JComponentMonitorTestCase extends ComponentMonitorHelperTestCase&#010;{&#010;+public class MultipleLoggerLog4JComponentMonitorTestCase extends AbstractComponentMonitorTestCase&#010;{&#010; &#010;     String logPrefixName = String.class.getName();&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerCommonsLoggingComponentMonitorTestCase.java?rev=618262&amp;r1=618261&amp;r2=618262&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;(original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerCommonsLoggingComponentMonitorTestCase.java&#010;Mon Feb  4 04:54:59 2008&#010;@@ -18,14 +18,14 @@&#010; &#010; import org.apache.composer.core.ComponentMonitor;&#010; import org.apache.composer.core.monitors.CommonsLoggingComponentMonitor;&#010;-import org.apache.composer.core.monitors.ComponentMonitorHelperTestCase;&#010;+import org.apache.composer.core.monitors.AbstractComponentMonitorTestCase;&#010; import org.junit.Test;&#010; &#010; import java.lang.reflect.Constructor;&#010; import java.lang.reflect.Method;&#010; import java.io.IOException;&#010; &#010;-public class SingleLoggerCommonsLoggingComponentMonitorTestCase extends ComponentMonitorHelperTestCase&#010;{&#010;+public class SingleLoggerCommonsLoggingComponentMonitorTestCase extends AbstractComponentMonitorTestCase&#010;{&#010; &#010;     protected ComponentMonitor makeComponentMonitor() {&#010;         return new CommonsLoggingComponentMonitor(CommonsLoggingComponentMonitor.class);&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerLog4JComponentMonitorTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerLog4JComponentMonitorTestCase.java?rev=618262&amp;r1=618261&amp;r2=618262&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerLog4JComponentMonitorTestCase.java&#010;(original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/SingleLoggerLog4JComponentMonitorTestCase.java&#010;Mon Feb  4 04:54:59 2008&#010;@@ -17,7 +17,7 @@&#010; package org.apache.composer.core.monitors;&#010; &#010; import org.apache.composer.core.ComponentMonitor;&#010;-import org.apache.composer.core.monitors.ComponentMonitorHelperTestCase;&#010;+import org.apache.composer.core.monitors.AbstractComponentMonitorTestCase;&#010; import org.apache.composer.core.monitors.Log4JComponentMonitor;&#010; &#010; import java.io.IOException;&#010;@@ -28,7 +28,7 @@&#010;  * @author Paul Hammant&#010;  * @author Mauro Talevi&#010;  */&#010;-public class SingleLoggerLog4JComponentMonitorTestCase extends ComponentMonitorHelperTestCase&#010;{&#010;+public class SingleLoggerLog4JComponentMonitorTestCase extends AbstractComponentMonitorTestCase&#010;{&#010; &#010;     protected ComponentMonitor makeComponentMonitor() {&#010;         return new Log4JComponentMonitor(Log4JComponentMonitor.class);&#010;&#010;Added: incubator/composer/trunk/composer-core/src/test/java/test.properties&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/test.properties?rev=618262&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/test.properties (added)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/test.properties Mon Feb  4 04:54:59&#010;2008&#010;@@ -0,0 +1 @@&#010;+foo=bar&#010;\ No newline at end of file&#010;&#010;Propchange: incubator/composer/trunk/composer-core/src/test/java/test.properties&#010;------------------------------------------------------------------------------&#010;    svn:executable = *&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618244 - in /incubator/composer/trunk/composer-site: ./ src/site/content/ src/site/content/containers/</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204114650.6DFAA1A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204114650-6DFAA1A9832@eris-apache-org%3e</id>
<updated>2008-02-04T11:46:50Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 03:46:48 2008&#010;New Revision: 618244&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618244&amp;view=rev&#010;Log:&#010;Moved containers doc pages to separate folder.&#010;&#010;Added:&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/command-line-arguments-container.html&#010;      - copied unchanged from r618243, incubator/composer/trunk/composer-site/src/site/content/command-line-arguments-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/default-container.html&#010;      - copied unchanged from r618243, incubator/composer/trunk/composer-site/src/site/content/default-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/properties-container.html&#010;      - copied unchanged from r618243, incubator/composer/trunk/composer-site/src/site/content/properties-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/system-properties-container.html&#010;      - copied unchanged from r618243, incubator/composer/trunk/composer-site/src/site/content/system-properties-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/containers/transient-container.html&#010;      - copied unchanged from r618243, incubator/composer/trunk/composer-site/src/site/content/transient-container.html&#010;Removed:&#010;    incubator/composer/trunk/composer-site/src/site/content/command-line-arguments-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/default-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/properties-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/system-properties-container.html&#010;    incubator/composer/trunk/composer-site/src/site/content/transient-container.html&#010;Modified:&#010;    incubator/composer/trunk/composer-site/pom.xml&#010;    incubator/composer/trunk/composer-site/src/site/content/sitemap.xml&#010;&#010;Modified: incubator/composer/trunk/composer-site/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/pom.xml?rev=618244&amp;r1=618243&amp;r2=618244&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/pom.xml (original)&#010;+++ incubator/composer/trunk/composer-site/pom.xml Mon Feb  4 03:46:48 2008&#010;@@ -40,7 +40,6 @@&#010;                 &lt;artifactItem&gt;&#010;                   &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;                   &lt;artifactId&gt;composer-core&lt;/artifactId&gt;&#010;-                  &lt;version&gt;${pom.version}&lt;/version&gt;&#010;                   &lt;classifier&gt;javadoc&lt;/classifier&gt;&#010;                   &lt;outputDirectory&gt;&#010;                     ${project.build.directory}/site/javadoc/core&#010;@@ -49,7 +48,6 @@&#010;                 &lt;artifactItem&gt;&#010;                   &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;                   &lt;artifactId&gt;composer-tck&lt;/artifactId&gt;&#010;-                  &lt;version&gt;${pom.version}&lt;/version&gt;&#010;                   &lt;classifier&gt;javadoc&lt;/classifier&gt;&#010;                   &lt;outputDirectory&gt;&#010;                     ${project.build.directory}/site/javadoc/tck&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/sitemap.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/sitemap.xml?rev=618244&amp;r1=618243&amp;r2=618244&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/sitemap.xml (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/sitemap.xml Mon Feb  4 03:46:48&#010;2008&#010;@@ -37,11 +37,11 @@&#010;     &lt;/section&gt;&#010;     &lt;section&gt;&#010;         &lt;name&gt;Containers&lt;/name&gt;&#010;-        &lt;page&gt;default-container.html&lt;/page&gt;&#010;-&#009;    &lt;page&gt;command-line-arguments-container.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;properties-container.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;system-properties-container.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;transient-container.html&lt;/page&gt;&#010;+        &lt;page&gt;containers/default-container.html&lt;/page&gt;&#010;+&#009;    &lt;page&gt;containers/command-line-arguments-container.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;containers/properties-container.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;containers/system-properties-container.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;containers/transient-container.html&lt;/page&gt;&#010;     &lt;/section&gt;&#010;     &lt;section&gt;&#010;          &lt;name&gt;Applications&lt;/name&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618243 [2/2] - in /incubator/composer/trunk/composer-site/src/site: content/ content/antipatterns/ content/help/ templates/</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204114415.3508A1A983A@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204114415-3508A1A983A@eris-apache-org%3e</id>
<updated>2008-02-04T11:44:05Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Modified: incubator/composer/trunk/composer-site/src/site/content/mock-objects.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/mock-objects.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/mock-objects.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/mock-objects.html Mon Feb  4 03:43:57 2008&#010;@@ -5,7 +5,7 @@&#010; &lt;title&gt;Mock Objects&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;If you have had it with codebases that drag along everything and the kitchen sink, (possibly using the &lt;a href="singleton-antipattern.html"&gt;Singleton&lt;/a&gt;) you must read this page. Classes that look up or instantiate heavyweight classes themselves are such beasts. As you might have experienced, they are a pain to test. (And ample proof that the authors didn't follow TDD &lt;img src="/images/thumbs_down.gif" width="19" height="19" alt="thumbs down" /&gt;). Dependency Injection with Apache Composer and Mock Objects to the rescue!&lt;/p&gt;&#010;+&lt;p&gt;If you have had it with codebases that drag along everything and the kitchen sink, (possibly using the &lt;a href="singleton-antipattern.html"&gt;Singleton&lt;/a&gt;) you must read this page. Classes that look up or instantiate heavyweight classes themselves are such beasts. As you might have experienced, they are a pain to test. (And ample proof that the authors didn't follow TDD &lt;img src="/images/thumbs_down.gif" width="19" height="19" alt="thumbs down" /&gt;). Dependency Injection with Container and Mock Objects to the rescue!&lt;/p&gt;&#010; &lt;p&gt;Mock Objects are special objects used during testing. Mock Objects and classes that honour &lt;a href="injection.html"&gt;Constructor Injection&lt;/a&gt; are a &lt;strong&gt;perfect match&lt;/strong&gt;, since such classes can be handed mocks during testing and &amp;quot;the real thing&amp;quot; when the application is run.&lt;/p&gt;&#010; &lt;p&gt;This illustration shows how:&lt;/p&gt;&#010; &lt;table border="0"&gt;&#010;@@ -55,7 +55,7 @@&#010; &lt;p&gt; &lt;img src="/images/information.gif" width="16" height="16" alt="info" /&gt; We won't go into further technical details about mocks, as there are many libraries to choose from. Check out &lt;a href="http://www.jmock.org/"&gt;JMock&lt;/a&gt; and &lt;a href="http://www.easymock.org/"&gt;EasyMock&lt;/a&gt;, or read about the ideas at &lt;a href="http://www.mockobjects.com/"&gt;MockObjects&lt;/a&gt; &lt;/p&gt;&#010; &lt;h3&gt;Prime Time&#010; &lt;/h3&gt;&#010;-&lt;p&gt;It is left to Apache Composer to instantiate NeedsStuff. In order for it to succeed, we must also configure the container with some real BlueStuff and GreanStuff:&lt;/p&gt;&#010;+&lt;p&gt;It is left to Container to instantiate NeedsStuff. In order for it to succeed, we must also configure the container with some real BlueStuff and GreanStuff:&lt;/p&gt;&#010; &lt;div class="source"&gt;&lt;pre&gt;&#010; public class AppBootstrapper {&#010;   public void runapp() {&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/monitors.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/monitors.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/monitors.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/monitors.html Mon Feb  4 03:43:57 2008&#010;@@ -4,7 +4,7 @@&#010; &lt;head&gt;&#010; &lt;title&gt;Component Monitors&lt;/title&gt;&lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;A ComponentMonitor if injected into DefultApache Composer allows for certain events to me monitored at a container level. We are idealogically opposed to a forced choice of loging framework. If you're hell bent on logging, chose from a  ComponentMonitor imlementation below. For now though consider what events are monitored:&lt;/p&gt;&#010;+&lt;p&gt;A ComponentMonitor if injected into DefultContainer allows for certain events to me monitored at a container level. We are idealogically opposed to a forced choice of loging framework. If you're hell bent on logging, chose from a  ComponentMonitor imlementation below. For now though consider what events are monitored:&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;instantiating - refering to a component &lt;/li&gt;&#010;   &lt;li&gt;instantiated - refering to a component&lt;/li&gt;&#010;@@ -13,7 +13,7 @@&#010;   &lt;li&gt;invoked - refering to a method on a component &lt;/li&gt;&#010;   &lt;li&gt;invocationFailed - refering to a method on a component &lt;/li&gt;&#010;   &lt;li&gt;lifecycleInvocationFailed - referring to start/stop/dispose methods on a component &lt;/li&gt;&#010;-  &lt;li&gt;noComponentFound - referring to getComponent(..) on a Apache Composer instance. &lt;/li&gt;&#010;+  &lt;li&gt;noComponentFound - referring to getComponent(..) on a Container instance. &lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;p&gt;&lt;strong&gt;Return Values &lt;/strong&gt;&lt;/p&gt;&#010; &lt;p&gt;&lt;em&gt;Instantiating&lt;/em&gt; returns a Constructor. An implementor of ComponentMonitor can choose to return a different Constructor reference. This is one way that implementations can be replaced or decorated (AOP style) with additional/changed functionality. &lt;/p&gt;&#010;@@ -22,7 +22,7 @@&#010; &lt;ol&gt;&#010;   &lt;li&gt;ComponentMonitor can generally be chained together. Meaning you can use them in combination. &lt;/li&gt;&#010;   &lt;li&gt;Most have NullComponentMonitor (see below) as their end stop. &lt;/li&gt;&#010;-  &lt;li&gt;Any method on ComponentMonitor is open for interpretation. That means they can throw exceptions as well as return different values, making them modify Apache Composer's behavior. &lt;/li&gt;&#010;+  &lt;li&gt;Any method on ComponentMonitor is open for interpretation. That means they can throw exceptions as well as return different values, making them modify Container's behavior. &lt;/li&gt;&#010; &lt;/ol&gt;&#010; &lt;h3&gt;Logging or text-centric varieties of ComponentMonitor &lt;/h3&gt;&#010; &lt;p&gt;Hopefully self explanatory:&lt;/p&gt;&#010;@@ -33,7 +33,7 @@&#010;   &lt;li&gt;WriterComponentMonitor&lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;h3&gt;NullComponentMonitor&lt;/h3&gt;&#010;-&lt;p&gt;This is Apache Composer's default ComponentMonitor. It generally fits the NullObject pattern, but it does add behavior. Specifically if it encounters a lifecycleInvocationFailed(..) method invocation, it throws a LifecycleException in response. If you use something other than NullComponentMonitor (bear in mind the default 'end stop' for most others is also NullComponentMonitor) then you could change the way Apache Composer responds to components it cannot start, stop of dispose of. &lt;/p&gt;&#010;+&lt;p&gt;This is Container's default ComponentMonitor. It generally fits the NullObject pattern, but it does add behavior. Specifically if it encounters a lifecycleInvocationFailed(..) method invocation, it throws a LifecycleException in response. If you use something other than NullComponentMonitor (bear in mind the default 'end stop' for most others is also NullComponentMonitor) then you could change the way Container responds to components it cannot start, stop of dispose of. &lt;/p&gt;&#010; &lt;h3&gt;LifecycleComponentMonitor&lt;/h3&gt;&#010; &lt;p&gt;This  ComponentMonitor stores lifecycle failures and rethrows them later if rethrowLifecycleFailuresException() is called. &lt;/p&gt;&#010; &lt;h3&gt;Future work&lt;/h3&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/news.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/news.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/news.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/news.html Mon Feb  4 03:43:57 2008&#010;@@ -6,7 +6,7 @@&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &lt;p&gt;&lt;strong&gt;Jan 19, 2008&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 2.0 released (190K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 2.0 released (190K jar) &lt;/p&gt;&#010; &lt;p&gt;New (versus beta 2):&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;Binding Annotations support (disambiguation)&lt;/li&gt;&#010;@@ -16,11 +16,11 @@&#010; &lt;p&gt;Changed (versus beta 2):&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;Yet More Java5 generics&lt;/li&gt;&#010;-  &lt;li&gt;Build moved to JUnit 4.x and JMock 2.x (does not affect users of Apache Composer)&lt;/li&gt;&#010;+  &lt;li&gt;Build moved to JUnit 4.x and JMock 2.x (does not affect users of Container)&lt;/li&gt;&#010;   &lt;li&gt;Built-in parameter name access, as opposed jar dependency&lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;p&gt;&lt;strong&gt;August 26, 2007&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 2.0 beta 2 released (152K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 2.0 beta 2 released (152K jar) &lt;/p&gt;&#010; &lt;p&gt;New (versus beta 1):&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;Rudimentary AOP capability for components built in&lt;/li&gt;&#010;@@ -38,7 +38,7 @@&#010;   &lt;li&gt;Startable interface more easily overridden to own choice&lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;p&gt;&lt;strong&gt;July 15, 2007&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 2.0 BETA-1 released (128K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 2.0 BETA-1 released (128K jar) &lt;/p&gt;&#010; &lt;p&gt;New:&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;Properties for components as they are added to containers makes for increased flexibility&lt;/li&gt;&#010;@@ -54,15 +54,15 @@&#010;   &lt;li&gt;Fluent interface for adding of components to a container&lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;p&gt;&lt;strong&gt;Mar 18, 2007&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 1.3 released (113K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 1.3 released (113K jar) &lt;/p&gt;&#010; &lt;p&gt;&lt;strong&gt;January 19, 2006&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 1.2 released (112K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 1.2 released (112K jar) &lt;/p&gt;&#010; &lt;p&gt;&lt;strong&gt;November 4, 2004&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 1.1 released (75K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 1.1 released (75K jar) &lt;/p&gt;&#010; &lt;p&gt;&lt;strong&gt;June 5,  2004&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 1.0 released (49K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 1.0 released (49K jar) &lt;/p&gt;&#010; &lt;p&gt;&lt;strong&gt;June 29,  2003&lt;/strong&gt;&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer 1.0 alpha (25K jar) &lt;/p&gt;&#010;+&lt;p&gt;Container 1.0 alpha (25K jar) &lt;/p&gt;&#010; &lt;p&gt;&lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp; &lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/project.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/project.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/project.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/project.html Mon Feb  4 03:43:57 2008&#010;@@ -5,11 +5,11 @@&#010;     &lt;title&gt;Project&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Apache Composer is hosted at &lt;a href="http://apache.org"&gt;The Apache Software Foundation&lt;/a&gt;, presently in its incubator. &lt;/p&gt;&#010;+&lt;p&gt;Container is hosted at &lt;a href="http://apache.org"&gt;The Apache Software Foundation&lt;/a&gt;, presently in its incubator. &lt;/p&gt;&#010; &#010; &lt;h2&gt;Project links&lt;/h2&gt;&#010; &#010;-&lt;p&gt;Source control root for Apache Composer (you will need Maven2 installed to build):&lt;/p&gt;&#010;+&lt;p&gt;Source control root for Container (you will need Maven2 installed to build):&lt;/p&gt;&#010; &#010; &lt;p&gt;&lt;a&#010;     href="https://svn.apache.org/repos/asf/incubator/composer/trunk"&gt;https://svn.apache.org/repos/asf/incubator/composer/trunk&lt;/a&gt;&#010;@@ -21,7 +21,7 @@&#010; &#010; &lt;h2&gt;License&lt;/h2&gt;&#010; &#010;-&lt;p&gt;Apache Composer is &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;Apache licensed&lt;/a&gt;.&#010;+&lt;p&gt;Container is &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;Apache licensed&lt;/a&gt;.&#010; &#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Copied: incubator/composer/trunk/composer-site/src/site/content/properties-container.html (from r618229, incubator/composer/trunk/composer-site/src/site/content/PropertiesContainer.html)&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/properties-container.html?p2=incubator/composer/trunk/composer-site/src/site/content/properties-container.html&amp;p1=incubator/composer/trunk/composer-site/src/site/content/PropertiesContainer.html&amp;r1=618229&amp;r2=618243&amp;rev=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/PropertiesContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/properties-container.html Mon Feb  4 03:43:57 2008&#010;@@ -2,12 +2,12 @@&#010; &#010; &lt;html&gt;&#010; &lt;head&gt;&#010;-&lt;title&gt;PropertiesApache Composer&lt;/title&gt;&#010;+&lt;title&gt;PropertiesContainer&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &lt;p&gt;&#010;-PropertiesApache Composer is a special type of Apache Composer that is populated from the entries in a properties file. &#010;-&lt;p&gt;Here is an example of how to use PropertiesApache Composer to map properties  as configuration for a component, with parameter names as the bindings.&lt;br /&gt;&#010;+PropertiesContainer is a special type of Container that is populated from the entries in a properties file. &#010;+&lt;p&gt;Here is an example of how to use PropertiesContainer to map properties  as configuration for a component, with parameter names as the bindings.&lt;br /&gt;&#010; &lt;p&gt;Consider this component:&#010; &lt;div class="source"&gt;&#010;     &lt;pre&gt;public class BigFatComponent {&#010;@@ -32,9 +32,9 @@&#010; defaultProperties.load("my-application.properties");&#010;         &#010; // default properties are taken from here&#010;-Apache Composer propsContainer = new PropertiesApache Composer(defaultProperties);&#010;+Container propsContainer = new PropertiesContainer(defaultProperties);&#010;                 &#010;-MutableApache Composer mpc = new DefaultApache Composer(propsContainer);&#010;+MutableContainer mpc = new DefaultContainer(propsContainer);&#010;                 &#010; mpc.as(Characteristics.USE_NAMES).addComponent(BigFatComponent.class);&#010; &lt;/pre&gt;&#010;@@ -53,7 +53,7 @@&#010;           &lt;li&gt; java.sql.(Date|Time|Timestamp) &lt;/li&gt;&#010;           &lt;li&gt; Any type sporting accessible constructor taking single string parameter. &lt;/li&gt;&#010; &lt;/ul&gt;&#010;-        &lt;p&gt;PropertiesApache Composer can be part of a tree of containers. It makes sense, of course, being more near the root of that tree.&lt;/p&gt;&#010;+        &lt;p&gt;PropertiesContainer can be part of a tree of containers. It makes sense, of course, being more near the root of that tree.&lt;/p&gt;&#010; &lt;/body&gt;&#010; &#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/properties.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/properties.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/properties.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/properties.html Mon Feb  4 03:43:57 2008&#010;@@ -5,15 +5,15 @@&#010;     &lt;title&gt;Component Properties&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;DefaultApache Composer allows for some properties to be set&#010;+&lt;p&gt;DefaultContainer allows for some properties to be set&#010;    per component at the time each is added. A convenience class called Characteristics lists the supplied properties. &lt;/p&gt;&#010; &#010; &lt;p&gt;Properties can be set for a component in a method 'as' on&#010;-   MutableApache Composer. If that is the case then the properties will&#010;+   MutableContainer. If that is the case then the properties will&#010;    affect the &lt;strong&gt;next&lt;/strong&gt; component added only.&lt;/p&gt;&#010; &#010; &lt;p&gt;They can also be set in a more persistent manner for the&#010;-   MutableApache Composer in question, using the 'change' method. If so, they will affect all subsequent&#010;+   MutableContainer in question, using the 'change' method. If so, they will affect all subsequent&#010;    additions of component.&lt;/p&gt;&#010; &#010; &lt;p&gt;Some examples :&lt;/p&gt;&#010;@@ -54,14 +54,14 @@&#010; &#010; &lt;p&gt;Every characteristics set for a component must be handled by a&#010;    BehaviorFactory or InjectionFactory that recognises it. They are&#010;-   typically chained together. DefaultApache Composer's default&#010;+   typically chained together. DefaultContainer's default&#010;    BehaviorFactory and InjectionFactory are AdaptiveBehaviorFactory and&#010;    AdaptiveInjectionFactory. These can handle CDI and SDI as well as CACHE&#010;    and HIDE_IMPL.&lt;/p&gt;&#010; &#010;-&lt;p&gt;If you setup DefaultApache Composer with a&#010;+&lt;p&gt;If you setup DefaultContainer with a&#010;    BehaviorFactory/InjectionFactory combination that is unaware of the&#010;-   characteristics you subsequently use, Apache Composer will object by way of an&#010;+   characteristics you subsequently use, Container will object by way of an&#010;    exception as you add the component to the container. See &lt;a href="unprocessed-properties-help.html"&gt;Unprocessed Properties&lt;/a&gt;. &lt;/p&gt;&#010; &lt;p&gt;Supplied properties (from org.apache.composer.core.Characteristics) -&lt;/p&gt;&#010; &lt;ul&gt;&#010;@@ -81,6 +81,6 @@&#010;   &lt;li&gt;USE_NAMES - use the parameter names of the component's constructor (or injection method) for the binding of configuration or components.&lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;h3&gt;Custom Properties&lt;/h3&gt;&#010;-&lt;p&gt;You can make your own properties quite easily - check out the source to &lt;a href="http://svn.codehaus.org/containercontainer/java/2.x/trunk/container/container/src/java/org/containercontainer/Characteristics.java"&gt;Characteristics.java&lt;/a&gt; and the classes that refer to it in Apache Composer (various implementations of ComponentFactory and ComponentAdapter). &lt;/p&gt;&#010;+&lt;p&gt;You can make your own properties quite easily - check out the source to &lt;a href="http://svn.codehaus.org/containercontainer/java/2.x/trunk/container/container/src/java/org/containercontainer/Characteristics.java"&gt;Characteristics.java&lt;/a&gt; and the classes that refer to it in Container (various implementations of ComponentFactory and ComponentAdapter). &lt;/p&gt;&#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/scopes.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/scopes.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/scopes.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/scopes.html Mon Feb  4 03:43:57 2008&#010;@@ -5,8 +5,8 @@&#010; &lt;title&gt;Scoped Containers&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Apache Composer's scope hinges on parent/child container&#010;-relationships. From a Apache Composer instance you can make a child&#010;+&lt;p&gt;Container's scope hinges on parent/child container&#010;+relationships. From a Container instance you can make a child&#010; container via makeChildContainer() or addChildContainer(..).&lt;/p&gt;&#010; &lt;p&gt;These hierarchies of container can be set up with parents and&#010; children refering to each other, or children referring to parents only,&#010;@@ -15,7 +15,7 @@&#010; lean on it for component resolution (but not without). If a parent has&#010; its child registered asa child, then it can manage it (start, stop,&#010; dispose cascade into children).&lt;/p&gt;&#010;-&lt;p&gt;Web frameworks that leverage Apache Composer typically construct a tree of containers.  For example an application level container maintains components that can be shared across the application. The application container will have child containers to maintain session level components.  These session level containers can resolve dependencies through their parent containers, but the application container will have no visibility into its children.  Additionally these child container do not have visibility into their sibling containers.  With this design, containers can easily be garbage collected at the end of their scope. &lt;/p&gt;&#010;+&lt;p&gt;Web frameworks that leverage Container typically construct a tree of containers.  For example an application level container maintains components that can be shared across the application. The application container will have child containers to maintain session level components.  These session level containers can resolve dependencies through their parent containers, but the application container will have no visibility into its children.  Additionally these child container do not have visibility into their sibling containers.  With this design, containers can easily be garbage collected at the end of their scope. &lt;/p&gt;&#010; &lt;h2&gt;Simple Examples&lt;/h2&gt;&#010; &lt;p&gt;Here are examples of parent/child setup:&lt;/p&gt;&#010;     &lt;div class="source"&gt;&#010;@@ -48,7 +48,7 @@&#010;   &lt;pre&gt;&#010; parent = new DefaultContainer();&#010; parent.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class);&#010;-child = parent.addChildContainer(new DefaultApache Composer(parent));&#010;+child = parent.addChildContainer(new DefaultContainer(parent));&#010; child.addComponent(DependsOnApple.class);&#010; // this is OK&#010; parent.start();&#010;@@ -57,7 +57,7 @@&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&lt;pre&gt;parent = new DefaultContainer();&#010; parent.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class);&#010;-child = new DefaultApache Composer(parent);&#010;+child = new DefaultContainer(parent);&#010; child.addComponent(DependsOnApple.class);&#010; // this is  OK&#010; parent.start();&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/setter-injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/setter-injection.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/setter-injection.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/setter-injection.html Mon Feb  4 03:43:57 2008&#010;@@ -59,7 +59,7 @@&#010; &lt;/div&gt;&#010; &lt;h2&gt;Container support&lt;/h2&gt;&#010; &#010;-&lt;p&gt;The Spring Framework project is the best example of a container that favors setter injection. Apache Composer does&#010;+&lt;p&gt;The Spring Framework project is the best example of a container that favors setter injection. Container does&#010;    too, but we really believe that constructor injector is superior.&lt;/p&gt;&#010; &#010; &lt;h2&gt;Refs + Comparison&lt;/h2&gt;&#010;@@ -67,11 +67,11 @@&#010; &lt;p&gt;&lt;a href="http://www.martinfowler.com/articles/injection.html#SetterInjectionWithSpring"&gt;Setter Injection&lt;/a&gt; is a&#010;     &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt; variant where an object gets all&#010;                                                                                    dependencies via setter methods.&#010;-                                                                                   Apache Composer support this with&#010;+                                                                                   Container support this with&#010;     &lt;a href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/defaults/SetterInjectionComponentAdapter.html"&gt;SetterInjectionComponentAdapter&lt;/a&gt;,&#010;                                                                                                                                                                                          but&#010;                                                                                                                                                                                          the&#010;-                                                                                                                                                                                         Apache Composer&#010;+                                                                                                                                                                                         Container&#010;                                                                                                                                                                                          team&#010;                                                                                                                                                                                          recommends&#010;     &lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;.&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/sitemap.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/sitemap.xml?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/sitemap.xml (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/sitemap.xml Mon Feb  4 03:43:57 2008&#010;@@ -37,11 +37,11 @@&#010;     &lt;/section&gt;&#010;     &lt;section&gt;&#010;         &lt;name&gt;Containers&lt;/name&gt;&#010;-        &lt;page&gt;DefaultContainer.html&lt;/page&gt;&#010;-&#009;    &lt;page&gt;CommandLineArgumentsContainer.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;PropertiesContainer.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;SystemPropertiesContainer.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;TransientContainer.html&lt;/page&gt;&#010;+        &lt;page&gt;default-container.html&lt;/page&gt;&#010;+&#009;    &lt;page&gt;command-line-arguments-container.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;properties-container.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;system-properties-container.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;transient-container.html&lt;/page&gt;&#010;     &lt;/section&gt;&#010;     &lt;section&gt;&#010;          &lt;name&gt;Applications&lt;/name&gt;&#010;&#010;Copied: incubator/composer/trunk/composer-site/src/site/content/system-properties-container.html (from r618234, incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html)&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/system-properties-container.html?p2=incubator/composer/trunk/composer-site/src/site/content/system-properties-container.html&amp;p1=incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html&amp;r1=618234&amp;r2=618243&amp;rev=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/system-properties-container.html Mon Feb  4 03:43:57 2008&#010;@@ -2,12 +2,12 @@&#010; &#010; &lt;html&gt;&#010; &lt;head&gt;&#010;-&lt;title&gt;SystemPropertiesApache Composer&lt;/title&gt;&#010;+&lt;title&gt;SystemPropertiesContainer&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &lt;p&gt;&#010;-SystemPropertiesApache Composer is a special type of Apache Composer that is populated from the &lt;a href="http://www.mindspring.com/~mgrand/java-system-properties.htm"&gt;System Properties&lt;/a&gt; passed into the Java application when it started. &#010;-&lt;p&gt;Here is an example of how to use SystemPropertiesApache Composer to map system properties  as configuration for a component, with parameter names as the bindings.&#010;+SystemPropertiesContainer is a special type of Container that is populated from the &lt;a href="http://www.mindspring.com/~mgrand/java-system-properties.htm"&gt;System Properties&lt;/a&gt; passed into the Java application when it started. &#010;+&lt;p&gt;Here is an example of how to use SystemPropertiesContainer to map system properties  as configuration for a component, with parameter names as the bindings.&#010; &lt;p&gt;Consider this component:&#010; &#010; &lt;div class="source"&gt;&#010;@@ -30,9 +30,9 @@&#010; &lt;p&gt;For automatic binding of system properties to parameter names of the component:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-Apache Composer syspropsContainer = new SystemPropertiesApache Composer();&#010;+Container syspropsContainer = new SystemPropertiesContainer();&#010;                 &#010;-MutableApache Composer mpc = new DefaultApache Composer(syspropsContainer);&#010;+MutableContainer mpc = new DefaultContainer(syspropsContainer);&#010;                 &#010; mpc.as(Characteristics.USE_NAMES).addComponent(BigFatComponent.class);&#010; &lt;/pre&gt;&#010;@@ -56,7 +56,7 @@&#010;   &lt;li&gt; java.sql.(Date|Time|Timestamp) &lt;/li&gt;&#010;   &lt;li&gt; Any type sporting accessible constructor taking single string parameter. &lt;/li&gt;&#010; &lt;/ul&gt;&#010;-&lt;p&gt;SystemPropertiesApache Composer can be part of a tree of containers. It makes sense, of course, being more near the root of that tree.&lt;/p&gt;&#010;+&lt;p&gt;SystemPropertiesContainer can be part of a tree of containers. It makes sense, of course, being more near the root of that tree.&lt;/p&gt;&#010; &lt;/body&gt;&#010; &#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/team.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/team.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/team.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/team.html Mon Feb  4 03:43:57 2008&#010;@@ -5,11 +5,11 @@&#010; &lt;title&gt;Team&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;A project like Apache Composer is always made possible by the effort of a lot of people. Read about the developers and the contributers' names below. All of them have worked together to make Apache Composer the most respected IoC framework.&lt;/p&gt;&#010;+&lt;p&gt;A project like Container is always made possible by the effort of a lot of people. Read about the developers and the contributers' names below. All of them have worked together to make Container the most respected IoC framework.&lt;/p&gt;&#010; &lt;h2&gt;Committers&lt;/h2&gt;&#010;-Apache Composer committers introduce themselves in their own words and are listed in alphabetical order.&lt;br /&gt;&#010;+Container committers introduce themselves in their own words and are listed in alphabetical order.&lt;br /&gt;&#010; &lt;h3&gt;Paul Hammant&lt;/h3&gt;&#010;-&lt;p&gt;Paul is 39, has worked for ThoughtWorks  since 2002 and is co-founder of the PicoContainer project (precursor to Apache Composer). He used to freelance but is now very happy at TW. Paul practices XP on client sites and loves open source on which he is chief zealot for TW. He formerly worked at Apache on the Avalon project and remains there working on AltRMI. He loves the simplest thing as a design metaphor, hates too much XML. He loves the lowest common denominator (LCD) as a mechanism for facilitating divergent designs. To that end, he encourages multiple implementations of LCD ideas and APIs. Paul hopes to see Milli, Kilo and Mega implementations of the Pico idea. He hopes to see a myriad of interchangeable Apache Composer Components. He hopes to see standard APIs for components emerge from those implementations, but never be forced when teams cannot agree. It would be fairly easy to guess that Paul does not like big up-front design. That not withstanding the fact that &#010; he used to do bucket-loads of it Paul with Aslak, wrote the first lines. Paired, under the influence of a couple of beers, and based on Joe's story of Rachel Davies' comments to his setter injector IoC work at the start of June 2003.&lt;/p&gt;&#010;+&lt;p&gt;Paul is 39, has worked for ThoughtWorks  since 2002 and is co-founder of the PicoContainer project (precursor to Container). He used to freelance but is now very happy at TW. Paul practices XP on client sites and loves open source on which he is chief zealot for TW. He formerly worked at Apache on the Avalon project and remains there working on AltRMI. He loves the simplest thing as a design metaphor, hates too much XML. He loves the lowest common denominator (LCD) as a mechanism for facilitating divergent designs. To that end, he encourages multiple implementations of LCD ideas and APIs. Paul hopes to see Milli, Kilo and Mega implementations of the Pico idea. He hopes to see a myriad of interchangeable Container Components. He hopes to see standard APIs for components emerge from those implementations, but never be forced when teams cannot agree. It would be fairly easy to guess that Paul does not like big up-front design. That not withstanding the fact that he used to d&#010; o bucket-loads of it Paul with Aslak, wrote the first lines. Paired, under the influence of a couple of beers, and based on Joe's story of Rachel Davies' comments to his setter injector IoC work at the start of June 2003.&lt;/p&gt;&#010; &lt;p&gt;Paul is also well known for &lt;a href="http://sourceforge.net/projects/eob"&gt;Enterprise Object Broker&lt;/a&gt; and &lt;a href="http://jesktopapps.sf.net/"&gt;Jesktop&lt;/a&gt;, the &lt;a href="http://openqa.org/selenium-rc/"&gt;original driven side of Selenium&lt;/a&gt; and other stupid ideas like &lt;a href="http://sourceforge.net/projects/thicky"&gt;Thicky&lt;/a&gt; and related &lt;a href="http://paulhammant.com/blog/ruby-versus-javascript-for-web3.0.html"&gt;early Web 3.0 references&lt;/a&gt;&lt;/p&gt;&#010; &lt;h3&gt;&lt;p&gt;Konstantin Pribluda&lt;/p&gt;&lt;/h3&gt;&#010; &lt;p&gt;I'm 32 and live in Wiesbaden. I started programming at the age of 12 and had access to really cool systems ranging from WANG 3200 through PDP 8/11 to System-360 ( actually sovjet clones of them, but who cares? ). My first &amp;quot;paid for&amp;quot; work was in 1988, and from that point I financed my study freelance software development. I developed fiscal management systems, medical video archiving, internet applications for telcos and java applet games ( later was for personal fun )...&lt;/p&gt;&#010;@@ -21,13 +21,13 @@&#010; &lt;p&gt;My interests besides programming are my wife (who always gets too less time), reading books (a lot of fantasy and SF stuff), hearing celtic-rooted music (although I like others also lot), and - when in mood - cooking&lt;/p&gt;&#010; &lt;p&gt;Last, but not least, beeing a Christian is a part of my life, where I have my roots.&lt;/p&gt;&#010; &lt;h4&gt;Mauro Talevi&lt;/h4&gt;&#010;-&lt;p&gt;I first came across Paul at an XTC (eXtreme Tuesdays Club) on Agile development at the Ol' Bank of England Pub in London. Back then Apache Composer had yet to be born. We were both working with Avalon IoC and in particular the Phoenix microkernel. Ever since discussing all the limitations of the Avalon framework - in particular the dependency on an API - I knew that the way forward was the Pico way.&lt;/p&gt;&#010;+&lt;p&gt;I first came across Paul at an XTC (eXtreme Tuesdays Club) on Agile development at the Ol' Bank of England Pub in London. Back then Container had yet to be born. We were both working with Avalon IoC and in particular the Phoenix microkernel. Ever since discussing all the limitations of the Avalon framework - in particular the dependency on an API - I knew that the way forward was the Pico way.&lt;/p&gt;&#010; &lt;p&gt;I've worked in Java and enterprise systems for several years in various business domains - ranging from space data search portal for ESA to real-time messaging at the BBC - and I've come to appreciate the beauty, elegance and power of CDI.&lt;/p&gt;&#010; &lt;h3&gt;Michael Ward&lt;/h3&gt;&#010;-&lt;p&gt;I live in Chicago, or at least that is where all my bills are sent. As it seems to be the lingo, I was assimilated into ThoughtWorks back in 2003. I have been developing professionally since 1997 and have had the great opportunity to work and live in many great locations with some exceptionally talented individuals. I was immediately drawn to Apache Composer because of its simplicity. The API is small and does not force you to define all your configurations in XML. The projects I have worked on are easier to test, refactor, debug and extend because a natural side effect of utilizing CDI is a small and easy to comprehend code base. Mike leads the &lt;a href="http://waffle.codehaus.org/"&gt;Waffle web framework&lt;/a&gt; project (the easiest for Java we think). &lt;/p&gt;&#010;-&lt;p&gt;Have worked/contributed to MicroContainer, the JMX module for NanoContainer, Apache Composer.NET and NanoContainer.NET.&lt;/p&gt;&#010;+&lt;p&gt;I live in Chicago, or at least that is where all my bills are sent. As it seems to be the lingo, I was assimilated into ThoughtWorks back in 2003. I have been developing professionally since 1997 and have had the great opportunity to work and live in many great locations with some exceptionally talented individuals. I was immediately drawn to Container because of its simplicity. The API is small and does not force you to define all your configurations in XML. The projects I have worked on are easier to test, refactor, debug and extend because a natural side effect of utilizing CDI is a small and easy to comprehend code base. Mike leads the &lt;a href="http://waffle.codehaus.org/"&gt;Waffle web framework&lt;/a&gt; project (the easiest for Java we think). &lt;/p&gt;&#010;+&lt;p&gt;Have worked/contributed to MicroContainer, the JMX module for NanoContainer, Container.NET and NanoContainer.NET.&lt;/p&gt;&#010; &lt;h3&gt;Michael Rimov&lt;/h3&gt;&#010;-&lt;p&gt;Michael came to the Java world after programming for about eight years in the Windows API.  He dove head first into Java J2EE frameworks by initially working with the popular heavyweight Expresso framework where he introduced unit testing to those developers. During his stint as Lead Developer, the framework's usage numbers exploded.  After about nine years working with J2EE, Michael found the joys of light weight components and Apache Composer and has been reaping the performance benefits of both ever since.  His goal is to see it NanoContainer/NanoWAR grow in the J2EE arena, while keeping Pico perfect for embedding in all applications.&lt;/p&gt;&#010;+&lt;p&gt;Michael came to the Java world after programming for about eight years in the Windows API.  He dove head first into Java J2EE frameworks by initially working with the popular heavyweight Expresso framework where he introduced unit testing to those developers. During his stint as Lead Developer, the framework's usage numbers exploded.  After about nine years working with J2EE, Michael found the joys of light weight components and Container and has been reaping the performance benefits of both ever since.  His goal is to see it NanoContainer/NanoWAR grow in the J2EE arena, while keeping Pico perfect for embedding in all applications.&lt;/p&gt;&#010; &lt;p&gt;Michael works for Centerline Computers, Inc in Corvallis Oregon.&lt;/p&gt;&#010; &lt;h3&gt;Jose Peleteiro&lt;/h3&gt;&#010; &lt;p&gt;I live in Rio de Janeiro, Brazil.&lt;/p&gt;&#010;@@ -37,7 +37,7 @@&#010; &lt;p&gt;Emeritus committers are those committers who have contributed significantly to the development of the project, but have been inactive for a period amount of time.&lt;/p&gt;&#010; &lt;p&gt; * Thomas Heller&lt;/p&gt;&#010; &lt;h4&gt;Aslak Helles&amp;oslash;y&lt;/h4&gt;&#010;-&lt;p&gt;Aslak is very accomplished in the Open Source space and co-founder of Apache Composer. He leads XDoclet, and has taken over QDox from Joe. He wrote most of the impressive MiddleGen, and has refactored Generama out of both. From an observers point of view Aslak is prolific. Aslak was assimilated into ThoughtWorks in 2003. [ Words by Paul ]&lt;/p&gt;&#010;+&lt;p&gt;Aslak is very accomplished in the Open Source space and co-founder of Container. He leads XDoclet, and has taken over QDox from Joe. He wrote most of the impressive MiddleGen, and has refactored Generama out of both. From an observers point of view Aslak is prolific. Aslak was assimilated into ThoughtWorks in 2003. [ Words by Paul ]&lt;/p&gt;&#010; &lt;p&gt; * Mike Hogan&lt;/p&gt;&#010; &lt;p&gt; * Stephen L. Molitor&lt;/p&gt;&#010; &lt;h4&gt;Dan North&lt;/h4&gt;&#010;@@ -55,7 +55,7 @@&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010; &lt;p&gt;Contributers&lt;/p&gt;&#010;-&lt;p&gt;A lot of people have contributed ideas and code to the Apache Composer's code base. See the names in the list below in alphabetical order.&lt;/p&gt;&#010;+&lt;p&gt;A lot of people have contributed ideas and code to the Container's code base. See the names in the list below in alphabetical order.&lt;/p&gt;&#010; &lt;p&gt; * Nicolas Averseng&lt;br /&gt;&#010;   * Mathias Bogaert&lt;br /&gt;&#010;   * Rao Chejarla&lt;br /&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/terminology.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/terminology.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/terminology.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/terminology.html Mon Feb  4 03:43:57 2008&#010;@@ -18,7 +18,7 @@&#010;     &lt;li&gt;A Setter Dependency Injection (SDI) component is a JavaBean, and a JavaBean is an SDI component&lt;/li&gt;&#010;     &lt;li&gt;A Contructor Dependency Injection (CDI) Component is not a JavaBean, but is a POJO&lt;/li&gt;&#010;     &lt;li&gt;A JavaBean can be any of the three types of IoC and domain-specific all at the same time&lt;/li&gt;&#010;-    &lt;li&gt;Spring, Apache Composer, XWork and other frameworks all support both Components and Data Objects to some&#010;+    &lt;li&gt;Spring, Container, XWork and other frameworks all support both Components and Data Objects to some&#010;         extend. Avalon tries real hard to not support Data Objects, but that is nearly impossible.&#010;     &lt;/li&gt;&#010; &lt;/ul&gt;&#010;@@ -123,11 +123,11 @@&#010;    specification like &amp;quot;initialization completion&amp;quot; support), any object with a public default&#010;    constructor that does not require any method calls to set up its state.&lt;/p&gt;&#010; &#010;-&lt;h3&gt;Apache Composer-supported&#010;+&lt;h3&gt;Container-supported&#010;                                                                                                                Object&#010; &lt;/h3&gt;&#010; &#010;-&lt;p&gt;An object that can be 'natively' used in Apache Composer. Any Type-3 component.&lt;/p&gt;&#010;+&lt;p&gt;An object that can be 'natively' used in Container. Any Type-3 component.&lt;/p&gt;&#010; &#010; &lt;h3&gt;XWork-supported&#010;                                                                                                Object&lt;/h3&gt;&#010;&#010;Copied: incubator/composer/trunk/composer-site/src/site/content/transient-container.html (from r618229, incubator/composer/trunk/composer-site/src/site/content/TransientContainer.html)&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/transient-container.html?p2=incubator/composer/trunk/composer-site/src/site/content/transient-container.html&amp;p1=incubator/composer/trunk/composer-site/src/site/content/TransientContainer.html&amp;r1=618229&amp;r2=618243&amp;rev=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/TransientContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/transient-container.html Mon Feb  4 03:43:57 2008&#010;@@ -2,15 +2,15 @@&#010; &#010; &lt;html&gt;&#010; &lt;head&gt;&#010;-&lt;title&gt;TransientApache Composer&lt;/title&gt;&#010;+&lt;title&gt;TransientContainer&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &lt;p&gt;&#010;-TransientApache Composer is a for short term needs for object instantion, where the container is going to be de-referenced shortly after use.&#010;+TransientContainer is a for short term needs for object instantion, where the container is going to be de-referenced shortly after use.&#010; &lt;p&gt;Here is an example of use:&#010; &lt;div class="source"&gt;&#010; &lt;pre&gt;public Foo makeSuitableFoo() {&#010;-    MutableApache Composer temp = new TransientApache Composer(someParentContainer);&#010;+    MutableContainer temp = new TransientContainer(someParentContainer);&#010;     temp.addComponent(somethingElseThatMightBeNeeded);  // by instance&#010;     temp.addComponent(Foo.class, FooImpleThatNeedsTheAbove.class); // by type&#010;     return temo.getComponent(Foo.class);&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/transparency.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/transparency.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/transparency.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/transparency.html Mon Feb  4 03:43:57 2008&#010;@@ -5,15 +5,15 @@&#010; &lt;title&gt;Transparency&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Transparency, for Apache Composer, means that components do not have to implement any interface or abstraction in order to be components. Moreover, components do not have to adhere to any naming conventions or bundle any meta-data in order to qualify as components.  &lt;/p&gt;&#010;-&lt;p&gt;Constructor Injection is what we recommend, so the minimum definition of a component is a simple class that takes its dependencies in its constructor. For Setter Injection, it is a class with dependencies delivered via simple setters. Your components may be interface / impl separated, but we are not forcing that for interop with Apache Composer.&lt;/p&gt;&#010;-&lt;p&gt;If you live with this ideal, you may be able to use the components you design for Apache Composer with other frameworks or containers. I.e. you are not locked in. We suggest you choose other technologies that are similarly light on API and framework, and could be characterised as transparent. Good examples are XStream, Sitemesh and anything that deals with POJOs.&lt;/p&gt;&#010;+&lt;p&gt;Transparency, for Container, means that components do not have to implement any interface or abstraction in order to be components. Moreover, components do not have to adhere to any naming conventions or bundle any meta-data in order to qualify as components.  &lt;/p&gt;&#010;+&lt;p&gt;Constructor Injection is what we recommend, so the minimum definition of a component is a simple class that takes its dependencies in its constructor. For Setter Injection, it is a class with dependencies delivered via simple setters. Your components may be interface / impl separated, but we are not forcing that for interop with Container.&lt;/p&gt;&#010;+&lt;p&gt;If you live with this ideal, you may be able to use the components you design for Container with other frameworks or containers. I.e. you are not locked in. We suggest you choose other technologies that are similarly light on API and framework, and could be characterised as transparent. Good examples are XStream, Sitemesh and anything that deals with POJOs.&lt;/p&gt;&#010; &lt;p&gt;There are some exceptions, to this goal of ours.&lt;/p&gt;&#010; &lt;h2&gt;Lifecycle&lt;/h2&gt;&#010; &lt;p&gt;Java does not have a Startable interface, nor does it have a Disposable (.Net has IDisposable), so we made our own. You can use ours or your own in a similar design. If you use your own, you may want to extend StartableLifecycleStrategy and override a couple of methods. That's if you need lifecycle at all.&lt;/p&gt;&#010; &lt;p&gt;If a Startable inerface goes into J2SE, then it will probably be supported.&lt;/p&gt;&#010; &lt;h2&gt;Annotations&lt;/h2&gt;&#010;-&lt;p&gt;We also support @Inject as an annotation for methods and fields. This is a variation of Setter Injection. The annotations are part of our codebase. Again, you can use your own, or others if you override one of the two classes from Apache Composer's codebase &lt;strong&gt;AnnotatedFieldInjection&lt;/strong&gt; and &lt;strong&gt;AnnotatedMethodInjection&lt;/strong&gt;.&lt;/p&gt;&#010;+&lt;p&gt;We also support @Inject as an annotation for methods and fields. This is a variation of Setter Injection. The annotations are part of our codebase. Again, you can use your own, or others if you override one of the two classes from Container's codebase &lt;strong&gt;AnnotatedFieldInjection&lt;/strong&gt; and &lt;strong&gt;AnnotatedMethodInjection&lt;/strong&gt;.&lt;/p&gt;&#010; &lt;p&gt;Annotations are a break with transparency, so we don't recomend them - stick to vanilla Constructor Injection if you can.&lt;/p&gt;&#010; &lt;p&gt;If a simple @Inject annotation goes into J2SE, then it will probably be supported. &lt;/p&gt;&#010; &lt;p&gt;&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html Mon Feb  4 03:43:57 2008&#010;@@ -9,14 +9,14 @@&#010; &lt;p&gt;There are only about a million Java web-frameworks for Java. There&#010; more recent and sophisticated ones try to do Dependency Injection for&#010; 'actions' or 'controllers'. &lt;/p&gt;&#010;-&lt;p&gt;If you want to use Apache Composer for a web framework, then you're&#010;+&lt;p&gt;If you want to use Container for a web framework, then you're&#010; likely to end up with three container levels. The root container would&#010; be common to all and known as the &lt;strong&gt;application scoped&lt;/strong&gt; container. Next is a &lt;strong&gt;session-scoped&lt;/strong&gt; one, with the app one marked as its parent. Lastly a &lt;strong&gt;request scoped&lt;/strong&gt;&#010; one, with the session one marked as its parent. There are two&#010; not-so-subtle varations on how they would be used. One, we poineered&#010;-with Apache Composer 1.x in 2003, the other inroduced with Apache Composer&#010;+with Container 1.x in 2003, the other inroduced with Container&#010; 2.x in 2007.&lt;/p&gt;&#010;-&lt;h3&gt;Apache Composer and web frameworks - the old way.&lt;/h3&gt;&#010;+&lt;h3&gt;Container and web frameworks - the old way.&lt;/h3&gt;&#010; &lt;p&gt;You make one instance of the app container. For each new HTTP&#010; Session you make a new session level container, and put it into the&#010; session itself - refer HttpSession.setAttribute(key,val). For each&#010;@@ -28,7 +28,7 @@&#010; instantiated. 2) the serialization of the session (by Tomcat etc) might&#010; cause more things to be serialized than you intend - i.e. the session&#010; container refers to the application container.&lt;/p&gt;&#010;-&lt;h3&gt;Apache Composer and web frameworks - the new way.&lt;/h3&gt;&#010;+&lt;h3&gt;Container and web frameworks - the new way.&lt;/h3&gt;&#010; &lt;p&gt;You make one instance of the app, session and request container on&#010; servlet load. For the Application one, you choose Caching as the&#010; behavior factory. For the session and request level ones, you choose&#010;@@ -37,21 +37,21 @@&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;public class MyTinyApacheComposerServlet extends HttpServlet {&#010; &#010;-    private DefaultApache Composer requestContainer;&#010;+    private DefaultContainer requestContainer;&#010; &#010;     private HttpSessionStoring sessionStoring;&#010;     private HttpSessionStoring requestStoring;&#010; &#010;     public void init(ServletConfig cfg) throws ServletException {&#010; &#010;-        Apache Composer appContainer = new DefaultApache Composer(new Caching()); // app scoped components are cached for all users/sessions&#010;+        Container appContainer = new DefaultContainer(new Caching()); // app scoped components are cached for all users/sessions&#010; &#010;         Storing storingBehavior1 = new Storing();&#010;-        Apache Composer sessionContainer = new DefaultApache Composer(storingBehavior1, appContainer);&#010;+        Container sessionContainer = new DefaultContainer(storingBehavior1, appContainer);&#010;         sessionStoringAdapter = new HttpSessionStoringAdapter(storingBehavior1, "sessionStore");&#010; &#010;         Storing storingBehavior2 = new Storing();&#010;-        requestContainer = new DefaultApache Composer(storingBehavior2, sessionContainer);&#010;+        requestContainer = new DefaultContainer(storingBehavior2, sessionContainer);&#010;         requestStoringAdapter = new HttpSessionStoringAdapter(storingBehavior2, "requestStore");&#010; &#010;         // populate app, session and request scoped containers.&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/templates/skin.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/templates/skin.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/templates/skin.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/templates/skin.html Mon Feb  4 03:43:57 2008&#010;@@ -36,7 +36,7 @@&#010; &lt;/div&gt;&#010; &lt;/div&gt;&#010; &lt;div id="breadcrumbs"&gt;&#010;-&lt;div class="left"&gt;Last Published: Jan 19 2008 (Apache Composer 2.0 released)&lt;/div&gt;&#010;+&lt;div class="left"&gt;Last Published: &lt;/div&gt;&#010; &lt;div class="clear"&gt;&#010; &#010; &lt;/div&gt;&#010;@@ -76,7 +76,7 @@&#010; &lt;div class="clear"&gt;&#010; &lt;/div&gt;&#010; &lt;div id="footer"&gt;&#010;-&lt;div class="right"&gt;&amp;#169; 2003-2007 Apache Composer Committers&lt;/div&gt;&#010;+&lt;div class="right"&gt;&amp;#169; 2008 Apache Software Foundation&lt;/div&gt;&#010; &lt;div class="clear"&gt;&#010; &lt;/div&gt;&#010; &lt;/div&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618243 [1/2] - in /incubator/composer/trunk/composer-site/src/site: content/ content/antipatterns/ content/help/ templates/</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204114415.2B7141A9838@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204114415-2B7141A9838@eris-apache-org%3e</id>
<updated>2008-02-04T11:44:05Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 03:43:57 2008&#010;New Revision: 618243&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618243&amp;view=rev&#010;Log:&#010;More docs cleanup.&#010;&#010;Added:&#010;    incubator/composer/trunk/composer-site/src/site/content/command-line-arguments-container.html&#010;      - copied, changed from r618234, incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/default-container.html&#010;      - copied, changed from r618234, incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/properties-container.html&#010;      - copied, changed from r618229, incubator/composer/trunk/composer-site/src/site/content/PropertiesContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/system-properties-container.html&#010;      - copied, changed from r618234, incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/transient-container.html&#010;      - copied, changed from r618229, incubator/composer/trunk/composer-site/src/site/content/TransientContainer.html&#010;Removed:&#010;    incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/PropertiesContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/TransientContainer.html&#010;Modified:&#010;    incubator/composer/trunk/composer-site/src/site/content/ImmutableContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/adapters.html&#010;    incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html&#010;    incubator/composer/trunk/composer-site/src/site/content/antipatterns/propagating-dependency-antipattern.html&#010;    incubator/composer/trunk/composer-site/src/site/content/antipatterns/singleton-antipattern.html&#010;    incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html&#010;    incubator/composer/trunk/composer-site/src/site/content/behaviors.html&#010;    incubator/composer/trunk/composer-site/src/site/content/builder.html&#010;    incubator/composer/trunk/composer-site/src/site/content/class-naming.html&#010;    incubator/composer/trunk/composer-site/src/site/content/comparisons.html&#010;    incubator/composer/trunk/composer-site/src/site/content/component-configuration.html&#010;    incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html&#010;    incubator/composer/trunk/composer-site/src/site/content/disambiguation.html&#010;    incubator/composer/trunk/composer-site/src/site/content/faq.html&#010;    incubator/composer/trunk/composer-site/src/site/content/fluent-style.html&#010;    incubator/composer/trunk/composer-site/src/site/content/goals.html&#010;    incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html&#010;    incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html&#010;    incubator/composer/trunk/composer-site/src/site/content/index.html&#010;    incubator/composer/trunk/composer-site/src/site/content/injection.html&#010;    incubator/composer/trunk/composer-site/src/site/content/interception.html&#010;    incubator/composer/trunk/composer-site/src/site/content/introduction.html&#010;    incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html&#010;    incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html&#010;    incubator/composer/trunk/composer-site/src/site/content/lifecycle.html&#010;    incubator/composer/trunk/composer-site/src/site/content/mock-objects.html&#010;    incubator/composer/trunk/composer-site/src/site/content/monitors.html&#010;    incubator/composer/trunk/composer-site/src/site/content/news.html&#010;    incubator/composer/trunk/composer-site/src/site/content/project.html&#010;    incubator/composer/trunk/composer-site/src/site/content/properties.html&#010;    incubator/composer/trunk/composer-site/src/site/content/scopes.html&#010;    incubator/composer/trunk/composer-site/src/site/content/setter-injection.html&#010;    incubator/composer/trunk/composer-site/src/site/content/sitemap.xml&#010;    incubator/composer/trunk/composer-site/src/site/content/team.html&#010;    incubator/composer/trunk/composer-site/src/site/content/terminology.html&#010;    incubator/composer/trunk/composer-site/src/site/content/transparency.html&#010;    incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html&#010;    incubator/composer/trunk/composer-site/src/site/templates/skin.html&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/ImmutableContainer.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/ImmutableContainer.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/ImmutableContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/ImmutableContainer.html Mon Feb  4 03:43:57 2008&#010;@@ -2,16 +2,16 @@&#010; &#010; &lt;html&gt;&#010; &lt;head&gt;&#010;-&lt;title&gt;TransientApache Composer&lt;/title&gt;&#010;+&lt;title&gt;TransientContainer&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &lt;p&gt;&#010;-ImmutableApache Composer is wapper mechanims for a MutableApache Composer. The resulting reference is not able to accept mutating method invocations by any means.&#010;+ImmutableContainer is wapper mechanims for a MutableContainer. The resulting reference is not able to accept mutating method invocations by any means.&#010; &lt;p&gt;Here is an example of use:&#010; &lt;div class="source"&gt;&#010;-&lt;pre&gt;Apache Composer imPC = new ImmutableApache Composer(someMutableContainer);&#010;+&lt;pre&gt;Container imPC = new ImmutableContainer(someMutableContainer);&#010; &#010;-// imPC has no addComponent methods nor is it castable back to MutableApache Composer&lt;/pre&gt;&#010;+// imPC has no addComponent methods nor is it castable back to MutableContainer&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;/body&gt;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/adapters.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/adapters.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/adapters.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/adapters.html Mon Feb  4 03:43:57 2008&#010;@@ -4,7 +4,7 @@&#010; &lt;head&gt;&#010; &lt;title&gt;Adapters&lt;/title&gt;&lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Each time  you use addComponent(..) on Apache Composer, behind the scenes a ComponentAdapter instance is set up. There is one ComponentAdapter implementation per component instance. The ComponentAdapters can be added to a container directly, or made by the ComponentFactory the container is using. Both for BehaviorFactory and InjectionFactory implementations. Its all kinda hidden from you to make Apache Composer's API appear simple.&lt;/p&gt;&#010;+&lt;p&gt;Each time  you use addComponent(..) on Container, behind the scenes a ComponentAdapter instance is set up. There is one ComponentAdapter implementation per component instance. The ComponentAdapters can be added to a container directly, or made by the ComponentFactory the container is using. Both for BehaviorFactory and InjectionFactory implementations. Its all kinda hidden from you to make Container's API appear simple.&lt;/p&gt;&#010; &lt;h3&gt;Using ComponentAdapter directly. &lt;/h3&gt;&#010; &lt;p&gt;Some examples : &lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;@@ -13,12 +13,12 @@&#010;   public MyAdapter() {&#010;     super(QuantumEntanglement.class, QuantumEntanglementImpl.class);&#010;   }&#010;-  public Object getComponent(Apache Composer container) {&#010;+  public Object getComponent(Container container) {&#010;     Auditor a = container.getComponent(Auditor.class);&#010;     a.audit("QE used", new Date());&#010;     return qe;&#010;   }&#010;-  public void verify(Apache Composer container) {&#010;+  public void verify(Container container) {&#010;   }&#010; }&#010; ...&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html Mon Feb  4 03:43:57 2008&#010;@@ -27,7 +27,7 @@&#010; public class BImpl implements B {&#010;     private final A a;&#010; &#010;-    BImpl(Apache Composer container) {&#010;+    BImpl(Container container) {&#010;         a = (A) container.getComponentOfType(A.class);&#010;         &#010;         /*&#010;@@ -42,7 +42,7 @@&#010; &#010;     &lt;div class="source"&gt;&#010;         &lt;div&gt;&#010;-            &lt;pre&gt;MutableApache Composer container = new DefaultContainer();&#010;+            &lt;pre&gt;MutableContainer container = new DefaultContainer();&#010; container.addComponent(&amp;quot;a&amp;quot;, AImpl.class);&#010; container.addComponent(&amp;quot;b&amp;quot;, BImpl.class);&#010; container.addComponent(container);&#010;@@ -65,7 +65,7 @@&#010; &lt;div&gt;&#010;     &lt;h2&gt;Causes&lt;/h2&gt;&#010; &#010;-    &lt;p&gt;Not sure. Poor understanding of how Apache Composer works? Not being able to think &amp;quot;simple&amp;quot;?&lt;/p&gt;&#010;+    &lt;p&gt;Not sure. Poor understanding of how Container works? Not being able to think &amp;quot;simple&amp;quot;?&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;div&gt;&#010;     &lt;h2&gt;What to do&lt;/h2&gt;&#010;@@ -85,7 +85,7 @@&#010; }&lt;/pre&gt;&#010;         &lt;/div&gt;&#010;     &lt;/div&gt;&#010;-    &lt;p&gt;Apache Composer will figure out that BImpl needs an A instance, and will pass in the AImpl, as this is an&#010;+    &lt;p&gt;Container will figure out that BImpl needs an A instance, and will pass in the AImpl, as this is an&#010;        implementation of A.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;/body&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/antipatterns/propagating-dependency-antipattern.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/antipatterns/propagating-dependency-antipattern.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/antipatterns/propagating-dependency-antipattern.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/antipatterns/propagating-dependency-antipattern.html Mon Feb  4 03:43:57 2008&#010;@@ -110,7 +110,7 @@&#010; &#010;         &lt;p&gt;When [Migrating from executors to services], it can sometimes be difficult to avoid introducing a Propagating&#010;            Dependency. In these cases, the Propogating Dependency can be considered as a good first step towards&#010;-           making a set of classes good for Apache Composer. An effort should be made to complete decomposition at some stage by making a&#010;+           making a set of classes good for Container. An effort should be made to complete decomposition at some stage by making a&#010;            series of further steps as described above.&lt;/p&gt;&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/antipatterns/singleton-antipattern.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/antipatterns/singleton-antipattern.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/antipatterns/singleton-antipattern.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/antipatterns/singleton-antipattern.html Mon Feb  4 03:43:57 2008&#010;@@ -17,7 +17,7 @@&#010;    that there are many transitive dependancies that are not easy to spot. Singletons cannot easily be replaced with &lt;a&#010;     href="mock-objects.html" title="Mock Objects"&gt;Mock Objects&lt;/a&gt; for the sake of easy unit testing.&lt;/p&gt;&#010; &#010;-&lt;p&gt;With Apache Composer we would replace this with a container &lt;em&gt;managed single instance&lt;/em&gt;, possibly in a container&#010;+&lt;p&gt;With Container we would replace this with a container &lt;em&gt;managed single instance&lt;/em&gt;, possibly in a container&#010;    hierarchy (see &lt;a href="introduction.html"&gt;Introduction&lt;/a&gt;&#010;    and &lt;a href="behaviors.html" title="Caching"&gt;Caching&lt;/a&gt;).&lt;/p&gt;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html Mon Feb  4 03:43:57 2008&#010;@@ -11,7 +11,7 @@&#010; &lt;div&gt;&#010;     &lt;h2&gt;Symptoms&lt;/h2&gt;&#010; &#010;-    &lt;p&gt; A class is directly instantiating a Apache Composer and registering components within it. &lt;/p&gt;&#010;+    &lt;p&gt; A class is directly instantiating a Container and registering components within it. &lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;div&gt;&#010;     &lt;h2&gt;Causes&lt;/h2&gt;&#010;@@ -26,7 +26,7 @@&#010;     &lt;div class="source"&gt;&#010;         &lt;div&gt;&#010;             &lt;pre&gt;public void testCocktailWithVodkaIsAlcoholic() {&#010;-    DefaultApache Composer container = new DefaultContainer();&#010;+    DefaultContainer container = new DefaultContainer();&#010;     container.addComponent(Banana.class);&#010;     container.addComponent(Vanilla.class);&#010;     container.addComponent(Vodka.class);&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/behaviors.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/behaviors.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/behaviors.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/behaviors.html Mon Feb  4 03:43:57 2008&#010;@@ -11,10 +11,10 @@&#010;     &lt;/style&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Components as managed by Apache Composer can have behaviors added&#010;+&lt;p&gt;Components as managed by Container can have behaviors added&#010;    to them by the container during instantiation.&lt;/p&gt;&#010; &#010;-&lt;p&gt;Behaviors are deleivered by passing a BehaviorFactory reference into the Apache Composer instance on construction. For&#010;+&lt;p&gt;Behaviors are deleivered by passing a BehaviorFactory reference into the Container instance on construction. For&#010;    the most part BehaviorFactories are completely stateless.&lt;/p&gt;&#010; &lt;p&gt;See below for details on &lt;a href="#cns"&gt;Caching and Singletons&lt;/a&gt;, &lt;a href="#hasi"&gt;Implementation Hiding and Hot Swapping&lt;/a&gt;, as well as &lt;a href="#o"&gt;Other&lt;/a&gt;  behaviors&lt;/p&gt;&#010; &lt;h3&gt;General use&lt;/h3&gt;&#010;@@ -58,7 +58,7 @@&#010;    rather that a new one created each time the container is asked for that&#010;    type. &lt;a href="http://code.google.com/p/google-guice/"&gt;Guice&lt;/a&gt; calls&#010;    this a Singleton. After guice came out we debated this, and decided that&#010;-   we should not call this a Singleton. Another Apache Composer instance&#010;+   we should not call this a Singleton. Another Container instance&#010;    could be manging another single instance of the same component, so it&#010;    does not fit the definition of Singleton as defined in the Design&#010;    Patterns book.&lt;/p&gt;&#010;@@ -255,7 +255,7 @@&#010; &lt;h3&gt;Hot Swapping&lt;/h3&gt;&#010; &lt;p&gt;This builds on the &lt;span class="style1"&gt;ASMImplementationHiding&lt;/span&gt; behavior above, but also allows the hot swapping of component implementations during use. It has implicit caching behavior too.&lt;/p&gt;&#010; &#010;-&lt;div class="source"&gt;&lt;pre&gt;DefaultApache Composer container = new DefaultContainer(new HotSwapping());&lt;br /&gt;container.addComponent(Map.class, HashMap.class);&lt;br /&gt;Map firstMap = container.getComponent(Map.class);&lt;br /&gt;firstMap.put(&amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot;);&lt;br /&gt;HotSwappable hs = (HotSwappable) container.getComponentAdapter(Map.class);&lt;br /&gt;Object oldMap = hs.getSwappable().swap(new HashMap());&lt;br /&gt;Map secondMap = container.getComponent(Map.class);&lt;br /&gt;secondMap.put(&amp;quot;apple&amp;quot;, &amp;quot;orange&amp;quot;);&lt;br /&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;DefaultContainer container = new DefaultContainer(new HotSwapping());&lt;br /&gt;container.addComponent(Map.class, HashMap.class);&lt;br /&gt;Map firstMap = container.getComponent(Map.class);&lt;br /&gt;firstMap.put(&amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot;);&lt;br /&gt;HotSwappable hs = (HotSwappable) container.getComponentAdapter(Map.class);&lt;br /&gt;Object oldMap = hs.getSwappable().swap(new HashMap());&lt;br /&gt;Map secondMap = container.getComponent(Map.class);&lt;br /&gt;secondMap.put(&amp;quot;apple&amp;quot;, &amp;quot;orange&amp;quot;);&lt;br /&gt;&#010; // first map and second map are the same&#010; // 'foo' is not a key in the map, wereas 'apple' is&lt;/pre&gt;&#010; &lt;/div&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/builder.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/builder.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/builder.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/builder.html Mon Feb  4 03:43:57 2008&#010;@@ -5,7 +5,7 @@&#010; &lt;title&gt;Building Containers&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Rather than new up a Apache Composer instance with the right ComponentFactory, LifecycleStategy and ComponentMonitor, your can use  ContainerBuilder for conveniece. Refer to Martin's &lt;a&#010;+&lt;p&gt;Rather than new up a Container instance with the right ComponentFactory, LifecycleStategy and ComponentMonitor, your can use  ContainerBuilder for conveniece. Refer to Martin's &lt;a&#010;   href="http://www.martinfowler.com/bliki/FluentInterface.html"&gt;'Fluent&#010; Interface'&lt;/a&gt; article, for some of the motivation behing this class.&lt;/p&gt;&#010; &lt;p&gt;Some simple examples :&lt;/p&gt;&#010;@@ -61,9 +61,9 @@&#010;     .withCustomContainerComponent(new MyQuantumPhysicsConnector())&#010;     .withComponentFactory(MyQuantumPhysicsConnectionNeedingComponentBehavior.class).build();&#010; container.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;-&#009;&lt;p&gt;A custom container implementation (DefaultApache Composer is the default):&lt;/p&gt; &#010;+&#009;&lt;p&gt;A custom container implementation (DefaultContainer is the default):&lt;/p&gt; &#010;     &lt;div class="source"&gt;&#010;-      &lt;pre&gt;MyCustomApache Composer container = (MyCustomApache Composer) new ContainerBuilder().implementedBy(MyCustomApache Composer.class).build();&#010;+      &lt;pre&gt;MyCustomContainer container = (MyCustomContainer) new ContainerBuilder().implementedBy(MyCustomContainer.class).build();&#010; container.addComponent(Apple.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;/body&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/class-naming.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/class-naming.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/class-naming.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/class-naming.html Mon Feb  4 03:43:57 2008&#010;@@ -5,15 +5,15 @@&#010; &lt;title&gt;Class Naming&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Apache Composer's class naming changed substantially between 1.0 and 2.0. There are two major influences for this:&lt;/p&gt;&#010;+&lt;p&gt;Container's class naming changed substantially between 1.0 and 2.0. There are two major influences for this:&lt;/p&gt;&#010; &lt;ol&gt;&#010;   &lt;li&gt;Dan North's &amp;quot;Behavior Driven Design&amp;quot; agenda and his interest in Neuro Linguistic Programming (NLP)&lt;/li&gt;&#010;   &lt;li&gt;Steve Yegge's technical fable : &lt;a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html"&gt;Execution in the Kingdom of Nouns&lt;/a&gt;&lt;/li&gt;&#010; &lt;/ol&gt;&#010; &lt;p&gt;The take away from both is that we don't have to have long classnames like &lt;em&gt;CachingComponentAdapterFactory&lt;/em&gt; and &lt;em&gt;ImplementationHidingComponentAdapterFactory&lt;/em&gt;, we can in fact have shorter names, that read better in their intended use:&lt;/p&gt;&#010;-&lt;pre&gt;  new DefaultApache Composer(new Caching());&lt;/pre&gt;&#010;+&lt;pre&gt;  new DefaultContainer(new Caching());&lt;/pre&gt;&#010; &lt;p&gt;Similarly,  method names can play a part in simplicity and meaning for real situations where they are used.&lt;/p&gt;&#010;-&lt;pre&gt;  new DefaultApache Composer(new Caching().wrap(new ImplementationHiding()));&#010;+&lt;pre&gt;  new DefaultContainer(new Caching().wrap(new ImplementationHiding()));&#010; &lt;/pre&gt;&#010; &lt;p&gt;Caching, the class, implements an abstraction called BehaviorFactory as do many others. All BehaviorFactory implementations make implementations of Behavior like 'Cached'. Similarly 'ConstructionInjection' (and similar) make implementations of Injector like 'ConstructorInjector' (and similar). Both BehaviorFactory and InjectionFactory are extensions of ComponentFactory.&lt;/p&gt;&#010; &lt;p&gt;&lt;/p&gt;&#010;&#010;Copied: incubator/composer/trunk/composer-site/src/site/content/command-line-arguments-container.html (from r618234, incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html)&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/command-line-arguments-container.html?p2=incubator/composer/trunk/composer-site/src/site/content/command-line-arguments-container.html&amp;p1=incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html&amp;r1=618234&amp;r2=618243&amp;rev=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/command-line-arguments-container.html Mon Feb  4 03:43:57 2008&#010;@@ -2,12 +2,12 @@&#010; &#010; &lt;html&gt;&#010; &lt;head&gt;&#010;-&lt;title&gt;CommandLineArgumentsApache Composer&lt;/title&gt;&#010;+&lt;title&gt;CommandLineArgumentsContainer&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &lt;p&gt;&#010;-CommandLineArgumentsApache Composer is a special type of Apache Composer that processes the arguments passed into from the command line, and sets them up as configuration for other components. &#010;-&lt;p&gt;Here is an example of how to use CommandLineArgumentsApache Composer to map command line arguments as configuration for a component, with parameter names as the bindings.&#010;+CommandLineArgumentsContainer is a special type of Container that processes the arguments passed into from the command line, and sets them up as configuration for other components. &#010;+&lt;p&gt;Here is an example of how to use CommandLineArgumentsContainer to map command line arguments as configuration for a component, with parameter names as the bindings.&#010; &lt;p&gt;Consider this component:&#010; &lt;div class="source"&gt;&#010;     &lt;pre&gt;public class BigFatComponent {&#010;@@ -29,9 +29,9 @@&#010; &lt;p&gt;For automatic binding of command line arguments to parameter names of the component:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010; &lt;pre&gt;public static void main(String[] args) {&#010;-    Apache Composer argsContainer = new CommandLineArgumentsApache Composer(args);&#010;+    Container argsContainer = new CommandLineArgumentsContainer(args);&#010;                 &#010;-    MutableApache Composer mpc = new DefaultApache Composer(argsContainer);&#010;+    MutableContainer mpc = new DefaultContainer(argsContainer);&#010;                 &#010;     mpc.as(Characteristics.USE_NAMES).addComponent(BigFatComponent.class);&#010;    &#010;@@ -60,7 +60,7 @@&#010;           &lt;li&gt; java.sql.(Date|Time|Timestamp) &lt;/li&gt;&#010;           &lt;li&gt; Any type sporting accessible constructor taking single string parameter. &lt;/li&gt;&#010; &lt;/ul&gt;&#010;-        &lt;p&gt;CommandLineArgumentsApache Composer can be part of a tree of containers. It makes sense, of course, being more near the root of that tree.&lt;/p&gt;&#010;+        &lt;p&gt;CommandLineArgumentsContainer can be part of a tree of containers. It makes sense, of course, being more near the root of that tree.&lt;/p&gt;&#010; &lt;/body&gt;&#010; &#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/comparisons.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/comparisons.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/comparisons.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/comparisons.html Mon Feb  4 03:43:57 2008&#010;@@ -11,14 +11,14 @@&#010;     &lt;div&gt;&#010;       &lt;div&gt;&#010;         &lt;h2&gt;Overview&lt;/h2&gt;&#010;-        &lt;p&gt;This document aims to compare Apache Composer to other IoC containers, both lightweight and not.&lt;/p&gt;&#010;+        &lt;p&gt;This document aims to compare Container to other IoC containers, both lightweight and not.&lt;/p&gt;&#010;         &lt;p&gt;There are a number of published API specifications since Java was initially released that proport to be container/component designs. We discuss then here, suggesting there are goals that some have met, and some not. This may help you make better design choices for your own components.&lt;/p&gt;&#010;       &lt;/div&gt;&#010;       &lt;div&gt;&#010;         &lt;h2&gt;IoC Containers&lt;/h2&gt;&#010;         &lt;div&gt;&#010;           &lt;h3&gt;Spring Framework&lt;/h3&gt;&#010;-          &lt;p&gt;The &lt;a href="http://www.springframework.org/"&gt;Spring Framework&lt;/a&gt; is a J2EE framework. As such, &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt; and &lt;a href="lifecycle.html" title="lifecycle"&gt;Lifecycle&lt;/a&gt; is only one of its concerns. Apache Composer, on the other hand, is concerned only with &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt;, configuration and &lt;a href="lifecycle.html" title="lifecycle"&gt;Lifecycle&lt;/a&gt;.&lt;/p&gt;&#010;+          &lt;p&gt;The &lt;a href="http://www.springframework.org/"&gt;Spring Framework&lt;/a&gt; is a J2EE framework. As such, &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt; and &lt;a href="lifecycle.html" title="lifecycle"&gt;Lifecycle&lt;/a&gt; is only one of its concerns. Container, on the other hand, is concerned only with &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt;, configuration and &lt;a href="lifecycle.html" title="lifecycle"&gt;Lifecycle&lt;/a&gt;.&lt;/p&gt;&#010;         &lt;/div&gt;&#010;         &lt;div&gt;&#010;           &lt;h3&gt;Apache Avalon and its containers&lt;/h3&gt;&#010;@@ -29,7 +29,7 @@&#010;             &lt;tbody&gt;&#010;               &lt;tr&gt;&#010;                 &lt;th&gt; Avalon Interface &lt;/th&gt;&#010;-                &lt;th&gt; Apache Composer equivalent &lt;/th&gt;&#010;+                &lt;th&gt; Container equivalent &lt;/th&gt;&#010;               &lt;/tr&gt;&#010;               &lt;tr&gt;&#010;                 &lt;td&gt; LogEnabled &lt;/td&gt;&#010;@@ -132,18 +132,18 @@&#010;         &lt;div&gt;&#010;           &lt;h3&gt;Enterprise Java Beans&lt;/h3&gt;&#010;           &lt;p&gt;Clearly Entity and Session beans run inside a container. The API is well defined, and to varying degrees of success one can deploy EJB appllications to WebLogic, WebSphere, Orion and JBoss etc. For assembly and configuration, there is high use of element-normal XML . There are some mandated parent objects and interfaces for various to extend and/or implement. Resolution is done by the components themselves via JNDI more often than not.&lt;/p&gt;&#010;-          &lt;p&gt;Apache Composer Components are simpler in they they do not force an extensive XML markup, nor require the implementing of certaing interfaces or extening base classes. Quite importantly the relationship between factory (home), implementation (bean) and interface (remote) parts is much more real in Apache Composer-style components. EJB 2.0 components are nearly impossible to unit-test without much effort.&lt;/p&gt;&#010;+          &lt;p&gt;Container Components are simpler in they they do not force an extensive XML markup, nor require the implementing of certaing interfaces or extening base classes. Quite importantly the relationship between factory (home), implementation (bean) and interface (remote) parts is much more real in Container-style components. EJB 2.0 components are nearly impossible to unit-test without much effort.&lt;/p&gt;&#010;           &lt;p&gt;With the advent of EJB 3.0 (which the our team directly influenced), things became easier for EJB developers. Annotations were used to mark fields, and methods for injection. Strangely constructors were not eligible for injection. It was reported back to the our team that it was felt that the J2EE container makers would not find it easy making multi-argument constructor injection a reality.&lt;/p&gt;&#010;         &lt;/div&gt;&#010;         &lt;div&gt;&#010;           &lt;h3&gt;Servlets&lt;/h3&gt;&#010;           &lt;p&gt;Not so obvious - Servlets are contained by a servlet container. They are generally bundled with (or replaced by) value added propositions like JSP, but it is still a container/component design. High use of XML for assembly and configuration. Servlets have no concept of parent container or the conatainer above that (sometimes EJB) and its provision of components, which is very unfortunate. Servlets have a number of interfaces to honor, none of which is too malignent. Servlets typically deal with external (or parent) components via RMI or JNDI. In more recent releases of EJB, local interfaces rather than RMI may be the mechanism for connection the parent components. WebLogic have always provided an optimizing mechanism for this interoperation&lt;/p&gt;&#010;-          &lt;p&gt;As with EJB, Apache Composer Components are far simpler. This is probably because they offer no web experience, without an extension. Servlets again are not that unit-testable.&lt;/p&gt;&#010;+          &lt;p&gt;As with EJB, Container Components are far simpler. This is probably because they offer no web experience, without an extension. Servlets again are not that unit-testable.&lt;/p&gt;&#010;         &lt;/div&gt;&#010;         &lt;div&gt;&#010;           &lt;h3&gt;&lt;/a&gt;Applets&lt;/h3&gt;&#010;           &lt;p&gt;Applets, though presently not so often used, are a good example of Container/Component separations. There is very little XML in use by Applets. Configuration is typically delivered in applet tags in HTML. Applets are granted some access to the parent container, the brower, and its DOM model for pages and other applets. There very little standardisation for Browser as a container.&lt;/p&gt;&#010;-          &lt;p&gt;As with EJB, Apache Composer Components are far simpler. Applets are unit-testable but with a little effort. Complex DOM interoperation is impossible under unit testing.&lt;/p&gt;&#010;+          &lt;p&gt;As with EJB, Container Components are far simpler. Applets are unit-testable but with a little effort. Complex DOM interoperation is impossible under unit testing.&lt;/p&gt;&#010;         &lt;/div&gt;&#010;         &lt;div&gt;&#010;           &lt;h3&gt;Mainable (Not actually a container)&lt;/h3&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/component-configuration.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/component-configuration.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/component-configuration.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/component-configuration.html Mon Feb  4 03:43:57 2008&#010;@@ -7,11 +7,11 @@&#010; &lt;div&gt;&#010; &lt;h2&gt;Choices&lt;/h2&gt;&#010; &lt;p&gt;In true IoC style,  configuration for a component is pushed into it. &lt;/p&gt;&#010;-&lt;p&gt;With Apache Composer,  there are a few ways to do this:&lt;/p&gt;&#010;+&lt;p&gt;With Container,  there are a few ways to do this:&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;Design a class to hold the configuration and have getters on it to allow depending components to access configuration.&lt;/li&gt;&#010;   &lt;li&gt;Manually set the configuration for components as you add them to a container&lt;/li&gt;&#010;-  &lt;li&gt;Leverage the fact that Apache Composer can pick up on named components &lt;/li&gt;&#010;+  &lt;li&gt;Leverage the fact that Container can pick up on named components &lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;h3&gt;Configuration Object&lt;/h3&gt;&#010; &lt;div class="source"&gt;&#010;@@ -80,21 +80,21 @@&#010; System.out.println(&amp;quot;bfc: &amp;quot; + bfc.toString());&#010; // Prints .. &amp;quot;bfg: URL=http://foo.com/spelling.wsdl, timeout=120&amp;quot;&lt;/pre&gt;&#010;   &lt;/div&gt;&#010;-  &lt;p&gt;This feature of Apache Composer relies on the a non-JDK mechanism of &lt;strong&gt;accessing parameter names for methods and constructors&lt;/strong&gt;. In this case named parameters spellingWebServiceURL and timeout.&lt;/p&gt;&#010;+  &lt;p&gt;This feature of Container relies on the a non-JDK mechanism of &lt;strong&gt;accessing parameter names for methods and constructors&lt;/strong&gt;. In this case named parameters spellingWebServiceURL and timeout.&lt;/p&gt;&#010;   &lt;p&gt;There are two ways for this to work: &lt;/p&gt;&#010;   &lt;ul&gt;&#010;     &lt;li&gt;relying on the fact that  your component classes have debug info compiled into them. &lt;/li&gt;&#010;     &lt;li&gt;post-processing component classes with &lt;a href="http://paranamer.codehaus.org/"&gt;Paranamer&lt;/a&gt; before placing them in their jar &lt;/li&gt;&#010;   &lt;/ul&gt;&#010;-  &lt;p&gt;If the parameter name information cannot be accessed at runtime by Apache Composer, then Apache Composer will be unable to differentiate between potential injectable classes of the same type and throws an exception that suggests that there is an ambiguity.&lt;/p&gt;&#010;+  &lt;p&gt;If the parameter name information cannot be accessed at runtime by Container, then Container will be unable to differentiate between potential injectable classes of the same type and throws an exception that suggests that there is an ambiguity.&lt;/p&gt;&#010;   &lt;p&gt;This is &lt;strong&gt;not&lt;/strong&gt; a global variable facility. Its scoped with the container in question and its child containers.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;h2&gt;Taking configuration from the elsewhere&lt;/h2&gt;&#010; &lt;p&gt;Configuration can also be bound to components with :&lt;/p&gt;&#010; &lt;blockquote&gt;&#010;-  &lt;p&gt;&lt;a href="CommandLineArgumentsApache Composer.html"&gt;CommandLineArgumentsApache Composer&lt;/a&gt;&lt;/p&gt;&#010;-  &lt;p&gt;&lt;a href="PropertiesApache Composer.html"&gt;PropertiesApache Composer&lt;/a&gt;&lt;/p&gt;&#010;-  &lt;p&gt;&lt;a href="SystemPropertiesApache Composer.html"&gt;SystemPropertiesApache Composer&lt;/a&gt;&lt;/p&gt;&#010;+  &lt;p&lt;a href="command-line-arguments-container.html"&gt;Command Line Arguments Container&lt;/a&gt;&lt;/p&gt;&#010;+  &lt;p&gt;&lt;a href="properties-container.html"&gt;Properties Container&lt;/a&gt;&lt;/p&gt;&#010;+  &lt;p&gt;&lt;a href="system-properties-container.html"&gt;System Properties Container&lt;/a&gt;&lt;/p&gt;&#010; &lt;/blockquote&gt;&#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html Mon Feb  4 03:43:57 2008&#010;@@ -25,7 +25,7 @@&#010;                                                                                                      Injection&lt;/a&gt;&#010;                                                           in more detail.&lt;br /&gt;&#010;     &lt;br /&gt;&#010;-    &lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/information.gif" alt="" align="middle" border="0" height="16" width="16" /&gt; Apache Composer also supports &lt;a href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt;.&lt;/p&gt;&#010;+    &lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/information.gif" alt="" align="middle" border="0" height="16" width="16" /&gt; Container also supports &lt;a href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt;.&lt;/p&gt;&#010; &#010; &lt;h2&gt;Origin&lt;/h2&gt;&#010; &#010;@@ -43,7 +43,7 @@&#010;             &lt;pre&gt;public class Shop {&lt;br /&gt;    private final StockManager stockManager;&lt;br /&gt;    private final String shopZipCode;&lt;br /&gt;    public Shop(StockManager stockManager, String shopZipCode) {&lt;br /&gt;        this.stockManager = stockManager;&lt;br /&gt;        this.shopZipCode = shopZipCode;&lt;br /&gt;    }&lt;br /&gt; }&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Note, for this there is no need to declare needs in any other way. No interfaces, no doclet tags, no external&#010;-   XML. Just your simple component(s) and Apache Composer. No need for post assembly/config initialization either. If&#010;+   XML. Just your simple component(s) and Container. No need for post assembly/config initialization either. If&#010;    it is constructed (not withstanding some asserts on nulls) it has its needs satisfied. Components need not be&#010;    interface/implementation separated. This is the coder's choice.&lt;/p&gt;&#010; &#010;@@ -63,7 +63,7 @@&#010; &lt;h2&gt;Container support&#010; &lt;/h2&gt;&#010; &#010;-&lt;p&gt;Apache Composer was the first lightweight container to support and popularize this for of dependency injection.&#010;+&lt;p&gt;Container was the first lightweight container to support and popularize this for of dependency injection.&#010;    Spring Framework has been retrofitted with constructor injection capability, but its primary focus is still&#010;    setter injection. Even the once heavyweight technologies like Avalon and OSGi moved towards&amp;nbsp;constructor&#010;    injection.&lt;/p&gt;&#010;&#010;Copied: incubator/composer/trunk/composer-site/src/site/content/default-container.html (from r618234, incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html)&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/default-container.html?p2=incubator/composer/trunk/composer-site/src/site/content/default-container.html&amp;p1=incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html&amp;r1=618234&amp;r2=618243&amp;rev=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/default-container.html Mon Feb  4 03:43:57 2008&#010;@@ -2,16 +2,16 @@&#010; &#010; &lt;html&gt;&#010; &lt;head&gt;&#010;-&lt;title&gt;DefaultApache Composer&lt;/title&gt;&#010;+&lt;title&gt;DefaultContainer&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010; &lt;p&gt;&#010;-DefaultApache Composer is the main workhorse container.  &#010;+DefaultContainer is the main workhorse container.  &#010; &lt;p&gt;Here is an example of use:&#010; &lt;div class="source"&gt;&#010;-&lt;pre&gt;DefaultApache Composer dpc = new DefaultContainer();&#010;-dpc.addComponent(Foo.class, FooImpl.class);&#010;-Foo foo = dpc.getComponent(Foo.class)&lt;/pre&gt;&#010;+&lt;pre&gt;DefaultContainer container = new DefaultContainer();&#010;+container.addComponent(Foo.class, FooImpl.class);&#010;+Foo foo = container.getComponent(Foo.class)&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Parameters in its  constructors can be:&lt;/p&gt;&#010; &lt;ul&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/disambiguation.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/disambiguation.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/disambiguation.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/disambiguation.html Mon Feb  4 03:43:57 2008&#010;@@ -9,10 +9,10 @@&#010; &lt;h2&gt;Overview&lt;/h2&gt;&#010; You may have a component that has a dependency on something that the&#010; container could ordinarily satisfy more than one. &amp;nbsp;By default,&#010;-when Apache Composer is presented with such a situation, it will throw an&#010;+when Container is presented with such a situation, it will throw an&#010; exception suggesting the depency resolution is ambiguous.&#010; &lt;h2&gt;Disambiguation using parameter names&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/h2&gt;&#010;-With Apache Composer 2.0 we are able to leverage the parameter names of&#010;+With Container 2.0 we are able to leverage the parameter names of&#010; constructors and methods in order to remove the ambiguity on&#010; dependancies.&lt;br /&gt;&#010; &lt;div class="source"&gt;&#010;@@ -29,14 +29,14 @@&#010; &#010; Access to parameter names was dropped from JDK 6.0 and it is uncertain&#010; whether it will be added as a feature in another release, so&#010;-Apache Composer relies on another open source library called &lt;a href="http://paranamer.codehaus.org"&gt;Paranamer&lt;/a&gt;,&#010;+Container relies on another open source library called &lt;a href="http://paranamer.codehaus.org"&gt;Paranamer&lt;/a&gt;,&#010; without requiring a dependency on its Jar. &amp;nbsp;In other words,&#010;-Apache Composer has the same classes from Paranamer in its jar.&lt;br /&gt;&#010;+Container has the same classes from Paranamer in its jar.&lt;br /&gt;&#010; &lt;br /&gt;&#010;-See &lt;a href="CommandLineArgumentsApache Composer.html"&gt;CommandLineArgumentsApache Composer&lt;/a&gt;,&#010;-&lt;a href="PropertiesApache Composer.html"&gt;PropertiesApache Composer&lt;/a&gt;&#010;-and &lt;a href="SystemPropertiesApache Composer.html"&gt;SystemPropertiesApache Composer&lt;/a&gt;&#010;-for implementations of Apache Composer that set up components for&#010;+See &lt;a href="command-line-arguments-container.html"&gt;Command Line Arguments Container&lt;/a&gt;,&#010;+&lt;a href="properties-container.html"&gt;Properties Container&lt;/a&gt;&#010;+and &lt;a href="system-properties-container.html"&gt;System Properties Container&lt;/a&gt;&#010;+for implementations of Container that set up components for&#010; subsequent parameter name binding.&lt;br /&gt;&#010; &lt;br /&gt;&#010; Page &lt;a href="component-configuration.html"&gt;component-configuration&lt;/a&gt;&#010;@@ -54,7 +54,7 @@&#010; &lt;pre&gt;@Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;@Target({ElementType.FIELD, ElementType.PARAMETER})&lt;br /&gt;@Bind&lt;br /&gt;public static @interface WorkingDayStockManager {}&lt;br /&gt;&lt;br /&gt;@Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;@Target({ElementType.FIELD, ElementType.PARAMETER})&lt;br /&gt;@Bind&lt;br /&gt;public static @interface AfterHoursStockManager {}&lt;br /&gt;&lt;br /&gt;public class Store {&lt;br /&gt; public Store(@WorkingDayStockManager StockManager workingDayStockManager, &lt;br /&gt; @AfterHoursStockManager StockManager afterHoursStockManager) {&lt;br /&gt; // etc&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;/div&gt;&#010;-Making Apache Composer leverage binding annotations if present is&#010;+Making Container leverage binding annotations if present is&#010; automatic.&lt;br /&gt;&lt;br /&gt;Biniding&#010; annotations specified for constructor parameters (as shown above),&#010; method injection parameters as well as field injection.&lt;br /&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/faq.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/faq.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/faq.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/faq.html Mon Feb  4 03:43:57 2008&#010;@@ -7,13 +7,13 @@&#010; &lt;h3 class="headerstyle"&gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;     &lt;tr&gt;&#010;-      &lt;td align="left" valign="middle"&gt;Why Apache Composer 2.0?&lt;/td&gt;&#010;+      &lt;td align="left" valign="middle"&gt;Why Container 2.0?&lt;/td&gt;&#010;     &lt;/tr&gt;&#010;   &lt;/table&gt;&#010; &lt;/h3&gt;&#010; &lt;div&gt;&#010;-  &lt;p&gt;First EJB 3.0 then Google Guice seemed to copy the ideas from Apache Composer, adding some more value. EJB 3.0 ommitted the essential Constructor Injection, and Guice went far to far down a annotations road. Soon after Guice, even the Spring Framework team decided to do things the direct way with 'JavaConfig'.&lt;/p&gt;&#010;-  &lt;p&gt;So Apache Composer 1.x was refactored (not rewritten) into Apache Composer 2.0. All the unit tests were kept, and excerise took hundreds of commits, but the team is pleased with the result.&lt;/p&gt;&#010;+  &lt;p&gt;First EJB 3.0 then Google Guice seemed to copy the ideas from Container, adding some more value. EJB 3.0 ommitted the essential Constructor Injection, and Guice went far to far down a annotations road. Soon after Guice, even the Spring Framework team decided to do things the direct way with 'JavaConfig'.&lt;/p&gt;&#010;+  &lt;p&gt;So Container 1.x was refactored (not rewritten) into Container 2.0. All the unit tests were kept, and excerise took hundreds of commits, but the team is pleased with the result.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;h3 class="headerstyle"&gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;@@ -49,36 +49,36 @@&#010; &lt;h3 class="headerstyle"&gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;     &lt;tr&gt;&#010;-      &lt;td align="left" valign="middle"&gt;How does Apache Composer decide what constructor to use?&lt;/td&gt;&#010;+      &lt;td align="left" valign="middle"&gt;How does Container decide what constructor to use?&lt;/td&gt;&#010;     &lt;/tr&gt;&#010;   &lt;/table&gt;&#010; &lt;/h3&gt;&#010; &lt;div&gt;&#010;-  &lt;p&gt;Apache Composer will instantiate a given component using the &amp;quot;greediest&amp;quot; satisfiable constructor. By greedy, we mean the constructor that takes the most parameters. By satisfiable, we mean constructors where all arguments can be satisfied by other registered components.&lt;/p&gt;&#010;+  &lt;p&gt;Container will instantiate a given component using the &amp;quot;greediest&amp;quot; satisfiable constructor. By greedy, we mean the constructor that takes the most parameters. By satisfiable, we mean constructors where all arguments can be satisfied by other registered components.&lt;/p&gt;&#010;   &lt;p&gt;If you register a component with no satisfiable constructors, or two or more ambiguous &amp;quot;largest&amp;quot; constructors, a RuntimeException will be thrown when you ask for the component instance.&lt;/p&gt;&#010;   &lt;p&gt;We recommend for most components, you use only one constructor, although this is by no means a requirement.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;h3 class="headerstyle"&gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;     &lt;tr&gt;&#010;-      &lt;td align="left" valign="middle"&gt;How does Apache Composer compare to EJB containers?&lt;/td&gt;&#010;+      &lt;td align="left" valign="middle"&gt;How does Container compare to EJB containers?&lt;/td&gt;&#010;     &lt;/tr&gt;&#010;   &lt;/table&gt;&#010; &lt;/h3&gt;&#010; &lt;div&gt;&#010;-  &lt;p&gt;Oh blimey, it is rather different. EJB has loads of things you must extend, implement, provide and throw. It is also not an IoC design. It is close in that components are managed by a container, but the cumbersome and static nature of the JNDI lookups ensure that it is not actually IoC. Apache Composer is not a superset of EJB though, as it provides no remoting capability (but NanoContainer will). At least the Apache Composer compatible components hosted in this project do not.&lt;/p&gt;&#010;+  &lt;p&gt;Oh blimey, it is rather different. EJB has loads of things you must extend, implement, provide and throw. It is also not an IoC design. It is close in that components are managed by a container, but the cumbersome and static nature of the JNDI lookups ensure that it is not actually IoC. Container is not a superset of EJB though, as it provides no remoting capability (but NanoContainer will). At least the Container compatible components hosted in this project do not.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;h3 class="headerstyle" &gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;     &lt;tr&gt;&#010;-      &lt;td align="left" valign="middle"&gt;How does Apache Composer decide what constructor to use?&lt;/td&gt;&#010;+      &lt;td align="left" valign="middle"&gt;How does Container decide what constructor to use?&lt;/td&gt;&#010;     &lt;/tr&gt;&#010;   &lt;/table&gt;&#010; &lt;/h3&gt;&#010; &lt;div&gt;&#010;-  &lt;p&gt;Apache Composer will instantiate a given component using the &amp;quot;greediest&amp;quot; satisfiable constructor. By greedy, we mean the constructor that takes the most parameters. By satisfiable, we mean constructors where all arguments can be satisfied by other registered components.&lt;/p&gt;&#010;+  &lt;p&gt;Container will instantiate a given component using the &amp;quot;greediest&amp;quot; satisfiable constructor. By greedy, we mean the constructor that takes the most parameters. By satisfiable, we mean constructors where all arguments can be satisfied by other registered components.&lt;/p&gt;&#010;   &lt;p&gt;If you register a component with no satisfiable constructors, or two or more ambiguous &amp;quot;largest&amp;quot; constructors, a RuntimeException will be thrown when you ask for the component instance.&lt;/p&gt;&#010;-  &lt;p&gt;We recommend, for the sake of predictablility, that Apache Composer compatible components use only one constructor, although this is by no means a requirement.&lt;/p&gt;&#010;+  &lt;p&gt;We recommend, for the sake of predictablility, that Container compatible components use only one constructor, although this is by no means a requirement.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;h3 class="headerstyle" &gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;@@ -88,7 +88,7 @@&#010;   &lt;/table&gt;&#010; &lt;/h3&gt;&#010; &lt;div&gt;&#010;-  &lt;p&gt;Apache Composer will look for the greediest constructor of your component. But if your component's constructor depends on primitive types you may set the values explicitly.&lt;/p&gt;&#010;+  &lt;p&gt;Container will look for the greediest constructor of your component. But if your component's constructor depends on primitive types you may set the values explicitly.&lt;/p&gt;&#010;   &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;       &lt;pre&gt;public interface ThreadPool {&#010;@@ -107,7 +107,7 @@&#010;   &lt;p&gt;In this case you can set the parameters at registration time:&lt;/p&gt;&#010;   &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-      &lt;pre&gt;DefaultApache Composer container = new DefaultContainer();&#010;+      &lt;pre&gt;DefaultContainer container = new DefaultContainer();&#010; container.addComponent(ThreadPool.class, DefaultThreadPool.class);&#010; container.addComponent(MyComp.class, MyComp.class, new Parameters[] {&#010; &#009;new ComponentParameter(),&#010;@@ -116,18 +116,18 @@&#010; MyComp myComp = (MyComp)container.getInstance(MyComp.class);&lt;/pre&gt;&#010;     &lt;/div&gt;&#010;   &lt;/div&gt;&#010;-  &lt;p&gt;Use ConstantParameter to set constant values and the ComponentParameter to let Apache Composer resolve the dependency.&lt;/p&gt;&#010;+  &lt;p&gt;Use ConstantParameter to set constant values and the ComponentParameter to let Container resolve the dependency.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;h3 class="headerstyle" &gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;     &lt;tr&gt;&#010;-      &lt;td align="left" valign="middle"&gt;When should I use Apache Composer?&lt;/td&gt;&#010;+      &lt;td align="left" valign="middle"&gt;When should I use Container?&lt;/td&gt;&#010;     &lt;/tr&gt;&#010;   &lt;/table&gt;&#010; &lt;/h3&gt;&#010; &lt;div&gt;&#010;   &lt;p&gt;&lt;br /&gt;&#010;-    We recommend using Apache Composer when your application consists of many different classes (components) that are related to each other. Instantiating and lacing/connecting a lot of objects can be difficult task.&lt;/p&gt;&#010;+    We recommend using Container when your application consists of many different classes (components) that are related to each other. Instantiating and lacing/connecting a lot of objects can be difficult task.&lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;h3 class="headerstyle" &gt;&#010;   &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;@@ -143,7 +143,7 @@&#010; design. One, perhaps, that considers the so-designed component as more&#010; important that the container.&lt;/p&gt;&#010; &lt;p&gt;When we set out to do this in 2003, there was nothing equivalent&#010;-to Apache Composer (xContainer originally). XWork, that underpinned&#010;+to Container (xContainer originally). XWork, that underpinned&#010; WebWork2 was a general/embeddable Setter Dependency Injection framework,&#010; but not well known. The Spring Framework started in the same timescale,&#010; and we were talking to its authors before Martin Fowlers Dependency&#010;@@ -175,7 +175,7 @@&#010;   &lt;/table&gt;&#010; &lt;/h3&gt;&#010; &lt;div&gt;&#010;-  &lt;p&gt;We could compile Apache Composer against Guice.jar and leverage the @Inject method with a new InjectionFactory (and probably will). The problem is that there is no easy way to use an annotation without having its class in the classpath. There's no easy 'transparent' solution for this. &lt;/p&gt;&#010;+  &lt;p&gt;We could compile Container against Guice.jar and leverage the @Inject method with a new InjectionFactory (and probably will). The problem is that there is no easy way to use an annotation without having its class in the classpath. There's no easy 'transparent' solution for this. &lt;/p&gt;&#010;   &lt;p&gt;Things  fail silently if the jar is missing, unless the annotation is used - then it fails noisily. Meaning, the mere declaration of an annotation on a component is not enough to cause a ClassNotFoundException on load, if its not used:&lt;/p&gt;&#010;   &lt;div class="source"&gt;&lt;pre&gt;@Retention(RetentionPolicy.RUNTIME)&#010; @Target(value={ElementType.METHOD})&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/fluent-style.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/fluent-style.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/fluent-style.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/fluent-style.html Mon Feb  4 03:43:57 2008&#010;@@ -5,7 +5,7 @@&#010; &lt;title&gt;Fluent Stype&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Apache Composer allows for a very fluent style of use. Refer to Martin's &lt;a&#010;+&lt;p&gt;Container allows for a very fluent style of use. Refer to Martin's &lt;a&#010;   href="http://www.martinfowler.com/bliki/FluentInterface.html"&gt;'Fluent&#010; Interface'&lt;/a&gt; article.&lt;/p&gt;&#010; &lt;p&gt;A simple example :&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/goals.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/goals.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/goals.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/goals.html Mon Feb  4 03:43:57 2008&#010;@@ -5,7 +5,7 @@&#010; &lt;title&gt;Our Goals&lt;/title&gt;&#010; &lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Apache Composer's core was designed with some goals in mind:&lt;/p&gt;&#010;+&lt;p&gt;Container's core was designed with some goals in mind:&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;No mandatory dependencies.&lt;/li&gt;&#010;   &lt;li&gt;No logging built in (we have a Monitor interface and implementations for Commons-Logging and Log4J etc)&lt;/li&gt;&#010;@@ -13,7 +13,7 @@&#010;   &lt;li&gt;Small jar size.&lt;/li&gt;&#010;   &lt;li&gt;Embeddable by design (no main method entry point)&lt;/li&gt;&#010; &lt;/ul&gt;&#010;-&lt;p&gt;If someone has a need for Apache Composer that we did not originally envision, or a feature that could be imlemented, we will try to accomodate it. The principle of Lowest Common Denominator (LCD) allows us for Apache Composer itself, to keep things small, while allowing extensions to deliver the larger visions. Thus, meta-data, dependancies, mainable are all OK for related extensions of Apache Composer.&lt;/p&gt;&#010;+&lt;p&gt;If someone has a need for Container that we did not originally envision, or a feature that could be imlemented, we will try to accomodate it. The principle of Lowest Common Denominator (LCD) allows us for Container itself, to keep things small, while allowing extensions to deliver the larger visions. Thus, meta-data, dependancies, mainable are all OK for related extensions of Container.&lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html Mon Feb  4 03:43:57 2008&#010;@@ -4,7 +4,7 @@&#010; &lt;head&gt;&#010;     &lt;title&gt;Ambiguous Injectable&lt;/title&gt;&lt;/head&gt;&#010; &lt;body&gt;&#010;-&lt;p&gt;Apache Composer tries to determine what to inject into the constructor of each component as it instantiates (or setters/fields for other injection types). Sometimes there can be two or more classes that could equally satisfy a constructor: &lt;/p&gt;&#010;+&lt;p&gt;Container tries to determine what to inject into the constructor of each component as it instantiates (or setters/fields for other injection types). Sometimes there can be two or more classes that could equally satisfy a constructor: &lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;container.add(new Apple(&amp;quot;Braeburn&amp;quot;));&#010; container.add(new Apple(&amp;quot;Granny Smith&amp;quot;));&#010;@@ -13,7 +13,7 @@&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &#010;-&lt;p&gt;The best advice is don't setup Apache Composer in a way that would allow ambiguities  (just put in one Apple in the case above).&lt;/p&gt;&#010;+&lt;p&gt;The best advice is don't setup Container in a way that would allow ambiguities  (just put in one Apple in the case above).&lt;/p&gt;&#010; &lt;p&gt;An alternative strategy would be to use custom parameters (TODO)&lt;/p&gt;&#010; &lt;p&gt;One more strategy would be to use names parameters &lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;@@ -34,13 +34,13 @@&#010; Pie pie = container.getComponent(Pie.class); // OK this time.&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;p&gt;To use names Parameters, you are going to need Paranamer 1.0 (or above) in the classpath, as well as ASM 3.0 (or above). If you are expecting Apache Composer to work based on parameter names, but its not doing so, it is most likely that you do not have paranamer-1.0.jar in the classpath. See &lt;a href="http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/"&gt;http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/&lt;/a&gt; for versions of paranamer. Also &lt;a href="http://maven.objectweb.org/maven2/asm/asm/"&gt;http://maven.objectweb.org/maven2/asm/asm/&lt;/a&gt; for the ASM jar.&lt;/p&gt;&#010;+&lt;p&gt;To use names Parameters, you are going to need Paranamer 1.0 (or above) in the classpath, as well as ASM 3.0 (or above). If you are expecting Container to work based on parameter names, but its not doing so, it is most likely that you do not have paranamer-1.0.jar in the classpath. See &lt;a href="http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/"&gt;http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/&lt;/a&gt; for versions of paranamer. Also &lt;a href="http://maven.objectweb.org/maven2/asm/asm/"&gt;http://maven.objectweb.org/maven2/asm/asm/&lt;/a&gt; for the ASM jar.&lt;/p&gt;&#010; &lt;p&gt;You also have to make a decision as to when parameter name data is made. There are two choices for this:&lt;/p&gt;&#010; &lt;ol&gt;&#010;   &lt;li&gt;At runtime&lt;/li&gt;&#010;   &lt;li&gt;At build time   &lt;/li&gt;&#010; &lt;/ol&gt;&#010;-&lt;p&gt;When at runtime, Apache Composer will need to be accompanied by ASM and Paranamer in the classpath. You will also need to compile your Java classes with debug information.&lt;/p&gt;&#010;+&lt;p&gt;When at runtime, Container will need to be accompanied by ASM and Paranamer in the classpath. You will also need to compile your Java classes with debug information.&lt;/p&gt;&#010; &lt;p&gt;When at build time, you will need to use and Ant or Maven fragment to post-process the compiled classes for your app to add the paramaeter name data. At runtime, neither Paranamer nor ASM will be needed. See &lt;a href="http://paranamer.codehaus.org/"&gt;http://paranamer.codehaus.org/&lt;/a&gt; - specifically the quick start section pertinent to Ant and Maven. &lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp; &lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html Mon Feb  4 03:43:57 2008&#010;@@ -12,15 +12,15 @@&#010; &lt;/div&gt;&#010; But with a custom ComponentFactory, it may not:&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new MyComponentFactory);&#010;+  &lt;pre&gt;container = new DefaultContainer(new MyComponentFactory);&#010; container.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010; &lt;/div&gt;&#010; The trick is (in this case) to make sure that the right chain of component factories are setup:&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new MyComponentFactory().wrap(new AdaptiveBehaviorFactory()));&#010;+  &lt;pre&gt;container = new DefaultContainer(new MyComponentFactory().wrap(new AdaptiveBehaviorFactory()));&#010; container.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &#010;-&lt;p&gt;A component may have many properties as it is added to the container.  As each is processed, it is removed from the set.  If there are any left after the component has been added the behavior or action that the property suggests has not been setup.  Thus a CompositionException being thrown warning of unprocessed properties only happens one or more properties are left - whether they are Apache Composer's own properties or custom ones&lt;/p&gt;&#010;+&lt;p&gt;A component may have many properties as it is added to the container.  As each is processed, it is removed from the set.  If there are any left after the component has been added the behavior or action that the property suggests has not been setup.  Thus a CompositionException being thrown warning of unprocessed properties only happens one or more properties are left - whether they are Container's own properties or custom ones&lt;/p&gt;&#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/index.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/index.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/index.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/index.html Mon Feb  4 03:43:57 2008&#010;@@ -7,9 +7,9 @@&#010; &#010; &lt;body&gt;&#010; &#010;-&lt;h2&gt;What is Apache Composer?&lt;/h2&gt;&#010;+&lt;h2&gt;What is Container?&lt;/h2&gt;&#010; &#010;-&lt;p&gt;Apache Composer is a  highly embeddable full service Inversion of Control (IoC) container&#010;+&lt;p&gt;Container is a  highly embeddable full service Inversion of Control (IoC) container&#010; for components honour the Dependency Injection pattern.&lt;/p&gt;&#010; &lt;p&gt;You could use it as a lightweight alternative to Sun's J2EE patterns for web applications or general solutions. &lt;/p&gt;&#010; &lt;p&gt;What is Dependency Injection? Martin Fowler has a good &lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;article&lt;/a&gt; from 2003, but here is another view: It is a good design pattern that, for large enterprise applications, facilitates: &lt;/p&gt;&#010;@@ -32,8 +32,8 @@&#010;   &lt;li&gt;suffers repeated allegations of being unable to be developed without complete rewrite &lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;p&gt;Despite it being very compact in size (the core is ~128K and it&#010;-has no mandatory dependencies outside the JDK), Apache Composer supports different dependency injection types (Constructor, Setter, Annotated Field and Method) and offers multiple lifecycle and monitoring strategies.&lt;/p&gt;&#010;-&lt;p&gt;Apache Composer has originally been implemented in Java but is also&#010;+has no mandatory dependencies outside the JDK), Container supports different dependency injection types (Constructor, Setter, Annotated Field and Method) and offers multiple lifecycle and monitoring strategies.&lt;/p&gt;&#010;+&lt;p&gt;Container has originally been implemented in Java but is also&#010; available for other platforms and languages. These are detailed &lt;a href="http://docs.codehaus.org/display/PICO/Ports"&gt;here&lt;/a&gt;.&lt;/p&gt;&#010; &lt;div class="section"&gt;&#010; &lt;h3&gt;Getting Started&lt;/h3&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/injection.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/injection.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/injection.html Mon Feb  4 03:43:57 2008&#010;@@ -11,9 +11,9 @@&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;public class Apple {&lt;br /&gt;  private final Orange orange;&lt;br /&gt;  private final Pear pear;&lt;br /&gt;  private final Banana banana;&lt;br /&gt;&lt;br /&gt;  public Apple(Orange orange, Pear pear, Banana banana) {&lt;br /&gt;    this.orange = orange;&lt;br /&gt;    this.pear = pear;&lt;br /&gt;    this.banana = banana;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // methods&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&#010; &lt;p&gt;&#010;-The Apache Composer team recomends CDI over other types. There is no need&#010;+The Container team recomends CDI over other types. There is no need&#010; to mark up the constructor with an annotation. Having more than one&#010;-constructor is OK too, as Apache Composer will try to use the one with&#010;+constructor is OK too, as Container will try to use the one with&#010; the most arguments and fall back to ones with fewer if it cannot&#010; satisfy the longer ones.&lt;/p&gt;&#010; &lt;p&gt;The  component factory for this is &lt;strong&gt;ConstructorInjection&lt;/strong&gt;. It only handles constructor injection types of components.  Factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt;&#010;@@ -26,7 +26,7 @@&#010; &lt;/div&gt;&#010;   &lt;p&gt;Setter methods (those prefixed with 'set') may not be your&#010; preferred choice. You can force a different prefix to be choosable in&#010;-Apache Composer, such as 'init' or 'inject'.&lt;/p&gt;&#010;+Container, such as 'init' or 'inject'.&lt;/p&gt;&#010;   &lt;p&gt;The  component factory for this is &lt;strong&gt;SetterInjection&lt;/strong&gt;. It only handles setter injection types of components.&lt;/p&gt;&#010; &lt;p&gt;Factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; can also handle setter injection types, though it requires that the component was registered with the &lt;a href="properties.html"&gt;property&lt;/a&gt; 'SDI' in order to activate the Setter Injection functionality. &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; will also fall through to constructor injection if there is no SDI property. &lt;/p&gt;&#010; &lt;p&gt;If you want to use an prefix other than 'set', then specify your preferred prexix in the non-default constructor for &lt;strong&gt;SetterInjection&lt;/strong&gt;.&lt;/p&gt;&#010;@@ -43,7 +43,7 @@&#010; &lt;p&gt;The  component factory for this is a class&lt;strong&gt; AnnotatedFieldInjection&lt;/strong&gt;. It only handles field-annotation injection types of components.&lt;/p&gt;&#010; &lt;p&gt;Additionally component factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt;&#010; can also handle field annotation types, if the @Inject annotation from&#010;-Apache Composer's codebase is used as the marker for injection. &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; will also fall through to constructor injection if there is no recognised @Inject annotation.&lt;/p&gt;&#010;+Container's codebase is used as the marker for injection. &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; will also fall through to constructor injection if there is no recognised @Inject annotation.&lt;/p&gt;&#010; &lt;p&gt;If you want to use an @Inject annotation from another codebase, then&#010; specify the preferred annotation class in the constructor for &lt;strong&gt;AnnotatedFieldInjection&lt;/strong&gt;.&lt;/p&gt;&#010; &lt;h3&gt;Annotated Method Dependency Injection &lt;/h3&gt;&#010;@@ -56,7 +56,7 @@&#010; &lt;p&gt;The  component factory for this is &lt;strong&gt;AnnotatedMethodInjection&lt;/strong&gt;. It only handles method-annotation injection types of components.&lt;/p&gt;&#010; &lt;p&gt;Additionally component factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt;&#010; can also handle method-annotation injection types, if the @Inject&#010;-annotation from Apache Composer's codebase is used as the marker for&#010;+annotation from Container's codebase is used as the marker for&#010; injection. AdaptiveInjection will also fall through to constructor&#010; injection if there is no recognised annotation.&lt;/p&gt;&#010; &lt;p&gt;If you want to use an @Inject annotation from another codebase, then&#010;@@ -71,10 +71,10 @@&#010; &lt;p&gt;The  component factory for this is &lt;strong&gt;MethodInjection&lt;/strong&gt;. It only handles method-injection types of components.&lt;/p&gt;&#010; &lt;p&gt;Additionally component factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; can also handle method-injection types, but only if the METHOD_INJECTION characteristic is specified.&lt;/p&gt;&#010; &#010;-&lt;h2&gt;Using Apache Composer with Injection Types&lt;/h2&gt;&#010;+&lt;h2&gt;Using Container with Injection Types&lt;/h2&gt;&#010; &lt;p&gt;Explicit Constructor Injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new ConstructorInjection());&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new ConstructorInjection());&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Constructor Injection, is a default too (via AdaptiveInjection):&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;@@ -82,31 +82,31 @@&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Setter Injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new SetterInjection());&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new SetterInjection());&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Field injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedFieldInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new AnnotatedFieldInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Field injection, with alternate Annotation:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedFieldInjection(MyInjectAnnotaton.class);&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new AnnotatedFieldInjection(MyInjectAnnotaton.class);&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Method injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedMethodInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new AnnotatedMethodInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Method injection, with alternate Annotation:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedMethodInjection(MyInjectAnnotaton.class);&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new AnnotatedMethodInjection(MyInjectAnnotaton.class);&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit  Method injection, implicit injection method prefix ('inject'):&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new MethodInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new MethodInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit  Method injection, explicit injection method prefix:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;container = new DefaultApache Composer(new MethodInjection("setDependencies");&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer(new MethodInjection("setDependencies");&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;  Method injection, via a characteristic:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/interception.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/interception.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/interception.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/interception.html Mon Feb  4 03:43:57 2008&#010;@@ -50,7 +50,7 @@&#010;     }&#010; }&#010; ...&#010;-container = new DefaultApache Composer(new Intercepting());&#010;+container = new DefaultContainer(new Intercepting());&#010; container.addComponent(Apple.class, BraeburnApple.class);&#010; Intercpeted intercepted = container.getComponentAdapter(Apple.class).findAdapterOfType(Intercpeted.class);&#010; intercepted.pre(Apple.class, new BiteReporter(intercepted.getController()));&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/introduction.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/introduction.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/introduction.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/introduction.html Mon Feb  4 03:43:57 2008&#010;@@ -9,24 +9,24 @@&#010; &#010; &lt;h2&gt;Basics&lt;/h2&gt;&#010; &#010;-&lt;p&gt;This is a quick introduction to Apache Composer's most important features. Read through it to get an idea of what&#010;-   Apache Composer is and isn't. &lt;/p&gt;&#010;+&lt;p&gt;This is a quick introduction to Container's most important features. Read through it to get an idea of what&#010;+   Container is and isn't. &lt;/p&gt;&#010; &#010;-&lt;p&gt;Apache Composer's most important feature is its ability to instantiate arbitrary objects. This is done through its API,&#010;+&lt;p&gt;Container's most important feature is its ability to instantiate arbitrary objects. This is done through its API,&#010;    which is similar to a hash table. You can put java.lang.Class objects in and get object instances back.&lt;/p&gt;&#010; &#010; &lt;p&gt;Example:&lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-                    &lt;pre&gt;MutableApache Composer container = new DefaultContainer();&#010;+                    &lt;pre&gt;MutableContainer container = new DefaultContainer();&#010; container.addComponent(ArrayList.class);&#010; List list = (List) container.getComponent(ArrayList.class);&lt;/pre&gt;&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;(i)&lt;a&#010;-    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;+    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableContainer.html"&gt;MutableContainer&#010;                                                                                                                                API&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010;@@ -39,8 +39,8 @@&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010; &#010;-&lt;p&gt;With a trivial example such as this there is no point in using Apache Composer. This was just to illustrate the basic&#010;-   API. Apache Composer becomes useful with larger number of classes and interfaces having complex dependencies between&#010;+&lt;p&gt;With a trivial example such as this there is no point in using Container. This was just to illustrate the basic&#010;+   API. Container becomes useful with larger number of classes and interfaces having complex dependencies between&#010;    each other:&lt;/p&gt;&#010; &lt;table&gt;&#010;     &lt;tbody&gt;&#010;@@ -55,12 +55,12 @@&#010;     &lt;/tbody&gt;&#010; &lt;/table&gt;&#010;         &lt;p&gt;(Green means class, Yellow means interface).&lt;br /&gt;&#010;-        Apache Composer identifies dependencies by looking at the&#010;+        Container identifies dependencies by looking at the&#010;         constructors of registered classes (&lt;a&#010;           href="constructor-injection.html"&#010;           title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;).&#010;-        Apache Composer can also be though of as a generic factory that&#010;-        can be configured dynamically. Apache Composer is able to&#010;+        Container can also be though of as a generic factory that&#010;+        can be configured dynamically. Container is able to&#010;         instantiate a complex graph of several interdependent objects.&lt;/p&gt;&#010; &#010;         &lt;h2&gt;Write some simple classes&#010;@@ -136,12 +136,12 @@&#010; &#010; &lt;h2&gt;Assemble components&lt;/h2&gt;&#010; &#010;-&lt;p&gt;You tell Apache Composer what classes to manage by registering them like this (the order of registration has no&#010;+&lt;p&gt;You tell Container what classes to manage by registering them like this (the order of registration has no&#010;    significance):&lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-                    &lt;pre&gt;MutableApache Composer container = new DefaultContainer();&#010;+                    &lt;pre&gt;MutableContainer container = new DefaultContainer();&#010; container.addComponent(Apple.class);&#010; container.addComponent(Juicer.class);&#010; container.addComponent(Peeler.class);&lt;/pre&gt;&#010;@@ -149,14 +149,14 @@&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;(i)&lt;a&#010;-    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;+    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableContainer.html"&gt;MutableContainer&#010;                                                                                                                                API&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010; &#010; &lt;h2&gt;Instantiate components&lt;/h2&gt;&#010; &#010;-&lt;p&gt;You can tell Apache Composer to give you an instance of a class like this (provided it has been registered&#010;+&lt;p&gt;You can tell Container to give you an instance of a class like this (provided it has been registered&#010;    previously):&lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&#010;@@ -165,7 +165,7 @@&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010; &#010;-&lt;p&gt;This will cause Apache Composer to do something similar to this behind the scenes (except that Apache Composer uses&#010;+&lt;p&gt;This will cause Container to do something similar to this behind the scenes (except that Container uses&#010;    reflection):&lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&#010;@@ -178,12 +178,12 @@&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;&lt;img class="emoticon" src="/images/icons/emoticons/information.gif" height="16" width="16" align="absmiddle" alt=""&#010;-        border="0" /&gt; Note how Apache Composer figures out that Apple is a Peelable, so that it can be passed to Peeler&#010;+        border="0" /&gt; Note how Container figures out that Apple is a Peelable, so that it can be passed to Peeler&#010;                       and Juicer's constructors.&lt;/p&gt;&#010; &#010; &lt;h2&gt;Container hierarchies&lt;/h2&gt;&#010; &#010;-        &lt;p&gt;Apache Composer provides a powerful alternative to the &lt;a&#010;+        &lt;p&gt;Container provides a powerful alternative to the &lt;a&#010;           href="singleton-antipattern.html" title="Singleton"&gt;Singleton&lt;/a&gt;.&#010;         With container hierarchies you can create singleton-like objects&#010;         where you have fine grained control over the visibility scope of&#010;@@ -206,9 +206,9 @@&#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;                     &lt;pre&gt;// Create x hierarchy of containers&#010;-MutableApache Composer x = new DefaultContainer();&#010;-MutableApache Composer y = new DefaultApache Composer( x );&#010;-MutableApache Composer z = new DefaultApache Composer( y );&#010;+MutableContainer x = new DefaultContainer();&#010;+MutableContainer y = new DefaultContainer( x );&#010;+MutableContainer z = new DefaultContainer( y );&#010; &#010; // Assemble components&#010; x.addComponent(Apple.class);&#010;@@ -245,7 +245,7 @@&#010; &#010;         &lt;h2&gt;Lifecycle&lt;/h2&gt;&#010; &#010;-&lt;p&gt;Apache Composer has support for &lt;a href="lifecycle.html" title="Lifecycle"&gt;Lifecycle&lt;/a&gt;. If your classes implement &lt;a&#010;+&lt;p&gt;Container has support for &lt;a href="lifecycle.html" title="Lifecycle"&gt;Lifecycle&lt;/a&gt;. If your classes implement &lt;a&#010;     href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/Startable.html"&gt;Startable&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;, you can control the lifecycle of all your objects with a simple method call on the&#010;@@ -258,8 +258,8 @@&#010; &lt;table&gt;&#010;     &lt;tbody&gt;&#010;         &lt;tr&gt;&#010;-            &lt;th&gt; MutableApache Composer.start()&lt;/th&gt;&#010;-            &lt;th&gt; MutableApache Composer.stop()&lt;/th&gt;&#010;+            &lt;th&gt; MutableContainer.start()&lt;/th&gt;&#010;+            &lt;th&gt; MutableContainer.stop()&lt;/th&gt;&#010;         &lt;/tr&gt;&#010;         &lt;tr&gt;&#010;             &lt;td&gt;&lt;img src="images/start-container.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;@@ -274,8 +274,8 @@&#010; &lt;table&gt;&#010;     &lt;tbody&gt;&#010;         &lt;tr&gt;&#010;-            &lt;th&gt; MutableApache Composer.start()&lt;/th&gt;&#010;-            &lt;th&gt; MutableApache Composer.stop()&lt;/th&gt;&#010;+            &lt;th&gt; MutableContainer.start()&lt;/th&gt;&#010;+            &lt;th&gt; MutableContainer.stop()&lt;/th&gt;&#010;         &lt;/tr&gt;&#010;         &lt;tr&gt;&#010;             &lt;td&gt;&lt;img src="images/start-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;@@ -291,8 +291,8 @@&#010; &#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-                    &lt;pre&gt;MutableApache Composer parent = new DefaultApache Composer(new Caching());&#010;-MutableApache Composer child = new DefaultApache Composer(parent);&#010;+                    &lt;pre&gt;MutableContainer parent = new DefaultContainer(new Caching());&#010;+MutableContainer child = new DefaultContainer(parent);&#010; // We must let the parent container know about the child container.&#010; parent.addComponent(child);&#010; // This will start the parent, which will start the child.&#010;@@ -301,7 +301,7 @@&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;&lt;strong&gt;&lt;img class="emoticon" src="/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="warning"&#010;-        border="0" /&gt; &lt;/strong&gt;Lifecycle is really only going to work for Apache Composers that are also caching component instances. Caching was a default in Apache Composer 1.x, but is not for 2.x - be warned!&lt;/p&gt;&#010;+        border="0" /&gt; &lt;/strong&gt;Lifecycle is really only going to work for Containers that are also caching component instances. Caching was a default in Container 1.x, but is not for 2.x - be warned!&lt;/p&gt;&#010; &lt;p&gt;&lt;img class="emoticon" src="/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt=""&#010;         border="0" /&gt; Calling lifecycle methods on a container that has a parent container will &lt;b&gt;not&lt;/b&gt; propagate the&#010;   lifecycle to the parent container. &lt;/p&gt;&#010;@@ -312,7 +312,7 @@&#010; &#010;             &lt;h3&gt;Contrasting Usage Styles &lt;/h3&gt;&#010; &#010;-            &lt;p&gt;With Apache Composer you add components and get instances out in two styles. &lt;/p&gt;&#010;+            &lt;p&gt;With Container you add components and get instances out in two styles. &lt;/p&gt;&#010; &#010;             &lt;p&gt;Classic bean style: &lt;/p&gt;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html Mon Feb  4 03:43:57 2008&#010;@@ -59,7 +59,7 @@&#010; by constructor was more elegant. Latterly we are inclined to agree. At&#010; that moment in time (the spring of 2003) there were no implementation&#010; of the constructor injection idea, so it seemed logical for the initial&#010;-Apache Composer leads (Paul Hammant and Aslak Hellesoy) who liked the&#010;+Container leads (Paul Hammant and Aslak Hellesoy) who liked the&#010; idea, to kick off the project.&lt;/p&gt;&#010; &lt;p&gt;The added advantage is that CDI Components cannot be instantiated&#010; with missing dependencies. Thus the compiler or IDE will catch&#010;@@ -76,7 +76,7 @@&#010; setter as "type 2" and constructor as "type 3". He went as far as&#010; publishing an &lt;a href="http://java.sys-con.com/read/38102.htm"&gt;article&lt;/a&gt; on it in Java Developer Journal.   &lt;/p&gt;&#010; &lt;p&gt;&lt;em&gt;December 2003&lt;/em&gt;; Rod Johnson of the Spring Framework team,&#010;-Paul Hammant (former Avaloner, and co-lead of Apache Composer), Mike&#010;+Paul Hammant (former Avaloner, and co-lead of Container), Mike&#010; Royle, with Martin Fowler (by email) say down and played with some of&#010; the language of Martin's forthcoming article. Martin had drafted this&#010; article entirely independently of this team but had be kind enough to&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html Mon Feb  4 03:43:57 2008&#010;@@ -22,7 +22,7 @@&#010; &#010; &lt;h3&gt;Types of IoC&lt;/h3&gt;&#010; &#010;-&lt;p&gt;There are many types of IoC, but we'll concentrate on the type of IoC that Apache Composer introduced to the community&#010;+&lt;p&gt;There are many types of IoC, but we'll concentrate on the type of IoC that Container introduced to the community&#010;    - &lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;. &lt;/p&gt;&#010; &#010; &lt;h3&gt;IoC History&lt;/h3&gt;&#010;@@ -44,7 +44,7 @@&#010;    do its job. It instead &lt;em&gt;declares&lt;/em&gt; these dependencies, and the container supplies them. Thus the name&#010;    IoC/DIP/Hollywood Principle. The control of the dependencies for a given component is inverted. It is no longer the&#010;    component itself that establishes its own dependencies, but something on the outside. That something could be a&#010;-   container like Apache Composer, but could easily be normal code instantiating the component in an embedded sense.&lt;/p&gt;&#010;+   container like Container, but could easily be normal code instantiating the component in an embedded sense.&lt;/p&gt;&#010; &#010; &lt;h3&gt;Examples&lt;/h3&gt;&#010; &#010;@@ -162,7 +162,7 @@&#010; &lt;/div&gt;&#010; &lt;h3&gt;Notes &lt;/h3&gt;&#010; &#010;-&lt;p&gt;The lifecycle interfaces for Apache Composer are the only characterising API elements for a component. If Startable was&#010;+&lt;p&gt;The lifecycle interfaces for Container are the only characterising API elements for a component. If Startable was&#010;    in the JDK, there would be no need for this. Sadly, it also menas that every framework team has to write their own&#010;    Startable interface. &lt;/p&gt;&#010; &#010;@@ -174,7 +174,7 @@&#010; &lt;p&gt;Of course, in all of these discussions, it is important to point out that logging is a common exception to the IoC&#010;    rule. Apache has two static logging frameworks that are in common use: Commons-Logging and Log4J. Neither of these is&#010;    designed along IoC lines. Their typical use is static accessed whenever it is felt appropriate in an application.&#010;-   Whilst static logging is common, the Apache Composer team do not recommend that developers of reusable components&#010;+   Whilst static logging is common, the Container team do not recommend that developers of reusable components&#010;    mandate a logging choice. We suggest instead that a Monitor component interface is created and default adapters are&#010;    provided to a number of the logging frameworks are provided.&lt;/p&gt;&#010; &#010;@@ -195,11 +195,11 @@&#010;         &lt;ul&gt;&#010;             &lt;li&gt;Constructor Dependency Injection (CDI) &lt;br /&gt;&#010;                 &lt;br /&gt;&#010;-                Examples: Apache Composer, Spring Framework, (not in EJB 3.x sadly), Guice with Annotations&#010;+                Examples: Container, Spring Framework, (not in EJB 3.x sadly), Guice with Annotations&#010;             &lt;/li&gt;&#010;             &lt;li&gt;Setter Dependency Injection&lt;br /&gt;&#010;                 &lt;br /&gt;&#010;-                Examples: Spring Framework, Apache Composer, EJB 3.0 &amp;amp; Guice with Annotations&#010;+                Examples: Spring Framework, Container, EJB 3.0 &amp;amp; Guice with Annotations&#010;             &lt;/li&gt;&#010;             &lt;li&gt;Interface Driven Setter Dependency Injection&lt;br /&gt;&#010;                 &lt;br /&gt;&#010;@@ -207,7 +207,7 @@&#010;             &lt;/li&gt;&#010;             &lt;li&gt;Field Dependency Injection&lt;br /&gt;&#010;                 &lt;br /&gt;&#010;-                Examples: Plexus, Apache Composer &amp;amp; Guice with Annotations.&#010;+                Examples: Plexus, Container &amp;amp; Guice with Annotations.&#010;             &lt;/li&gt;&#010;         &lt;/ul&gt;&#010;     &lt;/li&gt;&#010;@@ -228,7 +228,7 @@&#010;     href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt; for more information.&lt;/p&gt;&#010; &#010; &lt;p&gt;Note Field Injection was categorised but there was was really no interest it until the EJB3.0 specification rolled out. Getter&#010;-   Injection flourished for a while, but did not take and was never supported by the Apache Composer team.&lt;/p&gt;&#010;+   Injection flourished for a while, but did not take and was never supported by the Container team.&lt;/p&gt;&#010; &#010; &lt;h2&gt;Examples of Common Types&lt;/h2&gt;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/lifecycle.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/lifecycle.html?rev=618243&amp;r1=618242&amp;r2=618243&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/lifecycle.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/lifecycle.html Mon Feb  4 03:43:57 2008&#010;@@ -15,14 +15,14 @@&#010; and stop may happen more than one for the life of an application.&#010; Disposal may happen once only, before the component is eligible for&#010; garbage collection.&lt;/p&gt;&#010;-&lt;p&gt;&lt;strong&gt;Lifecycle is really only going to work for Apache Composers that are also caching component instances. Caching was a default in Apache Composer 1.x, but is not for 2.x - be warned!&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Lifecycle is really only going to work for Containers that are also caching component instances. Caching was a default in Container 1.x, but is not for 2.x - be warned!&lt;/strong&gt;&lt;/p&gt;&#010; &lt;p&gt;Thus lifecycle implies three methods:&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;start&lt;/li&gt;&#010;   &lt;li&gt;stop&lt;/li&gt;&#010;   &lt;li&gt;dispose&lt;/li&gt;&#010; &lt;/ul&gt;&#010;-&lt;p&gt;In Apache Composer we think allow a pluggable LifecycleStrategy.&lt;/p&gt;&#010;+&lt;p&gt;In Container we think allow a pluggable LifecycleStrategy.&lt;/p&gt;&#010; &lt;h3&gt;Startable&lt;/h3&gt;&#010; &lt;p&gt;Our own interface for startable. We wish it were in the JDK,&#010; because we're big into making components unecumbered by the trappings of&#010;@@ -44,7 +44,7 @@&#010; ...&#010; &#010; &#010;-container = new DefaultApache Composer(new StartableLifecycleStrategy());&#010;+container = new DefaultContainer(new StartableLifecycleStrategy());&#010; container.addComponent(Apple.class);&#010; container.start();&#010; // start gets called&#010;@@ -71,7 +71,7 @@&#010; ...&#010; &#010; &#010;-container = new DefaultApache Composer(new ReflectionLifecycleStrategy());&#010;+container = new DefaultContainer(new ReflectionLifecycleStrategy());&#010; container.addComponent(Apple.class);&#010; container.start();&#010; // start gets called&#010;@@ -82,7 +82,7 @@&#010; &lt;p&gt;If you have other synonyms for start/stop/dispose, just extend&#010; the ReflectionLifecycleStrategy class and provide them.&lt;/p&gt;&#010; &lt;h3&gt;No Lifecycle&lt;/h3&gt;&#010;-&lt;p&gt;DefaultApache Composer does sets StartableLifecycleStrategy by&#010;+&lt;p&gt;DefaultContainer does sets StartableLifecycleStrategy by&#010; default. You can specify NullLifecycleStrategy instead if you are sure&#010; that no components honor any lifecycle concept..&lt;/p&gt;&#010; &lt;h3&gt;Custom Lifecycles&lt;/h3&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618240 - in /incubator/composer/trunk: composer-core/pom.xml composer-site/pom.xml composer-tck/pom.xml pom.xml</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204113056.07EEF1A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204113056-07EEF1A9832@eris-apache-org%3e</id>
<updated>2008-02-04T11:30:55Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 03:30:44 2008&#010;New Revision: 618240&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618240&amp;view=rev&#010;Log:&#010;Removed redundancy in artifactIds.  Moved site to distribution profile.&#010;&#010;Modified:&#010;    incubator/composer/trunk/composer-core/pom.xml&#010;    incubator/composer/trunk/composer-site/pom.xml&#010;    incubator/composer/trunk/composer-tck/pom.xml&#010;    incubator/composer/trunk/pom.xml&#010;&#010;Modified: incubator/composer/trunk/composer-core/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/pom.xml?rev=618240&amp;r1=618239&amp;r2=618240&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/pom.xml (original)&#010;+++ incubator/composer/trunk/composer-core/pom.xml Mon Feb  4 03:30:44 2008&#010;@@ -5,7 +5,7 @@&#010;     &lt;artifactId&gt;apache-composer&lt;/artifactId&gt;&#010;     &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&#010;   &lt;/parent&gt;&#010;-  &lt;artifactId&gt;apache-composer-core&lt;/artifactId&gt;&#010;+  &lt;artifactId&gt;composer-core&lt;/artifactId&gt;&#010;   &lt;name&gt;Apache Composer Core&lt;/name&gt;&#010;   &lt;packaging&gt;jar&lt;/packaging&gt;&#010;   &lt;dependencies&gt;&#010;@@ -77,7 +77,7 @@&#010;       &lt;plugin&gt;&#010;         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&#010;         &lt;artifactId&gt;maven-shade-plugin&lt;/artifactId&gt;&#010;-        &lt;version&gt;1.0-alpha-15&lt;/version&gt;&#010;+        &lt;version&gt;1.0-beta-1&lt;/version&gt;&#010;         &lt;executions&gt;&#010;           &lt;execution&gt;&#010;             &lt;phase&gt;package&lt;/phase&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/pom.xml?rev=618240&amp;r1=618239&amp;r2=618240&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/pom.xml (original)&#010;+++ incubator/composer/trunk/composer-site/pom.xml Mon Feb  4 03:30:44 2008&#010;@@ -1,24 +1,24 @@&#010; &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;-&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&#010;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;&#010;+&lt;project xmlns="http://maven.apache.org/POM/4.0.0"&#010;+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&#010;+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;&#010;   &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;&#010;   &lt;parent&gt;&#010;     &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;     &lt;artifactId&gt;apache-composer&lt;/artifactId&gt;&#010;     &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&#010;   &lt;/parent&gt;&#010;-  &lt;artifactId&gt;apache-composer-site&lt;/artifactId&gt;&#010;+  &lt;artifactId&gt;composer-site&lt;/artifactId&gt;&#010;   &lt;packaging&gt;pom&lt;/packaging&gt;&#010;   &lt;name&gt;Apache Composer Site&lt;/name&gt;&#010;   &lt;dependencies&gt;&#010;     &lt;dependency&gt;&#010;-      &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-      &lt;artifactId&gt;apache-composer-core&lt;/artifactId&gt;&#010;-      &lt;version&gt;${pom.version}&lt;/version&gt;&#010;+      &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;+      &lt;artifactId&gt;composer-core&lt;/artifactId&gt;&#010;     &lt;/dependency&gt;&#010;     &lt;dependency&gt;&#010;-      &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-      &lt;artifactId&gt;apache-composer-tck&lt;/artifactId&gt;&#010;-      &lt;version&gt;${pom.version}&lt;/version&gt;&#010;+      &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;+      &lt;artifactId&gt;composer-tck&lt;/artifactId&gt;&#010;     &lt;/dependency&gt;&#010;   &lt;/dependencies&gt;&#010;   &lt;build&gt;&#010;@@ -38,18 +38,22 @@&#010;               &lt;overWriteSnapshots&gt;true&lt;/overWriteSnapshots&gt;&#010;               &lt;artifactItems&gt;&#010;                 &lt;artifactItem&gt;&#010;-                  &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-                  &lt;artifactId&gt;apache-composer&lt;/artifactId&gt;&#010;+                  &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;+                  &lt;artifactId&gt;composer-core&lt;/artifactId&gt;&#010;                   &lt;version&gt;${pom.version}&lt;/version&gt;&#010;                   &lt;classifier&gt;javadoc&lt;/classifier&gt;&#010;-                  &lt;outputDirectory&gt;${project.build.directory}/site/javadoc/core&lt;/outputDirectory&gt;&#010;+                  &lt;outputDirectory&gt;&#010;+                    ${project.build.directory}/site/javadoc/core&#010;+                  &lt;/outputDirectory&gt;&#010;                 &lt;/artifactItem&gt;&#010;                 &lt;artifactItem&gt;&#010;-                  &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-                  &lt;artifactId&gt;apache-composer-tck&lt;/artifactId&gt;&#010;+                  &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;+                  &lt;artifactId&gt;composer-tck&lt;/artifactId&gt;&#010;                   &lt;version&gt;${pom.version}&lt;/version&gt;&#010;                   &lt;classifier&gt;javadoc&lt;/classifier&gt;&#010;-                  &lt;outputDirectory&gt;${project.build.directory}/site/javadoc/tck&lt;/outputDirectory&gt;&#010;+                  &lt;outputDirectory&gt;&#010;+                    ${project.build.directory}/site/javadoc/tck&#010;+                  &lt;/outputDirectory&gt;&#010;                 &lt;/artifactItem&gt;&#010;               &lt;/artifactItems&gt;&#010;             &lt;/configuration&gt;&#010;@@ -60,7 +64,9 @@&#010;         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&#010;         &lt;artifactId&gt;maven-site-plugin&lt;/artifactId&gt;&#010;         &lt;configuration&gt;&#010;-          &lt;includeProjectDocumentation&gt;false&lt;/includeProjectDocumentation&gt;&#010;+          &lt;includeProjectDocumentation&gt;&#010;+            false&#010;+          &lt;/includeProjectDocumentation&gt;&#010;         &lt;/configuration&gt;&#010;         &lt;executions&gt;&#010;           &lt;execution&gt;&#010;@@ -79,7 +85,9 @@&#010;           &lt;sitemapPath&gt;content/sitemap.xml&lt;/sitemapPath&gt;&#010;           &lt;skinPath&gt;templates/skin.html&lt;/skinPath&gt;&#010;           &lt;resourcePaths&gt;resources&lt;/resourcePaths&gt;&#010;-          &lt;outputDirectoryPath&gt;${project.build.directory}/site&lt;/outputDirectoryPath&gt;&#010;+          &lt;outputDirectoryPath&gt;&#010;+            ${project.build.directory}/site&#010;+          &lt;/outputDirectoryPath&gt;&#010;         &lt;/configuration&gt;&#010;         &lt;executions&gt;&#010;           &lt;execution&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-tck/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-tck/pom.xml?rev=618240&amp;r1=618239&amp;r2=618240&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-tck/pom.xml (original)&#010;+++ incubator/composer/trunk/composer-tck/pom.xml Mon Feb  4 03:30:44 2008&#010;@@ -5,13 +5,13 @@&#010;         &lt;artifactId&gt;apache-composer&lt;/artifactId&gt;&#010;         &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&#010;     &lt;/parent&gt;&#010;-    &lt;artifactId&gt;apache-composer-tck&lt;/artifactId&gt;&#010;+    &lt;artifactId&gt;composer-tck&lt;/artifactId&gt;&#010;     &lt;name&gt;Apache Composer TCK&lt;/name&gt;&#010;     &lt;packaging&gt;jar&lt;/packaging&gt;&#010;     &lt;dependencies&gt;&#010;         &lt;dependency&gt;&#010;             &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;-            &lt;artifactId&gt;apache-composer-core&lt;/artifactId&gt;&#010;+            &lt;artifactId&gt;composer-core&lt;/artifactId&gt;&#010;         &lt;/dependency&gt;&#010;         &lt;dependency&gt;&#010;             &lt;groupId&gt;org.jmock&lt;/groupId&gt;&#010;&#010;Modified: incubator/composer/trunk/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/pom.xml?rev=618240&amp;r1=618239&amp;r2=618240&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/pom.xml (original)&#010;+++ incubator/composer/trunk/pom.xml Mon Feb  4 03:30:44 2008&#010;@@ -11,7 +11,6 @@&#010;   &lt;modules&gt;&#010;     &lt;module&gt;composer-core&lt;/module&gt;&#010;     &lt;module&gt;composer-tck&lt;/module&gt;&#010;-    &lt;module&gt;composer-site&lt;/module&gt;&#010;   &lt;/modules&gt;&#010;   &lt;organization&gt;&#010;     &lt;name&gt;Apache&lt;/name&gt;&#010;@@ -104,12 +103,12 @@&#010;     &lt;dependencies&gt;&#010;       &lt;dependency&gt;&#010;         &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;-        &lt;artifactId&gt;apache-composer-core&lt;/artifactId&gt;&#010;+        &lt;artifactId&gt;composer-core&lt;/artifactId&gt;&#010;         &lt;version&gt;${pom.version}&lt;/version&gt;&#010;       &lt;/dependency&gt;&#010;       &lt;dependency&gt;&#010;         &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;-        &lt;artifactId&gt;apache-composer-tck&lt;/artifactId&gt;&#010;+        &lt;artifactId&gt;composer-tck&lt;/artifactId&gt;&#010;         &lt;version&gt;${pom.version}&lt;/version&gt;&#010;       &lt;/dependency&gt;&#010;       &lt;!-- For paranamer --&gt;&#010;@@ -404,7 +403,7 @@&#010;       &lt;!-- Distribution profile --&gt;&#010;       &lt;id&gt;distribution&lt;/id&gt;&#010;       &lt;modules&gt;&#010;-        &lt;module&gt;distribution&lt;/module&gt;&#010;+        &lt;module&gt;composer-site&lt;/module&gt;&#010;       &lt;/modules&gt;&#010;     &lt;/profile&gt;&#010;   &lt;/profiles&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618234 [2/2] - in /incubator/composer/trunk: composer-core/src/main/java/org/apache/composer/core/ composer-core/src/main/java/org/apache/composer/core/adapters/ composer-core/src/main/java/org/apache/composer/core/behaviors/ composer-core...</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204110628.0F3851A983A@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204110628-0F3851A983A@eris-apache-org%3e</id>
<updated>2008-02-04T11:06:19Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Modified: incubator/composer/trunk/composer-site/src/site/content/behaviors.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/behaviors.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/behaviors.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/behaviors.html Mon Feb  4 03:06:06 2008&#010;@@ -18,38 +18,38 @@&#010;    the most part BehaviorFactories are completely stateless.&lt;/p&gt;&#010; &lt;p&gt;See below for details on &lt;a href="#cns"&gt;Caching and Singletons&lt;/a&gt;, &lt;a href="#hasi"&gt;Implementation Hiding and Hot Swapping&lt;/a&gt;, as well as &lt;a href="#o"&gt;Other&lt;/a&gt;  behaviors&lt;/p&gt;&#010; &lt;h3&gt;General use&lt;/h3&gt;&#010;-&lt;p&gt;DefaultApache Composer can take a behavior factory instance in its constructor:&lt;/p&gt;&#010;+&lt;p&gt;DefaultContainer can take a behavior factory instance in its constructor:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new BehaviorClass());&#010;+container = new DefaultContainer(new BehaviorClass());&#010; &#010;-pico.addComponent(Foo.class); // the behavior will affect Foo's instance&lt;/pre&gt;&#010;+container.addComponent(Foo.class); // the behavior will affect Foo's instance&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Or it can take behaviours that wrap each other:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new BehaviorClass().wrap(new AnotherBehaviorClass())); &#010;-pico.addComponent(Foo.class);  // both behaviors will affect Foo's instance&#010;+container = new DefaultContainer(new BehaviorClass().wrap(new AnotherBehaviorClass())); &#010;+container.addComponent(Foo.class);  // both behaviors will affect Foo's instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Behaviors can be signalled by properties per component:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(SOME_BEHAVIOR).addComponent(Foo.class);  // the behavior has a property marking it, and the default &#010;+container = new DefaultContainer();&#010;+container.as(SOME_BEHAVIOR).addComponent(Foo.class);  // the behavior has a property marking it, and the default &#010;                                                     component facory understands that property&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;You can build a container with the applicable property:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new ContainerBuilder().withXxxxxxxx().build();&#010;-pico.addComponent(Foo.class); // the behavior will affect Foo's instance&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new ContainerBuilder().withXxxxxxxx().build();&#010;+container.addComponent(Foo.class); // the behavior will affect Foo's instance&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Behaviors can be chained together by ContainerBuilder:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.xxxxxxx;&#010;+  &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.xxxxxxx;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(xxxxxxx(), yyyyyyy()).build();&#010;-pico.addComponent(Foo.class); // both behaviors will affect Foo's instance&lt;/pre&gt;&#010;+container = new ContainerBuilder().withBehaviors(xxxxxxx(), yyyyyyy()).build();&#010;+container.addComponent(Foo.class); // both behaviors will affect Foo's instance&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;h2&gt;&lt;a name="cns" id="cns"&gt;&lt;/a&gt;Cashing and Singletons&lt;/h2&gt;&#010; &lt;h3&gt;Caching&lt;/h3&gt;&#010;@@ -66,35 +66,35 @@&#010; &lt;p&gt;Choose your style for caching behavior:&lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new DefaultApache Composer(new Caching());&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer(new Caching());&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(CACHE).addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer();&#010;+container.as(CACHE).addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withCaching().build();&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+&lt;div class="source"&gt;&lt;pre&gt;container = new ContainerBuilder().withCaching().build();&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.caching;&#010;+  &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.caching;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(caching()).build();&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new ContainerBuilder().withBehaviors(caching()).build();&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;@@ -102,19 +102,19 @@&#010; &lt;p&gt;This is caching as above, but only when that property is set.&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new OptinCaching());&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer(new OptinCaching());&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // different instances&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new OptinCaching());&#010;-pico.as(CACHE).addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer(new OptinCaching());&#010;+container.as(CACHE).addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;@@ -130,20 +130,20 @@&#010; &#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new ThreadCaching());&#010;-pico.addComponent(Apple.class);&#010;+container = new DefaultContainer(new ThreadCaching());&#010;+container.addComponent(Apple.class);&#010; new Thread() {&#010;   public void run() {&#010; &#010;-    Apple a1 = pico.getComponent(Apple.class);&#010;+    Apple a1 = container.getComponent(Apple.class);&#010; &#010;-    Apple a2 = pico.getComponent(Apple.class);&#010;+    Apple a2 = container.getComponent(Apple.class);&#010; &#010;   }&#010; }).start();&#010; new Thread() {&#010;   public void run() {&#010;-    Apple a3 = pico.getComponent(Apple.class);&#010;+    Apple a3 = container.getComponent(Apple.class);&#010;   }&#010; }).start();&#010; // a1 and a2 are the same instance&#010;@@ -152,14 +152,14 @@&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(THREAD_CACHE).addComponent(Apple.class);&#010;+container = new DefaultContainer();&#010;+container.as(THREAD_CACHE).addComponent(Apple.class);&#010; &#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;pico = new ContainerBuilder().withThreadCaching().build();&#010;-pico.addComponent(Apple.class);&lt;/pre&gt;&#010;+    &lt;pre&gt;container = new ContainerBuilder().withThreadCaching().build();&#010;+container.addComponent(Apple.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;h3&gt;Storing&lt;/h3&gt;&#010; &#010;@@ -176,22 +176,22 @@&#010; &#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new Storing());&#010;-pico.addComponent(Apple.class);&#010;+container = new DefaultContainer(new Storing());&#010;+container.addComponent(Apple.class);&#010; Apple a1, a2, a3&#010; &#010; new Thread() {&#010;   public void run() {&#010; &#010;-    a1 = pico.getComponent(Apple.class);&#010;+    a1 = container.getComponent(Apple.class);&#010; &#010;-    a2 = pico.getComponent(Apple.class);&#010;+    a2 = container.getComponent(Apple.class);&#010; &#010;   }&#010; }).start();&#010; new Thread() {&#010;   public void run() {&#010;-    a3 = pico.getComponent(Apple.class);&#010;+    a3 = container.getComponent(Apple.class);&#010;   }&#010; }).start();&#010; // a1 and a2 are the same instance&#010;@@ -203,7 +203,7 @@&#010; &#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;storing = new Storing();&#010;-pico = new DefaultApache Composer(sc);&#010;+container = new DefaultContainer(sc);&#010; ....&#010; storing.putCacheForThread(httpRequest.getSession().getAttribute(&amp;quot;sessionComponentStore&amp;quot;);&#010; // do other methods that process request in session concept and may do getComponent(..) from the sesion container.&#010;@@ -219,32 +219,32 @@&#010;    that it implements. &lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new DefaultApache Composer(new ImplementationHiding());&#010;-pico.addComponent(Apple.class, AppleImpl.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer(new ImplementationHiding());&#010;+container.addComponent(Apple.class, AppleImpl.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010; // cannot cast back to AppleImpl&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(HIDE_IMPL).addComponent(Apple.class, AppleImpl.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer();&#010;+container.as(HIDE_IMPL).addComponent(Apple.class, AppleImpl.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010; // cannot cast back to AppleImpl&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withImplementationHiding().build();&#010;-pico.addComponent(Apple.class, AppleImpl.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;+&lt;div class="source"&gt;&lt;pre&gt;container = new ContainerBuilder().withImplementationHiding().build();&#010;+container.addComponent(Apple.class, AppleImpl.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010; // cannot cast back to AppleImpl&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.implementationHiding;&#010;+  &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.implementationHiding;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(implementationHiding()).build();&#010;-pico.addComponent(Apple.class, AppleImpl.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;+container = new ContainerBuilder().withBehaviors(implementationHiding()).build();&#010;+container.addComponent(Apple.class, AppleImpl.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010; // cannot cast back to AppleImpl&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;@@ -255,7 +255,7 @@&#010; &lt;h3&gt;Hot Swapping&lt;/h3&gt;&#010; &lt;p&gt;This builds on the &lt;span class="style1"&gt;ASMImplementationHiding&lt;/span&gt; behavior above, but also allows the hot swapping of component implementations during use. It has implicit caching behavior too.&lt;/p&gt;&#010; &#010;-&lt;div class="source"&gt;&lt;pre&gt;DefaultApache Composer pico = new DefaultApache Composer(new HotSwapping());&lt;br /&gt;pico.addComponent(Map.class, HashMap.class);&lt;br /&gt;Map firstMap = pico.getComponent(Map.class);&lt;br /&gt;firstMap.put(&amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot;);&lt;br /&gt;HotSwappable hs = (HotSwappable) pico.getComponentAdapter(Map.class);&lt;br /&gt;Object oldMap = hs.getSwappable().swap(new HashMap());&lt;br /&gt;Map secondMap = pico.getComponent(Map.class);&lt;br /&gt;secondMap.put(&amp;quot;apple&amp;quot;, &amp;quot;orange&amp;quot;);&lt;br /&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;DefaultApache Composer container = new DefaultContainer(new HotSwapping());&lt;br /&gt;container.addComponent(Map.class, HashMap.class);&lt;br /&gt;Map firstMap = container.getComponent(Map.class);&lt;br /&gt;firstMap.put(&amp;quot;foo&amp;quot;, &amp;quot;bar&amp;quot;);&lt;br /&gt;HotSwappable hs = (HotSwappable) container.getComponentAdapter(Map.class);&lt;br /&gt;Object oldMap = hs.getSwappable().swap(new HashMap());&lt;br /&gt;Map secondMap = container.getComponent(Map.class);&lt;br /&gt;secondMap.put(&amp;quot;apple&amp;quot;, &amp;quot;orange&amp;quot;);&lt;br /&gt;&#010; // first map and second map are the same&#010; // 'foo' is not a key in the map, wereas 'apple' is&lt;/pre&gt;&#010; &lt;/div&gt;&#010;@@ -267,38 +267,38 @@&#010; &lt;p&gt;Synchronizing wraps object creation in Java's classic &lt;span class="style1"&gt;synchronize&lt;/span&gt; feature:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new Synchronizing().wrap(new Caching()));&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer(new Synchronizing().wrap(new Caching()));&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(SYNCHRONIZE, CACHE).addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer();&#010;+container.as(SYNCHRONIZE, CACHE).addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;pico = new ContainerBuilder().withSynchronizing().withCaching().build();&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+    &lt;pre&gt;container = new ContainerBuilder().withSynchronizing().withCaching().build();&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.synchronizing;&#010;-import static org.picocontainer.behaviors.Behaviors.caching;&#010;+  &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.synchronizing;&#010;+import static org.apache.composer.core.behaviors.Behaviors.caching;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(synchronizing(), caching()).build();&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new ContainerBuilder().withBehaviors(synchronizing(), caching()).build();&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;@@ -306,38 +306,38 @@&#010; &lt;p&gt;Locking wraps object creation in JDK 1.5's ReentrantLock facility. It is suggested that this is a more efficient alternative to the &lt;span class="style1"&gt;Synchronizing&lt;/span&gt; behaviour above:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer(new Locking().wrap(new Caching()));&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer(new Locking().wrap(new Caching()));&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(LOCK, CACHE).addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new DefaultContainer();&#010;+container.as(LOCK, CACHE).addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new ContainerBuilder().withLocking().withCaching().build();&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+  &lt;pre&gt;container = new ContainerBuilder().withLocking().withCaching().build();&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.locking;&#010;-import static org.picocontainer.behaviors.Behaviors.caching;&#010;+  &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.locking;&#010;+import static org.apache.composer.core.behaviors.Behaviors.caching;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(synchronizing(), caching()).build();&#010;-pico.addComponent(Apple.class);&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;-Apple a2 = pico.getComponent(Apple.class);&#010;+container = new ContainerBuilder().withBehaviors(synchronizing(), caching()).build();&#010;+container.addComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010;+Apple a2 = container.getComponent(Apple.class);&#010; // both the same instance&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;@@ -359,50 +359,50 @@&#010;   }&#010; }&#010; ...&#010;-pico = new DefaultApache Composer(new PropertyApplying());&#010;-pico.addComponent(Foo.class);&#010;-PropertyApplicator pa = (PropertyApplicator) pico.getAdapter(Foo.class);&#010;+container = new DefaultContainer(new PropertyApplying());&#010;+container.addComponent(Foo.class);&#010;+PropertyApplicator pa = (PropertyApplicator) container.getAdapter(Foo.class);&#010; pa.setProperty(&amp;quot;message&amp;quot;, &amp;quot;hello&amp;quot;);&#010;-System.out.println(pico.getComponent(Foo.class)); // prints hello&#010;+System.out.println(container.getComponent(Foo.class)); // prints hello&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(APPLY_PROPERTIES).addComponent(Foo.class);&#010;-PropertyApplicator pa = (PropertyApplicator) pico.getAdapter(Foo.class);&#010;+container = new DefaultContainer();&#010;+container.as(APPLY_PROPERTIES).addComponent(Foo.class);&#010;+PropertyApplicator pa = (PropertyApplicator) container.getAdapter(Foo.class);&#010; pa.setProperty(&amp;quot;message&amp;quot;, &amp;quot;hello&amp;quot;);&#010;-System.out.println(pico.getComponent(Foo.class)); // prints hello&#010;+System.out.println(container.getComponent(Foo.class)); // prints hello&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;pico = new ContainerBuilder().withProperties().build();&#010;-pico.addComponent(Foo.class);&#010;-PropertyApplicator pa = (PropertyApplicator) pico.getAdapter(Foo.class);&#010;+    &lt;pre&gt;container = new ContainerBuilder().withProperties().build();&#010;+container.addComponent(Foo.class);&#010;+PropertyApplicator pa = (PropertyApplicator) container.getAdapter(Foo.class);&#010; pa.setProperty(&amp;quot;message&amp;quot;, &amp;quot;hello&amp;quot;);&#010;-System.out.println(pico.getComponent(Foo.class)); // prints hello&#010;+System.out.println(container.getComponent(Foo.class)); // prints hello&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.propertyApplying;&#010;+    &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.propertyApplying;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(propertyApplying()).build();&#010;-pico.addComponent(Foo.class);&#010;-PropertyApplicator pa = (PropertyApplicator) pico.getAdapter(Foo.class);&#010;+container = new ContainerBuilder().withBehaviors(propertyApplying()).build();&#010;+container.addComponent(Foo.class);&#010;+PropertyApplicator pa = (PropertyApplicator) container.getAdapter(Foo.class);&#010; pa.setProperty(&amp;quot;message&amp;quot;, &amp;quot;hello&amp;quot;);&#010;-System.out.println(pico.getComponent(Foo.class)); // prints hello&#010;+System.out.println(container.getComponent(Foo.class)); // prints hello&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.caching;&#010;-import static org.picocontainer.behaviors.Behaviors.propertyApplying;&#010;+    &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.caching;&#010;+import static org.apache.composer.core.behaviors.Behaviors.propertyApplying;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(caching(), propertyApplying()).build();&#010;-pico.addComponent(Foo.class);&#010;-Cached cached = (Cached) pico.getAdapter(Foo.class);&#010;+container = new ContainerBuilder().withBehaviors(caching(), propertyApplying()).build();&#010;+container.addComponent(Foo.class);&#010;+Cached cached = (Cached) container.getAdapter(Foo.class);&#010; PropertyApplicator pa = (PropertyApplicator) getDelegate(PropertyApplicator.class);&#010; pa.setProperty(&amp;quot;message&amp;quot;, &amp;quot;hello&amp;quot;);&#010;-System.out.println(pico.getComponent(Foo.class)); // prints hello&#010;+System.out.println(container.getComponent(Foo.class)); // prints hello&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;h3&gt;Automatic&lt;/h3&gt;&#010;@@ -427,35 +427,35 @@&#010; }&#010; &#010; ...&#010;-pico = new DefaultApache Composer(new Automatic());&#010;-pico.addComponent(Foo.class);&#010;-pico.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;-pico.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010;+container = new DefaultContainer(new Automatic());&#010;+container.addComponent(Foo.class);&#010;+container.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;+container.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(AUTOMATIC).addComponent(Foo.class);&#010;-pico.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;-pico.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010;+container = new DefaultContainer();&#010;+container.as(AUTOMATIC).addComponent(Foo.class);&#010;+container.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;+container.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new ContainerBuilder().withAutomatic().build();&#010;-pico.addComponent(Foo.class);&#010;-pico.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;-pico.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010;+container = new ContainerBuilder().withAutomatic().build();&#010;+container.addComponent(Foo.class);&#010;+container.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;+container.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;import static org.picocontainer.behaviors.Behaviors.automatic;&#010;+    &lt;pre&gt;import static org.apache.composer.core.behaviors.Behaviors.automatic;&#010; ...&#010;-pico = new ContainerBuilder().withBehaviors(automatic()).build();&#010;-pico.addComponent(Foo.class);&#010;-pico.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;-pico.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010;+container = new ContainerBuilder().withBehaviors(automatic()).build();&#010;+container.addComponent(Foo.class);&#010;+container.addComponent(&amp;quot;bar&amp;quot;, String.class);&#010;+container.getComponent(&amp;quot;bar&amp;quot;); // Foo instantiated too.&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;/body&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/builder.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/builder.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/builder.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/builder.html Mon Feb  4 03:06:06 2008&#010;@@ -10,33 +10,33 @@&#010; Interface'&lt;/a&gt; article, for some of the motivation behing this class.&lt;/p&gt;&#010; &lt;p&gt;Some simple examples :&lt;/p&gt;&#010;     &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new ContainerBuilder().build();&#010;-pico.addComponent(Apple.class);&#010;+container = new ContainerBuilder().build();&#010;+container.addComponent(Apple.class);&#010; &lt;/pre&gt;&lt;/div&gt;&#010;-    &lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withCaching().build();&#010;-pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;container = new ContainerBuilder().withCaching().build();&#010;+container.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;     &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new ContainerBuilder().withCaching().build();&#010;-pico.addComponent(Apple.class);&#010;+container = new ContainerBuilder().withCaching().build();&#010;+container.addComponent(Apple.class);&#010; &lt;/pre&gt;&lt;/div&gt;&#010;-    &lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withHiddenImplementations().build();&#010;-pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;container = new ContainerBuilder().withHiddenImplementations().build();&#010;+container.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010; &#010; &lt;p&gt;More varations for behaviors :&lt;/p&gt;&#010; &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new ContainerBuilder().withLifecycle().withConsoleMonitor().build();&#010;-pico.addComponent(Apple.class);&#010;+container = new ContainerBuilder().withLifecycle().withConsoleMonitor().build();&#010;+container.addComponent(Apple.class);&#010; &lt;/pre&gt;&lt;/div&gt;&#010;-    &lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withMonitor(ConsoleComponentMonitor.class).build();&#010;-pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;container = new ContainerBuilder().withMonitor(ConsoleComponentMonitor.class).build();&#010;+container.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;     &lt;div class="source"&gt;&lt;pre&gt;&#010;-import static org.picocontainer.injectors.Injectors.SDI;&#010;-import static org.picocontainer.behaviors.Behaviors.caching;&#010;-import static org.picocontainer.behaviors.Behaviors.implementationHiding;&#010;-import static org.picocontainer.behaviors.Behaviors.synchronizing;&#010;+import static org.apache.composer.core.injectors.Injectors.SDI;&#010;+import static org.apache.composer.core.behaviors.Behaviors.caching;&#010;+import static org.apache.composer.core.behaviors.Behaviors.implementationHiding;&#010;+import static org.apache.composer.core.behaviors.Behaviors.synchronizing;&#010; ...  &#010;-pico = new ContainerBuilder(SDI()).withBehaviors(caching(), implementationHiding(), synchronizing()).build();&#010;-pico.addComponent(Apple.class);&#010;+container = new ContainerBuilder(SDI()).withBehaviors(caching(), implementationHiding(), synchronizing()).build();&#010;+container.addComponent(Apple.class);&#010; &lt;/pre&gt;&lt;/div&gt;&#010; &lt;p&gt;Setting a parent container :&lt;/p&gt;&#010;     &lt;div class="source"&gt;&lt;pre&gt;child = new ContainerBuilder(parentContainer).build();&#010;@@ -44,27 +44,27 @@&#010; &#010; &lt;p&gt;Specifying an injection type:&lt;/p&gt;&#010;     &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new ContainerBuilder().withAnnotationInjection().build();&#010;-pico.addComponent(Apple.class);&#010;+container = new ContainerBuilder().withAnnotationInjection().build();&#010;+container.addComponent(Apple.class);&#010; &lt;/pre&gt;&lt;/div&gt;&#010; &lt;p&gt;Specifying an injection type a different way:&lt;/p&gt;&#010;     &lt;div class="source"&gt;&lt;pre&gt;&#010;-import static org.picocontainer.injectors.Injectors.SDI;&#010;+import static org.apache.composer.core.injectors.Injectors.SDI;&#010; ...&#010;-pico = new ContainerBuilder(SDI()).build();&#010;-pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+container = new ContainerBuilder(SDI()).build();&#010;+container.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010; &lt;p&gt;A custom container component used by a custom  ComponentBehavior (though could be used by ComponentMonitor or LifecycleStrategy as easily): &lt;/p&gt;&#010; &#010;     &lt;div class="source"&gt;&#010;       &lt;pre&gt;&#010;-pico = new ContainerBuilder()&#010;+container = new ContainerBuilder()&#010;     .withCustomContainerComponent(new MyQuantumPhysicsConnector())&#010;     .withComponentFactory(MyQuantumPhysicsConnectionNeedingComponentBehavior.class).build();&#010;-pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+container.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010; &#009;&lt;p&gt;A custom container implementation (DefaultApache Composer is the default):&lt;/p&gt; &#010;     &lt;div class="source"&gt;&#010;-      &lt;pre&gt;MyCustomApache Composer pico = (MyCustomApache Composer) new ContainerBuilder().implementedBy(MyCustomApache Composer.class).build();&#010;-pico.addComponent(Apple.class);&lt;/pre&gt;&#010;+      &lt;pre&gt;MyCustomApache Composer container = (MyCustomApache Composer) new ContainerBuilder().implementedBy(MyCustomApache Composer.class).build();&#010;+container.addComponent(Apple.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/component-configuration.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/component-configuration.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/component-configuration.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/component-configuration.html Mon Feb  4 03:06:06 2008&#010;@@ -29,8 +29,8 @@&#010;   // other methods&#010; }&#010; ...&#010;-pico.addComponent(BigFatComponent.class)&#010;-pico.addComponent(new BigFatComponentConfigBean(&amp;quot;http://foo.com/foo.wsdl&amp;quot;, 120))&lt;/pre&gt;&#010;+container.addComponent(BigFatComponent.class)&#010;+container.addComponent(new BigFatComponentConfigBean(&amp;quot;http://foo.com/foo.wsdl&amp;quot;, 120))&lt;/pre&gt;&#010;   &lt;/div&gt;&#010;   &lt;h3&gt;Setting config as part of addComponent(..) &lt;/h3&gt;&#010;   &lt;div class="source"&gt;&#010;@@ -46,7 +46,7 @@&#010; &#010; &#010; ...&#010;-pico.addComponent(BigFatComponent.class, new ConstantParameter(&amp;quot;http://foo.com/foo.wsdl&amp;quot;), new ConstantParameter(120));&lt;/pre&gt;&#010;+container.addComponent(BigFatComponent.class, new ConstantParameter(&amp;quot;http://foo.com/foo.wsdl&amp;quot;), new ConstantParameter(120));&lt;/pre&gt;&#010;     &lt;/div&gt;&#010;   &lt;h3&gt;Configuration using parameter names &lt;/h3&gt;&#010;   &lt;p&gt;Consider this component ...&lt;/p&gt;&#010;@@ -70,13 +70,13 @@&#010;   &lt;p&gt;And this composition ...&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;         &lt;pre&gt;&#010;-pico.addConfig(&amp;quot;spellingWebServiceURL&amp;quot;, &amp;quot;http://foo.com/spelling.wsdl&amp;quot;); // matches constructor parameter name&#010;-pico.addConfig(&amp;quot;somethingOtherURL&amp;quot;, &amp;quot;http://bar.com/other.wsdl&amp;quot;);&#010;-pico.addConfig(&amp;quot;timeout&amp;quot;, 120); // matches constructor parameter name&#010;-pico.addConfig(&amp;quot;timeout2&amp;quot;, 456);&#010;-pico.as(Characteristics.USE_NAMES).addComponent(BigFatComponent.class);&#010;+container.addConfig(&amp;quot;spellingWebServiceURL&amp;quot;, &amp;quot;http://foo.com/spelling.wsdl&amp;quot;); // matches constructor parameter name&#010;+container.addConfig(&amp;quot;somethingOtherURL&amp;quot;, &amp;quot;http://bar.com/other.wsdl&amp;quot;);&#010;+container.addConfig(&amp;quot;timeout&amp;quot;, 120); // matches constructor parameter name&#010;+container.addConfig(&amp;quot;timeout2&amp;quot;, 456);&#010;+container.as(Characteristics.USE_NAMES).addComponent(BigFatComponent.class);&#010; &#010;-BigFatComponent bfc = pico.getComponent(BigFatComponent.class);&#010;+BigFatComponent bfc = container.getComponent(BigFatComponent.class);&#010; System.out.println(&amp;quot;bfc: &amp;quot; + bfc.toString());&#010; // Prints .. &amp;quot;bfg: URL=http://foo.com/spelling.wsdl, timeout=120&amp;quot;&lt;/pre&gt;&#010;   &lt;/div&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/disambiguation.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/disambiguation.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/disambiguation.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/disambiguation.html Mon Feb  4 03:06:06 2008&#010;@@ -24,7 +24,7 @@&#010; ' can be used in conjunction with similarly named components inject the&#010; right dependency in the right way:&lt;br /&gt;&#010; &lt;div class="source"&gt;&#010;-&lt;pre&gt;pico.as(Characteristics.USE_NAMES).addComponent(Store.class);&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;pre&gt;container.as(Characteristics.USE_NAMES).addComponent(Store.class);&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &#010; Access to parameter names was dropped from JDK 6.0 and it is uncertain&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/faq.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/faq.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/faq.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/faq.html Mon Feb  4 03:06:06 2008&#010;@@ -107,13 +107,13 @@&#010;   &lt;p&gt;In this case you can set the parameters at registration time:&lt;/p&gt;&#010;   &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-      &lt;pre&gt;DefaultApache Composer pico = new DefaultApache Composer();&#010;-pico.addComponent(ThreadPool.class, DefaultThreadPool.class);&#010;-pico.addComponent(MyComp.class, MyComp.class, new Parameters[] {&#010;+      &lt;pre&gt;DefaultApache Composer container = new DefaultContainer();&#010;+container.addComponent(ThreadPool.class, DefaultThreadPool.class);&#010;+container.addComponent(MyComp.class, MyComp.class, new Parameters[] {&#010; &#009;new ComponentParameter(),&#010; &#009;new ConstantParameter(new Integer(5));&#010; })&#010;-MyComp myComp = (MyComp)pico.getInstance(MyComp.class);&lt;/pre&gt;&#010;+MyComp myComp = (MyComp)container.getInstance(MyComp.class);&lt;/pre&gt;&#010;     &lt;/div&gt;&#010;   &lt;/div&gt;&#010;   &lt;p&gt;Use ConstantParameter to set constant values and the ComponentParameter to let Apache Composer resolve the dependency.&lt;/p&gt;&#010;@@ -217,15 +217,15 @@&#010; 0&gt;hellos&#010; 1&gt; 1&#010; 2&gt; @Foo$Bar()&#010;-Exception in thread "main" java.lang.NoClassDefFoundError: org/picocontainer/annotations/Inject&#010;+Exception in thread "main" java.lang.NoClassDefFoundError: org/containercontainer/annotations/Inject&#010;         at Foo.main(Foo.java:32)&lt;/pre&gt;&#010; &lt;/div&gt;&#010;   &lt;p&gt;The class loads, but the @Inject annotation is not present in the set of declared annotations, but another in the classpath is.  Lastly when accessed explicitly, there is an exception thrown.  Contrast to, the same run with Guice in the classpath:&lt;/p&gt;&#010; &lt;div class="source"&gt;&lt;pre&gt;0&gt;hello&#010; 1&gt; 2&#010;-2&gt; @org.picocontainer.annotations.Inject()&#010;+2&gt; @org.apache.composer.core.annotations.Inject()&#010; 2&gt; @Foo$Bar()&#010;-3&gt; @org.picocontainer.annotations.Inject()&#010;+3&gt; @org.apache.composer.core.annotations.Inject()&#010; &lt;/pre&gt;&lt;/div&gt;&#010; &#010; &lt;/div&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/fluent-style.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/fluent-style.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/fluent-style.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/fluent-style.html Mon Feb  4 03:06:06 2008&#010;@@ -11,15 +11,15 @@&#010; &lt;p&gt;A simple example :&lt;/p&gt;&#010;     &lt;div class="source"&gt;&#010;       &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class)&#010;+container = new DefaultContainer();&#010;+container.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class)&#010;     .addComponent(Banana.class)&#010;     .addComponent(Grape.class, Grenache.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;One with per component properties:&lt;/p&gt;&#010; &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.addComponent(Apple.class)&#010;+container = new DefaultContainer();&#010;+container.addComponent(Apple.class)&#010;     .as(CACHE).addComponent(Orange.class)&#010;     .as(CACHE, HIDE_IMPLEMENTATION).addComponent(Pear.class)&#010;     .as(SYNCHRONIZE, CACHE).addComponent(Banana.class)&#010;@@ -27,8 +27,8 @@&#010; &lt;/div&gt;&#010; &lt;p&gt;One with properties that are persistently set, half way through.&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer();&#010;-pico.addComponent(&amp;quot;Coxs&amp;quot;, CoxsApple.class)&#010;+  &lt;pre&gt;container = new DefaultContainer();&#010;+container.addComponent(&amp;quot;Coxs&amp;quot;, CoxsApple.class)&#010;     .addComponent(&amp;quot;Golden&amp;quot;, GoldenDeliciousApple.class)&#010;     .addComponent(new ValenciaOrange())&#010;     .change(SYNCHRONIZE, CACHE, HIDE_IMPLEMENTATION)&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html Mon Feb  4 03:06:06 2008&#010;@@ -6,10 +6,10 @@&#010; &lt;body&gt;&#010; &lt;p&gt;Apache Composer tries to determine what to inject into the constructor of each component as it instantiates (or setters/fields for other injection types). Sometimes there can be two or more classes that could equally satisfy a constructor: &lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico.add(new Apple(&amp;quot;Braeburn&amp;quot;));&#010;-pico.add(new Apple(&amp;quot;Granny Smith&amp;quot;));&#010;-pico.add(Pie.class); // needs Apple&#010;-Pie pie = pico.getComponent(Pie.class); // throws AmbiguousComponentResolutionException citing there are two Apples.&#010;+  &lt;pre&gt;container.add(new Apple(&amp;quot;Braeburn&amp;quot;));&#010;+container.add(new Apple(&amp;quot;Granny Smith&amp;quot;));&#010;+container.add(Pie.class); // needs Apple&#010;+Pie pie = container.getComponent(Pie.class); // throws AmbiguousComponentResolutionException citing there are two Apples.&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &#010;@@ -28,10 +28,10 @@&#010; ...&#010; &#010; &#010;-pico.add(&amp;quot;braeburn&amp;quot;, new Apple(&amp;quot;Braeburn&amp;quot;));&#010;-pico.add(&amp;quot;grannySmith&amp;quot;, new Apple(&amp;quot;Granny Smith&amp;quot;));&#010;-pico.add(Pie.class); // needs Apple, specifically a Granny Smith.&#010;-Pie pie = pico.getComponent(Pie.class); // OK this time.&#010;+container.add(&amp;quot;braeburn&amp;quot;, new Apple(&amp;quot;Braeburn&amp;quot;));&#010;+container.add(&amp;quot;grannySmith&amp;quot;, new Apple(&amp;quot;Granny Smith&amp;quot;));&#010;+container.add(Pie.class); // needs Apple, specifically a Granny Smith.&#010;+Pie pie = container.getComponent(Pie.class); // OK this time.&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;To use names Parameters, you are going to need Paranamer 1.0 (or above) in the classpath, as well as ASM 3.0 (or above). If you are expecting Apache Composer to work based on parameter names, but its not doing so, it is most likely that you do not have paranamer-1.0.jar in the classpath. See &lt;a href="http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/"&gt;http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/&lt;/a&gt; for versions of paranamer. Also &lt;a href="http://maven.objectweb.org/maven2/asm/asm/"&gt;http://maven.objectweb.org/maven2/asm/asm/&lt;/a&gt; for the ASM jar.&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html Mon Feb  4 03:06:06 2008&#010;@@ -7,18 +7,18 @@&#010; &lt;p&gt;Properties are a powerful mechanism to add hints at registration time as to what the behavior of a component should be. It only works though when the right component factories are set for the container. Ones that recognise the property and can process it. For example, DefaultConstructor's default constructor sets up an adaptive ComponentFactory that can handle HIDE_IMPL: &lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer();&#010;-pico.as(HIDE_IMPL).addComponent(Apple.class);&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer();&#010;+container.as(HIDE_IMPL).addComponent(Apple.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; But with a custom ComponentFactory, it may not:&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new MyComponentFactory);&#010;-pico.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new MyComponentFactory);&#010;+container.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010; &lt;/div&gt;&#010; The trick is (in this case) to make sure that the right chain of component factories are setup:&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new MyComponentFactory().wrap(new AdaptiveBehaviorFactory()));&#010;-pico.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new MyComponentFactory().wrap(new AdaptiveBehaviorFactory()));&#010;+container.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;A component may have many properties as it is added to the container.  As each is processed, it is removed from the set.  If there are any left after the component has been added the behavior or action that the property suggests has not been setup.  Thus a CompositionException being thrown warning of unprocessed properties only happens one or more properties are left - whether they are Apache Composer's own properties or custom ones&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/index.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/index.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/index.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/index.html Mon Feb  4 03:06:06 2008&#010;@@ -40,12 +40,6 @@&#010; &lt;p&gt;Take a look at the &lt;a href="introduction.html"&gt;introduction&lt;/a&gt;. &lt;/p&gt;&#010; &lt;/div&gt;&#010; &lt;div class="section"&gt;&#010;-&lt;h3&gt;Related projects&lt;/h3&gt;&#010;-&lt;p&gt;&lt;a href="http://www.nanocontainer.org"&gt;NanoContainer&lt;/a&gt; builds on top of Apache Composer the support for&#010;-several scripting meta-languages (XML, Groovy, Bsh, Jython and Rhyno),&#010;-AOP, Web frameworks (Struts and WebWork), Persistence (Hibernate) SOAP,&#010;-JMX, and much more.&lt;/p&gt;&#010;-&lt;/div&gt;&#010; &lt;/body&gt;&#010; &#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/injection.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/injection.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/injection.html Mon Feb  4 03:06:06 2008&#010;@@ -52,7 +52,7 @@&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;public class Apple {&lt;br /&gt;  private Orange orange;&lt;br /&gt;  private Pear pear;&lt;br /&gt;  private Banana banana;&lt;br /&gt;&lt;br /&gt;  @Inject&lt;br /&gt;  public injectOrange(Orange orange) {&lt;br /&gt;    this.orange = orange;&lt;br /&gt;  }&lt;br /&gt;  @Inject&lt;br /&gt;  public setPear(Pear pear) {&lt;br /&gt;    this.pear = pear;&lt;br /&gt;  }&lt;br /&gt;  @Inject&lt;br /&gt;  public provideBanana(Banana banana) {&lt;br /&gt;    this.banana = banana;&lt;br /&gt;  }&lt;br /&gt;  // other methods&lt;br /&gt;}&lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;p&gt;The method (whatever its name) needs an @Inject annotation.  That's from our codebase (org.picocontainer.Inject).&lt;/p&gt;&#010;+&lt;p&gt;The method (whatever its name) needs an @Inject annotation.  That's from our codebase (org.apache.composer.core.Inject).&lt;/p&gt;&#010; &lt;p&gt;The  component factory for this is &lt;strong&gt;AnnotatedMethodInjection&lt;/strong&gt;. It only handles method-annotation injection types of components.&lt;/p&gt;&#010; &lt;p&gt;Additionally component factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt;&#010; can also handle method-annotation injection types, if the @Inject&#010;@@ -74,43 +74,43 @@&#010; &lt;h2&gt;Using Apache Composer with Injection Types&lt;/h2&gt;&#010; &lt;p&gt;Explicit Constructor Injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new ConstructorInjection());&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new ConstructorInjection());&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Constructor Injection, is a default too (via AdaptiveInjection):&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Setter Injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new SetterInjection());&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new SetterInjection());&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Field injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedFieldInjection();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedFieldInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Field injection, with alternate Annotation:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedFieldInjection(MyInjectAnnotaton.class);&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedFieldInjection(MyInjectAnnotaton.class);&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Method injection:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedMethodInjection();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedMethodInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit Annotated Method injection, with alternate Annotation:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedMethodInjection(MyInjectAnnotaton.class);&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new AnnotatedMethodInjection(MyInjectAnnotaton.class);&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit  Method injection, implicit injection method prefix ('inject'):&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new MethodInjection();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new MethodInjection();&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Explicit  Method injection, explicit injection method prefix:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer(new MethodInjection("setDependencies");&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultApache Composer(new MethodInjection("setDependencies");&lt;br /&gt;container.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;  Method injection, via a characteristic:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;pico = new DefaultApache Composer();&lt;br /&gt;pico.as(Characteristics.METHOD_INJECTION).addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+  &lt;pre&gt;container = new DefaultContainer();&lt;br /&gt;container.as(Characteristics.METHOD_INJECTION).addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;h2&gt; Leveraging Parameter Names &lt;/h2&gt;&#010; &lt;p&gt;This is where the type alone is not enough to indicate which&#010;@@ -118,7 +118,7 @@&#010; component has a need for two of the same type, with some subtly&#010; different characteristics.&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010;-  &lt;pre&gt;public class AppleProcessor {&lt;br /&gt;  private Apple dessertApple;&lt;br /&gt;  private Apple cookingApple;&lt;br /&gt;&lt;br /&gt;  public inject(Apple dessertApple, Apple cookingApple) {&lt;br /&gt;    this.dessertApple = dessertApple;&lt;br /&gt;    this.cookingApple = cookingApple;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;  // other methods&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;pico.addComponent("dessertApple", GoldenDeliciousApple.class);&lt;br /&gt;&lt;br /&gt;pico.addComponent("cookingApple", BramleyApple.class);&lt;br /&gt;pico.as(Characteristics.USE_NAMES).addComponent(AppleProcessor.class);&lt;/pre&gt;&#010;+  &lt;pre&gt;public class AppleProcessor {&lt;br /&gt;  private Apple dessertApple;&lt;br /&gt;  private Apple cookingApple;&lt;br /&gt;&lt;br /&gt;  public inject(Apple dessertApple, Apple cookingApple) {&lt;br /&gt;    this.dessertApple = dessertApple;&lt;br /&gt;    this.cookingApple = cookingApple;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;  // other methods&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;container.addComponent("dessertApple", GoldenDeliciousApple.class);&lt;br /&gt;&lt;br /&gt;container.addComponent("cookingApple", BramleyApple.class);&lt;br /&gt;container.as(Characteristics.USE_NAMES).addComponent(AppleProcessor.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;In this case the constructor to AppleProcessor has carefully named&#010; parameters - 'dessertApple' and 'cookingApple'. This is picked up on&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/interception.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/interception.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/interception.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/interception.html Mon Feb  4 03:06:06 2008&#010;@@ -50,30 +50,30 @@&#010;     }&#010; }&#010; ...&#010;-pico = new DefaultApache Composer(new Intercepting());&#010;-pico.addComponent(Apple.class, BraeburnApple.class);&#010;-Intercpeted intercepted = pico.getComponentAdapter(Apple.class).findAdapterOfType(Intercpeted.class);&#010;+container = new DefaultApache Composer(new Intercepting());&#010;+container.addComponent(Apple.class, BraeburnApple.class);&#010;+Intercpeted intercepted = container.getComponentAdapter(Apple.class).findAdapterOfType(Intercpeted.class);&#010; intercepted.pre(Apple.class, new BiteReporter(intercepted.getController()));&#010; // see also Intercpeted.post(...) method.&#010;-Apple a1 = pico.getComponent(Apple.class);&#010;+Apple a1 = container.getComponent(Apple.class);&#010; a1.takeBite(100); &#010; // prints Bite of 100 grams of apple 'Braeburn' &#010; // ... irrespective of what else Braeburn.takeBite(int) does.&#010;   &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;pico = new DefaultApache Composer();&#010;-pico.as(INTERCEPT).addComponent(Apple.class, BraeburnApple.class);&#010;+    &lt;pre&gt;container = new DefaultContainer();&#010;+container.as(INTERCEPT).addComponent(Apple.class, BraeburnApple.class);&#010; // etc&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;pico = new ContainerBuilder.withInterception().build();&#010;-pico.addComponent(Apple.class, BraeburnApple.class);&#010;+    &lt;pre&gt;container = new ContainerBuilder.withInterception().build();&#010;+container.addComponent(Apple.class, BraeburnApple.class);&#010; // etc&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;-    &lt;pre&gt;pico = new ContainerBuilder.withBehaviors(interception()).build();&#010;-pico.addComponent(Apple.class, BraeburnApple.class);&#010;+    &lt;pre&gt;container = new ContainerBuilder.withBehaviors(interception()).build();&#010;+container.addComponent(Apple.class, BraeburnApple.class);&#010; // etc&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;&lt;b&gt;Fine grained participation in interception&lt;/b&gt;&lt;br/&gt;Assuming you're passing in the Interceptor to the classes you're using for interception of a component, you can&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/introduction.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/introduction.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/introduction.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/introduction.html Mon Feb  4 03:06:06 2008&#010;@@ -19,14 +19,14 @@&#010; &#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-                    &lt;pre&gt;MutableApache Composer pico = new DefaultApache Composer();&#010;-pico.addComponent(ArrayList.class);&#010;-List list = (List) pico.getComponent(ArrayList.class);&lt;/pre&gt;&#010;+                    &lt;pre&gt;MutableApache Composer container = new DefaultContainer();&#010;+container.addComponent(ArrayList.class);&#010;+List list = (List) container.getComponent(ArrayList.class);&lt;/pre&gt;&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;(i)&lt;a&#010;-    href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;+    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;                                                                                                                                API&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010;@@ -141,15 +141,15 @@&#010; &#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-                    &lt;pre&gt;MutableApache Composer pico = new DefaultApache Composer();&#010;-pico.addComponent(Apple.class);&#010;-pico.addComponent(Juicer.class);&#010;-pico.addComponent(Peeler.class);&lt;/pre&gt;&#010;+                    &lt;pre&gt;MutableApache Composer container = new DefaultContainer();&#010;+container.addComponent(Apple.class);&#010;+container.addComponent(Juicer.class);&#010;+container.addComponent(Peeler.class);&lt;/pre&gt;&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;(i)&lt;a&#010;-    href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;+    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;                                                                                                                                API&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010;@@ -161,7 +161,7 @@&#010; &#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;-        &lt;pre&gt;Juicer juicer = (Juicer) pico.getComponent(Juicer.class);&lt;/pre&gt;&#010;+        &lt;pre&gt;Juicer juicer = (Juicer) container.getComponent(Juicer.class);&lt;/pre&gt;&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010; &#010;@@ -192,7 +192,7 @@&#010;         anywhere. Not nice when you try to build a large enterprise&#010;         application from it).&lt;/p&gt;&#010; &#010;-        &lt;p&gt;&lt;img src="images/pico-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/p&gt;&#010;+        &lt;p&gt;&lt;img src="images/container-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/p&gt;&#010; &#010; &lt;p&gt;A container (and its registered components) can get access to components registered in a parent container, but not&#010;    vice-versa. Consider this example, using the classes from above:&lt;/p&gt;&#010;@@ -206,7 +206,7 @@&#010; &lt;div class="source"&gt;&#010;     &lt;div&gt;&#010;                     &lt;pre&gt;// Create x hierarchy of containers&#010;-MutableApache Composer x = new DefaultApache Composer();&#010;+MutableApache Composer x = new DefaultContainer();&#010; MutableApache Composer y = new DefaultApache Composer( x );&#010; MutableApache Composer z = new DefaultApache Composer( y );&#010; &#010;@@ -225,7 +225,7 @@&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;This can be visualised as follows:&lt;br /&gt;&#010;-    &lt;img src="images/juicer-in-pico-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/p&gt;&#010;+    &lt;img src="images/juicer-in-container-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/p&gt;&#010; &#010; &lt;p&gt;Let's analyse what will happen here:&lt;/p&gt;&#010; &lt;ul&gt;&#010;@@ -241,20 +241,12 @@&#010;           src="/images/icons/emoticons/warning.gif" height="16"&#010;           width="16" align="absmiddle" alt="" border="0" /&gt; Since this&#010;         obviously won't work, keep in mind that this was just an&#010;-        exercise to illustrate how container hierarchies work.&lt;br /&gt;&#010;-        &lt;img class="emoticon"&#010;-          src="/images/icons/emoticons/information.gif" height="16"&#010;-          width="16" align="absmiddle" alt="" border="0" /&gt; For a more&#010;-        concrete example of the usage of container hierarchies, see &lt;a&#010;-          href="http://www.nanocontainer.org/NanoWar" rel="nofollow"&gt;NanoContainer&#010;-        NanoWar&lt;sup&gt;&lt;img class="rendericon"&#010;-          src="/images/icons/linkext7.gif" height="7" width="7"&#010;-          align="absmiddle" alt="" border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;&#010;+        exercise to illustrate how container hierarchies work.&lt;br /&gt;        &#010; &#010;         &lt;h2&gt;Lifecycle&lt;/h2&gt;&#010; &#010; &lt;p&gt;Apache Composer has support for &lt;a href="lifecycle.html" title="Lifecycle"&gt;Lifecycle&lt;/a&gt;. If your classes implement &lt;a&#010;-    href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/Startable.html"&gt;Startable&lt;sup&gt;&lt;img&#010;+    href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/Startable.html"&gt;Startable&lt;sup&gt;&lt;img&#010;     class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;     border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;, you can control the lifecycle of all your objects with a simple method call on the&#010;                            container. The container will figure out the correct order of invocation of start()/stop()&#010;@@ -326,13 +318,13 @@&#010; &#010;             &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.addComponent(ComponentOneImpl.class) // by type&#010;-pico.addComponent(ComponentTwoImpl.class) // by type&#010;-pico.addComponent(new ComponentThreeImpl()) // by instance&#010;-pico.addComponent(ComponentFourImpl.class) // by type&#010;+container = new DefaultContainer();&#010;+container.addComponent(ComponentOneImpl.class) // by type&#010;+container.addComponent(ComponentTwoImpl.class) // by type&#010;+container.addComponent(new ComponentThreeImpl()) // by instance&#010;+container.addComponent(ComponentFourImpl.class) // by type&#010; &#010;-ComponentFourImpl four = pico.getComponent(ComponentFourImpl.class);&#010;+ComponentFourImpl four = container.getComponent(ComponentFourImpl.class);&#010; &lt;/pre&gt;&#010;             &lt;/div&gt;&#010;             &lt;p&gt;Or you can use a &lt;a href="http://www.martinfowler.com/bliki/FluentInterface.html"&gt;fluent&lt;/a&gt; style if you&#010;@@ -340,7 +332,7 @@&#010; &#010;             &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-ComponentFour four = new DefaultApache Composer()&#010;+ComponentFour four = new DefaultContainer()&#010;     .addComponent(ComponentOne.class)&#010;     .addComponent(ComponentTwo.class)&#010;     .addComponent(new ComponentThree())&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/lifecycle.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/lifecycle.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/lifecycle.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/lifecycle.html Mon Feb  4 03:06:06 2008&#010;@@ -44,12 +44,12 @@&#010; ...&#010; &#010; &#010;-pico = new DefaultApache Composer(new StartableLifecycleStrategy());&#010;-pico.addComponent(Apple.class);&#010;-pico.start();&#010;+container = new DefaultApache Composer(new StartableLifecycleStrategy());&#010;+container.addComponent(Apple.class);&#010;+container.start();&#010; // start gets called&#010; &#010;-Apple a = pico.getComponent(Apple.class);&#010;+Apple a = container.getComponent(Apple.class);&#010; &lt;/pre&gt;&lt;/div&gt;&#010; &lt;p&gt;The StartableLifecycleStrategy can be extended if you prefer your&#010; own interface for Startable. Just override&lt;/p&gt;&#010;@@ -71,12 +71,12 @@&#010; ...&#010; &#010; &#010;-pico = new DefaultApache Composer(new ReflectionLifecycleStrategy());&#010;-pico.addComponent(Apple.class);&#010;-pico.start();&#010;+container = new DefaultApache Composer(new ReflectionLifecycleStrategy());&#010;+container.addComponent(Apple.class);&#010;+container.start();&#010; // start gets called&#010; &#010;-Apple a = pico.getComponent(Apple.class);&#010;+Apple a = container.getComponent(Apple.class);&#010; &lt;/pre&gt;&lt;/div&gt;&#010; &#010; &lt;p&gt;If you have other synonyms for start/stop/dispose, just extend&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/mock-objects.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/mock-objects.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/mock-objects.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/mock-objects.html Mon Feb  4 03:06:06 2008&#010;@@ -15,7 +15,7 @@&#010;   &lt;/tr&gt;&#010;   &lt;tr&gt;&#010;     &lt;td&gt;&lt;img src="/images/mock-needs-stuff.png" width="214" height="306" alt="mock needs stuff" /&gt;&lt;/td&gt;&#010;-    &lt;td&gt;&lt;img src="/images/pico-needs-stuff.png" width="214" height="306" alt="pico needs stuff" /&gt;&lt;/td&gt;&#010;+    &lt;td&gt;&lt;img src="/images/container-needs-stuff.png" width="214" height="306" alt="container needs stuff" /&gt;&lt;/td&gt;&#010;   &lt;/tr&gt;&#010; &lt;/table&gt;&#010; &lt;h3&gt;The class&#010;@@ -59,14 +59,13 @@&#010; &lt;div class="source"&gt;&lt;pre&gt;&#010; public class AppBootstrapper {&#010;   public void runapp() {&#010;-    pico = new DefaultApache Composer();&#010;-    pico.addComponent(NeedsStuff.class);&#010;-    pico.addComponent(SuperHeavyBlueStuff.class);&#010;-    pico.addComponent(NuclearGreenStuff.class);&#010;+    container = new DefaultContainer();&#010;+    container.addComponent(NeedsStuff.class);&#010;+    container.addComponent(SuperHeavyBlueStuff.class);&#010;+    container.addComponent(NuclearGreenStuff.class);&#010;   }&#010; }&#010; &lt;/pre&gt;&lt;/div&gt;&#010;-&lt;p&gt;&lt;img src="images/information.gif" width="16" height="16" alt="info" /&gt; It is even possible to do this component wiring using a soft scripting language. See &lt;a href="http://www.nanocontainer.org"&gt;NanoContainer&lt;/a&gt;&lt;/p&gt;&#010; &lt;/body&gt;&#010; &#010; &#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/properties.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/properties.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/properties.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/properties.html Mon Feb  4 03:06:06 2008&#010;@@ -19,31 +19,31 @@&#010; &lt;p&gt;Some examples :&lt;/p&gt;&#010; &#010; &lt;div class="source"&gt;&lt;pre&gt;&#010;-import static org.picocontainer.Characteristics.SDI;&#010;-import static org.picocontainer.Characteristics.CACHE;&#010;+import static org.apache.composer.core.Characteristics.SDI;&#010;+import static org.apache.composer.core.Characteristics.CACHE;&#010; ...&#010;-pico = new DefaultApache Composer();&#010;-pico.as(CACHE).addComponent(Apple.class);&#010;-pico.as(CACHE, SDI).addComponent(Pear.class);&#010;+container = new DefaultContainer();&#010;+container.as(CACHE).addComponent(Apple.class);&#010;+container.as(CACHE, SDI).addComponent(Pear.class);&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;div class="source"&gt;&lt;pre&gt;import static org.picocontainer.Characteristics.SDI;&#010;-import static org.picocontainer.Characteristics.CACHE;&#010;+&lt;div class="source"&gt;&lt;pre&gt;import static org.apache.composer.core.Characteristics.SDI;&#010;+import static org.apache.composer.core.Characteristics.CACHE;&#010; ...&#010;-pico = new DefaultApache Composer();&#010;-pico.change(CACHE).addComponent(Apple.class);&#010;-pico.change(SDI).addComponent(Pear.class);&lt;/pre&gt;&#010;+container = new DefaultContainer();&#010;+container.change(CACHE).addComponent(Apple.class);&#010;+container.change(SDI).addComponent(Pear.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&lt;pre&gt;&#010;-pico = new DefaultApache Composer();&#010;-pico.as(Characteristics.CACHE).addComponent(Apple.class);&#010;-pico.as(Characteristics.CACHE,&#010;+container = new DefaultContainer();&#010;+container.as(Characteristics.CACHE).addComponent(Apple.class);&#010;+container.as(Characteristics.CACHE,&#010;     Characteristics.SDI).addComponent(Pear.class);&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;div class="source"&gt;&lt;pre&gt;pico = new DefaultApache Composer();&#010;-pico.change(Characteristics.CACHE).addComponent(Apple.class);&#010;-pico.change(Characteristics.SDI).addComponent(Pear.class);&lt;/pre&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;container = new DefaultContainer();&#010;+container.change(Characteristics.CACHE).addComponent(Apple.class);&#010;+container.change(Characteristics.SDI).addComponent(Pear.class);&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &#010; &lt;p&gt;Some characteristics are mutually exclusive. For example CDI,&#010;@@ -63,7 +63,7 @@&#010;    BehaviorFactory/InjectionFactory combination that is unaware of the&#010;    characteristics you subsequently use, Apache Composer will object by way of an&#010;    exception as you add the component to the container. See &lt;a href="unprocessed-properties-help.html"&gt;Unprocessed Properties&lt;/a&gt;. &lt;/p&gt;&#010;-&lt;p&gt;Supplied properties (from org.picocontainer.Characteristics) -&lt;/p&gt;&#010;+&lt;p&gt;Supplied properties (from org.apache.composer.core.Characteristics) -&lt;/p&gt;&#010; &lt;ul&gt;&#010;   &lt;li&gt;CDI - added components will be Constructor Dependency Injection.&lt;/li&gt;&#010;   &lt;li&gt;SDI  - added components will be Setter Dependency Injection.&lt;/li&gt;&#010;@@ -81,6 +81,6 @@&#010;   &lt;li&gt;USE_NAMES - use the parameter names of the component's constructor (or injection method) for the binding of configuration or components.&lt;/li&gt;&#010; &lt;/ul&gt;&#010; &lt;h3&gt;Custom Properties&lt;/h3&gt;&#010;-&lt;p&gt;You can make your own properties quite easily - check out the source to &lt;a href="http://svn.codehaus.org/picocontainer/java/2.x/trunk/pico/container/src/java/org/picocontainer/Characteristics.java"&gt;Characteristics.java&lt;/a&gt; and the classes that refer to it in Apache Composer (various implementations of ComponentFactory and ComponentAdapter). &lt;/p&gt;&#010;+&lt;p&gt;You can make your own properties quite easily - check out the source to &lt;a href="http://svn.codehaus.org/containercontainer/java/2.x/trunk/container/container/src/java/org/containercontainer/Characteristics.java"&gt;Characteristics.java&lt;/a&gt; and the classes that refer to it in Apache Composer (various implementations of ComponentFactory and ComponentAdapter). &lt;/p&gt;&#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/scopes.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/scopes.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/scopes.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/scopes.html Mon Feb  4 03:06:06 2008&#010;@@ -20,7 +20,7 @@&#010; &lt;p&gt;Here are examples of parent/child setup:&lt;/p&gt;&#010;     &lt;div class="source"&gt;&#010;       &lt;pre&gt;&#010;-parent = new DefaultApache Composer();&#010;+parent = new DefaultContainer();&#010; parent.addComponent(Apple.class);&#010; parent.addComponent(Orange.class);&#010; parent.addComponent(Pear.class);&#010;@@ -33,11 +33,11 @@&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-parent = new DefaultApache Composer();&#010;+parent = new DefaultContainer();&#010; parent.addComponent(Apple.class);&#010; parent.addComponent(Orange.class);&#010; parent.addComponent(Pear.class);&#010;-child = parent.addChildContainer(new DefaultApache Composer());&#010;+child = parent.addChildContainer(new DefaultContainer());&#010; child.addComponent(DependsOnApple.class);&#010; // this is NOT OK. child can't see parent&#010; parent.start();&#010;@@ -46,7 +46,7 @@&#010; &lt;/div&gt;&#010; &lt;div class="source"&gt;&#010;   &lt;pre&gt;&#010;-parent = new DefaultApache Composer();&#010;+parent = new DefaultContainer();&#010; parent.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class);&#010; child = parent.addChildContainer(new DefaultApache Composer(parent));&#010; child.addComponent(DependsOnApple.class);&#010;@@ -55,7 +55,7 @@&#010; // cascades to child just fine&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;div class="source"&gt;&lt;pre&gt;parent = new DefaultApache Composer();&#010;+&lt;div class="source"&gt;&lt;pre&gt;parent = new DefaultContainer();&#010; parent.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class);&#010; child = new DefaultApache Composer(parent);&#010; child.addComponent(DependsOnApple.class);&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/setter-injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/setter-injection.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/setter-injection.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/setter-injection.html Mon Feb  4 03:06:06 2008&#010;@@ -68,7 +68,7 @@&#010;     &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt; variant where an object gets all&#010;                                                                                    dependencies via setter methods.&#010;                                                                                    Apache Composer support this with&#010;-    &lt;a href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/defaults/SetterInjectionComponentAdapter.html"&gt;SetterInjectionComponentAdapter&lt;/a&gt;,&#010;+    &lt;a href="http://www.containercontainer.org/containercontainer/latest/containercontainer/apidocs/org/containercontainer/defaults/SetterInjectionComponentAdapter.html"&gt;SetterInjectionComponentAdapter&lt;/a&gt;,&#010;                                                                                                                                                                                          but&#010;                                                                                                                                                                                          the&#010;                                                                                                                                                                                          Apache Composer&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/team.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/team.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/team.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/team.html Mon Feb  4 03:06:06 2008&#010;@@ -13,7 +13,7 @@&#010; &lt;p&gt;Paul is also well known for &lt;a href="http://sourceforge.net/projects/eob"&gt;Enterprise Object Broker&lt;/a&gt; and &lt;a href="http://jesktopapps.sf.net/"&gt;Jesktop&lt;/a&gt;, the &lt;a href="http://openqa.org/selenium-rc/"&gt;original driven side of Selenium&lt;/a&gt; and other stupid ideas like &lt;a href="http://sourceforge.net/projects/thicky"&gt;Thicky&lt;/a&gt; and related &lt;a href="http://paulhammant.com/blog/ruby-versus-javascript-for-web3.0.html"&gt;early Web 3.0 references&lt;/a&gt;&lt;/p&gt;&#010; &lt;h3&gt;&lt;p&gt;Konstantin Pribluda&lt;/p&gt;&lt;/h3&gt;&#010; &lt;p&gt;I'm 32 and live in Wiesbaden. I started programming at the age of 12 and had access to really cool systems ranging from WANG 3200 through PDP 8/11 to System-360 ( actually sovjet clones of them, but who cares? ). My first &amp;quot;paid for&amp;quot; work was in 1988, and from that point I financed my study freelance software development. I developed fiscal management systems, medical video archiving, internet applications for telcos and java applet games ( later was for personal fun )...&lt;/p&gt;&#010;-&lt;p&gt;After study I continued to freelance ( this time for better paying, but also fast failing ) companies and started to work on open source software ( xdoclet ). Now I'm permanently hired project leader, and I'am in position to use ( and develop ) whatever technologies I see fit - of course xdoclet, pico, nano and a lot of other stuff.&lt;/p&gt;&#010;+&lt;p&gt;After study I continued to freelance ( this time for better paying, but also fast failing ) companies and started to work on open source software ( xdoclet ). Now I'm permanently hired project leader, and I'am in position to use ( and develop ) whatever technologies I see fit - of course xdoclet, containers and a lot of other stuff.&lt;/p&gt;&#010; &lt;p&gt;My biggest private interest ( besides open source programming ) is mountainbike racing.&lt;/p&gt;&#010; &lt;h3&gt;&lt;p&gt;J&amp;ouml;rg Schaible&lt;/p&gt;&lt;/h3&gt;&#010; &lt;p&gt;I was invited by Paul and Aslak early in 2004 to participate on the development of this project. I am currently 36 and write code for nearly 20 years in several languages and lately also Java. I have experience in AI software, did system programming and developed and maintained a plattform-independent GUI and database framework, and had to deal with CMS programming in JavaScript and J2EE. I was always involved in automated builds and tests for all these projects and one artifact left is JsUnit.&lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/templates/skin.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/templates/skin.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/templates/skin.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/templates/skin.html Mon Feb  4 03:06:06 2008&#010;@@ -4,7 +4,7 @@&#010; &lt;title&gt;${title}&lt;/title&gt;&#010; &#010; &lt;style type="text/css" media="all"&gt;&#010;-@import url("./style/pico.css");&#010;+@import url("./style/composer.css");&#010; &#010; @import url("./style/syntaxhighlighter.css");&#010; &lt;/style&gt;&#010;@@ -30,7 +30,7 @@&#010; &#010; &lt;body class="composite"&gt;&#010; &#010;-&lt;div id="banner"&gt;&lt;img src="images/pico-logo.png"&#010;+&lt;div id="banner"&gt;&lt;img src=""&#010;   alt="Apache Composer" /&gt;&#010; &lt;div class="clear"&gt;&#010; &lt;/div&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618234 [1/2] - in /incubator/composer/trunk: composer-core/src/main/java/org/apache/composer/core/ composer-core/src/main/java/org/apache/composer/core/adapters/ composer-core/src/main/java/org/apache/composer/core/behaviors/ composer-core...</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204110627.EAAA21A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204110627-EAAA21A9832@eris-apache-org%3e</id>
<updated>2008-02-04T11:06:19Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 03:06:06 2008&#010;New Revision: 618234&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618234&amp;view=rev&#010;Log:&#010;Cleanup after import of docs and gems.&#010;&#010;Added:&#010;    incubator/composer/trunk/composer-site/src/site/resources/images/container-hierarchy.png&#010;      - copied unchanged from r618229, incubator/composer/trunk/composer-site/src/site/resources/images/pico-hierarchy.png&#010;    incubator/composer/trunk/composer-site/src/site/resources/images/container-needs-stuff.png&#010;      - copied unchanged from r618229, incubator/composer/trunk/composer-site/src/site/resources/images/pico-needs-stuff.png&#010;    incubator/composer/trunk/composer-site/src/site/resources/style/composer.css&#010;      - copied unchanged from r618229, incubator/composer/trunk/composer-site/src/site/resources/style/pico.css&#010;Removed:&#010;    incubator/composer/trunk/composer-site/src/site/resources/images/pico-hierarchy.png&#010;    incubator/composer/trunk/composer-site/src/site/resources/images/pico-logo.png&#010;    incubator/composer/trunk/composer-site/src/site/resources/images/pico-needs-stuff.png&#010;    incubator/composer/trunk/composer-site/src/site/resources/style/pico.css&#010;Modified:&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/StaticFactoryAdapter.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalized.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalizing.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilated.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilating.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/HotSwapping.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Pooled.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/ComponentDependencyMonitor.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/Log4JComponentMonitor.java&#010;    incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/package.html&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/Elephant.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantImpl.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantProxy.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalComponentAdapterTest.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalReferenceTest.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalizingTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AsmImplementationHidingTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatedTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatingTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/HotSwappingTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/PooledTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/AggregateDemoHacks.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/DependencySetTestCase.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/CompatibleTouchable.java&#010;    incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/DependsOnDependsOnListAndVector.java&#010;    incubator/composer/trunk/composer-site/   (props changed)&#010;    incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/adapters.html&#010;    incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html&#010;    incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html&#010;    incubator/composer/trunk/composer-site/src/site/content/behaviors.html&#010;    incubator/composer/trunk/composer-site/src/site/content/builder.html&#010;    incubator/composer/trunk/composer-site/src/site/content/component-configuration.html&#010;    incubator/composer/trunk/composer-site/src/site/content/disambiguation.html&#010;    incubator/composer/trunk/composer-site/src/site/content/faq.html&#010;    incubator/composer/trunk/composer-site/src/site/content/fluent-style.html&#010;    incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html&#010;    incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html&#010;    incubator/composer/trunk/composer-site/src/site/content/index.html&#010;    incubator/composer/trunk/composer-site/src/site/content/injection.html&#010;    incubator/composer/trunk/composer-site/src/site/content/interception.html&#010;    incubator/composer/trunk/composer-site/src/site/content/introduction.html&#010;    incubator/composer/trunk/composer-site/src/site/content/lifecycle.html&#010;    incubator/composer/trunk/composer-site/src/site/content/mock-objects.html&#010;    incubator/composer/trunk/composer-site/src/site/content/properties.html&#010;    incubator/composer/trunk/composer-site/src/site/content/scopes.html&#010;    incubator/composer/trunk/composer-site/src/site/content/setter-injection.html&#010;    incubator/composer/trunk/composer-site/src/site/content/team.html&#010;    incubator/composer/trunk/composer-site/src/site/templates/skin.html&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/StaticFactoryAdapter.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/StaticFactoryAdapter.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/StaticFactoryAdapter.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/StaticFactoryAdapter.java Mon Feb  4 03:06:06 2008&#010;@@ -56,7 +56,7 @@&#010; &#010;     /**&#010;      * @return Returns the component created by the static factory.&#010;-     * @see org.picocontainer.ComponentAdapter#getComponentInstance(org.picocontainer.PicoContainer)&#010;+     * @see org.apache.composer.core.ComponentAdapter#getComponentInstance(org.apache.composer.core.Container)&#010;      */&#010;     public Object getComponentInstance(Container container) throws CompositionException {&#010;         return staticFactory.get();&#010;@@ -65,7 +65,7 @@&#010;     /**&#010;      * {@inheritDoc}&#010;      *&#010;-     * @see org.picocontainer.ComponentAdapter#verify(org.picocontainer.PicoContainer)&#010;+     * @see org.apache.composer.core.ComponentAdapter#verify(org.apache.composer.core.Container)&#010;      */&#010;     public void verify(Container container) throws VerificationException {&#010;     }&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalized.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalized.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalized.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalized.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaible                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; package org.apache.composer.core.adapters;&#010; &#010; import com.thoughtworks.proxy.Invoker;&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalizing.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalizing.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalizing.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/adapters/ThreadLocalizing.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaible                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.adapters;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilated.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilated.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilated.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilated.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (C) NanoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaibe                                            *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.behaviors;&#010; &#010;@@ -106,7 +113,7 @@&#010;      * Create and return a component instance. If the component instance and the type to assimilate is not compatible, a proxy&#010;      * for the instance is generated, that implements the assimilated type.&#010;      * &#010;-     * @see AbstractBehavior#getComponentInstance(org.picocontainer.PicoContainer)&#010;+     * @see AbstractBehavior#getComponentInstance(org.apache.composer.core.Container)&#010;      */&#010;     public Object getComponentInstance(final Container container)&#010;             throws CompositionException  {&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilating.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilating.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilating.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Assimilating.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (C) NanoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaibe                                            *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.behaviors;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/HotSwapping.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/HotSwapping.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/HotSwapping.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/HotSwapping.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Idea by Rachel Davies, Original code by Aslak Hellesoy and Paul Hammant   *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.behaviors;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Pooled.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Pooled.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Pooled.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/behaviors/Pooled.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (C) NanoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Aslak Hellesoy &amp; Joerg Schaible                                       *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; package org.apache.composer.core.behaviors;&#010; &#010; import com.thoughtworks.proxy.ProxyFactory;&#010;@@ -378,7 +385,7 @@&#010; &#010;     /**&#010;      * Stop of the container has no effect for the pool. Applies only if the delegated&#010;-     * {@link ComponentAdapter} supports a lifecylce by implementing {@link org.picocontainer.LifecycleStrategy}.&#010;+     * {@link ComponentAdapter} supports a lifecylce by implementing {@link org.apache.composer.core.LifecycleStrategy}.&#010;      * &#010;      * @throws IllegalStateException if pool was already disposed&#010;      */&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/ComponentDependencyMonitor.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/ComponentDependencyMonitor.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/ComponentDependencyMonitor.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/ComponentDependencyMonitor.java Mon Feb  4 03:06:06 2008&#010;@@ -23,8 +23,7 @@&#010; import java.lang.reflect.Constructor;&#010; &#010; /**&#010;- * Understands how to capture component dependency information from&#010;- * picocontainer.&#010;+ * Understands how to capture component dependency information from the container.&#010;  * &#010;  * @author Peter Barry&#010;  * @author Kent R. Spillner&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/Log4JComponentMonitor.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/Log4JComponentMonitor.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/Log4JComponentMonitor.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/monitors/Log4JComponentMonitor.java Mon Feb  4 03:06:06 2008&#010;@@ -34,7 +34,7 @@&#010; &#010; &#010; /**&#010;- * A {@link org.picocontainer.ComponentMonitor} which writes to a Log4J {@link org.apache.log4j.Logger} instance.&#010;+ * A {@link org.apache.composer.core.ComponentMonitor} which writes to a Log4J {@link org.apache.log4j.Logger} instance.&#010;  * The Logger instance can either be injected or, if not set, the {@link LogManager LogManager}&#010;  * will be used to retrieve it at every invocation of the monitor.&#010;  *&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/package.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/package.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/package.html (original)&#010;+++ incubator/composer/trunk/composer-core/src/main/java/org/apache/composer/core/package.html Mon Feb  4 03:06:06 2008&#010;@@ -21,7 +21,7 @@&#010; &#010; &lt;p&gt;An extensive user guide,&#010; a list of Frequently Asked Questions (FAQ) with answers and a lot more information is available from the&#010;-&lt;a href="http://www.picocontainer.org/"&gt;Apache Composer&lt;/a&gt; website. You can also find various extensions, wrappers&#010;+&lt;a href="http://incubator.apache.org/composer"&gt;Apache Composer&lt;/a&gt; website. You can also find various extensions, wrappers&#010; and utility libraries that are based on this core API there.&lt;/p&gt;&#010; &lt;/body&gt;&#010; &lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/Elephant.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/Elephant.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/Elephant.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/Elephant.java Mon Feb  4 03:06:06 2008&#010;@@ -1,11 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.adapters;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantImpl.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantImpl.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantImpl.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantImpl.java Mon Feb  4 03:06:06 2008&#010;@@ -1,11 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.adapters;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantProxy.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantProxy.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantProxy.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ElephantProxy.java Mon Feb  4 03:06:06 2008&#010;@@ -1,11 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.adapters;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalComponentAdapterTest.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalComponentAdapterTest.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalComponentAdapterTest.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalComponentAdapterTest.java Mon Feb  4 03:06:06 2008&#010;@@ -1,13 +1,20 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaible                                           *&#010;- *****************************************************************************/&#010;-package org.picocontainer.gems.adapters;&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010;+package org.apache.composer.core.adapters;&#010; &#010; &#010; import org.apache.composer.core.ComponentAdapter;&#010;@@ -55,12 +62,12 @@&#010;     }&#010; &#010;     @Override&#010;-    protected ComponentAdapter prepDEF_verifyWithoutDependencyWorks(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepDEF_verifyWithoutDependencyWorks(MutableContainer container) {&#010;         return createComponentAdapterWithSimpleTouchable();&#010;     }&#010; &#010;     @Override&#010;-    protected ComponentAdapter prepDEF_verifyDoesNotInstantiate(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepDEF_verifyDoesNotInstantiate(MutableContainer container) {&#010;         return createComponentAdapterWithSimpleTouchable();&#010;     }&#010; &#010;@@ -70,18 +77,18 @@&#010;     }&#010; &#010;     @Override&#010;-    protected ComponentAdapter prepDEF_isAbleToTakeParameters(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepDEF_isAbleToTakeParameters(MutableContainer container) {&#010;         return new ThreadLocalized(new ConstructorInjector(&#010;             List.class, ArrayList.class, new Parameter[] {new ConstantParameter(10)}, new NullComponentMonitor(), new NullLifecycleStrategy(), false));&#010;     }&#010; &#010;     @Override&#010;-    protected ComponentAdapter prepSER_isSerializable(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepSER_isSerializable(MutableContainer container) {&#010;         return createComponentAdapterWithSimpleTouchable();&#010;     }&#010; &#010;     @Override&#010;-    protected ComponentAdapter prepSER_isXStreamSerializable(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepSER_isXStreamSerializable(MutableContainer container) {&#010;         return createComponentAdapterWithSimpleTouchable();&#010;     }&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalReferenceTest.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalReferenceTest.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalReferenceTest.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalReferenceTest.java Mon Feb  4 03:06:06 2008&#010;@@ -1,13 +1,20 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaible                                           *&#010;- *****************************************************************************/&#010;-package org.picocontainer.gems.adapters;&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010;+package org.apache.composer.core.adapters;&#010; &#010; import org.apache.composer.core.ObjectReference;&#010; import org.apache.composer.core.references.ThreadLocalReference;&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalizingTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalizingTestCase.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalizingTestCase.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/adapters/ThreadLocalizingTestCase.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaible                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.adapters;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AsmImplementationHidingTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AsmImplementationHidingTestCase.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AsmImplementationHidingTestCase.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AsmImplementationHidingTestCase.java Mon Feb  4 03:06:06 2008&#010;@@ -1,11 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.behaviors;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatedTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatedTestCase.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatedTestCase.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatedTestCase.java Mon Feb  4 03:06:06 2008&#010;@@ -141,11 +141,11 @@&#010;                 CompatibleTouchable.class, CompatibleTouchable.class, null, new NullComponentMonitor(), new NullLifecycleStrategy(), false));&#010;     }&#010; &#010;-    protected ComponentAdapter prepDEF_verifyWithoutDependencyWorks(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepDEF_verifyWithoutDependencyWorks(MutableContainer container) {&#010;         return createComponentAdapterWithTouchable();&#010;     }&#010; &#010;-    protected ComponentAdapter prepDEF_verifyDoesNotInstantiate(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepDEF_verifyDoesNotInstantiate(MutableContainer container) {&#010;         return createComponentAdapterWithTouchable();&#010;     }&#010; &#010;@@ -153,13 +153,13 @@&#010;         return createComponentAdapterWithTouchable();&#010;     }&#010; &#010;-    protected ComponentAdapter prepSER_isSerializable(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepSER_isSerializable(MutableContainer container) {&#010;         return new Assimilated(Touchable.class, new InstanceAdapter&lt;CompatibleTouchable&gt;(&#010;                 CompatibleTouchable.class, new CompatibleTouchable(), new NullLifecycleStrategy(),&#010;                                                                         new NullComponentMonitor()), new CglibProxyFactory());&#010;     }&#010; &#010;-    protected ComponentAdapter prepSER_isXStreamSerializable(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepSER_isXStreamSerializable(MutableContainer container) {&#010;         return createComponentAdapterWithTouchable();&#010;     }&#010; }&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatingTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatingTestCase.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatingTestCase.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/AssimilatingTestCase.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (C) NanoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaibe                                            *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.behaviors;&#010; &#010;@@ -29,7 +36,7 @@&#010; public class AssimilatingTestCase extends AbstractComponentFactoryTest {&#010; &#010;     /**&#010;-     * @see org.picocontainer.tck.AbstractComponentFactoryTestCase#createComponentFactory()&#010;+     * @see org.apache.composer.core.tck.AbstractComponentFactoryTestCase#createComponentFactory()&#010;      */&#010;     protected ComponentFactory createComponentFactory() {&#010;         return new Assimilating(Touchable.class).wrap(new ConstructorInjection());&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/HotSwappingTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/HotSwappingTestCase.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/HotSwappingTestCase.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/HotSwappingTestCase.java Mon Feb  4 03:06:06 2008&#010;@@ -1,11 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.behaviors;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/PooledTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/PooledTestCase.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/PooledTestCase.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/behaviors/PooledTestCase.java Mon Feb  4 03:06:06 2008&#010;@@ -260,18 +260,18 @@&#010;     }&#010; &#010;     /**&#010;-     * Prepare the test &lt;em&gt;lifecycleManagerSupport&lt;/em&gt;. Prepare the delivered PicoContainer with an adapter, that&#010;+     * Prepare the test &lt;em&gt;lifecycleManagerSupport&lt;/em&gt;. Prepare the delivered container with an adapter, that&#010;      * has a lifecycle and use a StringBuffer registered in the container to record the lifecycle method invocations.&#010;      * The recorded String in the buffer must result in &lt;strong&gt;&amp;qout;&amp;lt;OneOne&amp;gt;!One&amp;qout;&lt;/strong&gt;. The addAdapter&#010;      * top test should be registered in the container and delivered as return value.&#010;-     * @param picoContainer the container&#010;+     * @param container the container&#010;      * @return the adapter to test&#010;      */&#010;-    private ComponentAdapter prepDEF_lifecycleManagerSupport(MutableContainer picoContainer) {&#010;-        picoContainer.addComponent(RecordingLifecycle.One.class);&#010;+    private ComponentAdapter prepDEF_lifecycleManagerSupport(MutableContainer container) {&#010;+        container.addComponent(RecordingLifecycle.One.class);&#010;         Pooled poolingBehavior = new Pooled(new ConstructorInjector(&#010;                 RecordingLifecycle.Recorder.class, RecordingLifecycle.Two.class, null, new NullComponentMonitor(), new NullLifecycleStrategy(), false), new Pooled.DefaultContext());&#010;-        return picoContainer.addAdapter(poolingBehavior).getComponentAdapter(RecordingLifecycle.One.class, (NameBinding) null);&#010;+        return container.addAdapter(poolingBehavior).getComponentAdapter(RecordingLifecycle.One.class, (NameBinding) null);&#010;     }&#010; &#010;     public void testDEF_lifecycleManagerSupport() {&#010;@@ -279,15 +279,15 @@&#010;             final Class type = getComponentAdapterType();&#010;             if (Behavior.class.isAssignableFrom(type)) {&#010;                 final StringBuffer buffer = new StringBuffer();&#010;-                final MutableContainer picoContainer = new DefaultContainer(&#010;+                final MutableContainer container = new DefaultContainer(&#010;                         createDefaultComponentFactory());&#010;-                picoContainer.addComponent(buffer);&#010;-                final ComponentAdapter componentAdapter = prepDEF_lifecycleManagerSupport(picoContainer);&#010;+                container.addComponent(buffer);&#010;+                final ComponentAdapter componentAdapter = prepDEF_lifecycleManagerSupport(container);&#010;                 assertSame(getComponentAdapterType(), componentAdapter.getClass());&#010;                 assertEquals(0, buffer.length());&#010;-                picoContainer.start();&#010;-                picoContainer.stop();&#010;-                picoContainer.dispose();&#010;+                container.start();&#010;+                container.stop();&#010;+                container.dispose();&#010;                 // @todo Move test to AbstractAbstractCATC&#010;                 assertEquals("&lt;OneOne&gt;!One", buffer.toString());&#010;             }&#010;@@ -295,19 +295,19 @@&#010;     }&#010; &#010;     /**&#010;-     * Prepare the test &lt;em&gt;lifecycleManagerHonorsInstantiationSequence&lt;/em&gt;. Prepare the delivered PicoContainer&#010;+     * Prepare the test &lt;em&gt;lifecycleManagerHonorsInstantiationSequence&lt;/em&gt;. Prepare the delivered container&#010;      * with addAdapter(s), that have dependend components, have a lifecycle and use a StringBuffer registered in the&#010;      * container to record the lifecycle method invocations. The recorded String in the buffer must result in&#010;      * &lt;strong&gt;&amp;qout;&amp;lt;One&amp;lt;TwoTwo&amp;gt;One&amp;gt;!Two!One&amp;qout;&lt;/strong&gt;. The adapter top test should be registered in&#010;      * the container and delivered as return value.&#010;-     * @param picoContainer the container&#010;+     * @param container the container&#010;      * @return the adapter to test&#010;      */&#010;-    private ComponentAdapter prepRES_lifecycleManagerHonorsInstantiationSequence(MutableContainer picoContainer) {&#010;-        picoContainer.addComponent(RecordingLifecycle.One.class);&#010;+    private ComponentAdapter prepRES_lifecycleManagerHonorsInstantiationSequence(MutableContainer container) {&#010;+        container.addComponent(RecordingLifecycle.One.class);&#010;         Pooled poolingBehavior = new Pooled(new ConstructorInjector(&#010;                 RecordingLifecycle.Recorder.class, RecordingLifecycle.Two.class, null, new NullComponentMonitor(), new NullLifecycleStrategy(), false), new Pooled.DefaultContext());&#010;-        return picoContainer.addAdapter(poolingBehavior).getComponentAdapter(RecordingLifecycle.Two.class, (NameBinding) null);&#010;+        return container.addAdapter(poolingBehavior).getComponentAdapter(RecordingLifecycle.Two.class, (NameBinding) null);&#010;     }&#010; &#010;     public void testRES_lifecycleManagerHonorsInstantiationSequence() {&#010;@@ -315,15 +315,15 @@&#010;             final Class type = getComponentAdapterType();&#010;             if (Behavior.class.isAssignableFrom(type)) {&#010;                 final StringBuffer buffer = new StringBuffer();&#010;-                final MutableContainer picoContainer = new DefaultContainer(&#010;+                final MutableContainer container = new DefaultContainer(&#010;                         createDefaultComponentFactory());&#010;-                picoContainer.addComponent(buffer);&#010;-                final ComponentAdapter componentAdapter = prepRES_lifecycleManagerHonorsInstantiationSequence(picoContainer);&#010;+                container.addComponent(buffer);&#010;+                final ComponentAdapter componentAdapter = prepRES_lifecycleManagerHonorsInstantiationSequence(container);&#010;                 assertSame(getComponentAdapterType(), componentAdapter.getClass());&#010;                 assertEquals(0, buffer.length());&#010;-                picoContainer.start();&#010;-                picoContainer.stop();&#010;-                picoContainer.dispose();&#010;+                container.start();&#010;+                container.stop();&#010;+                container.dispose();&#010;                 // @todo Move test to AbstractAbstractCATC&#010;                 assertEquals("&lt;One&lt;TwoTwo&gt;One&gt;!Two!One", buffer.toString());&#010;             }&#010;@@ -345,11 +345,11 @@&#010;                 Touchable.class, SimpleTouchable.class, null, new NullComponentMonitor(), new NullLifecycleStrategy(), false), new Pooled.DefaultContext());&#010;     }&#010; &#010;-    protected ComponentAdapter prepDEF_verifyWithoutDependencyWorks(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepDEF_verifyWithoutDependencyWorks(MutableContainer container) {&#010;         return createPoolOfTouchables();&#010;     }&#010; &#010;-    protected ComponentAdapter prepDEF_verifyDoesNotInstantiate(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepDEF_verifyDoesNotInstantiate(MutableContainer container) {&#010;         return createPoolOfTouchables();&#010;     }&#010; &#010;@@ -362,11 +362,11 @@&#010;                 Identifiable.class, InstanceCounter.class, null, new NullComponentMonitor(), new NullLifecycleStrategy(), false), new Pooled.DefaultContext());&#010;     }&#010; &#010;-    protected ComponentAdapter prepSER_isSerializable(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepSER_isSerializable(MutableContainer container) {&#010;         return createSerializable();&#010;     }&#010; &#010;-    protected ComponentAdapter prepSER_isXStreamSerializable(MutableContainer picoContainer) {&#010;+    protected ComponentAdapter prepSER_isXStreamSerializable(MutableContainer container) {&#010;         return createSerializable();&#010;     }&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/AggregateDemoHacks.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/AggregateDemoHacks.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/AggregateDemoHacks.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/AggregateDemoHacks.java Mon Feb  4 03:06:06 2008&#010;@@ -1,4 +1,20 @@&#010;-package org.picocontainer.gems.monitors.prefuse;&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010;+package org.apache.composer.core.monitors.prefuse;&#010; &#010; import java.awt.Cursor;&#010; import java.awt.event.MouseEvent;&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/DependencySetTestCase.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/DependencySetTestCase.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/DependencySetTestCase.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/monitors/prefuse/DependencySetTestCase.java Mon Feb  4 03:06:06 2008&#010;@@ -15,7 +15,7 @@&#010;  * limitations under the License.&#010;  */&#010; &#010;-package org.apache.composer.monitors.prefuse;&#010;+package org.apache.composer.core.monitors.prefuse;&#010; &#010; import org.apache.composer.core.monitors.ComponentDependencyMonitor;&#010; import org.apache.composer.core.monitors.prefuse.ComponentDependencyListener;&#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/CompatibleTouchable.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/CompatibleTouchable.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/CompatibleTouchable.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/CompatibleTouchable.java Mon Feb  4 03:06:06 2008&#010;@@ -1,12 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (C) NanoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- * Original code by Joerg Schaibe                                            *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.testmodel;&#010; &#010;&#010;Modified: incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/DependsOnDependsOnListAndVector.java&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/DependsOnDependsOnListAndVector.java?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/DependsOnDependsOnListAndVector.java (original)&#010;+++ incubator/composer/trunk/composer-core/src/test/java/org/apache/composer/core/testmodel/DependsOnDependsOnListAndVector.java Mon Feb  4 03:06:06 2008&#010;@@ -1,11 +1,19 @@&#010;-/*****************************************************************************&#010;- * Copyright (c) PicoContainer Organization. All rights reserved.            *&#010;- * ------------------------------------------------------------------------- *&#010;- * The software in this package is published under the terms of the BSD      *&#010;- * style license a copy of which has been included with this distribution in *&#010;- * the LICENSE.txt file.                                                     *&#010;- *                                                                           *&#010;- *****************************************************************************/&#010;+/**&#010;+ * Licensed to the Apache Software Foundation (ASF) under one or more&#010;+ * contributor license agreements.  See the NOTICE file distributed with&#010;+ * this work for additional information regarding copyright ownership.&#010;+ * The ASF licenses this file to You under the Apache License, Version 2.0&#010;+ * (the "License"); you may not use this file except in compliance with&#010;+ * the License.  You may obtain a copy of the License at&#010;+ *&#010;+ *      http://www.apache.org/licenses/LICENSE-2.0&#010;+ *&#010;+ * Unless required by applicable law or agreed to in writing, software&#010;+ * distributed under the License is distributed on an "AS IS" BASIS,&#010;+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#010;+ * See the License for the specific language governing permissions and&#010;+ * limitations under the License.&#010;+ */&#010; &#010; package org.apache.composer.core.testmodel;&#010; &#010;&#010;Propchange: incubator/composer/trunk/composer-site/&#010;------------------------------------------------------------------------------&#010;--- svn:ignore (added)&#010;+++ svn:ignore Mon Feb  4 03:06:06 2008&#010;@@ -0,0 +1 @@&#010;+target&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html Mon Feb  4 03:06:06 2008&#010;@@ -41,14 +41,14 @@&#010; &#010; ...&#010; &#010;-java -jar myAppJar.jar -cp picocontainer-2.0.jar timeout=100 spellingWebServiceURL=http://ws.com/someService.wsdl&lt;/pre&gt;&#010;+java -jar myAppJar.jar -cp containercontainer-2.0.jar timeout=100 spellingWebServiceURL=http://ws.com/someService.wsdl&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Here is another manual use forcing an association between a item in the properties file, and the relative position of a parameter in the constructor:&lt;/p&gt;&#010; &lt;div class="source"&gt;&#010; &lt;pre&gt;mpc.addComponent(BigFatComponent.class, ConfigParameter(&amp;quot;config1&amp;quot;), ConfigParameter(&amp;quot;moreConfig&amp;quot;));&#010; ...&#010; &#010;-java -jar myAppJar.jar -cp picocontainer-2.0.jar config1=http://ws.com/someService.wsd moreConfig=100 &lt;/pre&gt;&#010;+java -jar myAppJar.jar -cp containercontainer-2.0.jar config1=http://ws.com/someService.wsd moreConfig=100 &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Type conversion is automatic in many cases. Properties in a properties file are clearly strings. Parameters can be any of:&lt;/p&gt;&#010;         &lt;ul&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html Mon Feb  4 03:06:06 2008&#010;@@ -9,7 +9,7 @@&#010; DefaultApache Composer is the main workhorse container.  &#010; &lt;p&gt;Here is an example of use:&#010; &lt;div class="source"&gt;&#010;-&lt;pre&gt;DefaultApache Composer dpc = new DefaultApache Composer();&#010;+&lt;pre&gt;DefaultApache Composer dpc = new DefaultContainer();&#010; dpc.addComponent(Foo.class, FooImpl.class);&#010; Foo foo = dpc.getComponent(Foo.class)&lt;/pre&gt;&#010; &lt;/div&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html Mon Feb  4 03:06:06 2008&#010;@@ -44,7 +44,7 @@&#010; &lt;p&gt; System properties can be set for the scope of the application only, as you start the application: &lt;/p&gt;&#010; &lt;div class="source"&gt;&#010; &lt;pre&gt;&#010;-java -Dwebservice.url=http://servicehost/service -Dwebservice.timeout=50 -jar myAppJar.jar -cp picocontainer-2.0.jar&lt;/pre&gt;&#010;+java -Dwebservice.url=http://servicehost/service -Dwebservice.timeout=50 -jar myAppJar.jar -cp containercontainer-2.0.jar&lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;p&gt;Type conversion is automatic in many cases. Properties in a properties file are clearly strings. Parameters can be any of:&lt;/p&gt;&#010; &lt;ul&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/adapters.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/adapters.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/adapters.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/adapters.html Mon Feb  4 03:06:06 2008&#010;@@ -13,8 +13,8 @@&#010;   public MyAdapter() {&#010;     super(QuantumEntanglement.class, QuantumEntanglementImpl.class);&#010;   }&#010;-  public Object getComponent(Apache Composer pico) {&#010;-    Auditor a = pico.getComponent(Auditor.class);&#010;+  public Object getComponent(Apache Composer container) {&#010;+    Auditor a = container.getComponent(Auditor.class);&#010;     a.audit("QE used", new Date());&#010;     return qe;&#010;   }&#010;@@ -22,9 +22,9 @@&#010;   }&#010; }&#010; ...&#010;-pico = new DefaultApache Composer();&#010;-pico.addAdapter(new MyAdapter());&#010;-QuantumEntanglement e = pico.getComponent(QuantumEntanglement.class);&#010;+container = new DefaultContainer();&#010;+container.addAdapter(new MyAdapter());&#010;+QuantumEntanglement e = container.getComponent(QuantumEntanglement.class);&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010; &lt;/body&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/antipatterns/container-dependency-antipattern.html Mon Feb  4 03:06:06 2008&#010;@@ -27,12 +27,12 @@&#010; public class BImpl implements B {&#010;     private final A a;&#010; &#010;-    BImpl(Apache Composer pico) {&#010;-        a = (A) pico.getComponentOfType(A.class);&#010;+    BImpl(Apache Composer container) {&#010;+        a = (A) container.getComponentOfType(A.class);&#010;         &#010;         /*&#010;         alternatively:&#010;-        a = (A) pico.getComponent(&amp;quot;a&amp;quot;);&#010;+        a = (A) container.getComponent(&amp;quot;a&amp;quot;);&#010;         */&#010;     }&#010; }&lt;/pre&gt;&#010;@@ -42,13 +42,13 @@&#010; &#010;     &lt;div class="source"&gt;&#010;         &lt;div&gt;&#010;-            &lt;pre&gt;MutableApache Composer pico = new DefaultApache Composer();&#010;-pico.addComponent(&amp;quot;a&amp;quot;, AImpl.class);&#010;-pico.addComponent(&amp;quot;b&amp;quot;, BImpl.class);&#010;-pico.addComponent(pico);&#010;+            &lt;pre&gt;MutableApache Composer container = new DefaultContainer();&#010;+container.addComponent(&amp;quot;a&amp;quot;, AImpl.class);&#010;+container.addComponent(&amp;quot;b&amp;quot;, BImpl.class);&#010;+container.addComponent(container);&#010; &#010; ...&#010;-B b = (B) pico.getComponent(&amp;quot;b&amp;quot;);&lt;/pre&gt;&#010;+B b = (B) container.getComponent(&amp;quot;b&amp;quot;);&lt;/pre&gt;&#010;         &lt;/div&gt;&#010;     &lt;/div&gt;&#010;     &lt;p&gt;This will work, but it's an antipattern. &lt;/p&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html?rev=618234&amp;r1=618233&amp;r2=618234&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/antipatterns/tests-use-container-antipattern.html Mon Feb  4 03:06:06 2008&#010;@@ -26,7 +26,7 @@&#010;     &lt;div class="source"&gt;&#010;         &lt;div&gt;&#010;             &lt;pre&gt;public void testCocktailWithVodkaIsAlcoholic() {&#010;-    DefaultApache Composer container = new DefaultApache Composer();&#010;+    DefaultApache Composer container = new DefaultContainer();&#010;     container.addComponent(Banana.class);&#010;     container.addComponent(Vanilla.class);&#010;     container.addComponent(Vodka.class);&#010;@@ -89,15 +89,6 @@&#010;                the interactions between a set of real components (not mocks). In this case, you may wish to create a&#010;                container with the appropriate components registered for your test.&lt;/p&gt;&#010; &#010;-            &lt;div&gt;&#010;-                &lt;h3&gt;NanoContainer&#010;-                &lt;/h3&gt;&#010;-&#010;-                &lt;p&gt;If you are using &lt;a href="http://www.nanocontainer.org" title="Sister Projects"&gt;NanoContainer&lt;/a&gt;,&#010;-                   you can use NanoContainer's Standalone class (a bootstrapper) to start the application. All the&#010;-                   container configuration can live in a script and NanoContainer (and thereby Apache Composer(s)) will be&#010;-                   instantiated.&lt;/p&gt;&#010;-            &lt;/div&gt;&#010;         &lt;/div&gt;&#010;     &lt;/div&gt;&#010; &lt;/div&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618227 - in /incubator/composer/trunk/composer-site: pico-distribution.iml picocontainer-distribution.iml</title>
<author><name>mauro@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204103558.ADB421A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204103558-ADB421A9832@eris-apache-org%3e</id>
<updated>2008-02-04T10:35:58Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: mauro&#010;Date: Mon Feb  4 02:35:56 2008&#010;New Revision: 618227&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618227&amp;view=rev&#010;Log:&#010;Removed obsolete idea files.&#010;&#010;Removed:&#010;    incubator/composer/trunk/composer-site/pico-distribution.iml&#010;    incubator/composer/trunk/composer-site/picocontainer-distribution.iml&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618179 - in /incubator/composer/trunk: apache-composer.iml apache-composer.ipr composer-core/apache-composer-core.iml composer-site/apache-composer-site.iml composer-tck/apache-composer-tck.iml</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204065342.A71541A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204065342-A71541A9832@eris-apache-org%3e</id>
<updated>2008-02-04T06:53:42Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: hammant&#010;Date: Sun Feb  3 22:53:39 2008&#010;New Revision: 618179&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618179&amp;view=rev&#010;Log:&#010;idea files should not be in Svn, with idea:idea goal, can be remade at any time&#010;&#010;Removed:&#010;    incubator/composer/trunk/apache-composer.iml&#010;    incubator/composer/trunk/apache-composer.ipr&#010;    incubator/composer/trunk/composer-core/apache-composer-core.iml&#010;    incubator/composer/trunk/composer-site/apache-composer-site.iml&#010;    incubator/composer/trunk/composer-tck/apache-composer-tck.iml&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618178 - in /incubator/composer/trunk/composer-site/src/site/content: downloads.html javadoc.html web-frameworks.html</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204065014.9569E1A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204065014-9569E1A9832@eris-apache-org%3e</id>
<updated>2008-02-04T06:50:13Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: hammant&#010;Date: Sun Feb  3 22:50:10 2008&#010;New Revision: 618178&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618178&amp;view=rev&#010;Log:&#010;doco changes no longer relevant to Composer&#010;&#010;Modified:&#010;    incubator/composer/trunk/composer-site/src/site/content/downloads.html&#010;    incubator/composer/trunk/composer-site/src/site/content/javadoc.html&#010;    incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/downloads.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/downloads.html?rev=618178&amp;r1=618177&amp;r2=618178&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/downloads.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/downloads.html Sun Feb  3 22:50:10&#010;2008&#010;@@ -3,13 +3,11 @@&#010; &lt;title&gt;Downloads&lt;/title&gt;&lt;/head&gt;&#010; &#010; &lt;body&gt;&#010;-&lt;h2&gt;Released Jars (1.3 and 2.0) &lt;/h2&gt;&#010;-&lt;p&gt;Core  : &lt;a href="http://repository.codehaus.org/org/picocontainer/picocontainer/"&gt;http://repository.codehaus.org/org/picocontainer/picocontainer/&lt;/a&gt;&lt;/p&gt;&#010;-&lt;p&gt;Gems  : &lt;a href="http://repository.codehaus.org/org/picocontainer/picocontainer-gems/"&gt;http://repository.codehaus.org/org/picocontainer/picocontainer-gems/&lt;/a&gt;&lt;/p&gt;&#010;-&lt;h2&gt;Snapshot Jars (2.1) &lt;/h2&gt;&#010;-&lt;p&gt;Core : &lt;a href="http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer/"&gt;http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer/&lt;/a&gt;&lt;/p&gt;&#010;-&lt;p&gt;Gems : &lt;a href="http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer-gems/"&gt;http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer-gems/&lt;/a&gt;&lt;/p&gt;&#010;+&lt;h2&gt;Released Jars (2.x) &lt;/h2&gt;&#010;+TBA&#010;+&lt;h2&gt;Snapshot Jars (1.x) &lt;/h2&gt;&#010;+TBA&#010; &lt;hr /&gt;&#010;-&lt;p&gt;Currently, the Core jar is ~190K, and the Gems jar is ~89K. &lt;/p&gt;&#010;+&lt;p&gt;Currently, the Core jar is xxxK, and the Gems jar is xxxK. &lt;/p&gt;&#010; &#010; &lt;/body&gt;&lt;/html&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/javadoc.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/javadoc.html?rev=618178&amp;r1=618177&amp;r2=618178&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/javadoc.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/javadoc.html Sun Feb  3 22:50:10&#010;2008&#010;@@ -7,7 +7,6 @@&#010; &lt;body&gt;&#010; &#010; &lt;p&gt;&lt;a href="javadoc/core/index.html"&gt;Core&lt;/a&gt;&lt;/p&gt;&#010;-&lt;p&gt;&lt;a href="javadoc/gems/index.html"&gt;Gems&lt;/a&gt;&lt;/p&gt;&#010; &lt;p&gt;&lt;a href="javadoc/tck/index.html"&gt;TCK&lt;/a&gt;&lt;/p&gt;&#010; &#010; &lt;/body&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html?rev=618178&amp;r1=618177&amp;r2=618178&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html Sun Feb  3&#010;22:50:10 2008&#010;@@ -83,9 +83,6 @@&#010; }&#010; &lt;/pre&gt;&#010; &lt;/div&gt;&#010;-&lt;p&gt;The HttpSessionStoring class is not in the core jar, its in the&#010;-'gems' one. If you don't want a second jar - copy the class (it's real&#010;-simple) to your web framework's codebase.&lt;/p&gt;&#010; &lt;h2&gt;Real Web Frameworks&lt;/h2&gt;&#010; &lt;p&gt;&lt;a href="http://waffle.codehaus.org"&gt;Waffle&lt;/a&gt; - hopefully the pinnacle&#010;of Java action/controller web-frameworks.&lt;/p&gt;&#010; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618177 - in /incubator/composer/trunk/composer-site: ./ src/site/content/</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204064506.C74891A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204064506-C74891A9832@eris-apache-org%3e</id>
<updated>2008-02-04T06:45:06Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: hammant&#010;Date: Sun Feb  3 22:45:04 2008&#010;New Revision: 618177&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618177&amp;view=rev&#010;Log:&#010;renames&#010;&#010;Added:&#010;    incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsContainer.html&#010;      - copied unchanged from r618174, incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/DefaultContainer.html&#010;      - copied unchanged from r618174, incubator/composer/trunk/composer-site/src/site/content/DefaultPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/ImmutableContainer.html&#010;      - copied unchanged from r618174, incubator/composer/trunk/composer-site/src/site/content/ImmutablePicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/PropertiesContainer.html&#010;      - copied unchanged from r618174, incubator/composer/trunk/composer-site/src/site/content/PropertiesPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesContainer.html&#010;      - copied unchanged from r618174, incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/TransientContainer.html&#010;      - copied unchanged from r618174, incubator/composer/trunk/composer-site/src/site/content/TransientPicoContainer.html&#010;Removed:&#010;    incubator/composer/trunk/composer-site/src/site/content/CommandLineArgumentsPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/DefaultPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/ImmutablePicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/PropertiesPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/SystemPropertiesPicoContainer.html&#010;    incubator/composer/trunk/composer-site/src/site/content/TransientPicoContainer.html&#010;Modified:&#010;    incubator/composer/trunk/composer-site/apache-composer-site.iml&#010;    incubator/composer/trunk/composer-site/src/site/content/sitemap.xml&#010;&#010;Modified: incubator/composer/trunk/composer-site/apache-composer-site.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/apache-composer-site.iml?rev=618177&amp;r1=618176&amp;r2=618177&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/apache-composer-site.iml (original)&#010;+++ incubator/composer/trunk/composer-site/apache-composer-site.iml Sun Feb  3 22:45:04 2008&#010;@@ -1,123 +1,89 @@&#010; &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;-&#010;-&lt;!--&#010;-Licensed to the Apache Software Foundation (ASF) under one&#010;-or more contributor license agreements.  See the NOTICE file&#010;-distributed with this work for additional information&#010;-regarding copyright ownership.  The ASF licenses this file&#010;-to you under the Apache License, Version 2.0 (the&#010;-"License"); you may not use this file except in compliance&#010;-with the License.  You may obtain a copy of the License at&#010;-&#010;-  http://www.apache.org/licenses/LICENSE-2.0&#010;-&#010;-Unless required by applicable law or agreed to in writing,&#010;-software distributed under the License is distributed on an&#010;-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&#010;-KIND, either express or implied.  See the License for the&#010;-specific language governing permissions and limitations&#010;-under the License.&#010;---&gt;&#010;-&lt;module version="4" relativePaths="false" type="JAVA_MODULE"&gt; &#010;-  &lt;component name="NewModuleRootManager"&gt; &#010;-    &lt;exclude-output/&gt;  &#010;-    &lt;orderEntry type="inheritedJdk"/&gt;  &#010;-    &lt;!-- output url="file://$$MODULE_DIR$$/${maven.build.dest}"/ --&gt;  &#010;-    &lt;!-- output-test url="file://$$MODULE_DIR$$/${maven.test.dest}"/ --&gt;  &#010;-    &lt;content url="file://$MODULE_DIR$"&gt; &#010;-      &lt;!-- sourceFolder url="file://$$MODULE_DIR$$/${pom.build.sourceDirectory}" isTestSource="false"/&#010;--&gt;  &#010;-      &lt;!-- sourceFolder url="file://$$MODULE_DIR$$/${pom.build.testSourceDirectory}" isTestSource="true"/&#010;--&gt;  &#010;-      &lt;excludeFolder url="file://$MODULE_DIR$/target"/&gt;&#010;-    &lt;/content&gt;  &#010;-    &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;-    &lt;!-- Next include each dependency:&#010;-      &lt;orderEntry type="module" module-name="${dep.artifactId}"/&gt;&#010;-      &lt;orderEntry type="module-library"&gt;&#010;-        &lt;library name="${dep.artifactId}"&gt;&#010;-          &lt;CLASSES&gt;&#010;-            &lt;root url="jar://${lib.path}!/"/&gt;&#010;-          &lt;/CLASSES&gt;&#010;-          &lt;JAVADOC/&gt;&#010;-          &lt;SOURCES/&gt;&#010;-        &lt;/library&gt;&#010;-      &lt;/orderEntry&gt;&#010;-     --&gt;  &#010;-    &lt;output url="file://$MODULE_DIR$/target/classes"/&gt;&#010;-    &lt;output-test url="file://$MODULE_DIR$/target/test-classes"/&gt;&#010;-    &lt;orderEntry type="module" module-name="apache-composer-tck"/&gt;&#010;+&lt;module relativePaths="false" type="JAVA_MODULE" version="4"&gt;&#010;+  &lt;component name="NewModuleRootManager" inherit-compiler-output="false"&gt;&#010;+    &lt;output url="file://$MODULE_DIR$/target/classes" /&gt;&#010;+    &lt;exclude-output /&gt;&#010;+    &lt;output-test url="file://$MODULE_DIR$/target/test-classes" /&gt;&#010;+    &lt;content url="file://$MODULE_DIR$"&gt;&#010;+      &lt;excludeFolder url="file://$MODULE_DIR$/target" /&gt;&#010;+    &lt;/content&gt;&#010;+    &lt;orderEntry type="inheritedJdk" /&gt;&#010;+    &lt;orderEntry type="sourceFolder" forTests="false" /&gt;&#010;+    &lt;orderEntry type="module" module-name="apache-composer-tck" /&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"&#010;/&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/" /&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"&#010;/&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"&#010;/&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/junit/junit-dep/4.4/junit-dep-4.4.jar!/" /&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"&#010;/&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"&#010;/&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module" module-name="apache-composer-core"/&gt;&#010;+    &lt;orderEntry type="module" module-name="apache-composer-core" /&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/"/&gt;&#010;+          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/"&#010;/&gt;&#010;         &lt;/CLASSES&gt;&#010;+        &lt;JAVADOC /&gt;&#010;+        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-  &lt;/component&gt;  &#010;-  &lt;component name="ModuleRootManager"/&gt;  &#010;-  &lt;!-- If it's a war project:&#010;-  &lt;component name="WebModuleProperties"&gt;&#010;-    &lt;containerElement type="module" name="${dep.artifactId}"&gt;&#010;-      &lt;attribute name="method" value="1" /&gt;&#010;-      &lt;attribute name="URI" value="/WEB-INF/classes" /&gt;&#010;-    &lt;/containerElement&gt;&#010;-    &lt;containerElement type="library" level="module" name="${dep.artifactId}"&gt;&#010;-      &lt;attribute name="method" value="1" /&gt;&#010;-      &lt;attribute name="URI" value="/WEB-INF/lib/${dep.systemPath.name}" /&gt;&#010;-    &lt;/containerElement&gt;&#010;-    &lt;deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/${pom.build.warSourceDirectory}/WEB-INF/web.xml"&#010;version="" /&gt;&#010;-    &lt;webroots&gt;&#010;-      &lt;root url="file://$MODULE_DIR$/${pom.build.warSourceDirectory}" relative="/" /&gt;&#010;-    &lt;/webroots&gt;&#010;+    &lt;orderEntryProperties /&gt;&#010;   &lt;/component&gt;&#010;-  --&gt; &#010; &lt;/module&gt;&#010;+&#010;&#010;Modified: incubator/composer/trunk/composer-site/src/site/content/sitemap.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/sitemap.xml?rev=618177&amp;r1=618176&amp;r2=618177&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/sitemap.xml (original)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/sitemap.xml Sun Feb  3 22:45:04&#010;2008&#010;@@ -37,11 +37,11 @@&#010;     &lt;/section&gt;&#010;     &lt;section&gt;&#010;         &lt;name&gt;Containers&lt;/name&gt;&#010;-        &lt;page&gt;DefaultApache Composer.html&lt;/page&gt;&#010;-&#009;    &lt;page&gt;CommandLineArgumentsApache Composer.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;PropertiesApache Composer.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;SystemPropertiesApache Composer.html&lt;/page&gt;&#010;-&#009;&#009;&lt;page&gt;TransientApache Composer.html&lt;/page&gt;&#010;+        &lt;page&gt;DefaultContainer.html&lt;/page&gt;&#010;+&#009;    &lt;page&gt;CommandLineArgumentsContainer.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;PropertiesContainer.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;SystemPropertiesContainer.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;TransientContainer.html&lt;/page&gt;&#010;     &lt;/section&gt;&#010;     &lt;section&gt;&#010;          &lt;name&gt;Applications&lt;/name&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618176 - in /incubator/composer/trunk: apache-composer.iml apache-composer.ipr composer-core/apache-composer-core.iml composer-site/apache-composer-site.iml composer-site/pom.xml composer-tck/apache-composer-tck.iml</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204064048.8AA2E1A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204064048-8AA2E1A9832@eris-apache-org%3e</id>
<updated>2008-02-04T06:40:47Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: hammant&#010;Date: Sun Feb  3 22:40:46 2008&#010;New Revision: 618176&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618176&amp;view=rev&#010;Log:&#010;pom changes&#010;&#010;Added:&#010;    incubator/composer/trunk/composer-site/apache-composer-site.iml&#010;Modified:&#010;    incubator/composer/trunk/apache-composer.iml&#010;    incubator/composer/trunk/apache-composer.ipr&#010;    incubator/composer/trunk/composer-core/apache-composer-core.iml&#010;    incubator/composer/trunk/composer-site/pom.xml&#010;    incubator/composer/trunk/composer-tck/apache-composer-tck.iml&#010;&#010;Modified: incubator/composer/trunk/apache-composer.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/apache-composer.iml?rev=618176&amp;r1=618175&amp;r2=618176&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/apache-composer.iml (original)&#010;+++ incubator/composer/trunk/apache-composer.iml Sun Feb  3 22:40:46 2008&#010;@@ -11,54 +11,54 @@&#010;     &lt;orderEntry type="inheritedJdk"/&gt;  &#010;     &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;     &lt;orderEntryProperties/&gt;  &#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt; &#010;   &lt;/component&gt; &#010; &lt;/module&gt;&#010;&#010;Modified: incubator/composer/trunk/apache-composer.ipr&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/apache-composer.ipr?rev=618176&amp;r1=618175&amp;r2=618176&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/apache-composer.ipr (original)&#010;+++ incubator/composer/trunk/apache-composer.ipr Sun Feb  3 22:40:46 2008&#010;@@ -652,7 +652,7 @@&#010;       &lt;module filepath="$PROJECT_DIR$/apache-composer.iml"/&gt;&#010;       &lt;module filepath="$PROJECT_DIR$/composer-core/apache-composer-core.iml"/&gt;&#010;       &lt;module filepath="$PROJECT_DIR$/composer-tck/apache-composer-tck.iml"/&gt;&#010;-      &lt;module filepath="$PROJECT_DIR$/composer-site/picocontainer-distribution.iml"/&gt;&#010;+      &lt;module filepath="$PROJECT_DIR$/composer-site/apache-composer-site.iml"/&gt;&#010;     &lt;/modules&gt; &#010;   &lt;/component&gt;  &#010;   &lt;component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true"&#010;project-jdk-name="1.5" project-jdk-type="JavaSDK"&gt; &#010;@@ -677,5 +677,5 @@&#010;     &lt;mapping directory="$PROJECT_DIR$" vcs="svn"/&gt; &#010;   &lt;/component&gt;  &#010;   &lt;component name="WebServicesPlugin" addRequiredLibraries="true"/&gt;  &#010;-  &lt;UsedPathMacros&gt;&lt;/UsedPathMacros&gt; &#010;+  &lt;UsedPathMacros/&gt; &#010; &lt;/project&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-core/apache-composer-core.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/apache-composer-core.iml?rev=618176&amp;r1=618175&amp;r2=618176&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/apache-composer-core.iml (original)&#010;+++ incubator/composer/trunk/composer-core/apache-composer-core.iml Sun Feb  3 22:40:46 2008&#010;@@ -15,111 +15,111 @@&#010;     &lt;orderEntry type="inheritedJdk"/&gt;  &#010;     &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;     &lt;orderEntryProperties/&gt;  &#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/log4j/log4j/1.2.8/log4j-1.2.8.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/proxytoys/proxytoys/0.2.1/proxytoys-0.2.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/prefuse/prefuse/2006.07.15/prefuse-2006.07.15.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/asm/asm/3.0/asm-3.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt; &#010;   &lt;/component&gt;  &#010;   &lt;component name="copyright"&gt; &#010;     &lt;Base&gt; &#010;&#010;Added: incubator/composer/trunk/composer-site/apache-composer-site.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/apache-composer-site.iml?rev=618176&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/apache-composer-site.iml (added)&#010;+++ incubator/composer/trunk/composer-site/apache-composer-site.iml Sun Feb  3 22:40:46 2008&#010;@@ -0,0 +1,123 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&#010;+&lt;!--&#010;+Licensed to the Apache Software Foundation (ASF) under one&#010;+or more contributor license agreements.  See the NOTICE file&#010;+distributed with this work for additional information&#010;+regarding copyright ownership.  The ASF licenses this file&#010;+to you under the Apache License, Version 2.0 (the&#010;+"License"); you may not use this file except in compliance&#010;+with the License.  You may obtain a copy of the License at&#010;+&#010;+  http://www.apache.org/licenses/LICENSE-2.0&#010;+&#010;+Unless required by applicable law or agreed to in writing,&#010;+software distributed under the License is distributed on an&#010;+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&#010;+KIND, either express or implied.  See the License for the&#010;+specific language governing permissions and limitations&#010;+under the License.&#010;+--&gt;&#010;+&lt;module version="4" relativePaths="false" type="JAVA_MODULE"&gt; &#010;+  &lt;component name="NewModuleRootManager"&gt; &#010;+    &lt;exclude-output/&gt;  &#010;+    &lt;orderEntry type="inheritedJdk"/&gt;  &#010;+    &lt;!-- output url="file://$$MODULE_DIR$$/${maven.build.dest}"/ --&gt;  &#010;+    &lt;!-- output-test url="file://$$MODULE_DIR$$/${maven.test.dest}"/ --&gt;  &#010;+    &lt;content url="file://$MODULE_DIR$"&gt; &#010;+      &lt;!-- sourceFolder url="file://$$MODULE_DIR$$/${pom.build.sourceDirectory}" isTestSource="false"/&#010;--&gt;  &#010;+      &lt;!-- sourceFolder url="file://$$MODULE_DIR$$/${pom.build.testSourceDirectory}" isTestSource="true"/&#010;--&gt;  &#010;+      &lt;excludeFolder url="file://$MODULE_DIR$/target"/&gt;&#010;+    &lt;/content&gt;  &#010;+    &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;+    &lt;!-- Next include each dependency:&#010;+      &lt;orderEntry type="module" module-name="${dep.artifactId}"/&gt;&#010;+      &lt;orderEntry type="module-library"&gt;&#010;+        &lt;library name="${dep.artifactId}"&gt;&#010;+          &lt;CLASSES&gt;&#010;+            &lt;root url="jar://${lib.path}!/"/&gt;&#010;+          &lt;/CLASSES&gt;&#010;+          &lt;JAVADOC/&gt;&#010;+          &lt;SOURCES/&gt;&#010;+        &lt;/library&gt;&#010;+      &lt;/orderEntry&gt;&#010;+     --&gt;  &#010;+    &lt;output url="file://$MODULE_DIR$/target/classes"/&gt;&#010;+    &lt;output-test url="file://$MODULE_DIR$/target/test-classes"/&gt;&#010;+    &lt;orderEntry type="module" module-name="apache-composer-tck"/&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+    &lt;orderEntry type="module" module-name="apache-composer-core"/&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+  &lt;/component&gt;  &#010;+  &lt;component name="ModuleRootManager"/&gt;  &#010;+  &lt;!-- If it's a war project:&#010;+  &lt;component name="WebModuleProperties"&gt;&#010;+    &lt;containerElement type="module" name="${dep.artifactId}"&gt;&#010;+      &lt;attribute name="method" value="1" /&gt;&#010;+      &lt;attribute name="URI" value="/WEB-INF/classes" /&gt;&#010;+    &lt;/containerElement&gt;&#010;+    &lt;containerElement type="library" level="module" name="${dep.artifactId}"&gt;&#010;+      &lt;attribute name="method" value="1" /&gt;&#010;+      &lt;attribute name="URI" value="/WEB-INF/lib/${dep.systemPath.name}" /&gt;&#010;+    &lt;/containerElement&gt;&#010;+    &lt;deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/${pom.build.warSourceDirectory}/WEB-INF/web.xml"&#010;version="" /&gt;&#010;+    &lt;webroots&gt;&#010;+      &lt;root url="file://$MODULE_DIR$/${pom.build.warSourceDirectory}" relative="/" /&gt;&#010;+    &lt;/webroots&gt;&#010;+  &lt;/component&gt;&#010;+  --&gt; &#010;+&lt;/module&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-site/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/pom.xml?rev=618176&amp;r1=618175&amp;r2=618176&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/pom.xml (original)&#010;+++ incubator/composer/trunk/composer-site/pom.xml Sun Feb  3 22:40:46 2008&#010;@@ -6,9 +6,9 @@&#010;     &lt;artifactId&gt;apache-composer&lt;/artifactId&gt;&#010;     &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&#010;   &lt;/parent&gt;&#010;-  &lt;artifactId&gt;apache-composer-distribution&lt;/artifactId&gt;&#010;+  &lt;artifactId&gt;apache-composer-site&lt;/artifactId&gt;&#010;   &lt;packaging&gt;pom&lt;/packaging&gt;&#010;-  &lt;name&gt;Apache Composer Distribution&lt;/name&gt;&#010;+  &lt;name&gt;Apache Composer Site&lt;/name&gt;&#010;   &lt;dependencies&gt;&#010;     &lt;dependency&gt;&#010;       &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-tck/apache-composer-tck.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-tck/apache-composer-tck.iml?rev=618176&amp;r1=618175&amp;r2=618176&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-tck/apache-composer-tck.iml (original)&#010;+++ incubator/composer/trunk/composer-tck/apache-composer-tck.iml Sun Feb  3 22:40:46 2008&#010;@@ -17,62 +17,62 @@&#010;     &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;     &lt;orderEntry type="module" module-name="apache-composer-core" exported=""/&gt;  &#010;     &lt;orderEntryProperties/&gt;  &#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library"&gt; &#010;+      &lt;library&gt; &#010;         &lt;CLASSES&gt;&#010;           &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;+      &lt;/library&gt; &#010;+    &lt;/orderEntry&gt; &#010;   &lt;/component&gt;  &#010;   &lt;component name="copyright"&gt; &#010;     &lt;Base&gt; &#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618175 [3/3] - in /incubator/composer/trunk: apache-composer.iml apache-composer.ipr composer-core/apache-composer-core.iml composer-site/picocontainer-distribution.iml composer-site/pom.xml composer-tck/apache-composer-tck.iml pom.xml</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204063811.94DB31A9842@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204063811-94DB31A9842@eris-apache-org%3e</id>
<updated>2008-02-04T06:38:10Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Modified: incubator/composer/trunk/composer-core/apache-composer-core.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-core/apache-composer-core.iml?rev=618175&amp;r1=618174&amp;r2=618175&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-core/apache-composer-core.iml (original)&#010;+++ incubator/composer/trunk/composer-core/apache-composer-core.iml Sun Feb  3 22:38:09 2008&#010;@@ -1,325 +1,297 @@&#010; &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;-&lt;module relativePaths="true" type="JAVA_MODULE" version="4"&gt;&#010;-  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt;&#010;-    &lt;output url="file://$MODULE_DIR$/target/classes" /&gt;&#010;-    &lt;exclude-output /&gt;&#010;-    &lt;output-test url="file://$MODULE_DIR$/target/test-classes" /&gt;&#010;-    &lt;content url="file://$MODULE_DIR$"&gt;&#010;-      &lt;sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /&gt;&#010;-      &lt;sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /&gt;&#010;-      &lt;excludeFolder url="file://$MODULE_DIR$/target" /&gt;&#010;-    &lt;/content&gt;&#010;-    &lt;orderEntry type="inheritedJdk" /&gt;&#010;-    &lt;orderEntry type="sourceFolder" forTests="false" /&gt;&#010;+&#010;+&lt;module relativePaths="true" type="JAVA_MODULE" version="4"&gt; &#010;+  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt; &#010;+    &lt;output url="file://$MODULE_DIR$/target/classes"/&gt;  &#010;+    &lt;exclude-output/&gt;  &#010;+    &lt;output-test url="file://$MODULE_DIR$/target/test-classes"/&gt;  &#010;+    &lt;content url="file://$MODULE_DIR$"&gt; &#010;+      &lt;sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false"/&gt;&#010;+      &lt;sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true"/&gt;&#010;+      &lt;sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false"/&gt;&#010;+      &lt;sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true"/&gt;&#010;+      &lt;excludeFolder url="file://$MODULE_DIR$/target"/&gt;&#010;+    &lt;/content&gt;  &#010;+    &lt;orderEntry type="inheritedJdk"/&gt;  &#010;+    &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;+    &lt;orderEntryProperties/&gt;  &#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/log4j/log4j/1.2.8/log4j-1.2.8.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/log4j/log4j/1.2.8/log4j-1.2.8.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit-dep/4.4/junit-dep-4.4.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/proxytoys/proxytoys/0.2.1/proxytoys-0.2.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/proxytoys/proxytoys/0.2.1/proxytoys-0.2.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/prefuse/prefuse/2006.07.15/prefuse-2006.07.15.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/prefuse/prefuse/2006.07.15/prefuse-2006.07.15.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/asm/asm/3.0/asm-3.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/asm/asm/3.0/asm-3.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntryProperties /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="copyright"&gt;&#010;-    &lt;Base&gt;&#010;-      &lt;setting name="state" value="2" /&gt;&#010;-    &lt;/Base&gt;&#010;-    &lt;LanguageOptions name="$TEMPLATE$"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Apache Composer Organization. All rights reserved.            &amp;#10;------------------------------------------------------------------------- &amp;#10;The software in this package is published under the terms of the BSD      &amp;#10;style license a copy of which has been included with this distribution in &amp;#10;the LICENSE.txt file.                                                     &amp;#10;" /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="4" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="CSS"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="HTML"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="JAVA"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="JSP"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="JavaScript"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="Properties"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="XML"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-  &lt;/component&gt;&#010;+  &lt;/component&gt;  &#010;+  &lt;component name="copyright"&gt; &#010;+    &lt;Base&gt; &#010;+      &lt;setting name="state" value="2"/&gt; &#010;+    &lt;/Base&gt;  &#010;+    &lt;LanguageOptions name="$TEMPLATE$"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Apache Composer Organization. All rights reserved.            &amp;#10;------------------------------------------------------------------------- &amp;#10;The software in this package is published under the terms of the BSD      &amp;#10;style license a copy of which has been included with this distribution in &amp;#10;the LICENSE.txt file.                                                     &amp;#10;"/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="4"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="CSS"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="HTML"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="JAVA"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="JSP"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="JavaScript"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="Properties"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="XML"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt; &#010;+  &lt;/component&gt; &#010; &lt;/module&gt;&#010;-&#010;&#010;Modified: incubator/composer/trunk/composer-site/picocontainer-distribution.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/picocontainer-distribution.iml?rev=618175&amp;r1=618174&amp;r2=618175&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/picocontainer-distribution.iml (original)&#010;+++ incubator/composer/trunk/composer-site/picocontainer-distribution.iml Sun Feb  3 22:38:09 2008&#010;@@ -1,150 +1,85 @@&#010; &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;-&lt;module relativePaths="false" type="JAVA_MODULE" version="4"&gt;&#010;-  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt;&#010;-    &lt;output url="file://$MODULE_DIR$/target/classes" /&gt;&#010;-    &lt;exclude-output /&gt;&#010;-    &lt;output-test url="file://$MODULE_DIR$/target/test-classes" /&gt;&#010;-    &lt;content url="file://$MODULE_DIR$"&gt;&#010;-      &lt;sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" /&gt;&#010;-      &lt;sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" /&gt;&#010;-      &lt;excludeFolder url="file://$MODULE_DIR$/target" /&gt;&#010;-    &lt;/content&gt;&#010;-    &lt;orderEntry type="inheritedJdk" /&gt;&#010;-    &lt;orderEntry type="sourceFolder" forTests="false" /&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="com.thoughtworks.paranamer:paranamer:1.1"&gt;&#010;+&#010;+&lt;module relativePaths="false" type="JAVA_MODULE" version="4"&gt; &#010;+  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt; &#010;+    &lt;output url="file://$MODULE_DIR$/target/classes"/&gt;  &#010;+    &lt;exclude-output/&gt;  &#010;+    &lt;output-test url="file://$MODULE_DIR$/target/test-classes"/&gt;  &#010;+    &lt;content url="file://$MODULE_DIR$"&gt; &#010;+      &lt;excludeFolder url="file://$MODULE_DIR$/target"/&gt;&#010;+    &lt;/content&gt;  &#010;+    &lt;orderEntry type="inheritedJdk"/&gt;  &#010;+    &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;+    &lt;orderEntry type="module-library" module-name="picocontainer-gems" exported=""&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/picocontainer/picocontainer-gems/2.1-SNAPSHOT/picocontainer-gems-2.1-SNAPSHOT.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="com.thoughtworks.xstream:xstream:1.2.2"&gt;&#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library" module-name="picocontainer-tck" exported=""&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/picocontainer/picocontainer-tck/2.1-SNAPSHOT/picocontainer-tck-2.1-SNAPSHOT.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="jmock:jmock:1.2.0"&gt;&#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntry type="module-library" module-name="picocontainer" exported=""&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/jmock/jmock/1.2.0/jmock-1.2.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/picocontainer/picocontainer/2.1-SNAPSHOT/picocontainer-2.1-SNAPSHOT.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/jmock/jmock/1.2.0/jmock-1.2.0-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/jmock/jmock/1.2.0/jmock-1.2.0-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="junit:junit-dep:4.4"&gt;&#010;+    &lt;/orderEntry&gt;  &#010;+    &lt;orderEntryProperties/&gt;  &#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit-dep/4.4/junit-dep-4.4.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit-dep/4.4/junit-dep-4.4-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit-dep/4.4/junit-dep-4.4-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="junit:junit:3.8.1"&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit/3.8.1/junit-3.8.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit/3.8.1/junit-3.8.1-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit/3.8.1/junit-3.8.1-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="org.hamcrest:hamcrest-core:1.1"&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="org.hamcrest:hamcrest-library:1.1"&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="org.jmock:jmock-junit4:2.4.0"&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="org.jmock:jmock:2.4.0"&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntry type="module" module-name="picocontainer-gems" exported="" /&gt;&#010;-    &lt;orderEntry type="module" module-name="picocontainer-tck" exported="" /&gt;&#010;-    &lt;orderEntry type="module" module-name="picocontainer" exported="" /&gt;&#010;-    &lt;orderEntry type="module-library" exported=""&gt;&#010;-      &lt;library name="xpp3:xpp3_min:1.1.3.4.O"&gt;&#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O-javadoc.jar!/" /&gt;&#010;-        &lt;/JAVADOC&gt;&#010;-        &lt;SOURCES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O-sources.jar!/" /&gt;&#010;-        &lt;/SOURCES&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntryProperties /&gt;&#010;-  &lt;/component&gt;&#010;+  &lt;/component&gt; &#010; &lt;/module&gt;&#010;-&#010;&#010;Modified: incubator/composer/trunk/composer-site/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/pom.xml?rev=618175&amp;r1=618174&amp;r2=618175&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/pom.xml (original)&#010;+++ incubator/composer/trunk/composer-site/pom.xml Sun Feb  3 22:38:09 2008&#010;@@ -2,27 +2,22 @@&#010; &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;&#010;   &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;&#010;   &lt;parent&gt;&#010;-    &lt;groupId&gt;org.picocontainer&lt;/groupId&gt;&#010;-    &lt;artifactId&gt;picocontainer-parent&lt;/artifactId&gt;&#010;-    &lt;version&gt;2.1-SNAPSHOT&lt;/version&gt;&#010;+    &lt;groupId&gt;org.apache.composer&lt;/groupId&gt;&#010;+    &lt;artifactId&gt;apache-composer&lt;/artifactId&gt;&#010;+    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&#010;   &lt;/parent&gt;&#010;-  &lt;artifactId&gt;picocontainer-distribution&lt;/artifactId&gt;&#010;+  &lt;artifactId&gt;apache-composer-distribution&lt;/artifactId&gt;&#010;   &lt;packaging&gt;pom&lt;/packaging&gt;&#010;-  &lt;name&gt;Picocontainer Distribution&lt;/name&gt;&#010;+  &lt;name&gt;Apache Composer Distribution&lt;/name&gt;&#010;   &lt;dependencies&gt;&#010;     &lt;dependency&gt;&#010;       &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-      &lt;artifactId&gt;picocontainer&lt;/artifactId&gt;&#010;+      &lt;artifactId&gt;apache-composer-core&lt;/artifactId&gt;&#010;       &lt;version&gt;${pom.version}&lt;/version&gt;&#010;     &lt;/dependency&gt;&#010;     &lt;dependency&gt;&#010;       &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-      &lt;artifactId&gt;picocontainer-gems&lt;/artifactId&gt;&#010;-      &lt;version&gt;${pom.version}&lt;/version&gt;&#010;-    &lt;/dependency&gt;&#010;-    &lt;dependency&gt;&#010;-      &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-      &lt;artifactId&gt;picocontainer-tck&lt;/artifactId&gt;&#010;+      &lt;artifactId&gt;apache-composer-tck&lt;/artifactId&gt;&#010;       &lt;version&gt;${pom.version}&lt;/version&gt;&#010;     &lt;/dependency&gt;&#010;   &lt;/dependencies&gt;&#010;@@ -44,21 +39,14 @@&#010;               &lt;artifactItems&gt;&#010;                 &lt;artifactItem&gt;&#010;                   &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-                  &lt;artifactId&gt;picocontainer&lt;/artifactId&gt;&#010;+                  &lt;artifactId&gt;apache-composer&lt;/artifactId&gt;&#010;                   &lt;version&gt;${pom.version}&lt;/version&gt;&#010;                   &lt;classifier&gt;javadoc&lt;/classifier&gt;&#010;                   &lt;outputDirectory&gt;${project.build.directory}/site/javadoc/core&lt;/outputDirectory&gt;&#010;                 &lt;/artifactItem&gt;&#010;                 &lt;artifactItem&gt;&#010;                   &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-                  &lt;artifactId&gt;picocontainer-gems&lt;/artifactId&gt;&#010;-                  &lt;version&gt;${pom.version}&lt;/version&gt;&#010;-                  &lt;classifier&gt;javadoc&lt;/classifier&gt;&#010;-                  &lt;outputDirectory&gt;${project.build.directory}/site/javadoc/gems&lt;/outputDirectory&gt;&#010;-                &lt;/artifactItem&gt;&#010;-                &lt;artifactItem&gt;&#010;-                  &lt;groupId&gt;${pom.groupId}&lt;/groupId&gt;&#010;-                  &lt;artifactId&gt;picocontainer-tck&lt;/artifactId&gt;&#010;+                  &lt;artifactId&gt;apache-composer-tck&lt;/artifactId&gt;&#010;                   &lt;version&gt;${pom.version}&lt;/version&gt;&#010;                   &lt;classifier&gt;javadoc&lt;/classifier&gt;&#010;                   &lt;outputDirectory&gt;${project.build.directory}/site/javadoc/tck&lt;/outputDirectory&gt;&#010;@@ -68,37 +56,6 @@&#010;           &lt;/execution&gt;&#010;         &lt;/executions&gt;&#010;       &lt;/plugin&gt;&#010;-      &lt;!--&#010;-      &lt;plugin&gt;&#010;-        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&#010;-        &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;&#010;-        &lt;executions&gt;&#010;-          &lt;execution&gt;&#010;-            &lt;id&gt;bin&lt;/id&gt;&#010;-            &lt;phase&gt;install&lt;/phase&gt;&#010;-            &lt;goals&gt;&#010;-              &lt;goal&gt;assembly&lt;/goal&gt;&#010;-            &lt;/goals&gt;&#010;-            &lt;configuration&gt;&#010;-              &lt;descriptor&gt;${basedir}/src/assembly/assembly-bin.xml&lt;/descriptor&gt;&#010;-              &lt;finalName&gt;picocontainer-${pom.version}&lt;/finalName&gt;&#010;-              &lt;workDirectory&gt;target/assembly/bin&lt;/workDirectory&gt;&#010;-            &lt;/configuration&gt;&#010;-          &lt;/execution&gt;&#010;-          &lt;execution&gt;&#010;-            &lt;id&gt;src&lt;/id&gt;&#010;-            &lt;phase&gt;install&lt;/phase&gt;&#010;-            &lt;goals&gt;&#010;-              &lt;goal&gt;assembly&lt;/goal&gt;&#010;-            &lt;/goals&gt;&#010;-            &lt;configuration&gt;&#010;-              &lt;descriptor&gt;${basedir}/src/assembly/assembly-src.xml&lt;/descriptor&gt;&#010;-              &lt;finalName&gt;picocontainer-${pom.version}&lt;/finalName&gt;&#010;-              &lt;workDirectory&gt;target/assembly/src&lt;/workDirectory&gt;&#010;-            &lt;/configuration&gt;&#010;-          &lt;/execution&gt;&#010;-        &lt;/executions&gt;&#010;-      &lt;/plugin&gt;   --&gt;&#010;       &lt;plugin&gt;&#010;         &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&#010;         &lt;artifactId&gt;maven-site-plugin&lt;/artifactId&gt;&#010;&#010;Modified: incubator/composer/trunk/composer-tck/apache-composer-tck.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-tck/apache-composer-tck.iml?rev=618175&amp;r1=618174&amp;r2=618175&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-tck/apache-composer-tck.iml (original)&#010;+++ incubator/composer/trunk/composer-tck/apache-composer-tck.iml Sun Feb  3 22:38:09 2008&#010;@@ -1,266 +1,250 @@&#010; &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;-&lt;module relativePaths="false" type="JAVA_MODULE" version="4"&gt;&#010;-  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt;&#010;-    &lt;output url="file://$MODULE_DIR$/target/classes" /&gt;&#010;-    &lt;exclude-output /&gt;&#010;-    &lt;output-test url="file://$MODULE_DIR$/target/test-classes" /&gt;&#010;-    &lt;content url="file:///scm/oss/composer/composer/core/src/test"&gt;&#010;-      &lt;sourceFolder url="file:///scm/oss/composer/composer/trunk/composer-core/src/test/java" isTestSource="false" /&gt;&#010;-      &lt;excludeFolder url="file://$MODULE_DIR$/target" /&gt;&#010;-    &lt;/content&gt;&#010;-    &lt;content url="file://$MODULE_DIR$"&gt;&#010;-      &lt;sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" /&gt;&#010;-      &lt;sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" /&gt;&#010;-    &lt;/content&gt;&#010;-    &lt;orderEntry type="inheritedJdk" /&gt;&#010;-    &lt;orderEntry type="sourceFolder" forTests="false" /&gt;&#010;-    &lt;orderEntry type="module" module-name="apache-composer-core" exported="" /&gt;&#010;-    &lt;orderEntry type="module-library"&gt;&#010;-      &lt;library&gt;&#010;-        &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/" /&gt;&#010;+&#010;+&lt;module relativePaths="false" type="JAVA_MODULE" version="4"&gt; &#010;+  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt; &#010;+    &lt;output url="file://$MODULE_DIR$/target/classes"/&gt;  &#010;+    &lt;exclude-output/&gt;  &#010;+    &lt;output-test url="file://$MODULE_DIR$/target/test-classes"/&gt;  &#010;+    &lt;content url="file:///scm/oss/composer/composer/core/src/test"&gt; &#010;+      &lt;sourceFolder url="file://$MODULE_DIR$/../composer-core/src/test/java" isTestSource="false"/&gt;&#010;+      &lt;excludeFolder url="file://$MODULE_DIR$/target"/&gt;&#010;+    &lt;/content&gt;  &#010;+    &lt;content url="file://$MODULE_DIR$"&gt; &#010;+      &lt;sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false"/&gt;  &#010;+      &lt;sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true"/&gt; &#010;+    &lt;/content&gt;  &#010;+    &lt;orderEntry type="inheritedJdk"/&gt;  &#010;+    &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;+    &lt;orderEntry type="module" module-name="apache-composer-core" exported=""/&gt;  &#010;+    &lt;orderEntryProperties/&gt;  &#010;+    &lt;orderEntry type="module-library"&gt;&#010;+      &lt;library&gt;&#010;+        &lt;CLASSES&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit-dep/4.4/junit-dep-4.4.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/" /&gt;&#010;-        &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;-      &lt;/library&gt;&#010;-    &lt;/orderEntry&gt;&#010;-    &lt;orderEntryProperties /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="copyright"&gt;&#010;-    &lt;Base&gt;&#010;-      &lt;setting name="state" value="2" /&gt;&#010;-    &lt;/Base&gt;&#010;-    &lt;LanguageOptions name="$TEMPLATE$"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Apache Composer Organization. All rights reserved.            &amp;#10;------------------------------------------------------------------------- &amp;#10;The software in this package is published under the terms of the BSD      &amp;#10;style license a copy of which has been included with this distribution in &amp;#10;the LICENSE.txt file.                                                     &amp;#10;" /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="4" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="CSS"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="HTML"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="JAVA"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="JSP"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="JavaScript"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="Properties"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-    &lt;LanguageOptions name="XML"&gt;&#010;-      &lt;option name="templateOptions"&gt;&#010;-        &lt;value&gt;&#010;-          &lt;option name="block" value="true" /&gt;&#010;-          &lt;option name="separateBefore" value="false" /&gt;&#010;-          &lt;option name="separateAfter" value="false" /&gt;&#010;-          &lt;option name="prefixLines" value="true" /&gt;&#010;-          &lt;option name="lenBefore" value="80" /&gt;&#010;-          &lt;option name="lenAfter" value="80" /&gt;&#010;-          &lt;option name="box" value="false" /&gt;&#010;-          &lt;option name="filler" value=" " /&gt;&#010;-        &lt;/value&gt;&#010;-      &lt;/option&gt;&#010;-      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved." /&gt;&#010;-      &lt;option name="keyword" value="Copyright" /&gt;&#010;-      &lt;option name="fileTypeOverride" value="2" /&gt;&#010;-      &lt;option name="relativeBefore" value="true" /&gt;&#010;-      &lt;option name="addBlankAfter" value="true" /&gt;&#010;-      &lt;option name="fileLocation" value="1" /&gt;&#010;-      &lt;option name="useAlternate" value="false" /&gt;&#010;-    &lt;/LanguageOptions&gt;&#010;-  &lt;/component&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/paranamer/paranamer/1.1/paranamer-1.1.jar!/"/&gt;&#010;+        &lt;/CLASSES&gt;&#010;+      &lt;/library&gt;&#010;+    &lt;/orderEntry&gt;&#010;+  &lt;/component&gt;  &#010;+  &lt;component name="copyright"&gt; &#010;+    &lt;Base&gt; &#010;+      &lt;setting name="state" value="2"/&gt; &#010;+    &lt;/Base&gt;  &#010;+    &lt;LanguageOptions name="$TEMPLATE$"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Apache Composer Organization. All rights reserved.            &amp;#10;------------------------------------------------------------------------- &amp;#10;The software in this package is published under the terms of the BSD      &amp;#10;style license a copy of which has been included with this distribution in &amp;#10;the LICENSE.txt file.                                                     &amp;#10;"/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="4"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="CSS"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="HTML"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="JAVA"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="JSP"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="JavaScript"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="Properties"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt;  &#010;+    &lt;LanguageOptions name="XML"&gt; &#010;+      &lt;option name="templateOptions"&gt; &#010;+        &lt;value&gt; &#010;+          &lt;option name="block" value="true"/&gt;  &#010;+          &lt;option name="separateBefore" value="false"/&gt;  &#010;+          &lt;option name="separateAfter" value="false"/&gt;  &#010;+          &lt;option name="prefixLines" value="true"/&gt;  &#010;+          &lt;option name="lenBefore" value="80"/&gt;  &#010;+          &lt;option name="lenAfter" value="80"/&gt;  &#010;+          &lt;option name="box" value="false"/&gt;  &#010;+          &lt;option name="filler" value=" "/&gt; &#010;+        &lt;/value&gt; &#010;+      &lt;/option&gt;  &#010;+      &lt;option name="notice" value="Copyright (c) &amp;amp;#36;today.year, Your Corporation. All Rights Reserved."/&gt;  &#010;+      &lt;option name="keyword" value="Copyright"/&gt;  &#010;+      &lt;option name="fileTypeOverride" value="2"/&gt;  &#010;+      &lt;option name="relativeBefore" value="true"/&gt;  &#010;+      &lt;option name="addBlankAfter" value="true"/&gt;  &#010;+      &lt;option name="fileLocation" value="1"/&gt;  &#010;+      &lt;option name="useAlternate" value="false"/&gt; &#010;+    &lt;/LanguageOptions&gt; &#010;+  &lt;/component&gt; &#010; &lt;/module&gt;&#010;-&#010;&#010;Modified: incubator/composer/trunk/pom.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/pom.xml?rev=618175&amp;r1=618174&amp;r2=618175&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/pom.xml (original)&#010;+++ incubator/composer/trunk/pom.xml Sun Feb  3 22:38:09 2008&#010;@@ -11,6 +11,7 @@&#010;   &lt;modules&gt;&#010;     &lt;module&gt;composer-core&lt;/module&gt;&#010;     &lt;module&gt;composer-tck&lt;/module&gt;&#010;+    &lt;module&gt;composer-site&lt;/module&gt;&#010;   &lt;/modules&gt;&#010;   &lt;organization&gt;&#010;     &lt;name&gt;Apache&lt;/name&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618175 [2/3] - in /incubator/composer/trunk: apache-composer.iml apache-composer.ipr composer-core/apache-composer-core.iml composer-site/picocontainer-distribution.iml composer-site/pom.xml composer-tck/apache-composer-tck.iml pom.xml</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204063811.7CA021A983A@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204063811-7CA021A983A@eris-apache-org%3e</id>
<updated>2008-02-04T06:38:10Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Modified: incubator/composer/trunk/apache-composer.ipr&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/apache-composer.ipr?rev=618175&amp;r1=618174&amp;r2=618175&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/apache-composer.ipr (original)&#010;+++ incubator/composer/trunk/apache-composer.ipr Sun Feb  3 22:38:09 2008&#010;@@ -1,682 +1,681 @@&#010; &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;-&lt;project relativePaths="false" version="4"&gt;&#010;-  &lt;component name="AntConfiguration"&gt;&#010;-    &lt;defaultAnt bundledAnt="true" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="BuildJarProjectSettings"&gt;&#010;-    &lt;option name="BUILD_JARS_ON_MAKE" value="false" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="CodeStyleProjectProfileManger"&gt;&#010;-    &lt;option name="PROJECT_PROFILE" /&gt;&#010;-    &lt;option name="USE_PROJECT_LEVEL_SETTINGS" value="false" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="CodeStyleSettingsManager"&gt;&#010;-    &lt;option name="PER_PROJECT_SETTINGS" /&gt;&#010;-    &lt;option name="USE_PER_PROJECT_SETTINGS" value="false" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="CompilerConfiguration"&gt;&#010;-    &lt;option name="DEFAULT_COMPILER" value="Javac" /&gt;&#010;-    &lt;option name="DEPLOY_AFTER_MAKE" value="0" /&gt;&#010;-    &lt;resourceExtensions&gt;&#010;-      &lt;entry name=".+\.(properties|xml|html|dtd|tld)" /&gt;&#010;-      &lt;entry name=".+\.(gif|png|jpeg|jpg)" /&gt;&#010;-    &lt;/resourceExtensions&gt;&#010;+&#010;+&lt;project relativePaths="false" version="4"&gt; &#010;+  &lt;component name="AntConfiguration"&gt; &#010;+    &lt;defaultAnt bundledAnt="true"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="BuildJarProjectSettings"&gt; &#010;+    &lt;option name="BUILD_JARS_ON_MAKE" value="false"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="CodeStyleProjectProfileManger"&gt; &#010;+    &lt;option name="PROJECT_PROFILE"/&gt;  &#010;+    &lt;option name="USE_PROJECT_LEVEL_SETTINGS" value="false"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="CodeStyleSettingsManager"&gt; &#010;+    &lt;option name="PER_PROJECT_SETTINGS"/&gt;  &#010;+    &lt;option name="USE_PER_PROJECT_SETTINGS" value="false"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="CompilerConfiguration"&gt; &#010;+    &lt;option name="DEFAULT_COMPILER" value="Javac"/&gt;  &#010;+    &lt;option name="DEPLOY_AFTER_MAKE" value="0"/&gt;  &#010;+    &lt;resourceExtensions&gt; &#010;+      &lt;entry name=".+\.(properties|xml|html|dtd|tld)"/&gt;  &#010;+      &lt;entry name=".+\.(gif|png|jpeg|jpg)"/&gt; &#010;+    &lt;/resourceExtensions&gt;  &#010;     &lt;wildcardResourcePatterns&gt;&#010;-      &lt;entry name="!?*.java" /&gt;&#010;+      &lt;entry name="!?*.java"/&gt;&#010;     &lt;/wildcardResourcePatterns&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="DependenciesAnalyzeManager"&gt;&#010;-    &lt;option name="myForwardDirection" value="false" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="DependencyValidationManager"&gt;&#010;-    &lt;option name="SKIP_IMPORT_STATEMENTS" value="false" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="EclipseCompilerSettings"&gt;&#010;-    &lt;option name="DEBUGGING_INFO" value="true" /&gt;&#010;-    &lt;option name="GENERATE_NO_WARNINGS" value="true" /&gt;&#010;-    &lt;option name="DEPRECATION" value="false" /&gt;&#010;-    &lt;option name="ADDITIONAL_OPTIONS_STRING" value="" /&gt;&#010;-    &lt;option name="MAXIMUM_HEAP_SIZE" value="128" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="EclipseEmbeddedCompilerSettings"&gt;&#010;-    &lt;option name="DEBUGGING_INFO" value="true" /&gt;&#010;-    &lt;option name="GENERATE_NO_WARNINGS" value="true" /&gt;&#010;-    &lt;option name="DEPRECATION" value="false" /&gt;&#010;-    &lt;option name="ADDITIONAL_OPTIONS_STRING" value="" /&gt;&#010;-    &lt;option name="MAXIMUM_HEAP_SIZE" value="128" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="EntryPointsManager"&gt;&#010;-    &lt;entry_points version="2.0" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="IdProvider" IDEtalkID="CF23A4211E5C0F80C014B84315CC8986" /&gt;&#010;-  &lt;component name="InspectionProjectProfileManager"&gt;&#010;-    &lt;option name="PROJECT_PROFILE" value="Project Default" /&gt;&#010;-    &lt;option name="USE_PROJECT_LEVEL_SETTINGS" value="false" /&gt;&#010;-    &lt;scopes /&gt;&#010;-    &lt;profiles&gt;&#010;-      &lt;profile version="1.0" is_locked="false"&gt;&#010;-        &lt;option name="myName" value="Project Default" /&gt;&#010;-        &lt;option name="myLocal" value="false" /&gt;&#010;-        &lt;inspection_tool class="AntDuplicateTargetsInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="AntDuplicateImportedTargetsInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="AntMissingPropertiesFileInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ArgNamesErrorsInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ArgNamesWarningsInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="DeclareParentsInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringAopErrorsInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringAopWarningsInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="Geronimo" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="Glassfish" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JBoss" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="Weblogic" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SillyAssignmentJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="IncompatibleMask" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="PointlessBitwiseExpression" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_ignoreExpressionsContainingConstants" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="ShiftOutOfRange" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="IncompatibleMaskJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="PointlessBitwiseExpressionJS" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_ignoreExpressionsContainingConstants" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="ShiftOutOfRangeJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FieldCanBeLocal" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FinalPrivateMethod" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FinalStaticMethod" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CloneCallsSuperClone" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CloneDeclaresCloneNotSupported" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ExtendsObject" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="TypeParameterExtendsObject" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessarySemicolon" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SimplifiableConditionalExpression" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ConstantConditionalExpression" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ConstantIfStatement" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="InfiniteLoopStatement" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="LoopStatementsThatDontLoop" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="PointlessBooleanExpression" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_ignoreExpressionsContainingConstants" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="TrivialIf" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryConditionalExpression" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryContinue" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryReturn" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryLabelOnBreakStatement" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryLabelOnContinueStatement" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnusedLabel" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ConstantConditionalExpressionJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ConstantIfStatementJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FallthroughInSwitchStatementJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="LoopStatementThatDoesntLoopJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="PointlessBooleanExpressionJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="TrivialIfJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="TrivialConditionalJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryContinueJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryReturnJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryLabelJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryLabelOnBreakStatementJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryLabelOnContinueStatementJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssUnitlessNumber" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssNoGenericFontName" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssOverwrittenProperties" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssInvalidElementInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssRgbFunctionInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssInvalidShorthandPropertyValue" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssNegativeValueInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CssUnknownProperty" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="myCustomPropertiesEnabled" value="false" /&gt;&#010;-          &lt;option name="myCustomPropertiesList"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;list size="0" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="CssUnusedSymbolInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryLocalVariable" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_ignoreImmediatelyReturnedVariables" value="false" /&gt;&#010;-          &lt;option name="m_ignoreAnnotatedVariables" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="UnnecessaryLocalVariableJS" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_ignoreImmediatelyReturnedVariables" value="false" /&gt;&#010;-          &lt;option name="m_ignoreAnnotatedVariables" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="SameParameterValue" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="WeakerAccess" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="true" /&gt;&#010;-          &lt;option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="true" /&gt;&#010;-          &lt;option name="SUGGEST_PRIVATE_FOR_INNERS" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="CanBeFinal" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="REPORT_CLASSES" value="false" /&gt;&#010;-          &lt;option name="REPORT_METHODS" value="false" /&gt;&#010;-          &lt;option name="REPORT_FIELDS" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="DuplicateThrows" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EmptyMethod" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SameReturnValue" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="RedundantThrows" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryModuleDependencyInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnusedDeclaration" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="ADD_MAINS_TO_ENTRIES" value="true" /&gt;&#010;-          &lt;option name="ADD_APPLET_TO_ENTRIES" value="true" /&gt;&#010;-          &lt;option name="ADD_SERVLET_TO_ENTRIES" value="true" /&gt;&#010;-          &lt;option name="ADD_NONJAVA_TO_ENTRIES" value="true" /&gt;&#010;-          &lt;option name="ADDITIONAL_ANNOTATIONS"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;list size="0" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-          &lt;option name="ADD_EJB_TO_ENTRIES" value="true" /&gt;&#010;-          &lt;option name="ADD_JUNIT_TO_ENTRIES" value="true" /&gt;&#010;-          &lt;option name="ADD_TESTNG_TO_ENTRIES" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="UnusedParameters" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnusedReturnValue" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UNUSED_SYMBOL" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="LOCAL_VARIABLE" value="true" /&gt;&#010;-          &lt;option name="FIELD" value="true" /&gt;&#010;-          &lt;option name="METHOD" value="true" /&gt;&#010;-          &lt;option name="CLASS" value="true" /&gt;&#010;-          &lt;option name="PARAMETER" value="true" /&gt;&#010;-          &lt;option name="REPORT_PARAMETER_FOR_PUBLIC_METHODS" value="true" /&gt;&#010;-          &lt;option name="INJECTION_ANNOS"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;list size="0" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="CaughtExceptionImmediatelyRethrown" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ContinueOrBreakFromFinallyBlock" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EmptyCatchBlock" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_includeComments" value="true" /&gt;&#010;-          &lt;option name="m_ignoreTestCases" value="true" /&gt;&#010;-          &lt;option name="m_ignoreIgnoreParameter" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="EmptyFinallyBlock" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EmptyTryBlock" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FinallyBlockCannotCompleteNormally" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ReturnFromFinallyBlock" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ThrowFromFinallyBlock" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnhandledExceptionInJSP" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ContinueOrBreakFromFinallyBlockJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ExceptionCaughtLocallyJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ReturnFromFinallyBlockJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ThrowFromFinallyBlockJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FacesModelInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NoExplicitFinalizeCalls" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FinalizeCallsSuperFinalize" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_ignoreForObjectSubclasses" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="AccessStaticViaInstance" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="BooleanMethodIsAlwaysInverted" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JavaDoc" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="TOP_LEVEL_CLASS_OPTIONS"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /&gt;&#010;-              &lt;option name="REQUIRED_TAGS" value="" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-          &lt;option name="INNER_CLASS_OPTIONS"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /&gt;&#010;-              &lt;option name="REQUIRED_TAGS" value="" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-          &lt;option name="METHOD_OPTIONS"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /&gt;&#010;-              &lt;option name="REQUIRED_TAGS" value="@return@param@throws or @exception" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-          &lt;option name="FIELD_OPTIONS"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /&gt;&#010;-              &lt;option name="REQUIRED_TAGS" value="" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-          &lt;option name="IGNORE_DEPRECATED" value="false" /&gt;&#010;-          &lt;option name="IGNORE_JAVADOC_PERIOD" value="true" /&gt;&#010;-          &lt;option name="myAdditionalJavadocTags" value="" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="JavadocReference" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="DefaultFileTemplate" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="CHECK_FILE_HEADER" value="true" /&gt;&#010;-          &lt;option name="CHECK_TRY_CATCH_SECTION" value="true" /&gt;&#010;-          &lt;option name="CHECK_METHOD_BODY" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="Deprecation" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="Dependency" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UNCHECKED_WARNING" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SillyAssignment" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="WrongPackageStatement" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NonJREEmulationClassesInClientCode" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GwtServiceNotRegistered" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GwtInconsistentI18nInterface" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GWTRemoteServiceAsyncCheck" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GwtInconsistentSerializableClass" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GwtMethodWithParametersInConstantsInterface" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NonSerializableServiceParameters" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GwtJavaScriptReferences" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GWTStyleCheck" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="GwtToHtmlReferences" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="HibernateMappingDatasourceDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="HibernateConfigDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="HibernateMappingDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CheckEmptyScriptTag" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="HtmlExtraClosingTag" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CheckImageSize" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="RequiredAttributes" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="myAdditionalRequiredHtmlAttributes" value="" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="HtmlUnknownTag" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="myValues"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;list size="5"&gt;&#010;-                &lt;item index="0" class="java.lang.String" itemvalue="embed" /&gt;&#010;-                &lt;item index="1" class="java.lang.String" itemvalue="nobr" /&gt;&#010;-                &lt;item index="2" class="java.lang.String" itemvalue="noembed" /&gt;&#010;-                &lt;item index="3" class="java.lang.String" itemvalue="comment" /&gt;&#010;-                &lt;item index="4" class="java.lang.String" itemvalue="script" /&gt;&#010;-              &lt;/list&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-          &lt;option name="myCustomValuesEnabled" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="HtmlUnknownAttribute" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="myValues"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;list size="5"&gt;&#010;-                &lt;item index="0" class="java.lang.String" itemvalue="type" /&gt;&#010;-                &lt;item index="1" class="java.lang.String" itemvalue="wmode" /&gt;&#010;-                &lt;item index="2" class="java.lang.String" itemvalue="src" /&gt;&#010;-                &lt;item index="3" class="java.lang.String" itemvalue="width" /&gt;&#010;-                &lt;item index="4" class="java.lang.String" itemvalue="height" /&gt;&#010;-              &lt;/list&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-          &lt;option name="myCustomValuesEnabled" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="CheckValidXmlInScriptTagBody" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UNUSED_IMPORT" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ExtendsAnnotation" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnresolvedPropertyKey" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SimplifiableIfStatement" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MissedExecutable" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ForCanBeForeach" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="REPORT_INDEXED_LOOP" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="UnnecessaryBoxing" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryUnboxing" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="WhileCanBeForeach" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaDataSourceORMInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaDataSourceORMDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EjbErrorInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EjbWarningInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EjbDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EjbQlInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JavaeeApplicationDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MimeType" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaORMDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaModelErrorInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaModelWarningInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaQlInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaQueryApiInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JpaDomInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ReferencesToClassesFromDefaultPackagesInJSPFile" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SelfIncludingJspFiles" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="WebProperties" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="WebWarnings" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSUntypedDeclaration" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSDeprecatedSymbols" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSDuplicatedDeclaration" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSUndeclaredVariable" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSShowOverridingMarkers" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSUnresolvedFunction" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSUnresolvedVariable" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="JSUnusedLocalSymbols" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="DuplicateCaseLabelJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="DuplicatePropertyOnObjectJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="BadExpressionStatementJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="FunctionWithInconsistentReturnsJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ReservedWordUsedAsNameJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ThisExpressionReferencesGlobalObjectJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnreachableCodeJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ELValidationInJSP" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CheckJsfComponentUnderViewTag" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ELSpecValidationInJSP" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="AssertEqualsBetweenInconvertibleTypes" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="OctalLiteral" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="PointlessArithmeticExpression" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_ignoreExpressionsContainingConstants" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="BooleanConstructor" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ToArrayCallWithZeroLengthArrayArgument" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="InstantiatingObjectToGetClassObject" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ManualArrayCopy" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ManualArrayToCollectionCopy" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="StringToString" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="StringConstructor" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="ignoreSubstringArguments" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="StringConcatenationInsideStringBufferAppend" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryTemporaryOnConversionFromString" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnnecessaryTemporaryOnConversionToString" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ComponentRegistrationProblems" level="ERROR" enabled="false"&gt;&#010;-          &lt;option name="CHECK_PLUGIN_XML" value="true" /&gt;&#010;-          &lt;option name="CHECK_JAVA_CODE" value="true" /&gt;&#010;-          &lt;option name="CHECK_ACTIONS" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="ComponentNotRegistered" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="CHECK_ACTIONS" value="true" /&gt;&#010;-          &lt;option name="IGNORE_NON_PUBLIC" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="PointlessArithmeticExpressionJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EmptyStatementBodyJS" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_reportEmptyBlocks" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="ComparatorMethodParameterNotUsed" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NullArgumentToVariableArgMethod" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="PrimitiveArrayArgumentToVariableArgMethod" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ConstantConditions" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="SUGGEST_NULLABLE_ANNOTATIONS" value="false" /&gt;&#010;-          &lt;option name="DONT_REPORT_TRUE_ASSERT_STATEMENTS" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="EqualsBetweenInconvertibleTypes" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ArrayEquals" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EqualsWhichDoesntCheckParameterClass" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ImplicitArrayToString" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="InfiniteRecursion" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MalformedFormatString" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MalformedRegex" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MalformedXPath" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MismatchedCollectionQueryUpdate" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MismatchedArrayReadWrite" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NullableProblems" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="REPORT_NULLABLE_METHOD_OVERRIDES_NOTNULL" value="true" /&gt;&#010;-          &lt;option name="REPORT_NOT_ANNOTATED_METHOD_OVERRIDES_NOTNULL" value="true" /&gt;&#010;-          &lt;option name="REPORT_NOTNULL_PARAMETER_OVERRIDES_NULLABLE" value="true" /&gt;&#010;-          &lt;option name="REPORT_NOT_ANNOTATED_PARAMETER_OVERRIDES_NOTNULL" value="true" /&gt;&#010;-          &lt;option name="REPORT_NOT_ANNOTATED_GETTER" value="true" /&gt;&#010;-          &lt;option name="REPORT_NOT_ANNOTATED_SETTER_PARAMETER" value="true" /&gt;&#010;-          &lt;option name="REPORT_ANNOTATION_NOT_PROPAGATED_TO_OVERRIDERS" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="NumberEquality" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ObjectEqualsNull" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ReflectionForUnavailableAnnotation" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="IgnoreResultOfCall" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_reportAllNonLibraryCalls" value="false" /&gt;&#010;-          &lt;option name="callCheckString" value="java.io.InputStream,read,java.io.InputStream,skip,java.lang.StringBuffer,toString,java.lang.StringBuilder,toString,java.lang.String,.*,java.math.BigInteger,.*,java.math.BigDecimal,.*,java.net.InetAddress,.*" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="EmptyStatementBody" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="m_reportEmptyBlocks" value="false" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="StringEquality" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NewStringBufferWithCharArgument" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SuspiciousToArrayCall" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SuspiciousSystemArraycopy" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SuspiciousMethodCalls" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="REPORT_CONVERTIBLE_METHOD_CALLS" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="SuspiciousNameCombination" level="WARNING" enabled="false"&gt;&#010;-          &lt;group names="x,width,left,right" /&gt;&#010;-          &lt;group names="y,height,top,bottom" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="ThrowableInstanceNeverThrown" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UnusedAssignment" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="REPORT_PREFIX_EXPRESSIONS" value="false" /&gt;&#010;-          &lt;option name="REPORT_POSTFIX_EXPRESSIONS" value="true" /&gt;&#010;-          &lt;option name="REPORT_REDUNDANT_INITIALIZER" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="InfiniteLoopJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="InfiniteRecursionJS" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="InconsistentResourceBundle" level="ERROR" enabled="false"&gt;&#010;-          &lt;option name="REPORT_MISSING_TRANSLATIONS" value="true" /&gt;&#010;-          &lt;option name="REPORT_INCONSISTENT_PROPERTIES" value="true" /&gt;&#010;-          &lt;option name="REPORT_DUPLICATED_PROPERTIES" value="true" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="UnusedMessageFormatParameter" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="AbstractBeanReferencesInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="AutowiredDependenciesInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringBeanConstructorArgInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="DuplicatedBeanNamesInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringInjectionValueConsistencyInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="InjectionValueTypeInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringBeanLookupMethodInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringReplacedMethodsInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringBeanAutowiringInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringBeanDepedencyCheckInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringFactoryMethodInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringBeanInstantiationInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringBeanNameConventionInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringInjectionValueStyleInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringJamErrorInspection" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringModelInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SpringScopesInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="UtilSchemaInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="StrutsInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="StrutsTilesInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="StrutsValidatorInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="StrutsValidatorFormInspection" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="dependsOnMethodTestNG" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="groupsTestNG" level="WARNING" enabled="false"&gt;&#010;-          &lt;option name="groups"&gt;&#010;-            &lt;value&gt;&#010;-              &lt;list size="0" /&gt;&#010;-            &lt;/value&gt;&#010;-          &lt;/option&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-        &lt;inspection_tool class="SynchronizeOnNonFinalField" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="BoundFieldAssignment" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="OneButtonGroup" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="DuplicateMnemonic" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="MissingMnemonic" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NoLabelFor" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NoButtonGroup" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NoScrollPane" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="RedundantArrayCreation" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="RedundantTypeArguments" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="RedundantCast" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="EmptyWebServiceClass" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="OneWayWebMethod" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ImplicitlyExposedWebServiceMethods" level="INFO" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="NonJaxWsWebServices" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="ValidExternallyBoundObject" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CheckDtdRefs" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CheckXmlFileWithXercesValidator" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="XmlWrongClosingTagName" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="XmlWrongRootElement" level="ERROR" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="CheckTagEmptyBody" level="WARNING" enabled="false" /&gt;&#010;-        &lt;inspection_tool class="SerializableHasSerialVersionUIDField" level="WARNING" enabled="true"&gt;&#010;-          &lt;option name="superClassString" value="java.awt.Component" /&gt;&#010;-        &lt;/inspection_tool&gt;&#010;-      &lt;/profile&gt;&#010;-    &lt;/profiles&gt;&#010;-    &lt;list size="0" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="JavacSettings"&gt;&#010;-    &lt;option name="DEBUGGING_INFO" value="true" /&gt;&#010;-    &lt;option name="GENERATE_NO_WARNINGS" value="false" /&gt;&#010;-    &lt;option name="DEPRECATION" value="true" /&gt;&#010;-    &lt;option name="ADDITIONAL_OPTIONS_STRING" value="" /&gt;&#010;-    &lt;option name="MAXIMUM_HEAP_SIZE" value="128" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="JavadocGenerationManager"&gt;&#010;-    &lt;option name="OUTPUT_DIRECTORY" /&gt;&#010;-    &lt;option name="OPTION_SCOPE" value="protected" /&gt;&#010;-    &lt;option name="OPTION_HIERARCHY" value="true" /&gt;&#010;-    &lt;option name="OPTION_NAVIGATOR" value="true" /&gt;&#010;-    &lt;option name="OPTION_INDEX" value="true" /&gt;&#010;-    &lt;option name="OPTION_SEPARATE_INDEX" value="true" /&gt;&#010;-    &lt;option name="OPTION_DOCUMENT_TAG_USE" value="false" /&gt;&#010;-    &lt;option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" /&gt;&#010;-    &lt;option name="OPTION_DOCUMENT_TAG_VERSION" value="false" /&gt;&#010;-    &lt;option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" /&gt;&#010;-    &lt;option name="OPTION_DEPRECATED_LIST" value="true" /&gt;&#010;-    &lt;option name="OTHER_OPTIONS" value="" /&gt;&#010;-    &lt;option name="HEAP_SIZE" /&gt;&#010;-    &lt;option name="LOCALE" /&gt;&#010;-    &lt;option name="OPEN_IN_BROWSER" value="true" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="JikesSettings"&gt;&#010;-    &lt;option name="JIKES_PATH" value="" /&gt;&#010;-    &lt;option name="DEBUGGING_INFO" value="true" /&gt;&#010;-    &lt;option name="DEPRECATION" value="true" /&gt;&#010;-    &lt;option name="GENERATE_NO_WARNINGS" value="false" /&gt;&#010;-    &lt;option name="IS_EMACS_ERRORS_MODE" value="true" /&gt;&#010;-    &lt;option name="ADDITIONAL_OPTIONS_STRING" value="" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="Palette2"&gt;&#010;-    &lt;group name="Swing"&gt;&#010;-      &lt;item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /&gt;&#010;-        &lt;initial-values&gt;&#010;-          &lt;property name="text" value="Button" /&gt;&#010;-        &lt;/initial-values&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /&gt;&#010;-        &lt;initial-values&gt;&#010;-          &lt;property name="text" value="RadioButton" /&gt;&#010;-        &lt;/initial-values&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /&gt;&#010;-        &lt;initial-values&gt;&#010;-          &lt;property name="text" value="CheckBox" /&gt;&#010;-        &lt;/initial-values&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /&gt;&#010;-        &lt;initial-values&gt;&#010;-          &lt;property name="text" value="Label" /&gt;&#010;-        &lt;/initial-values&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"&gt;&#010;-          &lt;preferred-size width="150" height="-1" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"&gt;&#010;-          &lt;preferred-size width="150" height="-1" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"&gt;&#010;-          &lt;preferred-size width="150" height="-1" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="150" height="50" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="150" height="50" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="150" height="50" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="150" height="50" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="150" height="50" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="150" height="50" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="200" height="200" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"&gt;&#010;-          &lt;preferred-size width="200" height="200" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"&gt;&#010;-          &lt;preferred-size width="-1" height="20" /&gt;&#010;-        &lt;/default-constraints&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /&gt;&#010;-      &lt;/item&gt;&#010;-      &lt;item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt;&#010;-        &lt;default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /&gt;&#010;-      &lt;/item&gt;&#010;-    &lt;/group&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="ProjectFileVersion" converted="true" /&gt;&#010;-  &lt;component name="ProjectModuleManager"&gt;&#010;-    &lt;modules&gt;&#010;-      &lt;module fileurl="file://$PROJECT_DIR$/apache-composer.iml" filepath="$PROJECT_DIR$/apache-composer.iml" /&gt;&#010;-      &lt;module fileurl="file://$PROJECT_DIR$/composer-core/apache-composer-core.iml" filepath="$PROJECT_DIR$/composer-core/apache-composer-core.iml" /&gt;&#010;-      &lt;module fileurl="file://$PROJECT_DIR$/composer-tck/apache-composer-tck.iml" filepath="$PROJECT_DIR$/composer-tck/apache-composer-tck.iml" /&gt;&#010;-    &lt;/modules&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK"&gt;&#010;-    &lt;output url="file://$PROJECT_DIR$/out" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="ResourceManagerContainer"&gt;&#010;-    &lt;option name="myResourceBundles"&gt;&#010;-      &lt;value&gt;&#010;-        &lt;list size="0" /&gt;&#010;-      &lt;/value&gt;&#010;-    &lt;/option&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="RmicSettings"&gt;&#010;-    &lt;option name="IS_EANABLED" value="false" /&gt;&#010;-    &lt;option name="DEBUGGING_INFO" value="true" /&gt;&#010;-    &lt;option name="GENERATE_NO_WARNINGS" value="false" /&gt;&#010;-    &lt;option name="GENERATE_IIOP_STUBS" value="false" /&gt;&#010;-    &lt;option name="ADDITIONAL_OPTIONS_STRING" value="" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="VcsDirectoryMappings"&gt;&#010;-    &lt;mapping directory="" vcs="" /&gt;&#010;-    &lt;mapping directory="$PROJECT_DIR$" vcs="svn" /&gt;&#010;-  &lt;/component&gt;&#010;-  &lt;component name="WebServicesPlugin" addRequiredLibraries="true" /&gt;&#010;-  &lt;UsedPathMacros&gt;&#010;-    &lt;macro name="M2_REPOSITORY" /&gt;&#010;-  &lt;/UsedPathMacros&gt;&#010;+  &lt;/component&gt;  &#010;+  &lt;component name="DependenciesAnalyzeManager"&gt; &#010;+    &lt;option name="myForwardDirection" value="false"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="DependencyValidationManager"&gt; &#010;+    &lt;option name="SKIP_IMPORT_STATEMENTS" value="false"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="EclipseCompilerSettings"&gt; &#010;+    &lt;option name="DEBUGGING_INFO" value="true"/&gt;  &#010;+    &lt;option name="GENERATE_NO_WARNINGS" value="true"/&gt;  &#010;+    &lt;option name="DEPRECATION" value="false"/&gt;  &#010;+    &lt;option name="ADDITIONAL_OPTIONS_STRING" value=""/&gt;  &#010;+    &lt;option name="MAXIMUM_HEAP_SIZE" value="128"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="EclipseEmbeddedCompilerSettings"&gt; &#010;+    &lt;option name="DEBUGGING_INFO" value="true"/&gt;  &#010;+    &lt;option name="GENERATE_NO_WARNINGS" value="true"/&gt;  &#010;+    &lt;option name="DEPRECATION" value="false"/&gt;  &#010;+    &lt;option name="ADDITIONAL_OPTIONS_STRING" value=""/&gt;  &#010;+    &lt;option name="MAXIMUM_HEAP_SIZE" value="128"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="EntryPointsManager"&gt; &#010;+    &lt;entry_points version="2.0"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="IdProvider" IDEtalkID="CF23A4211E5C0F80C014B84315CC8986"/&gt;  &#010;+  &lt;component name="InspectionProjectProfileManager"&gt; &#010;+    &lt;option name="PROJECT_PROFILE" value="Project Default"/&gt;  &#010;+    &lt;option name="USE_PROJECT_LEVEL_SETTINGS" value="false"/&gt;  &#010;+    &lt;scopes/&gt;  &#010;+    &lt;profiles&gt; &#010;+      &lt;profile version="1.0" is_locked="false"&gt; &#010;+        &lt;option name="myName" value="Project Default"/&gt;  &#010;+        &lt;option name="myLocal" value="false"/&gt;  &#010;+        &lt;inspection_tool class="AntDuplicateTargetsInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="AntDuplicateImportedTargetsInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="AntMissingPropertiesFileInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ArgNamesErrorsInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ArgNamesWarningsInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="DeclareParentsInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringAopErrorsInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringAopWarningsInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="Geronimo" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="Glassfish" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JBoss" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="Weblogic" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SillyAssignmentJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="IncompatibleMask" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="PointlessBitwiseExpression" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_ignoreExpressionsContainingConstants" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="ShiftOutOfRange" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="IncompatibleMaskJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="PointlessBitwiseExpressionJS" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_ignoreExpressionsContainingConstants" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="ShiftOutOfRangeJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FieldCanBeLocal" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FinalPrivateMethod" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FinalStaticMethod" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CloneCallsSuperClone" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CloneDeclaresCloneNotSupported" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ExtendsObject" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="TypeParameterExtendsObject" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessarySemicolon" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SimplifiableConditionalExpression" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ConstantConditionalExpression" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ConstantIfStatement" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="InfiniteLoopStatement" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="LoopStatementsThatDontLoop" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="PointlessBooleanExpression" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_ignoreExpressionsContainingConstants" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="TrivialIf" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryConditionalExpression" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryContinue" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryReturn" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryLabelOnBreakStatement" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryLabelOnContinueStatement" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnusedLabel" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ConstantConditionalExpressionJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ConstantIfStatementJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FallthroughInSwitchStatementJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="LoopStatementThatDoesntLoopJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="PointlessBooleanExpressionJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="TrivialIfJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="TrivialConditionalJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryContinueJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryReturnJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryLabelJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryLabelOnBreakStatementJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryLabelOnContinueStatementJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssUnitlessNumber" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssNoGenericFontName" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssOverwrittenProperties" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssInvalidElementInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssRgbFunctionInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssInvalidShorthandPropertyValue" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssNegativeValueInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CssUnknownProperty" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="myCustomPropertiesEnabled" value="false"/&gt;  &#010;+          &lt;option name="myCustomPropertiesList"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;list size="0"/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="CssUnusedSymbolInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryLocalVariable" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_ignoreImmediatelyReturnedVariables" value="false"/&gt;  &#010;+          &lt;option name="m_ignoreAnnotatedVariables" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryLocalVariableJS" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_ignoreImmediatelyReturnedVariables" value="false"/&gt;  &#010;+          &lt;option name="m_ignoreAnnotatedVariables" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="SameParameterValue" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="WeakerAccess" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="true"/&gt;  &#010;+          &lt;option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="true"/&gt;  &#010;+          &lt;option name="SUGGEST_PRIVATE_FOR_INNERS" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="CanBeFinal" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="REPORT_CLASSES" value="false"/&gt;  &#010;+          &lt;option name="REPORT_METHODS" value="false"/&gt;  &#010;+          &lt;option name="REPORT_FIELDS" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="DuplicateThrows" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EmptyMethod" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SameReturnValue" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="RedundantThrows" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryModuleDependencyInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnusedDeclaration" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="ADD_MAINS_TO_ENTRIES" value="true"/&gt;  &#010;+          &lt;option name="ADD_APPLET_TO_ENTRIES" value="true"/&gt;  &#010;+          &lt;option name="ADD_SERVLET_TO_ENTRIES" value="true"/&gt;  &#010;+          &lt;option name="ADD_NONJAVA_TO_ENTRIES" value="true"/&gt;  &#010;+          &lt;option name="ADDITIONAL_ANNOTATIONS"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;list size="0"/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt;  &#010;+          &lt;option name="ADD_EJB_TO_ENTRIES" value="true"/&gt;  &#010;+          &lt;option name="ADD_JUNIT_TO_ENTRIES" value="true"/&gt;  &#010;+          &lt;option name="ADD_TESTNG_TO_ENTRIES" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="UnusedParameters" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnusedReturnValue" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UNUSED_SYMBOL" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="LOCAL_VARIABLE" value="true"/&gt;  &#010;+          &lt;option name="FIELD" value="true"/&gt;  &#010;+          &lt;option name="METHOD" value="true"/&gt;  &#010;+          &lt;option name="CLASS" value="true"/&gt;  &#010;+          &lt;option name="PARAMETER" value="true"/&gt;  &#010;+          &lt;option name="REPORT_PARAMETER_FOR_PUBLIC_METHODS" value="true"/&gt;  &#010;+          &lt;option name="INJECTION_ANNOS"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;list size="0"/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="CaughtExceptionImmediatelyRethrown" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ContinueOrBreakFromFinallyBlock" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EmptyCatchBlock" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_includeComments" value="true"/&gt;  &#010;+          &lt;option name="m_ignoreTestCases" value="true"/&gt;  &#010;+          &lt;option name="m_ignoreIgnoreParameter" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="EmptyFinallyBlock" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EmptyTryBlock" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FinallyBlockCannotCompleteNormally" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ReturnFromFinallyBlock" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ThrowFromFinallyBlock" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnhandledExceptionInJSP" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ContinueOrBreakFromFinallyBlockJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ExceptionCaughtLocallyJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ReturnFromFinallyBlockJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ThrowFromFinallyBlockJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FacesModelInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NoExplicitFinalizeCalls" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FinalizeCallsSuperFinalize" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_ignoreForObjectSubclasses" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="AccessStaticViaInstance" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="BooleanMethodIsAlwaysInverted" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JavaDoc" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="TOP_LEVEL_CLASS_OPTIONS"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none"/&gt;  &#010;+              &lt;option name="REQUIRED_TAGS" value=""/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt;  &#010;+          &lt;option name="INNER_CLASS_OPTIONS"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none"/&gt;  &#010;+              &lt;option name="REQUIRED_TAGS" value=""/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt;  &#010;+          &lt;option name="METHOD_OPTIONS"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none"/&gt;  &#010;+              &lt;option name="REQUIRED_TAGS" value="@return@param@throws or @exception"/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt;  &#010;+          &lt;option name="FIELD_OPTIONS"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none"/&gt;  &#010;+              &lt;option name="REQUIRED_TAGS" value=""/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt;  &#010;+          &lt;option name="IGNORE_DEPRECATED" value="false"/&gt;  &#010;+          &lt;option name="IGNORE_JAVADOC_PERIOD" value="true"/&gt;  &#010;+          &lt;option name="myAdditionalJavadocTags" value=""/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="JavadocReference" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="DefaultFileTemplate" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="CHECK_FILE_HEADER" value="true"/&gt;  &#010;+          &lt;option name="CHECK_TRY_CATCH_SECTION" value="true"/&gt;  &#010;+          &lt;option name="CHECK_METHOD_BODY" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="Deprecation" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="Dependency" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UNCHECKED_WARNING" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SillyAssignment" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="WrongPackageStatement" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NonJREEmulationClassesInClientCode" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GwtServiceNotRegistered" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GwtInconsistentI18nInterface" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GWTRemoteServiceAsyncCheck" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GwtInconsistentSerializableClass" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GwtMethodWithParametersInConstantsInterface" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NonSerializableServiceParameters" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GwtJavaScriptReferences" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GWTStyleCheck" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="GwtToHtmlReferences" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="HibernateMappingDatasourceDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="HibernateConfigDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="HibernateMappingDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CheckEmptyScriptTag" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="HtmlExtraClosingTag" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CheckImageSize" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="RequiredAttributes" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="myAdditionalRequiredHtmlAttributes" value=""/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="HtmlUnknownTag" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="myValues"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;list size="5"&gt; &#010;+                &lt;item index="0" class="java.lang.String" itemvalue="embed"/&gt;  &#010;+                &lt;item index="1" class="java.lang.String" itemvalue="nobr"/&gt;  &#010;+                &lt;item index="2" class="java.lang.String" itemvalue="noembed"/&gt;  &#010;+                &lt;item index="3" class="java.lang.String" itemvalue="comment"/&gt;  &#010;+                &lt;item index="4" class="java.lang.String" itemvalue="script"/&gt; &#010;+              &lt;/list&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt;  &#010;+          &lt;option name="myCustomValuesEnabled" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="HtmlUnknownAttribute" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="myValues"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;list size="5"&gt; &#010;+                &lt;item index="0" class="java.lang.String" itemvalue="type"/&gt;  &#010;+                &lt;item index="1" class="java.lang.String" itemvalue="wmode"/&gt;  &#010;+                &lt;item index="2" class="java.lang.String" itemvalue="src"/&gt;  &#010;+                &lt;item index="3" class="java.lang.String" itemvalue="width"/&gt;  &#010;+                &lt;item index="4" class="java.lang.String" itemvalue="height"/&gt; &#010;+              &lt;/list&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt;  &#010;+          &lt;option name="myCustomValuesEnabled" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="CheckValidXmlInScriptTagBody" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UNUSED_IMPORT" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ExtendsAnnotation" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnresolvedPropertyKey" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SimplifiableIfStatement" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MissedExecutable" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ForCanBeForeach" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="REPORT_INDEXED_LOOP" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryBoxing" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryUnboxing" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="WhileCanBeForeach" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaDataSourceORMInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaDataSourceORMDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EjbErrorInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EjbWarningInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EjbDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EjbQlInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JavaeeApplicationDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MimeType" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaORMDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaModelErrorInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaModelWarningInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaQlInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaQueryApiInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JpaDomInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ReferencesToClassesFromDefaultPackagesInJSPFile" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SelfIncludingJspFiles" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="WebProperties" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="WebWarnings" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSUntypedDeclaration" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSDeprecatedSymbols" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSDuplicatedDeclaration" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSUndeclaredVariable" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSShowOverridingMarkers" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSUnresolvedFunction" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSUnresolvedVariable" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="JSUnusedLocalSymbols" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="DuplicateCaseLabelJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="DuplicatePropertyOnObjectJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="BadExpressionStatementJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="FunctionWithInconsistentReturnsJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ReservedWordUsedAsNameJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ThisExpressionReferencesGlobalObjectJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnreachableCodeJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ELValidationInJSP" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CheckJsfComponentUnderViewTag" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ELSpecValidationInJSP" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="AssertEqualsBetweenInconvertibleTypes" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="OctalLiteral" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="PointlessArithmeticExpression" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_ignoreExpressionsContainingConstants" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="BooleanConstructor" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ToArrayCallWithZeroLengthArrayArgument" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="InstantiatingObjectToGetClassObject" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ManualArrayCopy" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ManualArrayToCollectionCopy" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="StringToString" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="StringConstructor" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="ignoreSubstringArguments" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="StringConcatenationInsideStringBufferAppend" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryTemporaryOnConversionFromString" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnnecessaryTemporaryOnConversionToString" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ComponentRegistrationProblems" level="ERROR" enabled="false"&gt; &#010;+          &lt;option name="CHECK_PLUGIN_XML" value="true"/&gt;  &#010;+          &lt;option name="CHECK_JAVA_CODE" value="true"/&gt;  &#010;+          &lt;option name="CHECK_ACTIONS" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="ComponentNotRegistered" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="CHECK_ACTIONS" value="true"/&gt;  &#010;+          &lt;option name="IGNORE_NON_PUBLIC" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="PointlessArithmeticExpressionJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EmptyStatementBodyJS" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_reportEmptyBlocks" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="ComparatorMethodParameterNotUsed" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NullArgumentToVariableArgMethod" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="PrimitiveArrayArgumentToVariableArgMethod" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ConstantConditions" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="SUGGEST_NULLABLE_ANNOTATIONS" value="false"/&gt;  &#010;+          &lt;option name="DONT_REPORT_TRUE_ASSERT_STATEMENTS" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="EqualsBetweenInconvertibleTypes" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ArrayEquals" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EqualsWhichDoesntCheckParameterClass" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ImplicitArrayToString" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="InfiniteRecursion" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MalformedFormatString" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MalformedRegex" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MalformedXPath" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MismatchedCollectionQueryUpdate" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MismatchedArrayReadWrite" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NullableProblems" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="REPORT_NULLABLE_METHOD_OVERRIDES_NOTNULL" value="true"/&gt;  &#010;+          &lt;option name="REPORT_NOT_ANNOTATED_METHOD_OVERRIDES_NOTNULL" value="true"/&gt;  &#010;+          &lt;option name="REPORT_NOTNULL_PARAMETER_OVERRIDES_NULLABLE" value="true"/&gt;  &#010;+          &lt;option name="REPORT_NOT_ANNOTATED_PARAMETER_OVERRIDES_NOTNULL" value="true"/&gt;  &#010;+          &lt;option name="REPORT_NOT_ANNOTATED_GETTER" value="true"/&gt;  &#010;+          &lt;option name="REPORT_NOT_ANNOTATED_SETTER_PARAMETER" value="true"/&gt;  &#010;+          &lt;option name="REPORT_ANNOTATION_NOT_PROPAGATED_TO_OVERRIDERS" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="NumberEquality" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ObjectEqualsNull" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ReflectionForUnavailableAnnotation" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="IgnoreResultOfCall" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_reportAllNonLibraryCalls" value="false"/&gt;  &#010;+          &lt;option name="callCheckString" value="java.io.InputStream,read,java.io.InputStream,skip,java.lang.StringBuffer,toString,java.lang.StringBuilder,toString,java.lang.String,.*,java.math.BigInteger,.*,java.math.BigDecimal,.*,java.net.InetAddress,.*"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="EmptyStatementBody" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="m_reportEmptyBlocks" value="false"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="StringEquality" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NewStringBufferWithCharArgument" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SuspiciousToArrayCall" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SuspiciousSystemArraycopy" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SuspiciousMethodCalls" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="REPORT_CONVERTIBLE_METHOD_CALLS" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="SuspiciousNameCombination" level="WARNING" enabled="false"&gt; &#010;+          &lt;group names="x,width,left,right"/&gt;  &#010;+          &lt;group names="y,height,top,bottom"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="ThrowableInstanceNeverThrown" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UnusedAssignment" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="REPORT_PREFIX_EXPRESSIONS" value="false"/&gt;  &#010;+          &lt;option name="REPORT_POSTFIX_EXPRESSIONS" value="true"/&gt;  &#010;+          &lt;option name="REPORT_REDUNDANT_INITIALIZER" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="InfiniteLoopJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="InfiniteRecursionJS" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="InconsistentResourceBundle" level="ERROR" enabled="false"&gt; &#010;+          &lt;option name="REPORT_MISSING_TRANSLATIONS" value="true"/&gt;  &#010;+          &lt;option name="REPORT_INCONSISTENT_PROPERTIES" value="true"/&gt;  &#010;+          &lt;option name="REPORT_DUPLICATED_PROPERTIES" value="true"/&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="UnusedMessageFormatParameter" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="AbstractBeanReferencesInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="AutowiredDependenciesInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringBeanConstructorArgInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="DuplicatedBeanNamesInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringInjectionValueConsistencyInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="InjectionValueTypeInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringBeanLookupMethodInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringReplacedMethodsInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringBeanAutowiringInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringBeanDepedencyCheckInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringFactoryMethodInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringBeanInstantiationInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringBeanNameConventionInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringInjectionValueStyleInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringJamErrorInspection" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringModelInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SpringScopesInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="UtilSchemaInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="StrutsInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="StrutsTilesInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="StrutsValidatorInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="StrutsValidatorFormInspection" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="dependsOnMethodTestNG" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="groupsTestNG" level="WARNING" enabled="false"&gt; &#010;+          &lt;option name="groups"&gt; &#010;+            &lt;value&gt; &#010;+              &lt;list size="0"/&gt; &#010;+            &lt;/value&gt; &#010;+          &lt;/option&gt; &#010;+        &lt;/inspection_tool&gt;  &#010;+        &lt;inspection_tool class="SynchronizeOnNonFinalField" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="BoundFieldAssignment" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="OneButtonGroup" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="DuplicateMnemonic" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="MissingMnemonic" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NoLabelFor" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NoButtonGroup" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NoScrollPane" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="RedundantArrayCreation" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="RedundantTypeArguments" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="RedundantCast" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="EmptyWebServiceClass" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="OneWayWebMethod" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ImplicitlyExposedWebServiceMethods" level="INFO" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="NonJaxWsWebServices" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="ValidExternallyBoundObject" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CheckDtdRefs" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CheckXmlFileWithXercesValidator" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="XmlWrongClosingTagName" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="XmlWrongRootElement" level="ERROR" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="CheckTagEmptyBody" level="WARNING" enabled="false"/&gt;  &#010;+        &lt;inspection_tool class="SerializableHasSerialVersionUIDField" level="WARNING" enabled="true"&gt; &#010;+          &lt;option name="superClassString" value="java.awt.Component"/&gt; &#010;+        &lt;/inspection_tool&gt; &#010;+      &lt;/profile&gt; &#010;+    &lt;/profiles&gt;  &#010;+    &lt;list size="0"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="JavacSettings"&gt; &#010;+    &lt;option name="DEBUGGING_INFO" value="true"/&gt;  &#010;+    &lt;option name="GENERATE_NO_WARNINGS" value="false"/&gt;  &#010;+    &lt;option name="DEPRECATION" value="true"/&gt;  &#010;+    &lt;option name="ADDITIONAL_OPTIONS_STRING" value=""/&gt;  &#010;+    &lt;option name="MAXIMUM_HEAP_SIZE" value="128"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="JavadocGenerationManager"&gt; &#010;+    &lt;option name="OUTPUT_DIRECTORY"/&gt;  &#010;+    &lt;option name="OPTION_SCOPE" value="protected"/&gt;  &#010;+    &lt;option name="OPTION_HIERARCHY" value="true"/&gt;  &#010;+    &lt;option name="OPTION_NAVIGATOR" value="true"/&gt;  &#010;+    &lt;option name="OPTION_INDEX" value="true"/&gt;  &#010;+    &lt;option name="OPTION_SEPARATE_INDEX" value="true"/&gt;  &#010;+    &lt;option name="OPTION_DOCUMENT_TAG_USE" value="false"/&gt;  &#010;+    &lt;option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false"/&gt;  &#010;+    &lt;option name="OPTION_DOCUMENT_TAG_VERSION" value="false"/&gt;  &#010;+    &lt;option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true"/&gt;  &#010;+    &lt;option name="OPTION_DEPRECATED_LIST" value="true"/&gt;  &#010;+    &lt;option name="OTHER_OPTIONS" value=""/&gt;  &#010;+    &lt;option name="HEAP_SIZE"/&gt;  &#010;+    &lt;option name="LOCALE"/&gt;  &#010;+    &lt;option name="OPEN_IN_BROWSER" value="true"/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="JikesSettings"&gt; &#010;+    &lt;option name="JIKES_PATH" value=""/&gt;  &#010;+    &lt;option name="DEBUGGING_INFO" value="true"/&gt;  &#010;+    &lt;option name="DEPRECATION" value="true"/&gt;  &#010;+    &lt;option name="GENERATE_NO_WARNINGS" value="false"/&gt;  &#010;+    &lt;option name="IS_EMACS_ERRORS_MODE" value="true"/&gt;  &#010;+    &lt;option name="ADDITIONAL_OPTIONS_STRING" value=""/&gt; &#010;+  &lt;/component&gt;  &#010;+  &lt;component name="Palette2"&gt; &#010;+    &lt;group name="Swing"&gt; &#010;+      &lt;item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1"/&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2"/&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"/&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3"/&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1"/&gt;  &#010;+        &lt;initial-values&gt; &#010;+          &lt;property name="text" value="Button"/&gt; &#010;+        &lt;/initial-values&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0"/&gt;  &#010;+        &lt;initial-values&gt; &#010;+          &lt;property name="text" value="RadioButton"/&gt; &#010;+        &lt;/initial-values&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0"/&gt;  &#010;+        &lt;initial-values&gt; &#010;+          &lt;property name="text" value="CheckBox"/&gt; &#010;+        &lt;/initial-values&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0"/&gt;  &#010;+        &lt;initial-values&gt; &#010;+          &lt;property name="text" value="Label"/&gt; &#010;+        &lt;/initial-values&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"&gt; &#010;+          &lt;preferred-size width="150" height="-1"/&gt; &#010;+        &lt;/default-constraints&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"&gt; &#010;+          &lt;preferred-size width="150" height="-1"/&gt; &#010;+        &lt;/default-constraints&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"&gt; &#010;+          &lt;preferred-size width="150" height="-1"/&gt; &#010;+        &lt;/default-constraints&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt; &#010;+          &lt;preferred-size width="150" height="50"/&gt; &#010;+        &lt;/default-constraints&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt; &#010;+          &lt;preferred-size width="150" height="50"/&gt; &#010;+        &lt;/default-constraints&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt; &#010;+          &lt;preferred-size width="150" height="50"/&gt; &#010;+        &lt;/default-constraints&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true"&gt; &#010;+        &lt;default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1"/&gt; &#010;+      &lt;/item&gt;  &#010;+      &lt;item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false"&gt; &#010;+        &lt;default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"&gt; &#010;+          &lt;preferred-size width="150" height="50"/&gt; &#010;+        &lt;/default-constraints&gt; &#010;+      &lt;/item&gt;  &#010;&#010;[... 80 lines stripped ...]&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618175 [1/3] - in /incubator/composer/trunk: apache-composer.iml apache-composer.ipr composer-core/apache-composer-core.iml composer-site/picocontainer-distribution.iml composer-site/pom.xml composer-tck/apache-composer-tck.iml pom.xml</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204063811.647521A9832@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204063811-647521A9832@eris-apache-org%3e</id>
<updated>2008-02-04T06:38:10Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Author: hammant&#010;Date: Sun Feb  3 22:38:09 2008&#010;New Revision: 618175&#010;&#010;URL: http://svn.apache.org/viewvc?rev=618175&amp;view=rev&#010;Log:&#010;IDEA file changes&#010;&#010;Modified:&#010;    incubator/composer/trunk/apache-composer.iml&#010;    incubator/composer/trunk/apache-composer.ipr&#010;    incubator/composer/trunk/composer-core/apache-composer-core.iml&#010;    incubator/composer/trunk/composer-site/picocontainer-distribution.iml&#010;    incubator/composer/trunk/composer-site/pom.xml&#010;    incubator/composer/trunk/composer-tck/apache-composer-tck.iml&#010;    incubator/composer/trunk/pom.xml&#010;&#010;Modified: incubator/composer/trunk/apache-composer.iml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/apache-composer.iml?rev=618175&amp;r1=618174&amp;r2=618175&amp;view=diff&#010;==============================================================================&#010;--- incubator/composer/trunk/apache-composer.iml (original)&#010;+++ incubator/composer/trunk/apache-composer.iml Sun Feb  3 22:38:09 2008&#010;@@ -1,79 +1,64 @@&#010; &lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;-&lt;module relativePaths="false" type="JAVA_MODULE" version="4"&gt;&#010;-  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt;&#010;-    &lt;output url="file://$MODULE_DIR$/target/classes" /&gt;&#010;-    &lt;exclude-output /&gt;&#010;-    &lt;output-test url="file://$MODULE_DIR$/target/test-classes" /&gt;&#010;-    &lt;content url="file://$MODULE_DIR$"&gt;&#010;-      &lt;excludeFolder url="file://$MODULE_DIR$/distribution/target" /&gt;&#010;-      &lt;excludeFolder url="file://$MODULE_DIR$/target" /&gt;&#010;-    &lt;/content&gt;&#010;-    &lt;orderEntry type="inheritedJdk" /&gt;&#010;-    &lt;orderEntry type="sourceFolder" forTests="false" /&gt;&#010;+&#010;+&lt;module relativePaths="false" type="JAVA_MODULE" version="4"&gt; &#010;+  &lt;component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"&gt;&#010;&#010;+    &lt;output url="file://$MODULE_DIR$/target/classes"/&gt;  &#010;+    &lt;exclude-output/&gt;  &#010;+    &lt;output-test url="file://$MODULE_DIR$/target/test-classes"/&gt;  &#010;+    &lt;content url="file://$MODULE_DIR$"&gt; &#010;+      &lt;excludeFolder url="file://$MODULE_DIR$/target"/&gt;&#010;+    &lt;/content&gt;  &#010;+    &lt;orderEntry type="inheritedJdk"/&gt;  &#010;+    &lt;orderEntry type="sourceFolder" forTests="false"/&gt;  &#010;+    &lt;orderEntryProperties/&gt;  &#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"&#010;/&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"&#010;/&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"&#010;/&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock-junit4/2.4.0/jmock-junit4-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"&#010;/&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"&#010;/&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;     &lt;orderEntry type="module-library"&gt;&#010;       &lt;library&gt;&#010;         &lt;CLASSES&gt;&#010;-          &lt;root url="jar://$M2_REPOSITORY$/junit/junit-dep/4.4/junit-dep-4.4.jar!/" /&gt;&#010;+          &lt;root url="jar:///Installed/M2_HOME/repository/junit/junit-dep/4.4/junit-dep-4.4.jar!/"/&gt;&#010;         &lt;/CLASSES&gt;&#010;-        &lt;JAVADOC /&gt;&#010;-        &lt;SOURCES /&gt;&#010;       &lt;/library&gt;&#010;     &lt;/orderEntry&gt;&#010;-    &lt;orderEntryProperties /&gt;&#010;-  &lt;/component&gt;&#010;+  &lt;/component&gt; &#010; &lt;/module&gt;&#010;-&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618174 [5/5] - in /incubator/composer/trunk: ./ composer-site/ composer-site/src/ composer-site/src/assembly/ composer-site/src/config/ composer-site/src/resources/ composer-site/src/resources/images/ composer-site/src/resources/style/ com...</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204063336.1BA6E1A984E@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204063336-1BA6E1A984E@eris-apache-org%3e</id>
<updated>2008-02-04T06:33:26Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Added: incubator/composer/trunk/composer-site/src/site/resources/scripts/prototype.js&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/scripts/prototype.js?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/scripts/prototype.js (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/scripts/prototype.js Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,2006 @@&#010;+/*  Prototype JavaScript framework, version 1.5.0_rc0&#010;+ *  (c) 2005 Sam Stephenson &lt;sam@conio.net&gt;&#010;+ *&#010;+ *  Prototype is freely distributable under the terms of an MIT-style license.&#010;+ *  For details, see the Prototype web site: http://prototype.conio.net/&#010;+ *&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+var Prototype = {&#010;+  Version: '1.5.0_rc0',&#010;+  ScriptFragment: '(?:&lt;script.*?&gt;)((\n|\r|.)*?)(?:&lt;\/script&gt;)',&#010;+&#010;+  emptyFunction: function() {},&#010;+  K: function(x) {return x}&#010;+}&#010;+&#010;+var Class = {&#010;+  create: function() {&#010;+    return function() {&#010;+      this.initialize.apply(this, arguments);&#010;+    }&#010;+  }&#010;+}&#010;+&#010;+var Abstract = new Object();&#010;+&#010;+Object.extend = function(destination, source) {&#010;+  for (var property in source) {&#010;+    destination[property] = source[property];&#010;+  }&#010;+  return destination;&#010;+}&#010;+&#010;+Object.inspect = function(object) {&#010;+  try {&#010;+    if (object == undefined) return 'undefined';&#010;+    if (object == null) return 'null';&#010;+    return object.inspect ? object.inspect() : object.toString();&#010;+  } catch (e) {&#010;+    if (e instanceof RangeError) return '...';&#010;+    throw e;&#010;+  }&#010;+}&#010;+&#010;+Function.prototype.bind = function() {&#010;+  var __method = this, args = $A(arguments), object = args.shift();&#010;+  return function() {&#010;+    return __method.apply(object, args.concat($A(arguments)));&#010;+  }&#010;+}&#010;+&#010;+Function.prototype.bindAsEventListener = function(object) {&#010;+  var __method = this;&#010;+  return function(event) {&#010;+    return __method.call(object, event || window.event);&#010;+  }&#010;+}&#010;+&#010;+Object.extend(Number.prototype, {&#010;+  toColorPart: function() {&#010;+    var digits = this.toString(16);&#010;+    if (this &lt; 16) return '0' + digits;&#010;+    return digits;&#010;+  },&#010;+&#010;+  succ: function() {&#010;+    return this + 1;&#010;+  },&#010;+&#010;+  times: function(iterator) {&#010;+    $R(0, this, true).each(iterator);&#010;+    return this;&#010;+  }&#010;+});&#010;+&#010;+var Try = {&#010;+  these: function() {&#010;+    var returnValue;&#010;+&#010;+    for (var i = 0; i &lt; arguments.length; i++) {&#010;+      var lambda = arguments[i];&#010;+      try {&#010;+        returnValue = lambda();&#010;+        break;&#010;+      } catch (e) {}&#010;+    }&#010;+&#010;+    return returnValue;&#010;+  }&#010;+}&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+var PeriodicalExecuter = Class.create();&#010;+PeriodicalExecuter.prototype = {&#010;+  initialize: function(callback, frequency) {&#010;+    this.callback = callback;&#010;+    this.frequency = frequency;&#010;+    this.currentlyExecuting = false;&#010;+&#010;+    this.registerCallback();&#010;+  },&#010;+&#010;+  registerCallback: function() {&#010;+    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);&#010;+  },&#010;+&#010;+  onTimerEvent: function() {&#010;+    if (!this.currentlyExecuting) {&#010;+      try {&#010;+        this.currentlyExecuting = true;&#010;+        this.callback();&#010;+      } finally {&#010;+        this.currentlyExecuting = false;&#010;+      }&#010;+    }&#010;+  }&#010;+}&#010;+Object.extend(String.prototype, {&#010;+  gsub: function(pattern, replacement) {&#010;+    var result = '', source = this, match;&#010;+    replacement = arguments.callee.prepareReplacement(replacement);&#010;+&#010;+    while (source.length &gt; 0) {&#010;+      if (match = source.match(pattern)) {&#010;+        result += source.slice(0, match.index);&#010;+        result += (replacement(match) || '').toString();&#010;+        source  = source.slice(match.index + match[0].length);&#010;+      } else {&#010;+        result += source, source = '';&#010;+      }&#010;+    }&#010;+    return result;&#010;+  },&#010;+&#010;+  sub: function(pattern, replacement, count) {&#010;+    replacement = this.gsub.prepareReplacement(replacement);&#010;+    count = count === undefined ? 1 : count;&#010;+&#010;+    return this.gsub(pattern, function(match) {&#010;+      if (--count &lt; 0) return match[0];&#010;+      return replacement(match);&#010;+    });&#010;+  },&#010;+&#010;+  scan: function(pattern, iterator) {&#010;+    this.gsub(pattern, iterator);&#010;+    return this;&#010;+  },&#010;+&#010;+  truncate: function(length, truncation) {&#010;+    length = length || 30;&#010;+    truncation = truncation === undefined ? '...' : truncation;&#010;+    return this.length &gt; length ?&#010;+      this.slice(0, length - truncation.length) + truncation : this;&#010;+  },&#010;+&#010;+  strip: function() {&#010;+    return this.replace(/^\s+/, '').replace(/\s+$/, '');&#010;+  },&#010;+&#010;+  stripTags: function() {&#010;+    return this.replace(/&lt;\/?[^&gt;]+&gt;/gi, '');&#010;+  },&#010;+&#010;+  stripScripts: function() {&#010;+    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');&#010;+  },&#010;+&#010;+  extractScripts: function() {&#010;+    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');&#010;+    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');&#010;+    return (this.match(matchAll) || []).map(function(scriptTag) {&#010;+      return (scriptTag.match(matchOne) || ['', ''])[1];&#010;+    });&#010;+  },&#010;+&#010;+  evalScripts: function() {&#010;+    return this.extractScripts().map(function(script) { return eval(script) });&#010;+  },&#010;+&#010;+  escapeHTML: function() {&#010;+    var div = document.createElement('div');&#010;+    var text = document.createTextNode(this);&#010;+    div.appendChild(text);&#010;+    return div.innerHTML;&#010;+  },&#010;+&#010;+  unescapeHTML: function() {&#010;+    var div = document.createElement('div');&#010;+    div.innerHTML = this.stripTags();&#010;+    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';&#010;+  },&#010;+&#010;+  toQueryParams: function() {&#010;+    var pairs = this.match(/^\??(.*)$/)[1].split('&amp;');&#010;+    return pairs.inject({}, function(params, pairString) {&#010;+      var pair = pairString.split('=');&#010;+      params[pair[0]] = pair[1];&#010;+      return params;&#010;+    });&#010;+  },&#010;+&#010;+  toArray: function() {&#010;+    return this.split('');&#010;+  },&#010;+&#010;+  camelize: function() {&#010;+    var oStringList = this.split('-');&#010;+    if (oStringList.length == 1) return oStringList[0];&#010;+&#010;+    var camelizedString = this.indexOf('-') == 0&#010;+      ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)&#010;+      : oStringList[0];&#010;+&#010;+    for (var i = 1, len = oStringList.length; i &lt; len; i++) {&#010;+      var s = oStringList[i];&#010;+      camelizedString += s.charAt(0).toUpperCase() + s.substring(1);&#010;+    }&#010;+&#010;+    return camelizedString;&#010;+  },&#010;+&#010;+  inspect: function() {&#010;+    return "'" + this.replace(/\\/g, '\\\\').replace(/'/g, '\\\'') + "'";&#010;+  }&#010;+});&#010;+&#010;+String.prototype.gsub.prepareReplacement = function(replacement) {&#010;+  if (typeof replacement == 'function') return replacement;&#010;+  var template = new Template(replacement);&#010;+  return function(match) { return template.evaluate(match) };&#010;+}&#010;+&#010;+String.prototype.parseQuery = String.prototype.toQueryParams;&#010;+&#010;+var Template = Class.create();&#010;+Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;&#010;+Template.prototype = {&#010;+  initialize: function(template, pattern) {&#010;+    this.template = template.toString();&#010;+    this.pattern  = pattern || Template.Pattern;&#010;+  },&#010;+&#010;+  evaluate: function(object) {&#010;+    return this.template.gsub(this.pattern, function(match) {&#010;+      var before = match[1];&#010;+      if (before == '\\') return match[2];&#010;+      return before + (object[match[3]] || '').toString();&#010;+    });&#010;+  }&#010;+}&#010;+&#010;+var $break    = new Object();&#010;+var $continue = new Object();&#010;+&#010;+var Enumerable = {&#010;+  each: function(iterator) {&#010;+    var index = 0;&#010;+    try {&#010;+      this._each(function(value) {&#010;+        try {&#010;+          iterator(value, index++);&#010;+        } catch (e) {&#010;+          if (e != $continue) throw e;&#010;+        }&#010;+      });&#010;+    } catch (e) {&#010;+      if (e != $break) throw e;&#010;+    }&#010;+  },&#010;+&#010;+  all: function(iterator) {&#010;+    var result = true;&#010;+    this.each(function(value, index) {&#010;+      result = result &amp;&amp; !!(iterator || Prototype.K)(value, index);&#010;+      if (!result) throw $break;&#010;+    });&#010;+    return result;&#010;+  },&#010;+&#010;+  any: function(iterator) {&#010;+    var result = true;&#010;+    this.each(function(value, index) {&#010;+      if (result = !!(iterator || Prototype.K)(value, index))&#010;+        throw $break;&#010;+    });&#010;+    return result;&#010;+  },&#010;+&#010;+  collect: function(iterator) {&#010;+    var results = [];&#010;+    this.each(function(value, index) {&#010;+      results.push(iterator(value, index));&#010;+    });&#010;+    return results;&#010;+  },&#010;+&#010;+  detect: function (iterator) {&#010;+    var result;&#010;+    this.each(function(value, index) {&#010;+      if (iterator(value, index)) {&#010;+        result = value;&#010;+        throw $break;&#010;+      }&#010;+    });&#010;+    return result;&#010;+  },&#010;+&#010;+  findAll: function(iterator) {&#010;+    var results = [];&#010;+    this.each(function(value, index) {&#010;+      if (iterator(value, index))&#010;+        results.push(value);&#010;+    });&#010;+    return results;&#010;+  },&#010;+&#010;+  grep: function(pattern, iterator) {&#010;+    var results = [];&#010;+    this.each(function(value, index) {&#010;+      var stringValue = value.toString();&#010;+      if (stringValue.match(pattern))&#010;+        results.push((iterator || Prototype.K)(value, index));&#010;+    })&#010;+    return results;&#010;+  },&#010;+&#010;+  include: function(object) {&#010;+    var found = false;&#010;+    this.each(function(value) {&#010;+      if (value == object) {&#010;+        found = true;&#010;+        throw $break;&#010;+      }&#010;+    });&#010;+    return found;&#010;+  },&#010;+&#010;+  inject: function(memo, iterator) {&#010;+    this.each(function(value, index) {&#010;+      memo = iterator(memo, value, index);&#010;+    });&#010;+    return memo;&#010;+  },&#010;+&#010;+  invoke: function(method) {&#010;+    var args = $A(arguments).slice(1);&#010;+    return this.collect(function(value) {&#010;+      return value[method].apply(value, args);&#010;+    });&#010;+  },&#010;+&#010;+  max: function(iterator) {&#010;+    var result;&#010;+    this.each(function(value, index) {&#010;+      value = (iterator || Prototype.K)(value, index);&#010;+      if (result == undefined || value &gt;= result)&#010;+        result = value;&#010;+    });&#010;+    return result;&#010;+  },&#010;+&#010;+  min: function(iterator) {&#010;+    var result;&#010;+    this.each(function(value, index) {&#010;+      value = (iterator || Prototype.K)(value, index);&#010;+      if (result == undefined || value &lt; result)&#010;+        result = value;&#010;+    });&#010;+    return result;&#010;+  },&#010;+&#010;+  partition: function(iterator) {&#010;+    var trues = [], falses = [];&#010;+    this.each(function(value, index) {&#010;+      ((iterator || Prototype.K)(value, index) ?&#010;+        trues : falses).push(value);&#010;+    });&#010;+    return [trues, falses];&#010;+  },&#010;+&#010;+  pluck: function(property) {&#010;+    var results = [];&#010;+    this.each(function(value, index) {&#010;+      results.push(value[property]);&#010;+    });&#010;+    return results;&#010;+  },&#010;+&#010;+  reject: function(iterator) {&#010;+    var results = [];&#010;+    this.each(function(value, index) {&#010;+      if (!iterator(value, index))&#010;+        results.push(value);&#010;+    });&#010;+    return results;&#010;+  },&#010;+&#010;+  sortBy: function(iterator) {&#010;+    return this.collect(function(value, index) {&#010;+      return {value: value, criteria: iterator(value, index)};&#010;+    }).sort(function(left, right) {&#010;+      var a = left.criteria, b = right.criteria;&#010;+      return a &lt; b ? -1 : a &gt; b ? 1 : 0;&#010;+    }).pluck('value');&#010;+  },&#010;+&#010;+  toArray: function() {&#010;+    return this.collect(Prototype.K);&#010;+  },&#010;+&#010;+  zip: function() {&#010;+    var iterator = Prototype.K, args = $A(arguments);&#010;+    if (typeof args.last() == 'function')&#010;+      iterator = args.pop();&#010;+&#010;+    var collections = [this].concat(args).map($A);&#010;+    return this.map(function(value, index) {&#010;+      return iterator(collections.pluck(index));&#010;+    });&#010;+  },&#010;+&#010;+  inspect: function() {&#010;+    return '#&lt;Enumerable:' + this.toArray().inspect() + '&gt;';&#010;+  }&#010;+}&#010;+&#010;+Object.extend(Enumerable, {&#010;+  map:     Enumerable.collect,&#010;+  find:    Enumerable.detect,&#010;+  select:  Enumerable.findAll,&#010;+  member:  Enumerable.include,&#010;+  entries: Enumerable.toArray&#010;+});&#010;+var $A = Array.from = function(iterable) {&#010;+  if (!iterable) return [];&#010;+  if (iterable.toArray) {&#010;+    return iterable.toArray();&#010;+  } else {&#010;+    var results = [];&#010;+    for (var i = 0; i &lt; iterable.length; i++)&#010;+      results.push(iterable[i]);&#010;+    return results;&#010;+  }&#010;+}&#010;+&#010;+Object.extend(Array.prototype, Enumerable);&#010;+&#010;+if (!Array.prototype._reverse)&#010;+  Array.prototype._reverse = Array.prototype.reverse;&#010;+&#010;+Object.extend(Array.prototype, {&#010;+  _each: function(iterator) {&#010;+    for (var i = 0; i &lt; this.length; i++)&#010;+      iterator(this[i]);&#010;+  },&#010;+&#010;+  clear: function() {&#010;+    this.length = 0;&#010;+    return this;&#010;+  },&#010;+&#010;+  first: function() {&#010;+    return this[0];&#010;+  },&#010;+&#010;+  last: function() {&#010;+    return this[this.length - 1];&#010;+  },&#010;+&#010;+  compact: function() {&#010;+    return this.select(function(value) {&#010;+      return value != undefined || value != null;&#010;+    });&#010;+  },&#010;+&#010;+  flatten: function() {&#010;+    return this.inject([], function(array, value) {&#010;+      return array.concat(value &amp;&amp; value.constructor == Array ?&#010;+        value.flatten() : [value]);&#010;+    });&#010;+  },&#010;+&#010;+  without: function() {&#010;+    var values = $A(arguments);&#010;+    return this.select(function(value) {&#010;+      return !values.include(value);&#010;+    });&#010;+  },&#010;+&#010;+  indexOf: function(object) {&#010;+    for (var i = 0; i &lt; this.length; i++)&#010;+      if (this[i] == object) return i;&#010;+    return -1;&#010;+  },&#010;+&#010;+  reverse: function(inline) {&#010;+    return (inline !== false ? this : this.toArray())._reverse();&#010;+  },&#010;+&#010;+  inspect: function() {&#010;+    return '[' + this.map(Object.inspect).join(', ') + ']';&#010;+  }&#010;+});&#010;+var Hash = {&#010;+  _each: function(iterator) {&#010;+    for (var key in this) {&#010;+      var value = this[key];&#010;+      if (typeof value == 'function') continue;&#010;+&#010;+      var pair = [key, value];&#010;+      pair.key = key;&#010;+      pair.value = value;&#010;+      iterator(pair);&#010;+    }&#010;+  },&#010;+&#010;+  keys: function() {&#010;+    return this.pluck('key');&#010;+  },&#010;+&#010;+  values: function() {&#010;+    return this.pluck('value');&#010;+  },&#010;+&#010;+  merge: function(hash) {&#010;+    return $H(hash).inject($H(this), function(mergedHash, pair) {&#010;+      mergedHash[pair.key] = pair.value;&#010;+      return mergedHash;&#010;+    });&#010;+  },&#010;+&#010;+  toQueryString: function() {&#010;+    return this.map(function(pair) {&#010;+      return pair.map(encodeURIComponent).join('=');&#010;+    }).join('&amp;');&#010;+  },&#010;+&#010;+  inspect: function() {&#010;+    return '#&lt;Hash:{' + this.map(function(pair) {&#010;+      return pair.map(Object.inspect).join(': ');&#010;+    }).join(', ') + '}&gt;';&#010;+  }&#010;+}&#010;+&#010;+function $H(object) {&#010;+  var hash = Object.extend({}, object || {});&#010;+  Object.extend(hash, Enumerable);&#010;+  Object.extend(hash, Hash);&#010;+  return hash;&#010;+}&#010;+ObjectRange = Class.create();&#010;+Object.extend(ObjectRange.prototype, Enumerable);&#010;+Object.extend(ObjectRange.prototype, {&#010;+  initialize: function(start, end, exclusive) {&#010;+    this.start = start;&#010;+    this.end = end;&#010;+    this.exclusive = exclusive;&#010;+  },&#010;+&#010;+  _each: function(iterator) {&#010;+    var value = this.start;&#010;+    do {&#010;+      iterator(value);&#010;+      value = value.succ();&#010;+    } while (this.include(value));&#010;+  },&#010;+&#010;+  include: function(value) {&#010;+    if (value &lt; this.start)&#010;+      return false;&#010;+    if (this.exclusive)&#010;+      return value &lt; this.end;&#010;+    return value &lt;= this.end;&#010;+  }&#010;+});&#010;+&#010;+var $R = function(start, end, exclusive) {&#010;+  return new ObjectRange(start, end, exclusive);&#010;+}&#010;+&#010;+var Ajax = {&#010;+  getTransport: function() {&#010;+    return Try.these(&#010;+      function() {return new XMLHttpRequest()},&#010;+      function() {return new ActiveXObject('Msxml2.XMLHTTP')},&#010;+      function() {return new ActiveXObject('Microsoft.XMLHTTP')}&#010;+    ) || false;&#010;+  },&#010;+&#010;+  activeRequestCount: 0&#010;+}&#010;+&#010;+Ajax.Responders = {&#010;+  responders: [],&#010;+&#010;+  _each: function(iterator) {&#010;+    this.responders._each(iterator);&#010;+  },&#010;+&#010;+  register: function(responderToAdd) {&#010;+    if (!this.include(responderToAdd))&#010;+      this.responders.push(responderToAdd);&#010;+  },&#010;+&#010;+  unregister: function(responderToRemove) {&#010;+    this.responders = this.responders.without(responderToRemove);&#010;+  },&#010;+&#010;+  dispatch: function(callback, request, transport, json) {&#010;+    this.each(function(responder) {&#010;+      if (responder[callback] &amp;&amp; typeof responder[callback] == 'function') {&#010;+        try {&#010;+          responder[callback].apply(responder, [request, transport, json]);&#010;+        } catch (e) {}&#010;+      }&#010;+    });&#010;+  }&#010;+};&#010;+&#010;+Object.extend(Ajax.Responders, Enumerable);&#010;+&#010;+Ajax.Responders.register({&#010;+  onCreate: function() {&#010;+    Ajax.activeRequestCount++;&#010;+  },&#010;+&#010;+  onComplete: function() {&#010;+    Ajax.activeRequestCount--;&#010;+  }&#010;+});&#010;+&#010;+Ajax.Base = function() {};&#010;+Ajax.Base.prototype = {&#010;+  setOptions: function(options) {&#010;+    this.options = {&#010;+      method:       'post',&#010;+      asynchronous: true,&#010;+      contentType:  'application/x-www-form-urlencoded',&#010;+      parameters:   ''&#010;+    }&#010;+    Object.extend(this.options, options || {});&#010;+  },&#010;+&#010;+  responseIsSuccess: function() {&#010;+    return this.transport.status == undefined&#010;+        || this.transport.status == 0&#010;+        || (this.transport.status &gt;= 200 &amp;&amp; this.transport.status &lt; 300);&#010;+  },&#010;+&#010;+  responseIsFailure: function() {&#010;+    return !this.responseIsSuccess();&#010;+  }&#010;+}&#010;+&#010;+Ajax.Request = Class.create();&#010;+Ajax.Request.Events =&#010;+  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];&#010;+&#010;+Ajax.Request.prototype = Object.extend(new Ajax.Base(), {&#010;+  initialize: function(url, options) {&#010;+    this.transport = Ajax.getTransport();&#010;+    this.setOptions(options);&#010;+    this.request(url);&#010;+  },&#010;+&#010;+  request: function(url) {&#010;+    var parameters = this.options.parameters || '';&#010;+    if (parameters.length &gt; 0) parameters += '&amp;_=';&#010;+&#010;+    try {&#010;+      this.url = url;&#010;+      if (this.options.method == 'get' &amp;&amp; parameters.length &gt; 0)&#010;+        this.url += (this.url.match(/\?/) ? '&amp;' : '?') + parameters;&#010;+&#010;+      Ajax.Responders.dispatch('onCreate', this, this.transport);&#010;+&#010;+      this.transport.open(this.options.method, this.url,&#010;+        this.options.asynchronous);&#010;+&#010;+      if (this.options.asynchronous) {&#010;+        this.transport.onreadystatechange = this.onStateChange.bind(this);&#010;+        setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);&#010;+      }&#010;+&#010;+      this.setRequestHeaders();&#010;+&#010;+      var body = this.options.postBody ? this.options.postBody : parameters;&#010;+      this.transport.send(this.options.method == 'post' ? body : null);&#010;+&#010;+    } catch (e) {&#010;+      this.dispatchException(e);&#010;+    }&#010;+  },&#010;+&#010;+  setRequestHeaders: function() {&#010;+    var requestHeaders =&#010;+      ['X-Requested-With', 'XMLHttpRequest',&#010;+       'X-Prototype-Version', Prototype.Version,&#010;+       'Accept', 'text/javascript, text/html, application/xml, text/xml, */*'];&#010;+&#010;+    if (this.options.method == 'post') {&#010;+      requestHeaders.push('Content-type', this.options.contentType);&#010;+&#010;+      /* Force "Connection: close" for Mozilla browsers to work around&#010;+       * a bug where XMLHttpReqeuest sends an incorrect Content-length&#010;+       * header. See Mozilla Bugzilla #246651.&#010;+       */&#010;+      if (this.transport.overrideMimeType)&#010;+        requestHeaders.push('Connection', 'close');&#010;+    }&#010;+&#010;+    if (this.options.requestHeaders)&#010;+      requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);&#010;+&#010;+    for (var i = 0; i &lt; requestHeaders.length; i += 2)&#010;+      this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);&#010;+  },&#010;+&#010;+  onStateChange: function() {&#010;+    var readyState = this.transport.readyState;&#010;+    if (readyState != 1)&#010;+      this.respondToReadyState(this.transport.readyState);&#010;+  },&#010;+&#010;+  header: function(name) {&#010;+    try {&#010;+      return this.transport.getResponseHeader(name);&#010;+    } catch (e) {}&#010;+  },&#010;+&#010;+  evalJSON: function() {&#010;+    try {&#010;+      return eval('(' + this.header('X-JSON') + ')');&#010;+    } catch (e) {}&#010;+  },&#010;+&#010;+  evalResponse: function() {&#010;+    try {&#010;+      return eval(this.transport.responseText);&#010;+    } catch (e) {&#010;+      this.dispatchException(e);&#010;+    }&#010;+  },&#010;+&#010;+  respondToReadyState: function(readyState) {&#010;+    var event = Ajax.Request.Events[readyState];&#010;+    var transport = this.transport, json = this.evalJSON();&#010;+&#010;+    if (event == 'Complete') {&#010;+      try {&#010;+        (this.options['on' + this.transport.status]&#010;+         || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]&#010;+         || Prototype.emptyFunction)(transport, json);&#010;+      } catch (e) {&#010;+        this.dispatchException(e);&#010;+      }&#010;+&#010;+      if ((this.header('Content-type') || '').match(/^text\/javascript/i))&#010;+        this.evalResponse();&#010;+    }&#010;+&#010;+    try {&#010;+      (this.options['on' + event] || Prototype.emptyFunction)(transport, json);&#010;+      Ajax.Responders.dispatch('on' + event, this, transport, json);&#010;+    } catch (e) {&#010;+      this.dispatchException(e);&#010;+    }&#010;+&#010;+    /* Avoid memory leak in MSIE: clean up the oncomplete event handler */&#010;+    if (event == 'Complete')&#010;+      this.transport.onreadystatechange = Prototype.emptyFunction;&#010;+  },&#010;+&#010;+  dispatchException: function(exception) {&#010;+    (this.options.onException || Prototype.emptyFunction)(this, exception);&#010;+    Ajax.Responders.dispatch('onException', this, exception);&#010;+  }&#010;+});&#010;+&#010;+Ajax.Updater = Class.create();&#010;+&#010;+Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {&#010;+  initialize: function(container, url, options) {&#010;+    this.containers = {&#010;+      success: container.success ? $(container.success) : $(container),&#010;+      failure: container.failure ? $(container.failure) :&#010;+        (container.success ? null : $(container))&#010;+    }&#010;+&#010;+    this.transport = Ajax.getTransport();&#010;+    this.setOptions(options);&#010;+&#010;+    var onComplete = this.options.onComplete || Prototype.emptyFunction;&#010;+    this.options.onComplete = (function(transport, object) {&#010;+      this.updateContent();&#010;+      onComplete(transport, object);&#010;+    }).bind(this);&#010;+&#010;+    this.request(url);&#010;+  },&#010;+&#010;+  updateContent: function() {&#010;+    var receiver = this.responseIsSuccess() ?&#010;+      this.containers.success : this.containers.failure;&#010;+    var response = this.transport.responseText;&#010;+&#010;+    if (!this.options.evalScripts)&#010;+      response = response.stripScripts();&#010;+&#010;+    if (receiver) {&#010;+      if (this.options.insertion) {&#010;+        new this.options.insertion(receiver, response);&#010;+      } else {&#010;+        Element.update(receiver, response);&#010;+      }&#010;+    }&#010;+&#010;+    if (this.responseIsSuccess()) {&#010;+      if (this.onComplete)&#010;+        setTimeout(this.onComplete.bind(this), 10);&#010;+    }&#010;+  }&#010;+});&#010;+&#010;+Ajax.PeriodicalUpdater = Class.create();&#010;+Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {&#010;+  initialize: function(container, url, options) {&#010;+    this.setOptions(options);&#010;+    this.onComplete = this.options.onComplete;&#010;+&#010;+    this.frequency = (this.options.frequency || 2);&#010;+    this.decay = (this.options.decay || 1);&#010;+&#010;+    this.updater = {};&#010;+    this.container = container;&#010;+    this.url = url;&#010;+&#010;+    this.start();&#010;+  },&#010;+&#010;+  start: function() {&#010;+    this.options.onComplete = this.updateComplete.bind(this);&#010;+    this.onTimerEvent();&#010;+  },&#010;+&#010;+  stop: function() {&#010;+    this.updater.onComplete = undefined;&#010;+    clearTimeout(this.timer);&#010;+    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);&#010;+  },&#010;+&#010;+  updateComplete: function(request) {&#010;+    if (this.options.decay) {&#010;+      this.decay = (request.responseText == this.lastText ?&#010;+        this.decay * this.options.decay : 1);&#010;+&#010;+      this.lastText = request.responseText;&#010;+    }&#010;+    this.timer = setTimeout(this.onTimerEvent.bind(this),&#010;+      this.decay * this.frequency * 1000);&#010;+  },&#010;+&#010;+  onTimerEvent: function() {&#010;+    this.updater = new Ajax.Updater(this.container, this.url, this.options);&#010;+  }&#010;+});&#010;+function $() {&#010;+  var results = [], element;&#010;+  for (var i = 0; i &lt; arguments.length; i++) {&#010;+    element = arguments[i];&#010;+    if (typeof element == 'string')&#010;+      element = document.getElementById(element);&#010;+    results.push(Element.extend(element));&#010;+  }&#010;+  return results.length &lt; 2 ? results[0] : results;&#010;+}&#010;+&#010;+document.getElementsByClassName = function(className, parentElement) {&#010;+  var children = ($(parentElement) || document.body).getElementsByTagName('*');&#010;+  return $A(children).inject([], function(elements, child) {&#010;+    if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))&#010;+      elements.push(Element.extend(child));&#010;+    return elements;&#010;+  });&#010;+}&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+if (!window.Element)&#010;+  var Element = new Object();&#010;+&#010;+Element.extend = function(element) {&#010;+  if (!element) return;&#010;+  if (_nativeExtensions) return element;&#010;+&#010;+  if (!element._extended &amp;&amp; element.tagName &amp;&amp; element != window) {&#010;+    var methods = Element.Methods, cache = Element.extend.cache;&#010;+    for (property in methods) {&#010;+      var value = methods[property];&#010;+      if (typeof value == 'function')&#010;+        element[property] = cache.findOrStore(value);&#010;+    }&#010;+  }&#010;+&#010;+  element._extended = true;&#010;+  return element;&#010;+}&#010;+&#010;+Element.extend.cache = {&#010;+  findOrStore: function(value) {&#010;+    return this[value] = this[value] || function() {&#010;+      return value.apply(null, [this].concat($A(arguments)));&#010;+    }&#010;+  }&#010;+}&#010;+&#010;+Element.Methods = {&#010;+  visible: function(element) {&#010;+    return $(element).style.display != 'none';&#010;+  },&#010;+&#010;+  toggle: function() {&#010;+    for (var i = 0; i &lt; arguments.length; i++) {&#010;+      var element = $(arguments[i]);&#010;+      Element[Element.visible(element) ? 'hide' : 'show'](element);&#010;+    }&#010;+  },&#010;+&#010;+  hide: function() {&#010;+    for (var i = 0; i &lt; arguments.length; i++) {&#010;+      var element = $(arguments[i]);&#010;+      element.style.display = 'none';&#010;+    }&#010;+  },&#010;+&#010;+  show: function() {&#010;+    for (var i = 0; i &lt; arguments.length; i++) {&#010;+      var element = $(arguments[i]);&#010;+      element.style.display = '';&#010;+    }&#010;+  },&#010;+&#010;+  remove: function(element) {&#010;+    element = $(element);&#010;+    element.parentNode.removeChild(element);&#010;+  },&#010;+&#010;+  update: function(element, html) {&#010;+    $(element).innerHTML = html.stripScripts();&#010;+    setTimeout(function() {html.evalScripts()}, 10);&#010;+  },&#010;+&#010;+  replace: function(element, html) {&#010;+    element = $(element);&#010;+    if (element.outerHTML) {&#010;+      element.outerHTML = html.stripScripts();&#010;+    } else {&#010;+      var range = element.ownerDocument.createRange();&#010;+      range.selectNodeContents(element);&#010;+      element.parentNode.replaceChild(&#010;+        range.createContextualFragment(html.stripScripts()), element);&#010;+    }&#010;+    setTimeout(function() {html.evalScripts()}, 10);&#010;+  },&#010;+&#010;+  getHeight: function(element) {&#010;+    element = $(element);&#010;+    return element.offsetHeight;&#010;+  },&#010;+&#010;+  classNames: function(element) {&#010;+    return new Element.ClassNames(element);&#010;+  },&#010;+&#010;+  hasClassName: function(element, className) {&#010;+    if (!(element = $(element))) return;&#010;+    return Element.classNames(element).include(className);&#010;+  },&#010;+&#010;+  addClassName: function(element, className) {&#010;+    if (!(element = $(element))) return;&#010;+    return Element.classNames(element).add(className);&#010;+  },&#010;+&#010;+  removeClassName: function(element, className) {&#010;+    if (!(element = $(element))) return;&#010;+    return Element.classNames(element).remove(className);&#010;+  },&#010;+&#010;+  // removes whitespace-only text node children&#010;+  cleanWhitespace: function(element) {&#010;+    element = $(element);&#010;+    for (var i = 0; i &lt; element.childNodes.length; i++) {&#010;+      var node = element.childNodes[i];&#010;+      if (node.nodeType == 3 &amp;&amp; !/\S/.test(node.nodeValue))&#010;+        Element.remove(node);&#010;+    }&#010;+  },&#010;+&#010;+  empty: function(element) {&#010;+    return $(element).innerHTML.match(/^\s*$/);&#010;+  },&#010;+&#010;+  childOf: function(element, ancestor) {&#010;+    element = $(element), ancestor = $(ancestor);&#010;+    while (element = element.parentNode)&#010;+      if (element == ancestor) return true;&#010;+    return false;&#010;+  },&#010;+&#010;+  scrollTo: function(element) {&#010;+    element = $(element);&#010;+    var x = element.x ? element.x : element.offsetLeft,&#010;+        y = element.y ? element.y : element.offsetTop;&#010;+    window.scrollTo(x, y);&#010;+  },&#010;+&#010;+  getStyle: function(element, style) {&#010;+    element = $(element);&#010;+    var value = element.style[style.camelize()];&#010;+    if (!value) {&#010;+      if (document.defaultView &amp;&amp; document.defaultView.getComputedStyle) {&#010;+        var css = document.defaultView.getComputedStyle(element, null);&#010;+        value = css ? css.getPropertyValue(style) : null;&#010;+      } else if (element.currentStyle) {&#010;+        value = element.currentStyle[style.camelize()];&#010;+      }&#010;+    }&#010;+&#010;+    if (window.opera &amp;&amp; ['left', 'top', 'right', 'bottom'].include(style))&#010;+      if (Element.getStyle(element, 'position') == 'static') value = 'auto';&#010;+&#010;+    return value == 'auto' ? null : value;&#010;+  },&#010;+&#010;+  setStyle: function(element, style) {&#010;+    element = $(element);&#010;+    for (var name in style)&#010;+      element.style[name.camelize()] = style[name];&#010;+  },&#010;+&#010;+  getDimensions: function(element) {&#010;+    element = $(element);&#010;+    if (Element.getStyle(element, 'display') != 'none')&#010;+      return {width: element.offsetWidth, height: element.offsetHeight};&#010;+&#010;+    // All *Width and *Height properties give 0 on elements with display none,&#010;+    // so enable the element temporarily&#010;+    var els = element.style;&#010;+    var originalVisibility = els.visibility;&#010;+    var originalPosition = els.position;&#010;+    els.visibility = 'hidden';&#010;+    els.position = 'absolute';&#010;+    els.display = '';&#010;+    var originalWidth = element.clientWidth;&#010;+    var originalHeight = element.clientHeight;&#010;+    els.display = 'none';&#010;+    els.position = originalPosition;&#010;+    els.visibility = originalVisibility;&#010;+    return {width: originalWidth, height: originalHeight};&#010;+  },&#010;+&#010;+  makePositioned: function(element) {&#010;+    element = $(element);&#010;+    var pos = Element.getStyle(element, 'position');&#010;+    if (pos == 'static' || !pos) {&#010;+      element._madePositioned = true;&#010;+      element.style.position = 'relative';&#010;+      // Opera returns the offset relative to the positioning context, when an&#010;+      // element is position relative but top and left have not been defined&#010;+      if (window.opera) {&#010;+        element.style.top = 0;&#010;+        element.style.left = 0;&#010;+      }&#010;+    }&#010;+  },&#010;+&#010;+  undoPositioned: function(element) {&#010;+    element = $(element);&#010;+    if (element._madePositioned) {&#010;+      element._madePositioned = undefined;&#010;+      element.style.position =&#010;+        element.style.top =&#010;+        element.style.left =&#010;+        element.style.bottom =&#010;+        element.style.right = '';&#010;+    }&#010;+  },&#010;+&#010;+  makeClipping: function(element) {&#010;+    element = $(element);&#010;+    if (element._overflow) return;&#010;+    element._overflow = element.style.overflow;&#010;+    if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')&#010;+      element.style.overflow = 'hidden';&#010;+  },&#010;+&#010;+  undoClipping: function(element) {&#010;+    element = $(element);&#010;+    if (element._overflow) return;&#010;+    element.style.overflow = element._overflow;&#010;+    element._overflow = undefined;&#010;+  }&#010;+}&#010;+&#010;+Object.extend(Element, Element.Methods);&#010;+&#010;+var _nativeExtensions = false;&#010;+&#010;+if(!HTMLElement &amp;&amp; /Konqueror|Safari|KHTML/.test(navigator.userAgent)) {&#010;+  var HTMLElement = {}&#010;+  HTMLElement.prototype = document.createElement('div').__proto__;&#010;+}&#010;+&#010;+Element.addMethods = function(methods) {&#010;+  Object.extend(Element.Methods, methods || {});&#010;+&#010;+  if(typeof HTMLElement != 'undefined') {&#010;+    var methods = Element.Methods, cache = Element.extend.cache;&#010;+    for (property in methods) {&#010;+      var value = methods[property];&#010;+      if (typeof value == 'function')&#010;+        HTMLElement.prototype[property] = cache.findOrStore(value);&#010;+    }&#010;+    _nativeExtensions = true;&#010;+  }&#010;+}&#010;+&#010;+Element.addMethods();&#010;+&#010;+var Toggle = new Object();&#010;+Toggle.display = Element.toggle;&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+Abstract.Insertion = function(adjacency) {&#010;+  this.adjacency = adjacency;&#010;+}&#010;+&#010;+Abstract.Insertion.prototype = {&#010;+  initialize: function(element, content) {&#010;+    this.element = $(element);&#010;+    this.content = content.stripScripts();&#010;+&#010;+    if (this.adjacency &amp;&amp; this.element.insertAdjacentHTML) {&#010;+      try {&#010;+        this.element.insertAdjacentHTML(this.adjacency, this.content);&#010;+      } catch (e) {&#010;+        var tagName = this.element.tagName.toLowerCase();&#010;+        if (tagName == 'tbody' || tagName == 'tr') {&#010;+          this.insertContent(this.contentFromAnonymousTable());&#010;+        } else {&#010;+          throw e;&#010;+        }&#010;+      }&#010;+    } else {&#010;+      this.range = this.element.ownerDocument.createRange();&#010;+      if (this.initializeRange) this.initializeRange();&#010;+      this.insertContent([this.range.createContextualFragment(this.content)]);&#010;+    }&#010;+&#010;+    setTimeout(function() {content.evalScripts()}, 10);&#010;+  },&#010;+&#010;+  contentFromAnonymousTable: function() {&#010;+    var div = document.createElement('div');&#010;+    div.innerHTML = '&lt;table&gt;&lt;tbody&gt;' + this.content + '&lt;/tbody&gt;&lt;/table&gt;';&#010;+    return $A(div.childNodes[0].childNodes[0].childNodes);&#010;+  }&#010;+}&#010;+&#010;+var Insertion = new Object();&#010;+&#010;+Insertion.Before = Class.create();&#010;+Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {&#010;+  initializeRange: function() {&#010;+    this.range.setStartBefore(this.element);&#010;+  },&#010;+&#010;+  insertContent: function(fragments) {&#010;+    fragments.each((function(fragment) {&#010;+      this.element.parentNode.insertBefore(fragment, this.element);&#010;+    }).bind(this));&#010;+  }&#010;+});&#010;+&#010;+Insertion.Top = Class.create();&#010;+Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {&#010;+  initializeRange: function() {&#010;+    this.range.selectNodeContents(this.element);&#010;+    this.range.collapse(true);&#010;+  },&#010;+&#010;+  insertContent: function(fragments) {&#010;+    fragments.reverse(false).each((function(fragment) {&#010;+      this.element.insertBefore(fragment, this.element.firstChild);&#010;+    }).bind(this));&#010;+  }&#010;+});&#010;+&#010;+Insertion.Bottom = Class.create();&#010;+Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {&#010;+  initializeRange: function() {&#010;+    this.range.selectNodeContents(this.element);&#010;+    this.range.collapse(this.element);&#010;+  },&#010;+&#010;+  insertContent: function(fragments) {&#010;+    fragments.each((function(fragment) {&#010;+      this.element.appendChild(fragment);&#010;+    }).bind(this));&#010;+  }&#010;+});&#010;+&#010;+Insertion.After = Class.create();&#010;+Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {&#010;+  initializeRange: function() {&#010;+    this.range.setStartAfter(this.element);&#010;+  },&#010;+&#010;+  insertContent: function(fragments) {&#010;+    fragments.each((function(fragment) {&#010;+      this.element.parentNode.insertBefore(fragment,&#010;+        this.element.nextSibling);&#010;+    }).bind(this));&#010;+  }&#010;+});&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+Element.ClassNames = Class.create();&#010;+Element.ClassNames.prototype = {&#010;+  initialize: function(element) {&#010;+    this.element = $(element);&#010;+  },&#010;+&#010;+  _each: function(iterator) {&#010;+    this.element.className.split(/\s+/).select(function(name) {&#010;+      return name.length &gt; 0;&#010;+    })._each(iterator);&#010;+  },&#010;+&#010;+  set: function(className) {&#010;+    this.element.className = className;&#010;+  },&#010;+&#010;+  add: function(classNameToAdd) {&#010;+    if (this.include(classNameToAdd)) return;&#010;+    this.set(this.toArray().concat(classNameToAdd).join(' '));&#010;+  },&#010;+&#010;+  remove: function(classNameToRemove) {&#010;+    if (!this.include(classNameToRemove)) return;&#010;+    this.set(this.select(function(className) {&#010;+      return className != classNameToRemove;&#010;+    }).join(' '));&#010;+  },&#010;+&#010;+  toString: function() {&#010;+    return this.toArray().join(' ');&#010;+  }&#010;+}&#010;+&#010;+Object.extend(Element.ClassNames.prototype, Enumerable);&#010;+var Selector = Class.create();&#010;+Selector.prototype = {&#010;+  initialize: function(expression) {&#010;+    this.params = {classNames: []};&#010;+    this.expression = expression.toString().strip();&#010;+    this.parseExpression();&#010;+    this.compileMatcher();&#010;+  },&#010;+&#010;+  parseExpression: function() {&#010;+    function abort(message) { throw 'Parse error in selector: ' + message; }&#010;+&#010;+    if (this.expression == '')  abort('empty expression');&#010;+&#010;+    var params = this.params, expr = this.expression, match, modifier, clause, rest;&#010;+    while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {&#010;+      params.attributes = params.attributes || [];&#010;+      params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});&#010;+      expr = match[1];&#010;+    }&#010;+&#010;+    if (expr == '*') return this.params.wildcard = true;&#010;+&#010;+    while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {&#010;+      modifier = match[1], clause = match[2], rest = match[3];&#010;+      switch (modifier) {&#010;+        case '#':       params.id = clause; break;&#010;+        case '.':       params.classNames.push(clause); break;&#010;+        case '':&#010;+        case undefined: params.tagName = clause.toUpperCase(); break;&#010;+        default:        abort(expr.inspect());&#010;+      }&#010;+      expr = rest;&#010;+    }&#010;+&#010;+    if (expr.length &gt; 0) abort(expr.inspect());&#010;+  },&#010;+&#010;+  buildMatchExpression: function() {&#010;+    var params = this.params, conditions = [], clause;&#010;+&#010;+    if (params.wildcard)&#010;+      conditions.push('true');&#010;+    if (clause = params.id)&#010;+      conditions.push('element.id == ' + clause.inspect());&#010;+    if (clause = params.tagName)&#010;+      conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());&#010;+    if ((clause = params.classNames).length &gt; 0)&#010;+      for (var i = 0; i &lt; clause.length; i++)&#010;+        conditions.push('Element.hasClassName(element, ' + clause[i].inspect() + ')');&#010;+    if (clause = params.attributes) {&#010;+      clause.each(function(attribute) {&#010;+        var value = 'element.getAttribute(' + attribute.name.inspect() + ')';&#010;+        var splitValueBy = function(delimiter) {&#010;+          return value + ' &amp;&amp; ' + value + '.split(' + delimiter.inspect() + ')';&#010;+        }&#010;+&#010;+        switch (attribute.operator) {&#010;+          case '=':       conditions.push(value + ' == ' + attribute.value.inspect()); break;&#010;+          case '~=':      conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;&#010;+          case '|=':      conditions.push(&#010;+                            splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()&#010;+                          ); break;&#010;+          case '!=':      conditions.push(value + ' != ' + attribute.value.inspect()); break;&#010;+          case '':&#010;+          case undefined: conditions.push(value + ' != null'); break;&#010;+          default:        throw 'Unknown operator ' + attribute.operator + ' in selector';&#010;+        }&#010;+      });&#010;+    }&#010;+&#010;+    return conditions.join(' &amp;&amp; ');&#010;+  },&#010;+&#010;+  compileMatcher: function() {&#010;+    this.match = new Function('element', 'if (!element.tagName) return false; \&#010;+      return ' + this.buildMatchExpression());&#010;+  },&#010;+&#010;+  findElements: function(scope) {&#010;+    var element;&#010;+&#010;+    if (element = $(this.params.id))&#010;+      if (this.match(element))&#010;+        if (!scope || Element.childOf(element, scope))&#010;+          return [element];&#010;+&#010;+    scope = (scope || document).getElementsByTagName(this.params.tagName || '*');&#010;+&#010;+    var results = [];&#010;+    for (var i = 0; i &lt; scope.length; i++)&#010;+      if (this.match(element = scope[i]))&#010;+        results.push(Element.extend(element));&#010;+&#010;+    return results;&#010;+  },&#010;+&#010;+  toString: function() {&#010;+    return this.expression;&#010;+  }&#010;+}&#010;+&#010;+function $$() {&#010;+  return $A(arguments).map(function(expression) {&#010;+    return expression.strip().split(/\s+/).inject([null], function(results, expr) {&#010;+      var selector = new Selector(expr);&#010;+      return results.map(selector.findElements.bind(selector)).flatten();&#010;+    });&#010;+  }).flatten();&#010;+}&#010;+var Field = {&#010;+  clear: function() {&#010;+    for (var i = 0; i &lt; arguments.length; i++)&#010;+      $(arguments[i]).value = '';&#010;+  },&#010;+&#010;+  focus: function(element) {&#010;+    $(element).focus();&#010;+  },&#010;+&#010;+  present: function() {&#010;+    for (var i = 0; i &lt; arguments.length; i++)&#010;+      if ($(arguments[i]).value == '') return false;&#010;+    return true;&#010;+  },&#010;+&#010;+  select: function(element) {&#010;+    $(element).select();&#010;+  },&#010;+&#010;+  activate: function(element) {&#010;+    element = $(element);&#010;+    element.focus();&#010;+    if (element.select)&#010;+      element.select();&#010;+  }&#010;+}&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+var Form = {&#010;+  serialize: function(form) {&#010;+    var elements = Form.getElements($(form));&#010;+    var queryComponents = new Array();&#010;+&#010;+    for (var i = 0; i &lt; elements.length; i++) {&#010;+      var queryComponent = Form.Element.serialize(elements[i]);&#010;+      if (queryComponent)&#010;+        queryComponents.push(queryComponent);&#010;+    }&#010;+&#010;+    return queryComponents.join('&amp;');&#010;+  },&#010;+&#010;+  getElements: function(form) {&#010;+    form = $(form);&#010;+    var elements = new Array();&#010;+&#010;+    for (var tagName in Form.Element.Serializers) {&#010;+      var tagElements = form.getElementsByTagName(tagName);&#010;+      for (var j = 0; j &lt; tagElements.length; j++)&#010;+        elements.push(tagElements[j]);&#010;+    }&#010;+    return elements;&#010;+  },&#010;+&#010;+  getInputs: function(form, typeName, name) {&#010;+    form = $(form);&#010;+    var inputs = form.getElementsByTagName('input');&#010;+&#010;+    if (!typeName &amp;&amp; !name)&#010;+      return inputs;&#010;+&#010;+    var matchingInputs = new Array();&#010;+    for (var i = 0; i &lt; inputs.length; i++) {&#010;+      var input = inputs[i];&#010;+      if ((typeName &amp;&amp; input.type != typeName) ||&#010;+          (name &amp;&amp; input.name != name))&#010;+        continue;&#010;+      matchingInputs.push(input);&#010;+    }&#010;+&#010;+    return matchingInputs;&#010;+  },&#010;+&#010;+  disable: function(form) {&#010;+    var elements = Form.getElements(form);&#010;+    for (var i = 0; i &lt; elements.length; i++) {&#010;+      var element = elements[i];&#010;+      element.blur();&#010;+      element.disabled = 'true';&#010;+    }&#010;+  },&#010;+&#010;+  enable: function(form) {&#010;+    var elements = Form.getElements(form);&#010;+    for (var i = 0; i &lt; elements.length; i++) {&#010;+      var element = elements[i];&#010;+      element.disabled = '';&#010;+    }&#010;+  },&#010;+&#010;+  findFirstElement: function(form) {&#010;+    return Form.getElements(form).find(function(element) {&#010;+      return element.type != 'hidden' &amp;&amp; !element.disabled &amp;&amp;&#010;+        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());&#010;+    });&#010;+  },&#010;+&#010;+  focusFirstElement: function(form) {&#010;+    Field.activate(Form.findFirstElement(form));&#010;+  },&#010;+&#010;+  reset: function(form) {&#010;+    $(form).reset();&#010;+  }&#010;+}&#010;+&#010;+Form.Element = {&#010;+  serialize: function(element) {&#010;+    element = $(element);&#010;+    var method = element.tagName.toLowerCase();&#010;+    var parameter = Form.Element.Serializers[method](element);&#010;+&#010;+    if (parameter) {&#010;+      var key = encodeURIComponent(parameter[0]);&#010;+      if (key.length == 0) return;&#010;+&#010;+      if (parameter[1].constructor != Array)&#010;+        parameter[1] = [parameter[1]];&#010;+&#010;+      return parameter[1].map(function(value) {&#010;+        return key + '=' + encodeURIComponent(value);&#010;+      }).join('&amp;');&#010;+    }&#010;+  },&#010;+&#010;+  getValue: function(element) {&#010;+    element = $(element);&#010;+    var method = element.tagName.toLowerCase();&#010;+    var parameter = Form.Element.Serializers[method](element);&#010;+&#010;+    if (parameter)&#010;+      return parameter[1];&#010;+  }&#010;+}&#010;+&#010;+Form.Element.Serializers = {&#010;+  input: function(element) {&#010;+    switch (element.type.toLowerCase()) {&#010;+      case 'submit':&#010;+      case 'hidden':&#010;+      case 'password':&#010;+      case 'text':&#010;+        return Form.Element.Serializers.textarea(element);&#010;+      case 'checkbox':&#010;+      case 'radio':&#010;+        return Form.Element.Serializers.inputSelector(element);&#010;+    }&#010;+    return false;&#010;+  },&#010;+&#010;+  inputSelector: function(element) {&#010;+    if (element.checked)&#010;+      return [element.name, element.value];&#010;+  },&#010;+&#010;+  textarea: function(element) {&#010;+    return [element.name, element.value];&#010;+  },&#010;+&#010;+  select: function(element) {&#010;+    return Form.Element.Serializers[element.type == 'select-one' ?&#010;+      'selectOne' : 'selectMany'](element);&#010;+  },&#010;+&#010;+  selectOne: function(element) {&#010;+    var value = '', opt, index = element.selectedIndex;&#010;+    if (index &gt;= 0) {&#010;+      opt = element.options[index];&#010;+      value = opt.value || opt.text;&#010;+    }&#010;+    return [element.name, value];&#010;+  },&#010;+&#010;+  selectMany: function(element) {&#010;+    var value = [];&#010;+    for (var i = 0; i &lt; element.length; i++) {&#010;+      var opt = element.options[i];&#010;+      if (opt.selected)&#010;+        value.push(opt.value || opt.text);&#010;+    }&#010;+    return [element.name, value];&#010;+  }&#010;+}&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+var $F = Form.Element.getValue;&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+Abstract.TimedObserver = function() {}&#010;+Abstract.TimedObserver.prototype = {&#010;+  initialize: function(element, frequency, callback) {&#010;+    this.frequency = frequency;&#010;+    this.element   = $(element);&#010;+    this.callback  = callback;&#010;+&#010;+    this.lastValue = this.getValue();&#010;+    this.registerCallback();&#010;+  },&#010;+&#010;+  registerCallback: function() {&#010;+    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);&#010;+  },&#010;+&#010;+  onTimerEvent: function() {&#010;+    var value = this.getValue();&#010;+    if (this.lastValue != value) {&#010;+      this.callback(this.element, value);&#010;+      this.lastValue = value;&#010;+    }&#010;+  }&#010;+}&#010;+&#010;+Form.Element.Observer = Class.create();&#010;+Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {&#010;+  getValue: function() {&#010;+    return Form.Element.getValue(this.element);&#010;+  }&#010;+});&#010;+&#010;+Form.Observer = Class.create();&#010;+Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {&#010;+  getValue: function() {&#010;+    return Form.serialize(this.element);&#010;+  }&#010;+});&#010;+&#010;+/*--------------------------------------------------------------------------*/&#010;+&#010;+Abstract.EventObserver = function() {}&#010;+Abstract.EventObserver.prototype = {&#010;+  initialize: function(element, callback) {&#010;+    this.element  = $(element);&#010;+    this.callback = callback;&#010;+&#010;+    this.lastValue = this.getValue();&#010;+    if (this.element.tagName.toLowerCase() == 'form')&#010;+      this.registerFormCallbacks();&#010;+    else&#010;+      this.registerCallback(this.element);&#010;+  },&#010;+&#010;+  onElementEvent: function() {&#010;+    var value = this.getValue();&#010;+    if (this.lastValue != value) {&#010;+      this.callback(this.element, value);&#010;+      this.lastValue = value;&#010;+    }&#010;+  },&#010;+&#010;+  registerFormCallbacks: function() {&#010;+    var elements = Form.getElements(this.element);&#010;+    for (var i = 0; i &lt; elements.length; i++)&#010;+      this.registerCallback(elements[i]);&#010;+  },&#010;+&#010;+  registerCallback: function(element) {&#010;+    if (element.type) {&#010;+      switch (element.type.toLowerCase()) {&#010;+        case 'checkbox':&#010;+        case 'radio':&#010;+          Event.observe(element, 'click', this.onElementEvent.bind(this));&#010;+          break;&#010;+        case 'password':&#010;+        case 'text':&#010;+        case 'textarea':&#010;+        case 'select-one':&#010;+        case 'select-multiple':&#010;+          Event.observe(element, 'change', this.onElementEvent.bind(this));&#010;+          break;&#010;+      }&#010;+    }&#010;+  }&#010;+}&#010;+&#010;+Form.Element.EventObserver = Class.create();&#010;+Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {&#010;+  getValue: function() {&#010;+    return Form.Element.getValue(this.element);&#010;+  }&#010;+});&#010;+&#010;+Form.EventObserver = Class.create();&#010;+Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {&#010;+  getValue: function() {&#010;+    return Form.serialize(this.element);&#010;+  }&#010;+});&#010;+if (!window.Event) {&#010;+  var Event = new Object();&#010;+}&#010;+&#010;+Object.extend(Event, {&#010;+  KEY_BACKSPACE: 8,&#010;+  KEY_TAB:       9,&#010;+  KEY_RETURN:   13,&#010;+  KEY_ESC:      27,&#010;+  KEY_LEFT:     37,&#010;+  KEY_UP:       38,&#010;+  KEY_RIGHT:    39,&#010;+  KEY_DOWN:     40,&#010;+  KEY_DELETE:   46,&#010;+&#010;+  element: function(event) {&#010;+    return event.target || event.srcElement;&#010;+  },&#010;+&#010;+  isLeftClick: function(event) {&#010;+    return (((event.which) &amp;&amp; (event.which == 1)) ||&#010;+            ((event.button) &amp;&amp; (event.button == 1)));&#010;+  },&#010;+&#010;+  pointerX: function(event) {&#010;+    return event.pageX || (event.clientX +&#010;+      (document.documentElement.scrollLeft || document.body.scrollLeft));&#010;+  },&#010;+&#010;+  pointerY: function(event) {&#010;+    return event.pageY || (event.clientY +&#010;+      (document.documentElement.scrollTop || document.body.scrollTop));&#010;+  },&#010;+&#010;+  stop: function(event) {&#010;+    if (event.preventDefault) {&#010;+      event.preventDefault();&#010;+      event.stopPropagation();&#010;+    } else {&#010;+      event.returnValue = false;&#010;+      event.cancelBubble = true;&#010;+    }&#010;+  },&#010;+&#010;+  // find the first node with the given tagName, starting from the&#010;+  // node the event was triggered on; traverses the DOM upwards&#010;+  findElement: function(event, tagName) {&#010;+    var element = Event.element(event);&#010;+    while (element.parentNode &amp;&amp; (!element.tagName ||&#010;+        (element.tagName.toUpperCase() != tagName.toUpperCase())))&#010;+      element = element.parentNode;&#010;+    return element;&#010;+  },&#010;+&#010;+  observers: false,&#010;+&#010;+  _observeAndCache: function(element, name, observer, useCapture) {&#010;+    if (!this.observers) this.observers = [];&#010;+    if (element.addEventListener) {&#010;+      this.observers.push([element, name, observer, useCapture]);&#010;+      element.addEventListener(name, observer, useCapture);&#010;+    } else if (element.attachEvent) {&#010;+      this.observers.push([element, name, observer, useCapture]);&#010;+      element.attachEvent('on' + name, observer);&#010;+    }&#010;+  },&#010;+&#010;+  unloadCache: function() {&#010;+    if (!Event.observers) return;&#010;+    for (var i = 0; i &lt; Event.observers.length; i++) {&#010;+      Event.stopObserving.apply(this, Event.observers[i]);&#010;+      Event.observers[i][0] = null;&#010;+    }&#010;+    Event.observers = false;&#010;+  },&#010;+&#010;+  observe: function(element, name, observer, useCapture) {&#010;+    var element = $(element);&#010;+    useCapture = useCapture || false;&#010;+&#010;+    if (name == 'keypress' &amp;&amp;&#010;+        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)&#010;+        || element.attachEvent))&#010;+      name = 'keydown';&#010;+&#010;+    this._observeAndCache(element, name, observer, useCapture);&#010;+  },&#010;+&#010;+  stopObserving: function(element, name, observer, useCapture) {&#010;+    var element = $(element);&#010;+    useCapture = useCapture || false;&#010;+&#010;+    if (name == 'keypress' &amp;&amp;&#010;+        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)&#010;+        || element.detachEvent))&#010;+      name = 'keydown';&#010;+&#010;+    if (element.removeEventListener) {&#010;+      element.removeEventListener(name, observer, useCapture);&#010;+    } else if (element.detachEvent) {&#010;+      element.detachEvent('on' + name, observer);&#010;+    }&#010;+  }&#010;+});&#010;+&#010;+/* prevent memory leaks in IE */&#010;+if (navigator.appVersion.match(/\bMSIE\b/))&#010;+  Event.observe(window, 'unload', Event.unloadCache, false);&#010;+var Position = {&#010;+  // set to true if needed, warning: firefox performance problems&#010;+  // NOT neeeded for page scrolling, only if draggable contained in&#010;+  // scrollable elements&#010;+  includeScrollOffsets: false,&#010;+&#010;+  // must be called before calling withinIncludingScrolloffset, every time the&#010;+  // page is scrolled&#010;+  prepare: function() {&#010;+    this.deltaX =  window.pageXOffset&#010;+                || document.documentElement.scrollLeft&#010;+                || document.body.scrollLeft&#010;+                || 0;&#010;+    this.deltaY =  window.pageYOffset&#010;+                || document.documentElement.scrollTop&#010;+                || document.body.scrollTop&#010;+                || 0;&#010;+  },&#010;+&#010;+  realOffset: function(element) {&#010;+    var valueT = 0, valueL = 0;&#010;+    do {&#010;+      valueT += element.scrollTop  || 0;&#010;+      valueL += element.scrollLeft || 0;&#010;+      element = element.parentNode;&#010;+    } while (element);&#010;+    return [valueL, valueT];&#010;+  },&#010;+&#010;+  cumulativeOffset: function(element) {&#010;+    var valueT = 0, valueL = 0;&#010;+    do {&#010;+      valueT += element.offsetTop  || 0;&#010;+      valueL += element.offsetLeft || 0;&#010;+      element = element.offsetParent;&#010;+    } while (element);&#010;+    return [valueL, valueT];&#010;+  },&#010;+&#010;+  positionedOffset: function(element) {&#010;+    var valueT = 0, valueL = 0;&#010;+    do {&#010;+      valueT += element.offsetTop  || 0;&#010;+      valueL += element.offsetLeft || 0;&#010;+      element = element.offsetParent;&#010;+      if (element) {&#010;+        p = Element.getStyle(element, 'position');&#010;+        if (p == 'relative' || p == 'absolute') break;&#010;+      }&#010;+    } while (element);&#010;+    return [valueL, valueT];&#010;+  },&#010;+&#010;+  offsetParent: function(element) {&#010;+    if (element.offsetParent) return element.offsetParent;&#010;+    if (element == document.body) return element;&#010;+&#010;+    while ((element = element.parentNode) &amp;&amp; element != document.body)&#010;+      if (Element.getStyle(element, 'position') != 'static')&#010;+        return element;&#010;+&#010;+    return document.body;&#010;+  },&#010;+&#010;+  // caches x/y coordinate pair to use with overlap&#010;+  within: function(element, x, y) {&#010;+    if (this.includeScrollOffsets)&#010;+      return this.withinIncludingScrolloffsets(element, x, y);&#010;+    this.xcomp = x;&#010;+    this.ycomp = y;&#010;+    this.offset = this.cumulativeOffset(element);&#010;+&#010;+    return (y &gt;= this.offset[1] &amp;&amp;&#010;+            y &lt;  this.offset[1] + element.offsetHeight &amp;&amp;&#010;+            x &gt;= this.offset[0] &amp;&amp;&#010;+            x &lt;  this.offset[0] + element.offsetWidth);&#010;+  },&#010;+&#010;+  withinIncludingScrolloffsets: function(element, x, y) {&#010;+    var offsetcache = this.realOffset(element);&#010;+&#010;+    this.xcomp = x + offsetcache[0] - this.deltaX;&#010;+    this.ycomp = y + offsetcache[1] - this.deltaY;&#010;+    this.offset = this.cumulativeOffset(element);&#010;+&#010;+    return (this.ycomp &gt;= this.offset[1] &amp;&amp;&#010;+            this.ycomp &lt;  this.offset[1] + element.offsetHeight &amp;&amp;&#010;+            this.xcomp &gt;= this.offset[0] &amp;&amp;&#010;+            this.xcomp &lt;  this.offset[0] + element.offsetWidth);&#010;+  },&#010;+&#010;+  // within must be called directly before&#010;+  overlap: function(mode, element) {&#010;+    if (!mode) return 0;&#010;+    if (mode == 'vertical')&#010;+      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /&#010;+        element.offsetHeight;&#010;+    if (mode == 'horizontal')&#010;+      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /&#010;+        element.offsetWidth;&#010;+  },&#010;+&#010;+  clone: function(source, target) {&#010;+    source = $(source);&#010;+    target = $(target);&#010;+    target.style.position = 'absolute';&#010;+    var offsets = this.cumulativeOffset(source);&#010;+    target.style.top    = offsets[1] + 'px';&#010;+    target.style.left   = offsets[0] + 'px';&#010;+    target.style.width  = source.offsetWidth + 'px';&#010;+    target.style.height = source.offsetHeight + 'px';&#010;+  },&#010;+&#010;+  page: function(forElement) {&#010;+    var valueT = 0, valueL = 0;&#010;+&#010;+    var element = forElement;&#010;+    do {&#010;+      valueT += element.offsetTop  || 0;&#010;+      valueL += element.offsetLeft || 0;&#010;+&#010;+      // Safari fix&#010;+      if (element.offsetParent==document.body)&#010;+        if (Element.getStyle(element,'position')=='absolute') break;&#010;+&#010;+    } while (element = element.offsetParent);&#010;+&#010;+    element = forElement;&#010;+    do {&#010;+      valueT -= element.scrollTop  || 0;&#010;+      valueL -= element.scrollLeft || 0;&#010;+    } while (element = element.parentNode);&#010;+&#010;+    return [valueL, valueT];&#010;+  },&#010;+&#010;+  clone: function(source, target) {&#010;+    var options = Object.extend({&#010;+      setLeft:    true,&#010;+      setTop:     true,&#010;+      setWidth:   true,&#010;+      setHeight:  true,&#010;+      offsetTop:  0,&#010;+      offsetLeft: 0&#010;+    }, arguments[2] || {})&#010;+&#010;+    // find page position of source&#010;+    source = $(source);&#010;+    var p = Position.page(source);&#010;+&#010;+    // find coordinate system to use&#010;+    target = $(target);&#010;+    var delta = [0, 0];&#010;+    var parent = null;&#010;+    // delta [0,0] will do fine with position: fixed elements,&#010;+    // position:absolute needs offsetParent deltas&#010;+    if (Element.getStyle(target,'position') == 'absolute') {&#010;+      parent = Position.offsetParent(target);&#010;+      delta = Position.page(parent);&#010;+    }&#010;+&#010;+    // correct by body offsets (fixes Safari)&#010;+    if (parent == document.body) {&#010;+      delta[0] -= document.body.offsetLeft;&#010;+      delta[1] -= document.body.offsetTop;&#010;+    }&#010;+&#010;+    // set position&#010;+    if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';&#010;+    if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';&#010;+    if(options.setWidth)  target.style.width = source.offsetWidth + 'px';&#010;+    if(options.setHeight) target.style.height = source.offsetHeight + 'px';&#010;+  },&#010;+&#010;+  absolutize: function(element) {&#010;+    element = $(element);&#010;+    if (element.style.position == 'absolute') return;&#010;+    Position.prepare();&#010;+&#010;+    var offsets = Position.positionedOffset(element);&#010;+    var top     = offsets[1];&#010;+    var left    = offsets[0];&#010;+    var width   = element.clientWidth;&#010;+    var height  = element.clientHeight;&#010;+&#010;+    element._originalLeft   = left - parseFloat(element.style.left  || 0);&#010;+    element._originalTop    = top  - parseFloat(element.style.top || 0);&#010;+    element._originalWidth  = element.style.width;&#010;+    element._originalHeight = element.style.height;&#010;+&#010;+    element.style.position = 'absolute';&#010;+    element.style.top    = top + 'px';;&#010;+    element.style.left   = left + 'px';;&#010;+    element.style.width  = width + 'px';;&#010;+    element.style.height = height + 'px';;&#010;+  },&#010;+&#010;+  relativize: function(element) {&#010;+    element = $(element);&#010;+    if (element.style.position == 'relative') return;&#010;+    Position.prepare();&#010;+&#010;+    element.style.position = 'relative';&#010;+    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);&#010;+    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);&#010;+&#010;+    element.style.top    = top + 'px';&#010;+    element.style.left   = left + 'px';&#010;+    element.style.height = element._originalHeight;&#010;+    element.style.width  = element._originalWidth;&#010;+  }&#010;+}&#010;+&#010;+// Safari returns margins on body which is incorrect if the child is absolutely&#010;+// positioned.  For performance reasons, redefine Position.cumulativeOffset for&#010;+// KHTML/WebKit only.&#010;+if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {&#010;+  Position.cumulativeOffset = function(element) {&#010;+    var valueT = 0, valueL = 0;&#010;+    do {&#010;+      valueT += element.offsetTop  || 0;&#010;+      valueL += element.offsetLeft || 0;&#010;+      if (element.offsetParent == document.body)&#010;+        if (Element.getStyle(element, 'position') == 'absolute') break;&#010;+&#010;+      element = element.offsetParent;&#010;+    } while (element);&#010;+&#010;+    return [valueL, valueT];&#010;+  }&#010;+}&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushJava.js&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushJava.js?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushJava.js (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushJava.js Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,26 @@&#010;+dp.sh.Brushes.Java = function()&#010;+{&#010;+&#009;var keywords =&#009;'abstract assert boolean break byte case catch char class const ' +&#010;+&#009;&#009;&#009;'continue default do double else enum extends ' +&#010;+&#009;&#009;&#009;'false final finally float for goto if implements import ' +&#010;+&#009;&#009;&#009;'instanceof int interface long native new null ' +&#010;+&#009;&#009;&#009;'package private protected public return ' +&#010;+&#009;&#009;&#009;'short static strictfp super switch synchronized this throw throws true ' +&#010;+&#009;&#009;&#009;'transient try void volatile while';&#010;+&#010;+&#009;this.regexList = [&#010;+&#009;&#009;{ regex: dp.sh.RegexLib.SingleLineCComments,&#009;&#009;&#009;&#009;&#009;&#009;&#009;css: 'comment' },&#009;&#009;// one line comments&#010;+&#009;&#009;{ regex: dp.sh.RegexLib.MultiLineCComments,&#009;&#009;&#009;&#009;&#009;&#009;&#009;&#009;css: 'comment' },&#009;&#009;// multiline comments&#010;+&#009;&#009;{ regex: dp.sh.RegexLib.DoubleQuotedString,&#009;&#009;&#009;&#009;&#009;&#009;&#009;&#009;css: 'string' },&#009;&#009;// strings&#010;+&#009;&#009;{ regex: dp.sh.RegexLib.SingleQuotedString,&#009;&#009;&#009;&#009;&#009;&#009;&#009;&#009;css: 'string' },&#009;&#009;// strings&#010;+&#009;&#009;{ regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'),&#009;css: 'number' },&#009;&#009;// numbers&#010;+&#009;&#009;{ regex: new RegExp('(?!\\@interface\\b)\\@[\\$\\w]+\\b', 'g'),&#009;&#009;&#009;css: 'annotation' },&#009;// annotation @anno&#010;+&#009;&#009;{ regex: new RegExp('\\@interface\\b', 'g'),&#009;&#009;&#009;&#009;&#009;&#009;&#009;css: 'keyword' },&#009;&#009;// @interface keyword&#010;+&#009;&#009;{ regex: new RegExp(this.GetKeywords(keywords), 'gm'),&#009;&#009;&#009;&#009;&#009;css: 'keyword' }&#009;&#009;// java keyword&#010;+&#009;&#009;];&#010;+&#010;+&#009;this.CssClass = 'dp-j';&#010;+}&#010;+&#010;+dp.sh.Brushes.Java.prototype&#009;= new dp.sh.Highlighter();&#010;+dp.sh.Brushes.Java.Aliases&#009;= ['java'];&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushXml.js&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushXml.js?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushXml.js (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/scripts/shBrushXml.js Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,61 @@&#010;+dp.sh.Brushes.Xml = function()&#010;+{&#010;+&#009;this.CssClass = 'dp-xml';&#010;+}&#010;+&#010;+dp.sh.Brushes.Xml.prototype&#009;= new dp.sh.Highlighter();&#010;+dp.sh.Brushes.Xml.Aliases&#009;= ['xml', 'xhtml', 'xslt', 'html', 'xhtml'];&#010;+&#010;+dp.sh.Brushes.Xml.prototype.ProcessRegexList = function()&#010;+{&#010;+&#009;function push(array, value)&#010;+&#009;{&#010;+&#009;&#009;array[array.length] = value;&#010;+&#009;}&#010;+&#009;&#010;+&#009;/* If only there was a way to get index of a group within a match, the whole XML&#010;+&#009;   could be matched with the expression looking something like that:&#010;+&#009;&#010;+&#009;   (&lt;!\[CDATA\[\s*.*\s*\]\]&gt;)&#010;+&#009;   | (&lt;!--\s*.*\s*?--&gt;)&#010;+&#009;   | (&lt;)*(\w+)*\s*(\w+)\s*=\s*(".*?"|'.*?'|\w+)(/*&gt;)*&#010;+&#009;   | (&lt;/?)(.*?)(/?&gt;)&#010;+&#009;*/&#010;+&#009;var index&#009;= 0;&#010;+&#009;var match&#009;= null;&#010;+&#009;var regex&#009;= null;&#010;+&#010;+&#009;// Match CDATA in the following format &lt;![ ... [ ... ]]&gt;&#010;+&#009;// &lt;\!\[[\w\s]*?\[(.|\s)*?\]\]&gt;&#010;+&#009;this.GetMatches(new RegExp('&lt;\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\]&gt;', 'gm'), 'cdata');&#010;+&#009;&#010;+&#009;// Match comments&#010;+&#009;// &lt;!--\s*.*\s*?--&gt;&#010;+&#009;this.GetMatches(new RegExp('&lt;!--\\s*.*\\s*?--&gt;', 'gm'), 'comments');&#010;+&#010;+&#009;// Match attributes and their values&#010;+&#009;// (:|\w+)\s*=\s*(".*?"|\'.*?\'|\w+)*&#010;+&#009;regex = new RegExp('([:\\w-\.]+)\\s*=\\s*(".*?"|\'.*?\'|\\w+)*', 'gm'); // Thanks to Tomi Blinnikka of Yahoo! for fixing namespaces in attributes&#010;+&#009;while((match = regex.exec(this.code)) != null)&#010;+&#009;{&#010;+&#009;&#009;push(this.matches, new dp.sh.Match(match[1], match.index, 'attribute'));&#010;+&#009;&#010;+&#009;&#009;// if xml is invalid and attribute has no property value, ignore it&#009;&#010;+&#009;&#009;if(match[2] != undefined)&#010;+&#009;&#009;{&#010;+&#009;&#009;&#009;push(this.matches, new dp.sh.Match(match[2], match.index + match[0].indexOf(match[2]), 'attribute-value'));&#010;+&#009;&#009;}&#010;+&#009;}&#010;+&#010;+&#009;// Match opening and closing tag brackets&#010;+&#009;// &lt;/*\?*(?!\!)|/*\?*&gt;&#010;+&#009;this.GetMatches(new RegExp('&lt;/*\\?*(?!\\!)|/*\\?*&gt;', 'gm'), 'tag');&#010;+&#010;+&#009;// Match tag names&#010;+&#009;// &lt;/*\?*\s*(\w+)&#010;+&#009;regex = new RegExp('&lt;/*\\?*\\s*([:\\w-\.]+)', 'gm');&#010;+&#009;while((match = regex.exec(this.code)) != null)&#010;+&#009;{&#010;+&#009;&#009;push(this.matches, new dp.sh.Match(match[1], match.index + match[0].indexOf(match[1]), 'tag-name'));&#010;+&#009;}&#010;+}&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/scripts/shCore.js&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/scripts/shCore.js?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/scripts/shCore.js (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/scripts/shCore.js Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1 @@&#010;+var dp={sh:{Toolbar:{},Utils:{},RegexLib:{},Brushes:{},Strings:{},Version:"1.4.1"}};dp.sh.Strings={AboutDialog:"&lt;html&gt;&lt;head&gt;&lt;title&gt;About...&lt;/title&gt;&lt;/head&gt;&lt;body class=\"dp-about\"&gt;&lt;table cellspacing=\"0\"&gt;&lt;tr&gt;&lt;td class=\"copy\"&gt;&lt;p class=\"title\"&gt;dp.SyntaxHighlighter&lt;/div&gt;&lt;div class=\"para\"&gt;Version: {V}&lt;/p&gt;&lt;p&gt;&lt;a href=\"http://www.dreamprojections.com/syntaxhighlighter/?ref=about\" target=\"_blank\"&gt;http://www.dreamprojections.com/SyntaxHighlighter&lt;/a&gt;&lt;/p&gt;&amp;copy;2004-2005 Alex Gorbatchev. All right reserved.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=\"footer\"&gt;&lt;input type=\"button\" class=\"close\" value=\"OK\" onClick=\"window.close()\"/&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;"};dp.SyntaxHighlighter=dp.sh;dp.sh.Toolbar.Commands={ExpandSource:{label:"+ expand source",check:function(_1){return _1.collapse;},func:function(_2,_3){_2.parentNode.removeChild(_2);_3.div.className=_3.div.className.replace("collapsed","");}},ViewSource:{label:"view plain",func:function(_4,_5){var _6=_5.originalCode.replace(/&lt;/g&#010; ,"&amp;lt;");var _7=window.open("","_blank","width=750, height=400, location=0, resizable=1, menubar=0, scrollbars=1");_7.document.write("&lt;textarea style=\"width:99%;height:99%\"&gt;"+_6+"&lt;/textarea&gt;");_7.document.close();}},CopyToClipboard:{label:"copy to clipboard",check:function(){return window.clipboardData!=null;},func:function(_8,_9){window.clipboardData.setData("text",_9.originalCode);alert("The code is in your clipboard now");}},PrintSource:{label:"print",func:function(_a,_b){var _c=document.createElement("IFRAME");var _d=null;_c.style.cssText="position:absolute;width:0px;height:0px;left:-500px;top:-500px;";document.body.appendChild(_c);_d=_c.contentWindow.document;dp.sh.Utils.CopyStyles(_d,window.document);_d.write("&lt;div class=\""+_b.div.className.replace("collapsed","")+" printing\"&gt;"+_b.div.innerHTML+"&lt;/div&gt;");_d.close();_c.contentWindow.focus();_c.contentWindow.print();alert("Printing...");document.body.removeChild(_c);}},About:{label:"?",func:function(_e){var _f=window&#010; .open("","_blank","dialog,width=300,height=150,scrollbars=0");var doc=_f.document;dp.sh.Utils.CopyStyles(doc,window.document);doc.write(dp.sh.Strings.AboutDialog.replace("{V}",dp.sh.Version));doc.close();_f.focus();}}};dp.sh.Toolbar.Create=function(_11){var div=document.createElement("DIV");div.className="tools";for(var _13 in dp.sh.Toolbar.Commands){var cmd=dp.sh.Toolbar.Commands[_13];if(cmd.check!=null&amp;&amp;!cmd.check(_11)){continue;}div.innerHTML+="&lt;a href=\"#\" onclick=\"dp.sh.Toolbar.Command('"+_13+"',this);return false;\"&gt;"+cmd.label+"&lt;/a&gt;";}return div;};dp.sh.Toolbar.Command=function(_15,_16){var n=_16;while(n!=null&amp;&amp;n.className.indexOf("dp-highlighter")==-1){n=n.parentNode;}if(n!=null){dp.sh.Toolbar.Commands[_15].func(_16,n.highlighter);}};dp.sh.Utils.CopyStyles=function(_18,_19){var _1a=_19.getElementsByTagName("link");for(var i=0;i&lt;_1a.length;i++){if(_1a[i].rel.toLowerCase()=="stylesheet"){_18.write("&lt;link type=\"text/css\" rel=\"stylesheet\" href=\""+_1a[i].href+"\"&gt;&lt;&#010; /link&gt;");}}};dp.sh.RegexLib={MultiLineCComments:new RegExp("/\\*[\\s\\S]*?\\*/","gm"),SingleLineCComments:new RegExp("//.*$","gm"),SingleLinePerlComments:new RegExp("#.*$","gm"),DoubleQuotedString:new RegExp("\"(?:\\.|(\\\\\\\")|[^\\\"\"])*\"","g"),SingleQuotedString:new RegExp("'(?:\\.|(\\\\\\')|[^\\''])*'","g")};dp.sh.Match=function(_1c,_1d,css){this.value=_1c;this.index=_1d;this.length=_1c.length;this.css=css;};dp.sh.Highlighter=function(){this.noGutter=false;this.addControls=true;this.collapse=false;this.tabsToSpaces=true;this.wrapColumn=80;this.showColumns=true;};dp.sh.Highlighter.SortCallback=function(m1,m2){if(m1.index&lt;m2.index){return -1;}else{if(m1.index&gt;m2.index){return 1;}else{if(m1.length&lt;m2.length){return -1;}else{if(m1.length&gt;m2.length){return 1;}}}}return 0;};dp.sh.Highlighter.prototype.CreateElement=function(_21){var _22=document.createElement(_21);_22.highlighter=this;return _22;};dp.sh.Highlighter.prototype.GetMatches=function(_23,css){var _25=0;var _26=nul&#010; l;while((_26=_23.exec(this.code))!=null){this.matches[this.matches.length]=new dp.sh.Match(_26[0],_26.index,css);}};dp.sh.Highlighter.prototype.AddBit=function(str,css){if(str==null||str.length==0){return;}var _29=this.CreateElement("SPAN");str=str.replace(/&amp;/g,"&amp;amp;");str=str.replace(/ /g,"&amp;nbsp;");str=str.replace(/&lt;/g,"&amp;lt;");str=str.replace(/\n/gm,"&amp;nbsp;&lt;br&gt;");if(css!=null){var _2a=new RegExp("&lt;br&gt;","gi");if(_2a.test(str)){var _2b=str.split("&amp;nbsp;&lt;br&gt;");str="";for(var i=0;i&lt;_2b.length;i++){_29=this.CreateElement("SPAN");_29.className=css;_29.innerHTML=_2b[i];this.div.appendChild(_29);if(i+1&lt;_2b.length){this.div.appendChild(this.CreateElement("BR"));}}}else{_29.className=css;_29.innerHTML=str;this.div.appendChild(_29);}}else{_29.innerHTML=str;this.div.appendChild(_29);}};dp.sh.Highlighter.prototype.IsInside=function(_2d){if(_2d==null||_2d.length==0){return false;}for(var i=0;i&lt;this.matches.length;i++){var c=this.matches[i];if(c==null){continue;}if((_2d.index&gt;c.index)&amp;&amp;(&#010; _2d.index&lt;c.index+c.length)){return true;}}return false;};dp.sh.Highlighter.prototype.ProcessRegexList=function(){for(var i=0;i&lt;this.regexList.length;i++){this.GetMatches(this.regexList[i].regex,this.regexList[i].css);}};dp.sh.Highlighter.prototype.ProcessSmartTabs=function(_31){var _32=_31.split("\n");var _33="";var _34=4;var tab="\t";function InsertSpaces(_36,pos,_38){var _39=_36.substr(0,pos);var _3a=_36.substr(pos+1,_36.length);var _3b="";for(var i=0;i&lt;_38;i++){_3b+=" ";}return _39+_3b+_3a;}function ProcessLine(_3d,_3e){if(_3d.indexOf(tab)==-1){return _3d;}var pos=0;while((pos=_3d.indexOf(tab))!=-1){var _40=_3e-pos%_3e;_3d=InsertSpaces(_3d,pos,_40);}return _3d;}for(var i=0;i&lt;_32.length;i++){_33+=ProcessLine(_32[i],_34)+"\n";}return _33;};dp.sh.Highlighter.prototype.SwitchToList=function(){var _42=this.div.innerHTML.replace(/&lt;(br)\/?&gt;/gi,"\n");var _43=_42.split("\n");if(this.addControls==true){this.bar.appendChild(dp.sh.Toolbar.Create(this));}if(this.showColumns){var div=&#010; this.CreateElement("div");var _45=this.CreateElement("div");var _46=10;var i=1;while(i&lt;=150){if(i%_46==0){div.innerHTML+=i;i+=(i+"").length;}else{div.innerHTML+="&amp;middot;";i++;}}_45.className="columns";_45.appendChild(div);this.bar.appendChild(_45);}for(var i=0,lineIndex=this.firstLine;i&lt;_43.length-1;i++,lineIndex++){var li=this.CreateElement("LI");var _4a=this.CreateElement("SPAN");li.className=(i%2==0)?"alt":"";_4a.innerHTML=_43[i]+"&amp;nbsp;";li.appendChild(_4a);this.ol.appendChild(li);}this.div.innerHTML="";};dp.sh.Highlighter.prototype.Highlight=function(_4b){function Trim(str){return str.replace(/^\s*(.*?)[\s\n]*$/g,"$1");}function Chop(str){return str.replace(/\n*$/,"").replace(/^\n*/,"");}function Unindent(str){var _4f=str.split("\n");var _50=new Array();var _51=new RegExp("^\\s*","g");var min=1000;for(var i=0;i&lt;_4f.length&amp;&amp;min&gt;0;i++){if(Trim(_4f[i]).length==0){continue;}var _54=_51.exec(_4f[i]);if(_54!=null&amp;&amp;_54.length&gt;0){min=Math.min(_54[0].length,min);}}if(min&gt;0){for&#010; (var i=0;i&lt;_4f.length;i++){_4f[i]=_4f[i].substr(min);}}return _4f.join("\n");}function Copy(_56,_57,_58){return _56.substr(_57,_58-_57);}var pos=0;this.originalCode=_4b;this.code=Chop(Unindent(_4b));this.div=this.CreateElement("DIV");this.bar=this.CreateElement("DIV");this.ol=this.CreateElement("OL");this.matches=new Array();this.div.className="dp-highlighter";this.div.highlighter=this;this.bar.className="bar";this.ol.start=this.firstLine;if(this.CssClass!=null){this.ol.className=this.CssClass;}if(this.collapse){this.div.className+=" collapsed";}if(this.noGutter){this.div.className+=" nogutter";}if(this.tabsToSpaces==true){this.code=this.ProcessSmartTabs(this.code);}this.ProcessRegexList();if(this.matches.length==0){this.AddBit(this.code,null);this.SwitchToList();this.div.appendChild(this.ol);return;}this.matches=this.matches.sort(dp.sh.Highlighter.SortCallback);for(var i=0;i&lt;this.matches.length;i++){if(this.IsInside(this.matches[i])){this.matches[i]=null;}}for(var i=0;i&lt;thi&#010; s.matches.length;i++){var _5c=this.matches[i];if(_5c==null||_5c.length==0){continue;}this.AddBit(Copy(this.code,pos,_5c.index),null);this.AddBit(_5c.value,_5c.css);pos=_5c.index+_5c.length;}this.AddBit(this.code.substr(pos),null);this.SwitchToList();this.div.appendChild(this.bar);this.div.appendChild(this.ol);};dp.sh.Highlighter.prototype.GetKeywords=function(str){return "\\b"+str.replace(/ /g,"\\b|\\b")+"\\b";};dp.sh.HighlightAll=function(_5e,_5f,_60,_61,_62,_63){function FindValue(){var a=arguments;for(var i=0;i&lt;a.length;i++){if(a[i]==null){continue;}if(typeof (a[i])=="string"&amp;&amp;a[i]!=""){return a[i]+"";}if(typeof (a[i])=="object"&amp;&amp;a[i].value!=""){return a[i].value+"";}}return null;}function IsOptionSet(_66,_67){for(var i=0;i&lt;_67.length;i++){if(_67[i]==_66){return true;}}return false;}function GetOptionValue(_69,_6a,_6b){var _6c=new RegExp("^"+_69+"\\[(\\w+)\\]$","gi");var _6d=null;for(var i=0;i&lt;_6a.length;i++){if((_6d=_6c.exec(_6a[i]))!=null){return _6d[1];}}return _6b;}va&#010; r _6f=document.getElementsByName(_5e);var _70=null;var _71=new Object();var _72="value";if(_6f==null){return;}for(var _73 in dp.sh.Brushes){var _74=dp.sh.Brushes[_73].Aliases;if(_74==null){continue;}for(var i=0;i&lt;_74.length;i++){_71[_74[i]]=_73;}}for(var i=0;i&lt;_6f.length;i++){var _77=_6f[i];var _78=FindValue(_77.attributes["class"],_77.className,_77.attributes["language"],_77.language);var _79="";if(_78==null){continue;}_78=_78.split(":");_79=_78[0].toLowerCase();if(_71[_79]==null){continue;}_70=new dp.sh.Brushes[_71[_79]]();_77.style.display="none";_70.noGutter=(_5f==null)?IsOptionSet("nogutter",_78):!_5f;_70.addControls=(_60==null)?!IsOptionSet("nocontrols",_78):_60;_70.collapse=(_61==null)?IsOptionSet("collapse",_78):_61;_70.showColumns=(_63==null)?IsOptionSet("showcolumns",_78):_63;_70.firstLine=(_62==null)?parseInt(GetOptionValue("firstline",_78,1)):_62;_70.Highlight(_77[_72]);_77.parentNode.insertBefore(_70.div,_77);}};&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/style/pico.css&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/style/pico.css?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/style/pico.css (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/style/pico.css Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,159 @@&#010;+#banner {&#010;+  border-bottom: 1px solid #fff;&#010;+}&#010;+&#010;+#banner img {&#010;+  padding: 4px 0px 4px 20px;&#010;+}&#010;+&#010;+#breadcrumbs {&#010;+  border: 1px solid;&#010;+  background-color: #090;&#010;+  color: #fff;&#010;+}&#010;+&#010;+#navColumn {&#010;+  margin: 10px 10px 10px 10px;&#010;+  border: 1px solid #fff;&#010;+  background-color: #fff;&#010;+  float: left;&#010;+  height: 5000px;&#010;+}&#010;+&#010;+#navColumn h1 {&#010;+  font-size: 10pt;&#010;+  border-bottom: 1px solid #aaaaaa;&#010;+  padding-top: 12px;&#010;+  margin-right: 20px;&#010;+  color: #66665c;&#010;+}&#010;+&#010;+#navColumn ul {&#010;+  list-style: none;&#010;+  margin-left: 8px;&#010;+  padding-left: 1em;&#010;+  text-indent: -1em;&#010;+}&#010;+&#010;+#navColumn ul li:before {&#010;+  content: "\00BB \0020";&#010;+  font-weight:bold;&#010;+}&#010;+&#010;+#footer {&#010;+  width: 100%;&#010;+  background-color: #090;&#010;+  border: 1px solid;&#010;+  color: #fff;&#010;+  padding: 5px 0 5px 0;&#010;+  margin-top: 50px;&#010;+  font-size: 0.8em;&#010;+  position: fixed;&#010;+  bottom: 0px;&#010;+}&#010;+&#010;+#uads {&#010;+  position: absolute;&#010;+  right: 40px;&#010;+  top: 100px;&#010;+}&#010;+&#010;+#header {&#010;+  margin: 0 auto 0 auto;&#010;+  margin-left: 30px;&#010;+  margin-bottom: 40px;&#010;+}&#010;+&#010;+#content {&#010;+  margin: 0 auto 0 auto;&#010;+  margin-left: 30px;&#010;+  text-align: left;&#010;+}&#010;+&#010;+#left {&#010;+  position: absolute;&#010;+  z-index: 2;&#010;+  left: 8px;&#010;+  width: 184px;&#010;+  top: 125px;&#010;+  bottom: 8px;&#010;+  margin: 0px;&#010;+  padding: 0px;&#010;+}&#010;+&#010;+body {&#010;+  margin: 0;&#010;+  font-family: "Trebuchet MS", Arial, Verdana;&#010;+  font-size: 0.84em;&#010;+  color: #555555;&#010;+  background-color: #FFFFFF;&#010;+  text-align: left;&#010;+  padding: 0 0 10px 0;&#010;+}&#010;+&#010;+body,td,select,input,li {&#010;+  font-family: Verdana, Helvetica, Arial, sans-serif;&#010;+  font-size: 13px;&#010;+}&#010;+&#010;+div.section {&#010;+  margin-right:115px;&#010;+}&#010;+&#010;+div.section ul li, div.section ol li {&#010;+  margin-left:35px;&#010;+}&#010;+&#010;+a {&#010;+  text-decoration: none;&#010;+}&#010;+&#010;+a:link {&#010;+  color: #090;&#010;+}&#010;+&#010;+a:visited {&#010;+  color: #090;&#010;+}&#010;+&#010;+a:active,a:hover {&#010;+  color: #090;&#010;+}&#010;+&#010;+table.bodyTable th {&#010;+  color: white;&#010;+  background-color: #bbb;&#010;+  text-align: left;&#010;+  font-weight: bold;&#010;+}&#010;+&#010;+table.bodyTable th,table.bodyTable td {&#010;+  font-size: 1em;&#010;+}&#010;+&#010;+table.bodyTable tr.a {&#010;+  background-color: #ddd;&#010;+}&#010;+&#010;+table.bodyTable tr.b {&#010;+  background-color: #eee;&#010;+}&#010;+&#010;+.logo {&#010;+  float: right;&#010;+  margin-right: 30px;&#010;+}&#010;+&#010;+.clear {&#010;+  clear: both;&#010;+}&#010;+&#010;+.left {&#010;+  text-align: left;&#010;+  margin-left: 10px;&#010;+}&#010;+&#010;+.right {&#010;+  text-align: right;&#010;+  margin-right: 10px;&#010;+}&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/style/syntaxhighlighter.css&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/style/syntaxhighlighter.css?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/style/syntaxhighlighter.css (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/style/syntaxhighlighter.css Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,389 @@&#010;+/*&#010;+ * Copyright (c) 2007, Apache Composer Organization. All rights reserved.&#010;+ * -------------------------------------------------------------------------&#010;+ * The software in this package is published under the terms of the BSD&#010;+ * style license a copy of which has been included with this distribution in&#010;+ * the LICENSE.txt file.&#010;+ *&#010;+ */&#010;+&#010;+/* Main style for the table */&#010;+&#010;+.dp-highlighter {&#010;+    font-family: "Courier New", Courier, mono;&#010;+    font-size: 12px;&#010;+    border: 1px solid #2B91AF;&#010;+    background-color: #fff;&#010;+    overflow: auto;&#010;+    line-height: 100% !important;&#010;+    margin: 18px 0 18px 0;&#010;+}&#010;+&#010;+.dp-highlighter .bar {&#010;+    padding-left: 45px;&#010;+}&#010;+&#010;+.dp-highlighter ol {&#010;+    margin: 0 0 0 45px;&#010;+    padding: 0;&#010;+    color: #2B91AF;&#010;+}&#010;+&#010;+.dp-highlighter ol li, .dp-highlighter .columns div {&#010;+    border-left: 3px solid #6CE26C;&#010;+    background-color: #fff;&#010;+    padding-left: 10px;&#010;+    line-height: 14px;&#010;+}&#010;+&#010;+.dp-highlighter .columns {&#010;+    color: gray;&#010;+    overflow: hidden;&#010;+    width: 100%;&#010;+}&#010;+&#010;+.dp-highlighter .columns div {&#010;+    padding-bottom: 5px;&#010;+}&#010;+&#010;+.dp-highlighter ol li.alt {&#010;+    background-color: #f8f8f8;&#010;+}&#010;+&#010;+.dp-highlighter ol li span {&#010;+    color: Black;&#010;+}&#010;+&#010;+/* Adjust some properties when wollapsed */&#010;+&#010;+.dp-highlighter.collapsed ol {&#010;+    margin: 0px;&#010;+}&#010;+&#010;+.dp-highlighter.collapsed ol li {&#010;+    display: none;&#010;+}&#010;+&#010;+.dp-highlighter.collapsed .tools {&#010;+    border-bottom: none;&#010;+}&#010;+&#010;+/* Additional modifications when in print-view */&#010;+&#010;+.dp-highlighter.printing {&#010;+    border: none;&#010;+}&#010;+&#010;+.dp-highlighter.printing .tools {&#010;+    display: none !important;&#010;+    border: 5px solid black;&#010;+}&#010;+&#010;+.dp-highlighter.printing li {&#010;+    display: list-item !important;&#010;+}&#010;+&#010;+/* Styles for the tools */&#010;+&#010;+.dp-highlighter .tools {&#010;+    padding: 3px 8px 3px 10px;&#010;+    border-bottom: 1px solid #2B91AF;&#010;+    font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif;&#010;+    color: silver;&#010;+}&#010;+&#010;+.dp-highlighter .tools a {&#010;+    font-size: 9px;&#010;+    color: gray;&#010;+    text-decoration: none;&#010;+    margin-right: 10px;&#010;+}&#010;+&#010;+.dp-highlighter .tools a:hover {&#010;+    color: red;&#010;+    text-decoration: underline;&#010;+}&#010;+&#010;+/* About dialog styles */&#010;+&#010;+.dp-about {&#010;+    background-color: #fff;&#010;+    margin: 0px;&#010;+}&#010;+&#010;+.dp-about table {&#010;+    width: 100%;&#010;+    height: 100%;&#010;+    font-size: 11px;&#010;+    font-family: Tahoma, Verdana, Arial, sans-serif !important;&#010;+}&#010;+&#010;+.dp-about td {&#010;+    padding: 10px;&#010;+    vertical-align: top;&#010;+}&#010;+&#010;+.dp-about .copy {&#010;+    border-bottom: 1px solid #ACA899;&#010;+    height: 95%;&#010;+}&#010;+&#010;+.dp-about .title {&#010;+    color: red;&#010;+    font-weight: bold;&#010;+}&#010;+&#010;+.dp-about .para {&#010;+    margin-bottom: 4px;&#010;+}&#010;+&#010;+.dp-about .footer {&#010;+    background-color: #ECEADB;&#010;+    border-top: 1px solid #fff;&#010;+    text-align: right;&#010;+}&#010;+&#010;+.dp-about .close {&#010;+    font-size: 11px;&#010;+    font-family: Tahoma, Verdana, Arial, sans-serif !important;&#010;+    background-color: #ECEADB;&#010;+    width: 60px;&#010;+    height: 22px;&#010;+}&#010;+&#010;+/* Language specific styles */&#010;+&#010;+.dp-c {&#010;+}&#010;+&#010;+.dp-c .comment {&#010;+    color: green;&#010;+}&#010;+&#010;+.dp-c .string {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-c .preprocessor {&#010;+    color: gray;&#010;+}&#010;+&#010;+.dp-c .keyword {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-c .vars {&#010;+    color: #d00;&#010;+}&#010;+&#010;+.dp-vb {&#010;+}&#010;+&#010;+.dp-vb .comment {&#010;+    color: green;&#010;+}&#010;+&#010;+.dp-vb .string {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-vb .preprocessor {&#010;+    color: gray;&#010;+}&#010;+&#010;+.dp-vb .keyword {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-sql {&#010;+}&#010;+&#010;+.dp-sql .comment {&#010;+    color: green;&#010;+}&#010;+&#010;+.dp-sql .string {&#010;+    color: red;&#010;+}&#010;+&#010;+.dp-sql .keyword {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-sql .func {&#010;+    color: #ff1493;&#010;+}&#010;+&#010;+.dp-sql .op {&#010;+    color: #808080;&#010;+}&#010;+&#010;+.dp-xml {&#010;+}&#010;+&#010;+.dp-xml .cdata {&#010;+    color: #ff1493;&#010;+}&#010;+&#010;+.dp-xml .comments {&#010;+    color: green;&#010;+}&#010;+&#010;+.dp-xml .tag {&#010;+    font-weight: bold;&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-xml .tag-name {&#010;+    color: black;&#010;+    font-weight: bold;&#010;+}&#010;+&#010;+.dp-xml .attribute {&#010;+    color: red;&#010;+}&#010;+&#010;+.dp-xml .attribute-value {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-delphi {&#010;+}&#010;+&#010;+.dp-delphi .comment {&#010;+    color: #008200;&#010;+    font-style: italic;&#010;+}&#010;+&#010;+.dp-delphi .string {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-delphi .number {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-delphi .directive {&#010;+    color: #008284;&#010;+}&#010;+&#010;+.dp-delphi .keyword {&#010;+    font-weight: bold;&#010;+    color: navy;&#010;+}&#010;+&#010;+.dp-delphi .vars {&#010;+    color: #000;&#010;+}&#010;+&#010;+.dp-py {&#010;+}&#010;+&#010;+.dp-py .comment {&#010;+    color: green;&#010;+}&#010;+&#010;+.dp-py .string {&#010;+    color: red;&#010;+}&#010;+&#010;+.dp-py .docstring {&#010;+    color: green;&#010;+}&#010;+&#010;+.dp-py .keyword {&#010;+    color: blue;&#010;+    font-weight: bold;&#010;+}&#010;+&#010;+.dp-py .builtins {&#010;+    color: #ff1493;&#010;+}&#010;+&#010;+.dp-py .magicmethods {&#010;+    color: #808080;&#010;+}&#010;+&#010;+.dp-py .exceptions {&#010;+    color: brown;&#010;+}&#010;+&#010;+.dp-py .types {&#010;+    color: brown;&#010;+    font-style: italic;&#010;+}&#010;+&#010;+.dp-py .commonlibs {&#010;+    color: #8A2BE2;&#010;+    font-style: italic;&#010;+}&#010;+&#010;+.dp-rb {&#010;+}&#010;+&#010;+.dp-rb .comment {&#010;+    color: #c00;&#010;+}&#010;+&#010;+.dp-rb .string {&#010;+    color: #f0c;&#010;+}&#010;+&#010;+.dp-rb .symbol {&#010;+    color: #02b902;&#010;+}&#010;+&#010;+.dp-rb .keyword {&#010;+    color: #069;&#010;+}&#010;+&#010;+.dp-rb .variable {&#010;+    color: #6cf;&#010;+}&#010;+&#010;+.dp-css {&#010;+}&#010;+&#010;+.dp-css .comment {&#010;+    color: green;&#010;+}&#010;+&#010;+.dp-css .string {&#010;+    color: red;&#010;+}&#010;+&#010;+.dp-css .keyword {&#010;+    color: blue;&#010;+}&#010;+&#010;+.dp-css .colors {&#010;+    color: darkred;&#010;+}&#010;+&#010;+.dp-css .vars {&#010;+    color: #d00;&#010;+}&#010;+&#010;+.dp-j {&#010;+}&#010;+&#010;+.dp-j .comment {&#010;+    color: rgb( 63, 127, 95 );&#010;+}&#010;+&#010;+.dp-j .string {&#010;+    color: rgb( 42, 0, 255 );&#010;+}&#010;+&#010;+.dp-j .keyword {&#010;+    color: rgb( 127, 0, 85 );&#010;+    font-weight: bold&#010;+}&#010;+&#010;+.dp-j .annotation {&#010;+    color: #646464;&#010;+}&#010;+&#010;+.dp-j .number {&#010;+    color: #C00000;&#010;+}&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/templates/skin.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/templates/skin.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/templates/skin.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/templates/skin.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,111 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;${title}&lt;/title&gt;&#010;+&#010;+&lt;style type="text/css" media="all"&gt;&#010;+@import url("./style/pico.css");&#010;+&#010;+@import url("./style/syntaxhighlighter.css");&#010;+&lt;/style&gt;&#010;+&#010;+&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&#010;+&lt;/script&gt;&#010;+&lt;script type="text/javascript"&gt;&#010;+_uacct = "UA-2268879-1";&#010;+urchinTracker();&#010;+&lt;/script&gt;&#010;+&#010;+&lt;!--[if lt IE 7.]&gt;&#010;+    &lt;script defer type="text/javascript" src="./scripts/pngfix.js"&gt;&lt;/script&gt;&#010;+    &lt;![endif]--&gt;&#010;+&#010;+&lt;script type="text/javascript" src="./scripts/prototype.js"&gt;&#010;+      //&#010;+    &lt;/script&gt;&#010;+&lt;meta name="verify-v1"&#010;+  content="UsIBiaQhhmjFrBwcJ2n4XIvEImPNG4SMVP365rRcpxE=" /&gt;&#010;+&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /&gt;&#010;+&lt;/head&gt;&#010;+&#010;+&lt;body class="composite"&gt;&#010;+&#010;+&lt;div id="banner"&gt;&lt;img src="images/pico-logo.png"&#010;+  alt="Apache Composer" /&gt;&#010;+&lt;div class="clear"&gt;&#010;+&lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&lt;div id="breadcrumbs"&gt;&#010;+&lt;div class="left"&gt;Last Published: Jan 19 2008 (Apache Composer 2.0 released)&lt;/div&gt;&#010;+&lt;div class="clear"&gt;&#010;+&#010;+&lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;div id="leftColumn"&gt;&#010;+&lt;div id="navColumn"&gt;&lt;#list sitemap.sections as section&gt;&#010;+&lt;h1&gt;${section.name}&lt;/h1&gt;&#010;+&lt;ul&gt;&#010;+  &lt;#list section.pages as otherPage&gt; &lt;#if otherPage = page&gt;&#010;+  &lt;li class="none"&gt;&lt;strong&gt;${otherPage.title}&lt;/strong&gt;&lt;/li&gt;&#010;+  &lt;#else&gt;&#010;+  &lt;li class="none"&gt;&lt;a href="${otherPage.href}"&gt;${otherPage.title}&lt;/a&gt;&#010;+  &lt;/li&gt;&#010;+  &lt;/#if&gt; &lt;/#list&gt;&#010;+&lt;/ul&gt;&#010;+&lt;/#list&gt;&#010;+&lt;h1&gt;Hosted by&lt;/h1&gt;&#010;+&lt;img alt="Hosted at Codehaus"&#010;+  src="http://ci.codehaus.org/codehaus-small.png" /&gt;&lt;br /&gt;&#010;+&lt;h1&gt;Tools&lt;/h1&gt;&#010;+&lt;img alt="Build with Maven 2"&#010;+  src="http://maven.apache.org/images/logos/maven-feather.png" /&gt; &lt;br /&gt;&#010;+&lt;img alt="IDEA"&#010;+  src="http://www.jetbrains.com/idea/opensource/img/banners/idea88x31_white.gif" /&gt;&#010;+&lt;br /&gt;&#010;+&lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&lt;div id="bodyColumn"&gt;&#010;+&lt;div id="contentBox"&gt;&#010;+&lt;div class="section"&gt;&#010;+&lt;h2&gt;${title}&lt;/h2&gt;&#010;+${body}&#010;+&lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="clear"&gt;&#010;+&lt;/div&gt;&#010;+&lt;div id="footer"&gt;&#010;+&lt;div class="right"&gt;&amp;#169; 2003-2007 Apache Composer Committers&lt;/div&gt;&#010;+&lt;div class="clear"&gt;&#010;+&lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;/body&gt;&#010;+&#010;+&lt;!--  Scripts to highlight code:  MUST be left AFTER the body --&gt;&#010;+&lt;script language="javascript" src="./scripts/shCore.js"&gt;&#010;+      //&#010;+    &lt;/script&gt;&#010;+&lt;script language="javascript" src="./scripts/shBrushJava.js"&gt;&#010;+      //&#010;+    &lt;/script&gt;&#010;+&lt;script language="javascript" src="./scripts/shBrushXml.js"&gt;&#010;+      //&#010;+    &lt;/script&gt;&#010;+&lt;script type="text/javascript"&gt;&#010;+      // &lt;![CDATA[&#010;+      var elements = document.getElementsByClassName('source');&#010;+      elements.each(function(element) {&#010;+          var content = element.getElementsByTagName('pre')[0].innerHTML;&#010;+          var classType = /^&amp;lt;/.test(content) ? "xml" : "java";          &#010;+          content = "&lt;textarea name=\"code\" class=\"" + classType + "\"&gt;" + content + "&lt;/textarea&gt;";&#010;+          new Insertion.Before(element, content);&#010;+          element.remove(element);&#010;+      });&#010;+&#010;+      dp.SyntaxHighlighter.HighlightAll('code', false, false);&#010;+      // ]]&gt;&#010;+   &lt;/script&gt;&#010;+&#010;+&lt;/html&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618174 [2/5] - in /incubator/composer/trunk: ./ composer-site/ composer-site/src/ composer-site/src/assembly/ composer-site/src/config/ composer-site/src/resources/ composer-site/src/resources/images/ composer-site/src/resources/style/ com...</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204063336.0A8F71A9842@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204063336-0A8F71A9842@eris-apache-org%3e</id>
<updated>2008-02-04T06:33:26Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Added: incubator/composer/trunk/composer-site/src/site/content/builder.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/builder.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/builder.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/builder.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,70 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Building Containers&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Rather than new up a Apache Composer instance with the right ComponentFactory, LifecycleStategy and ComponentMonitor, your can use  ContainerBuilder for conveniece. Refer to Martin's &lt;a&#010;+  href="http://www.martinfowler.com/bliki/FluentInterface.html"&gt;'Fluent&#010;+Interface'&lt;/a&gt; article, for some of the motivation behing this class.&lt;/p&gt;&#010;+&lt;p&gt;Some simple examples :&lt;/p&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;&#010;+pico = new ContainerBuilder().build();&#010;+pico.addComponent(Apple.class);&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withCaching().build();&#010;+pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;&#010;+pico = new ContainerBuilder().withCaching().build();&#010;+pico.addComponent(Apple.class);&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withHiddenImplementations().build();&#010;+pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+&#010;+&lt;p&gt;More varations for behaviors :&lt;/p&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+pico = new ContainerBuilder().withLifecycle().withConsoleMonitor().build();&#010;+pico.addComponent(Apple.class);&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;pico = new ContainerBuilder().withMonitor(ConsoleComponentMonitor.class).build();&#010;+pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;&#010;+import static org.picocontainer.injectors.Injectors.SDI;&#010;+import static org.picocontainer.behaviors.Behaviors.caching;&#010;+import static org.picocontainer.behaviors.Behaviors.implementationHiding;&#010;+import static org.picocontainer.behaviors.Behaviors.synchronizing;&#010;+...  &#010;+pico = new ContainerBuilder(SDI()).withBehaviors(caching(), implementationHiding(), synchronizing()).build();&#010;+pico.addComponent(Apple.class);&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;Setting a parent container :&lt;/p&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;child = new ContainerBuilder(parentContainer).build();&#010;+child.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+&#010;+&lt;p&gt;Specifying an injection type:&lt;/p&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;&#010;+pico = new ContainerBuilder().withAnnotationInjection().build();&#010;+pico.addComponent(Apple.class);&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;Specifying an injection type a different way:&lt;/p&gt;&#010;+    &lt;div class="source"&gt;&lt;pre&gt;&#010;+import static org.picocontainer.injectors.Injectors.SDI;&#010;+...&#010;+pico = new ContainerBuilder(SDI()).build();&#010;+pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;A custom container component used by a custom  ComponentBehavior (though could be used by ComponentMonitor or LifecycleStrategy as easily): &lt;/p&gt;&#010;+&#010;+    &lt;div class="source"&gt;&#010;+      &lt;pre&gt;&#010;+pico = new ContainerBuilder()&#010;+    .withCustomContainerComponent(new MyQuantumPhysicsConnector())&#010;+    .withComponentFactory(MyQuantumPhysicsConnectionNeedingComponentBehavior.class).build();&#010;+pico.addComponent(Apple.class);&lt;/pre&gt;&lt;/div&gt;&#010;+&#009;&lt;p&gt;A custom container implementation (DefaultApache Composer is the default):&lt;/p&gt; &#010;+    &lt;div class="source"&gt;&#010;+      &lt;pre&gt;MyCustomApache Composer pico = (MyCustomApache Composer) new ContainerBuilder().implementedBy(MyCustomApache Composer.class).build();&#010;+pico.addComponent(Apple.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/class-naming.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/class-naming.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/class-naming.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/class-naming.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,23 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Class Naming&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Apache Composer's class naming changed substantially between 1.0 and 2.0. There are two major influences for this:&lt;/p&gt;&#010;+&lt;ol&gt;&#010;+  &lt;li&gt;Dan North's &amp;quot;Behavior Driven Design&amp;quot; agenda and his interest in Neuro Linguistic Programming (NLP)&lt;/li&gt;&#010;+  &lt;li&gt;Steve Yegge's technical fable : &lt;a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html"&gt;Execution in the Kingdom of Nouns&lt;/a&gt;&lt;/li&gt;&#010;+&lt;/ol&gt;&#010;+&lt;p&gt;The take away from both is that we don't have to have long classnames like &lt;em&gt;CachingComponentAdapterFactory&lt;/em&gt; and &lt;em&gt;ImplementationHidingComponentAdapterFactory&lt;/em&gt;, we can in fact have shorter names, that read better in their intended use:&lt;/p&gt;&#010;+&lt;pre&gt;  new DefaultApache Composer(new Caching());&lt;/pre&gt;&#010;+&lt;p&gt;Similarly,  method names can play a part in simplicity and meaning for real situations where they are used.&lt;/p&gt;&#010;+&lt;pre&gt;  new DefaultApache Composer(new Caching().wrap(new ImplementationHiding()));&#010;+&lt;/pre&gt;&#010;+&lt;p&gt;Caching, the class, implements an abstraction called BehaviorFactory as do many others. All BehaviorFactory implementations make implementations of Behavior like 'Cached'. Similarly 'ConstructionInjection' (and similar) make implementations of Injector like 'ConstructorInjector' (and similar). Both BehaviorFactory and InjectionFactory are extensions of ComponentFactory.&lt;/p&gt;&#010;+&lt;p&gt;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/comparisons.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/comparisons.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/comparisons.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/comparisons.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,175 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&lt;!DOCTYPE html &#010;+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&#010;+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;&#010;+&lt;head&gt;&#010;+&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;&#010;+&lt;title&gt;Container Comparisons&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+    &lt;div&gt;&#010;+      &lt;div&gt;&#010;+        &lt;h2&gt;Overview&lt;/h2&gt;&#010;+        &lt;p&gt;This document aims to compare Apache Composer to other IoC containers, both lightweight and not.&lt;/p&gt;&#010;+        &lt;p&gt;There are a number of published API specifications since Java was initially released that proport to be container/component designs. We discuss then here, suggesting there are goals that some have met, and some not. This may help you make better design choices for your own components.&lt;/p&gt;&#010;+      &lt;/div&gt;&#010;+      &lt;div&gt;&#010;+        &lt;h2&gt;IoC Containers&lt;/h2&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;Spring Framework&lt;/h3&gt;&#010;+          &lt;p&gt;The &lt;a href="http://www.springframework.org/"&gt;Spring Framework&lt;/a&gt; is a J2EE framework. As such, &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt; and &lt;a href="lifecycle.html" title="lifecycle"&gt;Lifecycle&lt;/a&gt; is only one of its concerns. Apache Composer, on the other hand, is concerned only with &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt;, configuration and &lt;a href="lifecycle.html" title="lifecycle"&gt;Lifecycle&lt;/a&gt;.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;Apache Avalon and its containers&lt;/h3&gt;&#010;+          &lt;p&gt;(Avalon ceased development in 2005)&lt;/p&gt;&#010;+          &lt;p&gt;Apache hosted a project that had been running for many years called Avalon. It had many components that fit that its design and many containers is writtern in Java. Avalon components were characterised by implementation of many optional interfaces. Avalon components were distributed with meta-information in XML in the jar file. More XML is required to assemble components together for the same of a application. Avalon Phoenix, Excalibur Component Manager (ECM), Avalon Fortress and Avalon Merlin were the pertinent containers.&lt;/p&gt;&#010;+          &lt;p&gt;The Avalon Framework required implementing components to implement a number of interfaces. By the end of the the project, this had proven historically to be a bit of a turn-off for component writers.  Those interfaces were :-&lt;/p&gt;&#010;+          &lt;table&gt;&#010;+            &lt;tbody&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;th&gt; Avalon Interface &lt;/th&gt;&#010;+                &lt;th&gt; Apache Composer equivalent &lt;/th&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; LogEnabled &lt;/td&gt;&#010;+                &lt;td&gt; Logging agnostic &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Contextualizable &lt;/td&gt;&#010;+                &lt;td&gt; n/a &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Serviceable (was Composable) &lt;/td&gt;&#010;+                &lt;td&gt;arguments are injected&lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Configurable &lt;/td&gt;&#010;+                &lt;td&gt;arguments are injected&lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Parameterizable &lt;/td&gt;&#010;+                &lt;td&gt; n/a &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Initializable &lt;/td&gt;&#010;+                &lt;td&gt; Constructor is the equivalent lifecycle concept &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Startable &lt;/td&gt;&#010;+                &lt;td&gt; Startable &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Suspendable &lt;/td&gt;&#010;+                &lt;td&gt; n/a &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Recontextualizable &lt;/td&gt;&#010;+                &lt;td&gt; n/a &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Recomposable &lt;/td&gt;&#010;+                &lt;td&gt; n/a &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Reconfigurable &lt;/td&gt;&#010;+                &lt;td&gt; n/a &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Reparameterizable &lt;/td&gt;&#010;+                &lt;td&gt; n/a &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+              &lt;tr&gt;&#010;+                &lt;td&gt; Disposable &lt;/td&gt;&#010;+                &lt;td&gt; Disposable &lt;/td&gt;&#010;+              &lt;/tr&gt;&#010;+            &lt;/tbody&gt;&#010;+          &lt;/table&gt;&#010;+          &lt;p&gt;Avalon is a Contextualized Lookup IoC design. &lt;/p&gt;&#010;+          &lt;div&gt;&#010;+    &lt;h2&gt;Example&lt;/h2&gt;&#010;+&#010;+    &lt;div class="source"&gt;&#010;+        &lt;div&gt;&#010;+            &lt;pre&gt;import org.apache.avalon.framework.ServiceManager;&#010;+import org.apache.avalon.framework.Serviceable;&#010;+import org.apache.avalon.framework.ServiceException;&#010;+&#010;+public class Shop implements Serviceable, Initializable {&#010;+    StockManager stockManager;&#010;+    String shopZipCode;&#010;+    public void service(ServiceManager sm) throws ServiceException {&#010;+        stockManager = (StockManager) sm.lookup(&amp;quot;StockManager&amp;quot;);&#010;+    }&#010;+    public void initialize() {&#010;+        // all service()ing has been done.&#010;+    }&#010;+}&lt;/pre&gt;&#010;+        &lt;/div&gt;&#010;+    &lt;/div&gt;&#010;+    &lt;p&gt;A component has to have service (component) declarations in an external file. The  &lt;a href="http://loom.codehaus.org/"&gt;Loom&lt;/a&gt;  container (forked from&#010;+       &lt;a href="http://www.axint.net/apache/avalon/phoenix/v4.0.2/"&gt;Phoenix&lt;/a&gt;) has .xinfo files for each component to meet such needs. All Avalon container have some mechanism for storing&#010;+       configuration and assembly externally to the class. Cross referenced against the xinfo files, Loom's assembly.xml&#010;+       defines the implementations to be used for component types. Thus all Avalon components must be&#010;+       interface/implementation separated. Another Avalon using server technology is &lt;a href="http://www.keelframework.org/"&gt;Keel&lt;/a&gt;. &lt;/p&gt;&#010;+    &lt;p&gt;It has to be said that all post-Avalon projects are not as active as they could be.&lt;/p&gt;&#010;+    &lt;div&gt;&#010;+      &lt;h3&gt;Using &lt;em&gt;Contextualized Dependency Lookup&lt;/em&gt; Components&#010;+          Without a Container.&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;The downside of the this design is that components can only be used without the container with great&#010;+           difficulty. If at all. Thus a proper container is needed at all times, and you have to choose one for&#010;+           different purposes. If you do manage to instantiate components without a container, you might miss one of the&#010;+           essential service dependencies. The component-using class will continue to compile, but at run time it will&#010;+           be apparent that there are missing dependencies. Because of the these complexities, unit testing with frameworks like &lt;a href="http://www.junit.org/index.htm"&gt;JUnit&lt;/a&gt;  is very difficult for of Avalon components. &lt;/p&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+        &lt;/div&gt;&#010;+      &lt;/div&gt;&#010;+      &lt;div&gt;&#010;+        &lt;h2&gt;Sun specified nearly-IoC Containers &amp;amp; Component designs&lt;/h2&gt;&#010;+        &lt;p&gt;Sun have specified several container/component designs over the years.&lt;/p&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;Enterprise Java Beans&lt;/h3&gt;&#010;+          &lt;p&gt;Clearly Entity and Session beans run inside a container. The API is well defined, and to varying degrees of success one can deploy EJB appllications to WebLogic, WebSphere, Orion and JBoss etc. For assembly and configuration, there is high use of element-normal XML . There are some mandated parent objects and interfaces for various to extend and/or implement. Resolution is done by the components themselves via JNDI more often than not.&lt;/p&gt;&#010;+          &lt;p&gt;Apache Composer Components are simpler in they they do not force an extensive XML markup, nor require the implementing of certaing interfaces or extening base classes. Quite importantly the relationship between factory (home), implementation (bean) and interface (remote) parts is much more real in Apache Composer-style components. EJB 2.0 components are nearly impossible to unit-test without much effort.&lt;/p&gt;&#010;+          &lt;p&gt;With the advent of EJB 3.0 (which the our team directly influenced), things became easier for EJB developers. Annotations were used to mark fields, and methods for injection. Strangely constructors were not eligible for injection. It was reported back to the our team that it was felt that the J2EE container makers would not find it easy making multi-argument constructor injection a reality.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;Servlets&lt;/h3&gt;&#010;+          &lt;p&gt;Not so obvious - Servlets are contained by a servlet container. They are generally bundled with (or replaced by) value added propositions like JSP, but it is still a container/component design. High use of XML for assembly and configuration. Servlets have no concept of parent container or the conatainer above that (sometimes EJB) and its provision of components, which is very unfortunate. Servlets have a number of interfaces to honor, none of which is too malignent. Servlets typically deal with external (or parent) components via RMI or JNDI. In more recent releases of EJB, local interfaces rather than RMI may be the mechanism for connection the parent components. WebLogic have always provided an optimizing mechanism for this interoperation&lt;/p&gt;&#010;+          &lt;p&gt;As with EJB, Apache Composer Components are far simpler. This is probably because they offer no web experience, without an extension. Servlets again are not that unit-testable.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;&lt;/a&gt;Applets&lt;/h3&gt;&#010;+          &lt;p&gt;Applets, though presently not so often used, are a good example of Container/Component separations. There is very little XML in use by Applets. Configuration is typically delivered in applet tags in HTML. Applets are granted some access to the parent container, the brower, and its DOM model for pages and other applets. There very little standardisation for Browser as a container.&lt;/p&gt;&#010;+          &lt;p&gt;As with EJB, Apache Composer Components are far simpler. Applets are unit-testable but with a little effort. Complex DOM interoperation is impossible under unit testing.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;Mainable (Not actually a container)&lt;/h3&gt;&#010;+          &lt;div class="source"&gt;&#010;+            &lt;div&gt;&#010;+              &lt;pre&gt;public static void main(String[] args) {}&lt;/pre&gt;&#010;+            &lt;/div&gt;&#010;+          &lt;/div&gt;&#010;+          &#010;+&#010;+          &lt;p&gt;Familiar? Hopefully not &lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0" /&gt;Static plays no part in a good IoC container/component design. This includes static launching of Java Webstart (JNLP) applications. If you have to keep mainable functionaility separate your components away from the main() class so they may be instntiated separately. In .NET you'll have to make sure that the application assembly is a small bootstrap to a component one.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;JNDI (Java API)&lt;/h3&gt;&#010;+          &lt;p&gt;A huge map of clunkily access components via a very non-IoC mechanism. It has to be strapped with much XML to prevent inappropriate access. This is not IoC because the component reaches out for external component dependancies whenever it feels like. This last fact clouds Serlvets and EJB use.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;AWT, Swing, SWT (Java graphic toolkits)&lt;/h3&gt;&#010;+          &lt;p&gt;Nice container/component designs. In the case of Swing, perhaps a little difficult for coders to easily assemble applications.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+        &lt;div&gt;&#010;+          &lt;h3&gt;Eclipse (Java graphical application platform)&lt;/h3&gt;&#010;+          &lt;p&gt;The &lt;a href="http://eclipse.org"&gt;Eclipse&lt;/a&gt; platform is very compelling. It supports the notion of a pluggable application concept. Each component statically accesses other components via a factory (which at least Paul does not like), though it is clear that some complex classloader magic is going on. The underpinning set of graphical components, SWT , are a simple and elegant design.&lt;/p&gt;&#010;+        &lt;/div&gt;&#010;+      &lt;/div&gt;&#010;+    &lt;/div&gt;&#010;+&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/component-configuration.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/component-configuration.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/component-configuration.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/component-configuration.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,100 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Component Configuration&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;div&gt;&#010;+&lt;h2&gt;Choices&lt;/h2&gt;&#010;+&lt;p&gt;In true IoC style,  configuration for a component is pushed into it. &lt;/p&gt;&#010;+&lt;p&gt;With Apache Composer,  there are a few ways to do this:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Design a class to hold the configuration and have getters on it to allow depending components to access configuration.&lt;/li&gt;&#010;+  &lt;li&gt;Manually set the configuration for components as you add them to a container&lt;/li&gt;&#010;+  &lt;li&gt;Leverage the fact that Apache Composer can pick up on named components &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;h3&gt;Configuration Object&lt;/h3&gt;&#010;+&lt;div class="source"&gt;&#010;+    &lt;pre&gt;public interface BigFatComponentConfig {&#010;+  String getSpellingWebServiceURL();&#010;+  String getTimeout();&#010;+}&#010;+public class BigFatComponent {&#010;+  URL spellWebService;&#010;+  String timeout;&#010;+  public BigFatComponent(BigFatComponentConfig config) {&#010;+    this.spellWebService = new URL(config.getSpellingWebServiceURL());&#010;+    this.timeout = config.getTimeout();&#010;+  }  &#010;+  // other methods&#010;+}&#010;+...&#010;+pico.addComponent(BigFatComponent.class)&#010;+pico.addComponent(new BigFatComponentConfigBean(&amp;quot;http://foo.com/foo.wsdl&amp;quot;, 120))&lt;/pre&gt;&#010;+  &lt;/div&gt;&#010;+  &lt;h3&gt;Setting config as part of addComponent(..) &lt;/h3&gt;&#010;+  &lt;div class="source"&gt;&#010;+      &lt;pre&gt;public class BigFatComponent {&#010;+  URL spellWebService;&#010;+  int timeout;&#010;+  public BigFatComponent(String spellingWebServiceURL, int timeout) {&#010;+    this.spellWebService = new URL(spellingWebServiceURL);&#010;+    this.timeout = timeout;&#010;+  }  &#010;+  // other methods&#010;+}&#010;+&#010;+&#010;+...&#010;+pico.addComponent(BigFatComponent.class, new ConstantParameter(&amp;quot;http://foo.com/foo.wsdl&amp;quot;), new ConstantParameter(120));&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+  &lt;h3&gt;Configuration using parameter names &lt;/h3&gt;&#010;+  &lt;p&gt;Consider this component ...&lt;/p&gt;&#010;+  &lt;div class="source"&gt;&#010;+    &lt;pre&gt;public class BigFatComponent {&#010;+  URL spellWebService;&#010;+  int timeout;&#010;+  public BigFatComponent(String spellingWebServiceURL, int timeout) throws MalformedURLExeption {&#010;+    this.spellWebService = new URL(spellingWebServiceURL);&#010;+    this.timeout = timeout;&#010;+  }  &#010;+  public String toString() {&#010;+    return &amp;quot;URL=&amp;quot; + spellWebService + &amp;quot;, timeout=&amp;quot; + timeout;  &#010;+  }&#010;+&#010;+  // other methods&#010;+}&#010;+&#010;+&lt;/pre&gt;&#010;+  &lt;/div&gt;&#010;+  &lt;p&gt;And this composition ...&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+        &lt;pre&gt;&#010;+pico.addConfig(&amp;quot;spellingWebServiceURL&amp;quot;, &amp;quot;http://foo.com/spelling.wsdl&amp;quot;); // matches constructor parameter name&#010;+pico.addConfig(&amp;quot;somethingOtherURL&amp;quot;, &amp;quot;http://bar.com/other.wsdl&amp;quot;);&#010;+pico.addConfig(&amp;quot;timeout&amp;quot;, 120); // matches constructor parameter name&#010;+pico.addConfig(&amp;quot;timeout2&amp;quot;, 456);&#010;+pico.as(Characteristics.USE_NAMES).addComponent(BigFatComponent.class);&#010;+&#010;+BigFatComponent bfc = pico.getComponent(BigFatComponent.class);&#010;+System.out.println(&amp;quot;bfc: &amp;quot; + bfc.toString());&#010;+// Prints .. &amp;quot;bfg: URL=http://foo.com/spelling.wsdl, timeout=120&amp;quot;&lt;/pre&gt;&#010;+  &lt;/div&gt;&#010;+  &lt;p&gt;This feature of Apache Composer relies on the a non-JDK mechanism of &lt;strong&gt;accessing parameter names for methods and constructors&lt;/strong&gt;. In this case named parameters spellingWebServiceURL and timeout.&lt;/p&gt;&#010;+  &lt;p&gt;There are two ways for this to work: &lt;/p&gt;&#010;+  &lt;ul&gt;&#010;+    &lt;li&gt;relying on the fact that  your component classes have debug info compiled into them. &lt;/li&gt;&#010;+    &lt;li&gt;post-processing component classes with &lt;a href="http://paranamer.codehaus.org/"&gt;Paranamer&lt;/a&gt; before placing them in their jar &lt;/li&gt;&#010;+  &lt;/ul&gt;&#010;+  &lt;p&gt;If the parameter name information cannot be accessed at runtime by Apache Composer, then Apache Composer will be unable to differentiate between potential injectable classes of the same type and throws an exception that suggests that there is an ambiguity.&lt;/p&gt;&#010;+  &lt;p&gt;This is &lt;strong&gt;not&lt;/strong&gt; a global variable facility. Its scoped with the container in question and its child containers.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h2&gt;Taking configuration from the elsewhere&lt;/h2&gt;&#010;+&lt;p&gt;Configuration can also be bound to components with :&lt;/p&gt;&#010;+&lt;blockquote&gt;&#010;+  &lt;p&gt;&lt;a href="CommandLineArgumentsApache Composer.html"&gt;CommandLineArgumentsApache Composer&lt;/a&gt;&lt;/p&gt;&#010;+  &lt;p&gt;&lt;a href="PropertiesApache Composer.html"&gt;PropertiesApache Composer&lt;/a&gt;&lt;/p&gt;&#010;+  &lt;p&gt;&lt;a href="SystemPropertiesApache Composer.html"&gt;SystemPropertiesApache Composer&lt;/a&gt;&lt;/p&gt;&#010;+&lt;/blockquote&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/constructor-injection.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,70 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;&lt;head&gt;&#010;+    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;&#010;+    &lt;title&gt;Constructor Injection&lt;/title&gt;&lt;/head&gt;&#010;+&#010;+&#010;+&lt;body&gt;&#010;+&lt;h2&gt;Overview&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Constructor Injection is a &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt; variant&#010;+   where an object gets all its dependencies via the constructor.&#010;+&lt;/p&gt;&#010;+&#010;+&lt;p&gt;The most important benefits of Constructor Injection are:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt;It makes a strong dependency contract&lt;/li&gt;&#010;+    &lt;li&gt;It makes testing easy, since dependencies can be passed in as &lt;a href="mock-objects.html" title="Mock Objects"&gt;Mock Objects&lt;/a&gt;&lt;/li&gt;&#010;+    &lt;li&gt;It's very succinct in terms of lines of code&lt;/li&gt;&#010;+    &lt;li&gt;Classes that rely on Constructor Injection are generally &lt;a href="patterns.html" title="Good Citizen"&gt;Good&#010;+                                                                                                              Citizen&lt;/a&gt;s&#010;+    &lt;/li&gt;&#010;+    &lt;li&gt;A dependency may be made immutable by making the dependency reference &lt;em&gt;final&lt;/em&gt;&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;&lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/information.gif" alt="" align="middle" border="0" height="16" width="16" /&gt; Martin Fowler explains &lt;a href="http://www.martinfowler.com/articles/injection.html#ConstructorInjectionWithPicocontainer"&gt;Constructor&#010;+                                                                                                     Injection&lt;/a&gt;&#010;+                                                          in more detail.&lt;br /&gt;&#010;+    &lt;br /&gt;&#010;+    &lt;img class="emoticon" src="http://docs.codehaus.org/images/icons/emoticons/information.gif" alt="" align="middle" border="0" height="16" width="16" /&gt; Apache Composer also supports &lt;a href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt;.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Origin&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;&lt;a href="http://www.twelve71.com/rachel/"&gt;Rachel Davies&lt;/a&gt;, while reviewing Joe's forthcoming book,&#010;+left a Fermat-like margin note when looking at a coe sample that used&#010;+Setter Injection: "Why not use constructors ?". Brilliant and simple.&#010;+&amp;nbsp;Using constructors per se, is an ordinary OO feature, but having&#010;+a container that works out what to inject where amongst a list of&#010;+constructor arguments is something that is useful too.&#010;+&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Example&lt;/h2&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+            &lt;pre&gt;public class Shop {&lt;br /&gt;    private final StockManager stockManager;&lt;br /&gt;    private final String shopZipCode;&lt;br /&gt;    public Shop(StockManager stockManager, String shopZipCode) {&lt;br /&gt;        this.stockManager = stockManager;&lt;br /&gt;        this.shopZipCode = shopZipCode;&lt;br /&gt;    }&lt;br /&gt; }&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Note, for this there is no need to declare needs in any other way. No interfaces, no doclet tags, no external&#010;+   XML. Just your simple component(s) and Apache Composer. No need for post assembly/config initialization either. If&#010;+   it is constructed (not withstanding some asserts on nulls) it has its needs satisfied. Components need not be&#010;+   interface/implementation separated. This is the coder's choice.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;&lt;a name="ConstructorInjection-UsingConstructorInjectorComponentsWithoutaContainer." id="ConstructorInjection-UsingConstructorInjectorComponentsWithoutaContainer."&gt;&lt;/a&gt;Using Constructor&#010;+                                                                                          Injector Components&#010;+                                                                                          Without a Container.&#010;+&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;The component can be used directly, without any container. The missing dependency scenario is not an issue&#010;+   since it is impossible to instantiate an object without all dependencies being satisfied.&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+        &lt;pre&gt;Shop shop = new Shop(myStockManager);&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&lt;h2&gt;Container support&#010;+&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Apache Composer was the first lightweight container to support and popularize this for of dependency injection.&#010;+   Spring Framework has been retrofitted with constructor injection capability, but its primary focus is still&#010;+   setter injection. Even the once heavyweight technologies like Avalon and OSGi moved towards&amp;nbsp;constructor&#010;+   injection.&lt;/p&gt;&#010;+&lt;/body&gt;&lt;/html&gt;&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/disambiguation.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/disambiguation.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/disambiguation.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/disambiguation.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,61 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;&lt;head&gt;&#010;+&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;&lt;title&gt;Disambiguation&lt;/title&gt;&#010;+&#010;+&lt;/head&gt;&#010;+&#010;+&#010;+&lt;body&gt;&#010;+&lt;h2&gt;Overview&lt;/h2&gt;&#010;+You may have a component that has a dependency on something that the&#010;+container could ordinarily satisfy more than one. &amp;nbsp;By default,&#010;+when Apache Composer is presented with such a situation, it will throw an&#010;+exception suggesting the depency resolution is ambiguous.&#010;+&lt;h2&gt;Disambiguation using parameter names&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/h2&gt;&#010;+With Apache Composer 2.0 we are able to leverage the parameter names of&#010;+constructors and methods in order to remove the ambiguity on&#010;+dependancies.&lt;br /&gt;&#010;+&lt;div class="source"&gt;&#010;+&lt;pre&gt;public class Store {&lt;br /&gt; public Store(StockManager workingDayStockManager, StockManager afterHoursStockManager) {&lt;br /&gt; // etc&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+If Store is added to the container appropriately, then its parameter&#010;+names &lt;span style="font-family: monospace;"&gt;'&lt;/span&gt;workingHoursStockManager'&#010;+and 'afterHoursStockManager&#010;+' can be used in conjunction with similarly named components inject the&#010;+right dependency in the right way:&lt;br /&gt;&#010;+&lt;div class="source"&gt;&#010;+&lt;pre&gt;pico.as(Characteristics.USE_NAMES).addComponent(Store.class);&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&#010;+Access to parameter names was dropped from JDK 6.0 and it is uncertain&#010;+whether it will be added as a feature in another release, so&#010;+Apache Composer relies on another open source library called &lt;a href="http://paranamer.codehaus.org"&gt;Paranamer&lt;/a&gt;,&#010;+without requiring a dependency on its Jar. &amp;nbsp;In other words,&#010;+Apache Composer has the same classes from Paranamer in its jar.&lt;br /&gt;&#010;+&lt;br /&gt;&#010;+See &lt;a href="CommandLineArgumentsApache Composer.html"&gt;CommandLineArgumentsApache Composer&lt;/a&gt;,&#010;+&lt;a href="PropertiesApache Composer.html"&gt;PropertiesApache Composer&lt;/a&gt;&#010;+and &lt;a href="SystemPropertiesApache Composer.html"&gt;SystemPropertiesApache Composer&lt;/a&gt;&#010;+for implementations of Apache Composer that set up components for&#010;+subsequent parameter name binding.&lt;br /&gt;&#010;+&lt;br /&gt;&#010;+Page &lt;a href="component-configuration.html"&gt;component-configuration&lt;/a&gt;&#010;+also shows parameter names being used for binding as does &lt;a href="injection.html"&gt;injection.&lt;/a&gt;&lt;br /&gt;&#010;+&lt;br /&gt;&#010;+Usage of parameter names is available for all types of&#010;+Dependency-Injection where parameter names are present.&lt;br /&gt;&#010;+&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&#010;+&lt;h3&gt;Disambiguation using Binding Annotations&#010;+&lt;/h3&gt;&#010;+&lt;p&gt;This worls the same as Guice. &amp;nbsp;Namely you make an&#010;+annotation that extends our 'Bind' annotation and mark it in your&amp;nbsp;constructor or method's signature like so.&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+&lt;div&gt;&#010;+&lt;pre&gt;@Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;@Target({ElementType.FIELD, ElementType.PARAMETER})&lt;br /&gt;@Bind&lt;br /&gt;public static @interface WorkingDayStockManager {}&lt;br /&gt;&lt;br /&gt;@Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;@Target({ElementType.FIELD, ElementType.PARAMETER})&lt;br /&gt;@Bind&lt;br /&gt;public static @interface AfterHoursStockManager {}&lt;br /&gt;&lt;br /&gt;public class Store {&lt;br /&gt; public Store(@WorkingDayStockManager StockManager workingDayStockManager, &lt;br /&gt; @AfterHoursStockManager StockManager afterHoursStockManager) {&lt;br /&gt; // etc&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;/div&gt;&#010;+Making Apache Composer leverage binding annotations if present is&#010;+automatic.&lt;br /&gt;&lt;br /&gt;Biniding&#010;+annotations specified for constructor parameters (as shown above),&#010;+method injection parameters as well as field injection.&lt;br /&gt;&#010;+&lt;/body&gt;&lt;/html&gt;&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/downloads.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/downloads.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/downloads.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/downloads.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,15 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html&gt;&lt;head&gt;&#010;+&lt;title&gt;Downloads&lt;/title&gt;&lt;/head&gt;&#010;+&#010;+&lt;body&gt;&#010;+&lt;h2&gt;Released Jars (1.3 and 2.0) &lt;/h2&gt;&#010;+&lt;p&gt;Core  : &lt;a href="http://repository.codehaus.org/org/picocontainer/picocontainer/"&gt;http://repository.codehaus.org/org/picocontainer/picocontainer/&lt;/a&gt;&lt;/p&gt;&#010;+&lt;p&gt;Gems  : &lt;a href="http://repository.codehaus.org/org/picocontainer/picocontainer-gems/"&gt;http://repository.codehaus.org/org/picocontainer/picocontainer-gems/&lt;/a&gt;&lt;/p&gt;&#010;+&lt;h2&gt;Snapshot Jars (2.1) &lt;/h2&gt;&#010;+&lt;p&gt;Core : &lt;a href="http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer/"&gt;http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer/&lt;/a&gt;&lt;/p&gt;&#010;+&lt;p&gt;Gems : &lt;a href="http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer-gems/"&gt;http://snapshots.repository.codehaus.org/org/picocontainer/picocontainer-gems/&lt;/a&gt;&lt;/p&gt;&#010;+&lt;hr /&gt;&#010;+&lt;p&gt;Currently, the Core jar is ~190K, and the Gems jar is ~89K. &lt;/p&gt;&#010;+&#010;+&lt;/body&gt;&lt;/html&gt;&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/faq.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/faq.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/faq.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/faq.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,234 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;FAQ&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;h3 class="headerstyle"&gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;Why Apache Composer 2.0?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;First EJB 3.0 then Google Guice seemed to copy the ideas from Apache Composer, adding some more value. EJB 3.0 ommitted the essential Constructor Injection, and Guice went far to far down a annotations road. Soon after Guice, even the Spring Framework team decided to do things the direct way with 'JavaConfig'.&lt;/p&gt;&#010;+  &lt;p&gt;So Apache Composer 1.x was refactored (not rewritten) into Apache Composer 2.0. All the unit tests were kept, and excerise took hundreds of commits, but the team is pleased with the result.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle"&gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;Can my component use multiple constructors?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;Yes.&lt;/p&gt;&#010;+  &lt;p&gt;You can code multiple constructors for a component:&lt;/p&gt;&#010;+  &lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+      &lt;pre&gt;class MyComp {&#010;+&#010;+  private ThreadPool theThreadPool;&#010;+  &#010;+  public MyComp(ThreadPool threadpool) {&#010;+    theThreadPool = threadpool;&#010;+  }&#010;+&#010;+  public MyComp() {&#010;+    theThreadPool = new DefaultThreadPool();&#010;+  }&#010;+&#010;+  // other methods.&#010;+&#010;+&#010;+}&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+  &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle"&gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;How does Apache Composer decide what constructor to use?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;Apache Composer will instantiate a given component using the &amp;quot;greediest&amp;quot; satisfiable constructor. By greedy, we mean the constructor that takes the most parameters. By satisfiable, we mean constructors where all arguments can be satisfied by other registered components.&lt;/p&gt;&#010;+  &lt;p&gt;If you register a component with no satisfiable constructors, or two or more ambiguous &amp;quot;largest&amp;quot; constructors, a RuntimeException will be thrown when you ask for the component instance.&lt;/p&gt;&#010;+  &lt;p&gt;We recommend for most components, you use only one constructor, although this is by no means a requirement.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle"&gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;How does Apache Composer compare to EJB containers?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;Oh blimey, it is rather different. EJB has loads of things you must extend, implement, provide and throw. It is also not an IoC design. It is close in that components are managed by a container, but the cumbersome and static nature of the JNDI lookups ensure that it is not actually IoC. Apache Composer is not a superset of EJB though, as it provides no remoting capability (but NanoContainer will). At least the Apache Composer compatible components hosted in this project do not.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle" &gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;How does Apache Composer decide what constructor to use?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;Apache Composer will instantiate a given component using the &amp;quot;greediest&amp;quot; satisfiable constructor. By greedy, we mean the constructor that takes the most parameters. By satisfiable, we mean constructors where all arguments can be satisfied by other registered components.&lt;/p&gt;&#010;+  &lt;p&gt;If you register a component with no satisfiable constructors, or two or more ambiguous &amp;quot;largest&amp;quot; constructors, a RuntimeException will be thrown when you ask for the component instance.&lt;/p&gt;&#010;+  &lt;p&gt;We recommend, for the sake of predictablility, that Apache Composer compatible components use only one constructor, although this is by no means a requirement.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle" &gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;How to use primitive types in constructors?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;Apache Composer will look for the greediest constructor of your component. But if your component's constructor depends on primitive types you may set the values explicitly.&lt;/p&gt;&#010;+  &lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+      &lt;pre&gt;public interface ThreadPool {&#010;+&#009;void setSize(int);&#010;+}&#010;+&#010;+public class MyComp {&#010;+&#009;private ThreadPool threadPool;&#010;+&#009;public MyComp(ThreadPool pool, int size) {&#010;+&#009;&#009;threadPool = pool;&#010;+&#009;&#009;threadPool.setSize(size);&#010;+&#009;}&#010;+}&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+  &lt;/div&gt;&#010;+  &lt;p&gt;In this case you can set the parameters at registration time:&lt;/p&gt;&#010;+  &lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+      &lt;pre&gt;DefaultApache Composer pico = new DefaultApache Composer();&#010;+pico.addComponent(ThreadPool.class, DefaultThreadPool.class);&#010;+pico.addComponent(MyComp.class, MyComp.class, new Parameters[] {&#010;+&#009;new ComponentParameter(),&#010;+&#009;new ConstantParameter(new Integer(5));&#010;+})&#010;+MyComp myComp = (MyComp)pico.getInstance(MyComp.class);&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+  &lt;/div&gt;&#010;+  &lt;p&gt;Use ConstantParameter to set constant values and the ComponentParameter to let Apache Composer resolve the dependency.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle" &gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;When should I use Apache Composer?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;&lt;br /&gt;&#010;+    We recommend using Apache Composer when your application consists of many different classes (components) that are related to each other. Instantiating and lacing/connecting a lot of objects can be difficult task.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle" &gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;Why Another IoC Framework?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+&lt;p&gt;After a long period of watching Inversion of Control frameworks,&#010;+and for some of us avoiding them because of their cumbersome nature, we&#010;+got together to write what we believe is the simplest possible IoC&#010;+design. One, perhaps, that considers the so-designed component as more&#010;+important that the container.&lt;/p&gt;&#010;+&lt;p&gt;When we set out to do this in 2003, there was nothing equivalent&#010;+to Apache Composer (xContainer originally). XWork, that underpinned&#010;+WebWork2 was a general/embeddable Setter Dependency Injection framework,&#010;+but not well known. The Spring Framework started in the same timescale,&#010;+and we were talking to its authors before Martin Fowlers Dependency&#010;+Injection article. Later we discovered that HiveMind (now at Apache)&#010;+also was in the same space.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle" &gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;Why Constructor Injection?&lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;&lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt; is hard to swallow for people who have been living with Interface Lookup or &lt;a href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt; for long. We think it's like TDD. Once you get the grasp of it, you don't go back. Here are some benefits with this type of IoC:&lt;/p&gt;&#010;+  &lt;ul&gt;&#010;+    &lt;li&gt;Constructor Injection makes a stronger dependency contract&lt;/li&gt;&#010;+    &lt;li&gt;It's more succinct in terms of lines of code&lt;/li&gt;&#010;+    &lt;li&gt;It's more succinct in terms dependency-statement-mechanism i.e. no XML, attributes, enabler interfaces etc&lt;/li&gt;&#010;+    &lt;li&gt;A component is characterized by InterfaceImplSeparation with the interface being the service offered to other comps, and the impl declaring whatever goddarned need it likes and that need being wholly up to the implementor of the component and nothing to do with the service contract.&lt;/li&gt;&#010;+    &lt;li&gt;No indeterminate state. Not all the post instantiation setters may be called. Consider the non-container case for comp usage, if v1.2 of that comp introduces a new dependancy, with &lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt; the compiler will tell me.&lt;/li&gt;&#010;+  &lt;/ul&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3 class="headerstyle" &gt;&#010;+  &lt;table style="width: 100%; padding-right: 2mm"&gt;&#010;+    &lt;tr&gt;&#010;+      &lt;td align="left" valign="middle"&gt;Will we support Guice's @Inject annotation transparently? &lt;/td&gt;&#010;+    &lt;/tr&gt;&#010;+  &lt;/table&gt;&#010;+&lt;/h3&gt;&#010;+&lt;div&gt;&#010;+  &lt;p&gt;We could compile Apache Composer against Guice.jar and leverage the @Inject method with a new InjectionFactory (and probably will). The problem is that there is no easy way to use an annotation without having its class in the classpath. There's no easy 'transparent' solution for this. &lt;/p&gt;&#010;+  &lt;p&gt;Things  fail silently if the jar is missing, unless the annotation is used - then it fails noisily. Meaning, the mere declaration of an annotation on a component is not enough to cause a ClassNotFoundException on load, if its not used:&lt;/p&gt;&#010;+  &lt;div class="source"&gt;&lt;pre&gt;@Retention(RetentionPolicy.RUNTIME)&#010;+@Target(value={ElementType.METHOD})&#010;+public static @interface Bar {&#010;+}&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+import com.google.inject.Inject;&#010;+public class Foo {&#010;+&#010;+    @Inject&#010;+    @Bar&#010;+    public void setFoo(String str) {&#010;+        System.out.println("0&gt;" + str);&#010;+    }&#010;+&#010;+    public static void main(String[] args) throws NoSuchMethodException {&#010;+&#010;+        Foo foo = new Foo();&#010;+        foo.setFoo("hello");&#010;+&#010;+        Method m = Foo.class.getMethod("setFoo", String.class);&#010;+&#010;+        Annotation[] anns =  m.getDeclaredAnnotations();&#010;+        System.out.println("1&gt; " + anns.length);&#010;+        for (int i = 0; i &lt; anns.length; i++) {&#010;+            Annotation ann = anns[i];&#010;+            System.out.println("2&gt; " + ann.toString());&#010;+        }&#010;+&#010;+        Annotation ann =  m.getAnnotation(Inject.class);&#010;+        System.out.println("3&gt; " + ann);&#010;+    }&#010;+}&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;Leaving Guice out of the classpath, and trying to launch Foo...&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;commandline: java -cp classes Foo&#010;+0&gt;hellos&#010;+1&gt; 1&#010;+2&gt; @Foo$Bar()&#010;+Exception in thread "main" java.lang.NoClassDefFoundError: org/picocontainer/annotations/Inject&#010;+        at Foo.main(Foo.java:32)&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+  &lt;p&gt;The class loads, but the @Inject annotation is not present in the set of declared annotations, but another in the classpath is.  Lastly when accessed explicitly, there is an exception thrown.  Contrast to, the same run with Guice in the classpath:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;0&gt;hello&#010;+1&gt; 2&#010;+2&gt; @org.picocontainer.annotations.Inject()&#010;+2&gt; @Foo$Bar()&#010;+3&gt; @org.picocontainer.annotations.Inject()&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&#010;+&lt;/div&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/fluent-style.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/fluent-style.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/fluent-style.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/fluent-style.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,42 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Fluent Stype&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Apache Composer allows for a very fluent style of use. Refer to Martin's &lt;a&#010;+  href="http://www.martinfowler.com/bliki/FluentInterface.html"&gt;'Fluent&#010;+Interface'&lt;/a&gt; article.&lt;/p&gt;&#010;+&lt;p&gt;A simple example :&lt;/p&gt;&#010;+    &lt;div class="source"&gt;&#010;+      &lt;pre&gt;&#010;+pico = new DefaultApache Composer();&#010;+pico.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class)&#010;+    .addComponent(Banana.class)&#010;+    .addComponent(Grape.class, Grenache.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;One with per component properties:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+pico = new DefaultApache Composer();&#010;+pico.addComponent(Apple.class)&#010;+    .as(CACHE).addComponent(Orange.class)&#010;+    .as(CACHE, HIDE_IMPLEMENTATION).addComponent(Pear.class)&#010;+    .as(SYNCHRONIZE, CACHE).addComponent(Banana.class)&#010;+    .addComponent(Grape.class, Grenache.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;One with properties that are persistently set, half way through.&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer();&#010;+pico.addComponent(&amp;quot;Coxs&amp;quot;, CoxsApple.class)&#010;+    .addComponent(&amp;quot;Golden&amp;quot;, GoldenDeliciousApple.class)&#010;+    .addComponent(new ValenciaOrange())&#010;+    .change(SYNCHRONIZE, CACHE, HIDE_IMPLEMENTATION)&#010;+    .addComponent(Pear.class)&#010;+    .addComponent(Banana.class)&#010;+    .addComponent(Grape.class, Grenache.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/goals.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/goals.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/goals.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/goals.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,26 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Our Goals&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Apache Composer's core was designed with some goals in mind:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;No mandatory dependencies.&lt;/li&gt;&#010;+  &lt;li&gt;No logging built in (we have a Monitor interface and implementations for Commons-Logging and Log4J etc)&lt;/li&gt;&#010;+  &lt;li&gt;No meta-data requirement.&lt;/li&gt;&#010;+  &lt;li&gt;Small jar size.&lt;/li&gt;&#010;+  &lt;li&gt;Embeddable by design (no main method entry point)&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;If someone has a need for Apache Composer that we did not originally envision, or a feature that could be imlemented, we will try to accomodate it. The principle of Lowest Common Denominator (LCD) allows us for Apache Composer itself, to keep things small, while allowing extensions to deliver the larger visions. Thus, meta-data, dependancies, mainable are all OK for related extensions of Apache Composer.&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp; &lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/help/ambiguous-injectable-help.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,48 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+    &lt;title&gt;Ambiguous Injectable&lt;/title&gt;&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Apache Composer tries to determine what to inject into the constructor of each component as it instantiates (or setters/fields for other injection types). Sometimes there can be two or more classes that could equally satisfy a constructor: &lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico.add(new Apple(&amp;quot;Braeburn&amp;quot;));&#010;+pico.add(new Apple(&amp;quot;Granny Smith&amp;quot;));&#010;+pico.add(Pie.class); // needs Apple&#010;+Pie pie = pico.getComponent(Pie.class); // throws AmbiguousComponentResolutionException citing there are two Apples.&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;The best advice is don't setup Apache Composer in a way that would allow ambiguities  (just put in one Apple in the case above).&lt;/p&gt;&#010;+&lt;p&gt;An alternative strategy would be to use custom parameters (TODO)&lt;/p&gt;&#010;+&lt;p&gt;One more strategy would be to use names parameters &lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;class Pie {&#010;+  Pie(Apple grannySmith) {&#010;+    // etc &#010;+&#010;+  }&#010;+&#010;+}&#010;+&#010;+...&#010;+&#010;+&#010;+pico.add(&amp;quot;braeburn&amp;quot;, new Apple(&amp;quot;Braeburn&amp;quot;));&#010;+pico.add(&amp;quot;grannySmith&amp;quot;, new Apple(&amp;quot;Granny Smith&amp;quot;));&#010;+pico.add(Pie.class); // needs Apple, specifically a Granny Smith.&#010;+Pie pie = pico.getComponent(Pie.class); // OK this time.&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;To use names Parameters, you are going to need Paranamer 1.0 (or above) in the classpath, as well as ASM 3.0 (or above). If you are expecting Apache Composer to work based on parameter names, but its not doing so, it is most likely that you do not have paranamer-1.0.jar in the classpath. See &lt;a href="http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/"&gt;http://repository.codehaus.org/com/thoughtworks/paranamer/paranamer/&lt;/a&gt; for versions of paranamer. Also &lt;a href="http://maven.objectweb.org/maven2/asm/asm/"&gt;http://maven.objectweb.org/maven2/asm/asm/&lt;/a&gt; for the ASM jar.&lt;/p&gt;&#010;+&lt;p&gt;You also have to make a decision as to when parameter name data is made. There are two choices for this:&lt;/p&gt;&#010;+&lt;ol&gt;&#010;+  &lt;li&gt;At runtime&lt;/li&gt;&#010;+  &lt;li&gt;At build time   &lt;/li&gt;&#010;+&lt;/ol&gt;&#010;+&lt;p&gt;When at runtime, Apache Composer will need to be accompanied by ASM and Paranamer in the classpath. You will also need to compile your Java classes with debug information.&lt;/p&gt;&#010;+&lt;p&gt;When at build time, you will need to use and Ant or Maven fragment to post-process the compiled classes for your app to add the paramaeter name data. At runtime, neither Paranamer nor ASM will be needed. See &lt;a href="http://paranamer.codehaus.org/"&gt;http://paranamer.codehaus.org/&lt;/a&gt; - specifically the quick start section pertinent to Ant and Maven. &lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp; &lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/help/unprocessed-properties-help.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,26 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+    &lt;title&gt;Unprocessed Properties&lt;/title&gt;&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Properties are a powerful mechanism to add hints at registration time as to what the behavior of a component should be. It only works though when the right component factories are set for the container. Ones that recognise the property and can process it. For example, DefaultConstructor's default constructor sets up an adaptive ComponentFactory that can handle HIDE_IMPL: &lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer();&#010;+pico.as(HIDE_IMPL).addComponent(Apple.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+But with a custom ComponentFactory, it may not:&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new MyComponentFactory);&#010;+pico.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+The trick is (in this case) to make sure that the right chain of component factories are setup:&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new MyComponentFactory().wrap(new AdaptiveBehaviorFactory()));&#010;+pico.as(HIDE_IMPL).addComponent(Apple.class); // fails with CompositionException&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;A component may have many properties as it is added to the container.  As each is processed, it is removed from the set.  If there are any left after the component has been added the behavior or action that the property suggests has not been setup.  Thus a CompositionException being thrown warning of unprocessed properties only happens one or more properties are left - whether they are Apache Composer's own properties or custom ones&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/index.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/index.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/index.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/index.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,52 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Overview&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&#010;+&lt;body&gt;&#010;+&#010;+&lt;h2&gt;What is Apache Composer?&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Apache Composer is a  highly embeddable full service Inversion of Control (IoC) container&#010;+for components honour the Dependency Injection pattern.&lt;/p&gt;&#010;+&lt;p&gt;You could use it as a lightweight alternative to Sun's J2EE patterns for web applications or general solutions. &lt;/p&gt;&#010;+&lt;p&gt;What is Dependency Injection? Martin Fowler has a good &lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;article&lt;/a&gt; from 2003, but here is another view: It is a good design pattern that, for large enterprise applications, facilitates: &lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;easy best practice  unit testing vs little and difficult unit testing. &lt;/li&gt;&#010;+  &lt;li&gt;component reuse vs  rewriting through ignorance or need &lt;/li&gt;&#010;+  &lt;li&gt;centralized configuration vs components reading their own config (scattered) &lt;/li&gt;&#010;+  &lt;li&gt;clean &amp;amp; declarative architecture vs nest of singletons that nobody can make sense of &lt;/li&gt;&#010;+  &lt;li&gt;maintainability vs developers having difficulties fixing bugs &lt;/li&gt;&#010;+  &lt;li&gt;adaptability vs developers not knowing where to start to add features&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;Dependency Injection is&#010;+  quite often, but not exclusively, used by Agile practicioners. It&#010;+  counters the situation where the enterprise application:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;has grown to be thousands of classes, with dozens if not&#010;+  hundreds of Singletons&lt;/li&gt;&#010;+  &lt;li&gt;draws similarities to Spaghetti, Hairballs or &lt;a href="http://www.laputan.org/mud/"&gt;Balls of Mud&lt;/a&gt;&lt;/li&gt;&#010;+  &lt;li&gt;has made development staff looking after it miserable&lt;/li&gt;&#010;+  &lt;li&gt;suffers repeated allegations of being unable to be developed without complete rewrite &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;Despite it being very compact in size (the core is ~128K and it&#010;+has no mandatory dependencies outside the JDK), Apache Composer supports different dependency injection types (Constructor, Setter, Annotated Field and Method) and offers multiple lifecycle and monitoring strategies.&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer has originally been implemented in Java but is also&#010;+available for other platforms and languages. These are detailed &lt;a href="http://docs.codehaus.org/display/PICO/Ports"&gt;here&lt;/a&gt;.&lt;/p&gt;&#010;+&lt;div class="section"&gt;&#010;+&lt;h3&gt;Getting Started&lt;/h3&gt;&#010;+&lt;p&gt;Take a look at the &lt;a href="introduction.html"&gt;introduction&lt;/a&gt;. &lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="section"&gt;&#010;+&lt;h3&gt;Related projects&lt;/h3&gt;&#010;+&lt;p&gt;&lt;a href="http://www.nanocontainer.org"&gt;NanoContainer&lt;/a&gt; builds on top of Apache Composer the support for&#010;+several scripting meta-languages (XML, Groovy, Bsh, Jython and Rhyno),&#010;+AOP, Web frameworks (Struts and WebWork), Persistence (Hibernate) SOAP,&#010;+JMX, and much more.&lt;/p&gt;&#010;+&lt;/div&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/injection.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/injection.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/injection.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,132 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html&gt;&lt;head&gt;&#010;+&lt;title&gt;Dependency Injection&lt;/title&gt;&lt;/head&gt;&#010;+&#010;+&#010;+&lt;body&gt;&#010;+&lt;p&gt;See Martin Fowlers's &lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;Inversion of Control Containers and the Dependency Injection&lt;/a&gt;  article from 2003 for a thorough description. Surely everyone has read this by now? &lt;/p&gt;&#010;+&lt;h2&gt; Injection Types &lt;/h2&gt;&#010;+&lt;h3&gt;Constructor Dependency Injection (CDI) &lt;/h3&gt;&#010;+&lt;p&gt;This is where a component has a constructor, with arguments that are its dependencies:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;public class Apple {&lt;br /&gt;  private final Orange orange;&lt;br /&gt;  private final Pear pear;&lt;br /&gt;  private final Banana banana;&lt;br /&gt;&lt;br /&gt;  public Apple(Orange orange, Pear pear, Banana banana) {&lt;br /&gt;    this.orange = orange;&lt;br /&gt;    this.pear = pear;&lt;br /&gt;    this.banana = banana;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // methods&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;&#010;+The Apache Composer team recomends CDI over other types. There is no need&#010;+to mark up the constructor with an annotation. Having more than one&#010;+constructor is OK too, as Apache Composer will try to use the one with&#010;+the most arguments and fall back to ones with fewer if it cannot&#010;+satisfy the longer ones.&lt;/p&gt;&#010;+&lt;p&gt;The  component factory for this is &lt;strong&gt;ConstructorInjection&lt;/strong&gt;. It only handles constructor injection types of components.  Factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt;&#010;+defaults to constructor injection, after checking first to see it the&#010;+component in question is a Annotated Method or Field type (see below). &lt;/p&gt;&#010;+&lt;h3&gt;Setter Dependency Injection (SDI) &lt;/h3&gt;&#010;+&lt;p&gt;This is where a component has an empty constructor with dependencies provided by setters after instantiation:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;public class Apple {&lt;br /&gt;  private Orange orange;&lt;br /&gt;  private Pear pear;&lt;br /&gt;  private Banana banana;&lt;br /&gt;&lt;br /&gt;  public setOrange(Orange orange) {&lt;br /&gt;    this.orange = orange;&lt;br /&gt;  }&lt;br /&gt;  public setPear(Pear pear) {&lt;br /&gt;    this.pear = pear;&lt;br /&gt;  }&lt;br /&gt;  public setBanana(Banana banana) {&lt;br /&gt;    this.banana = banana;&lt;br /&gt;  }&lt;br /&gt;  // other methods&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+  &lt;p&gt;Setter methods (those prefixed with 'set') may not be your&#010;+preferred choice. You can force a different prefix to be choosable in&#010;+Apache Composer, such as 'init' or 'inject'.&lt;/p&gt;&#010;+  &lt;p&gt;The  component factory for this is &lt;strong&gt;SetterInjection&lt;/strong&gt;. It only handles setter injection types of components.&lt;/p&gt;&#010;+&lt;p&gt;Factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; can also handle setter injection types, though it requires that the component was registered with the &lt;a href="properties.html"&gt;property&lt;/a&gt; 'SDI' in order to activate the Setter Injection functionality. &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; will also fall through to constructor injection if there is no SDI property. &lt;/p&gt;&#010;+&lt;p&gt;If you want to use an prefix other than 'set', then specify your preferred prexix in the non-default constructor for &lt;strong&gt;SetterInjection&lt;/strong&gt;.&lt;/p&gt;&#010;+&lt;h3&gt;Annotated Field Dependency Injection &lt;/h3&gt;&#010;+&lt;p&gt;This is where a component has an empty constructor with dependencies&#010;+indicated by a field annotation and provided automatically by the&#010;+container after instantiation.&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;public class Apple {&lt;br /&gt;  @Inject&lt;br /&gt;  private Orange orange;&lt;br /&gt;  @Inject&lt;br /&gt;  private Pear pear;&lt;br /&gt;  @Inject&lt;br /&gt;  private Banana banana;&lt;br /&gt;&lt;br /&gt;  // methods&lt;br /&gt;}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;&#010;+Yes thats's right, there's no constructor needed. It means that for a&#010;+Unit Test, you cannot simply 'new' the class, which is a downside.&lt;/p&gt;&#010;+&lt;p&gt;The  component factory for this is a class&lt;strong&gt; AnnotatedFieldInjection&lt;/strong&gt;. It only handles field-annotation injection types of components.&lt;/p&gt;&#010;+&lt;p&gt;Additionally component factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt;&#010;+can also handle field annotation types, if the @Inject annotation from&#010;+Apache Composer's codebase is used as the marker for injection. &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; will also fall through to constructor injection if there is no recognised @Inject annotation.&lt;/p&gt;&#010;+&lt;p&gt;If you want to use an @Inject annotation from another codebase, then&#010;+specify the preferred annotation class in the constructor for &lt;strong&gt;AnnotatedFieldInjection&lt;/strong&gt;.&lt;/p&gt;&#010;+&lt;h3&gt;Annotated Method Dependency Injection &lt;/h3&gt;&#010;+&lt;p&gt;This is where a component has an empty constructor and gets its&#010;+dependencies injected into annotated methods after instantiation:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;public class Apple {&lt;br /&gt;  private Orange orange;&lt;br /&gt;  private Pear pear;&lt;br /&gt;  private Banana banana;&lt;br /&gt;&lt;br /&gt;  @Inject&lt;br /&gt;  public injectOrange(Orange orange) {&lt;br /&gt;    this.orange = orange;&lt;br /&gt;  }&lt;br /&gt;  @Inject&lt;br /&gt;  public setPear(Pear pear) {&lt;br /&gt;    this.pear = pear;&lt;br /&gt;  }&lt;br /&gt;  @Inject&lt;br /&gt;  public provideBanana(Banana banana) {&lt;br /&gt;    this.banana = banana;&lt;br /&gt;  }&lt;br /&gt;  // other methods&lt;br /&gt;}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;The method (whatever its name) needs an @Inject annotation.  That's from our codebase (org.picocontainer.Inject).&lt;/p&gt;&#010;+&lt;p&gt;The  component factory for this is &lt;strong&gt;AnnotatedMethodInjection&lt;/strong&gt;. It only handles method-annotation injection types of components.&lt;/p&gt;&#010;+&lt;p&gt;Additionally component factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt;&#010;+can also handle method-annotation injection types, if the @Inject&#010;+annotation from Apache Composer's codebase is used as the marker for&#010;+injection. AdaptiveInjection will also fall through to constructor&#010;+injection if there is no recognised annotation.&lt;/p&gt;&#010;+&lt;p&gt;If you want to use an @Inject annotation from another codebase, then&#010;+specify the preferred annotation class in the constructor for &lt;strong&gt;AnnotatedMethodInjection&lt;/strong&gt;.&lt;/p&gt;&#010;+&lt;h3&gt; Method Dependency Injection &lt;/h3&gt;&#010;+&lt;p&gt;This is where a component has an empty constructor and gets all its&#010;+dependencies injected into single method after instantiation:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;public class Apple {&lt;br /&gt;  private Orange orange;&lt;br /&gt;  private Pear pear;&lt;br /&gt;  private Banana banana;&lt;br /&gt;  public inject(Orange orange, Pear pear, Banana banana) {&lt;br /&gt;    this.orange = orange;&lt;br /&gt;    this.pear = pear;&lt;br /&gt;    this.banana = banana;&lt;br /&gt;  }&lt;br /&gt;  // other methods&lt;br /&gt;}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;The method name needs be 'inject' unless overridden in the InjectionFactory.&lt;/p&gt;&#010;+&lt;p&gt;The  component factory for this is &lt;strong&gt;MethodInjection&lt;/strong&gt;. It only handles method-injection types of components.&lt;/p&gt;&#010;+&lt;p&gt;Additionally component factory &lt;strong&gt;AdaptiveInjection&lt;/strong&gt; can also handle method-injection types, but only if the METHOD_INJECTION characteristic is specified.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Using Apache Composer with Injection Types&lt;/h2&gt;&#010;+&lt;p&gt;Explicit Constructor Injection:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new ConstructorInjection());&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Constructor Injection, is a default too (via AdaptiveInjection):&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Explicit Setter Injection:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new SetterInjection());&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Explicit Annotated Field injection:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedFieldInjection();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Explicit Annotated Field injection, with alternate Annotation:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedFieldInjection(MyInjectAnnotaton.class);&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Explicit Annotated Method injection:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedMethodInjection();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Explicit Annotated Method injection, with alternate Annotation:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new AnnotatedMethodInjection(MyInjectAnnotaton.class);&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Explicit  Method injection, implicit injection method prefix ('inject'):&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new MethodInjection();&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Explicit  Method injection, explicit injection method prefix:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer(new MethodInjection("setDependencies");&lt;br /&gt;pico.addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;  Method injection, via a characteristic:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;pico = new DefaultApache Composer();&lt;br /&gt;pico.as(Characteristics.METHOD_INJECTION).addComponent(Apple.class);&lt;br /&gt;&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;h2&gt; Leveraging Parameter Names &lt;/h2&gt;&#010;+&lt;p&gt;This is where the type alone is not enough to indicate which&#010;+dependency should be put one or more constructor args. The following&#010;+component has a need for two of the same type, with some subtly&#010;+different characteristics.&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;public class AppleProcessor {&lt;br /&gt;  private Apple dessertApple;&lt;br /&gt;  private Apple cookingApple;&lt;br /&gt;&lt;br /&gt;  public inject(Apple dessertApple, Apple cookingApple) {&lt;br /&gt;    this.dessertApple = dessertApple;&lt;br /&gt;    this.cookingApple = cookingApple;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;  // other methods&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;pico.addComponent("dessertApple", GoldenDeliciousApple.class);&lt;br /&gt;&lt;br /&gt;pico.addComponent("cookingApple", BramleyApple.class);&lt;br /&gt;pico.as(Characteristics.USE_NAMES).addComponent(AppleProcessor.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;In this case the constructor to AppleProcessor has carefully named&#010;+parameters - 'dessertApple' and 'cookingApple'. This is picked up on&#010;+for the two named components GoldenDeliciousApple and BramleyApple also&#010;+set up in the container.&lt;/p&gt;&#010;+&lt;p&gt;There are two ways for this to work:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;relying on the fact that  your component classes have debug info compiled into them. &lt;/li&gt;&#010;+  &lt;li&gt;post-processing component classes with &lt;a href="http://paranamer.codehaus.org/"&gt;Paranamer&lt;/a&gt; before placing them in their jar &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;/body&gt;&lt;/html&gt;&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/interception.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/interception.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/interception.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/interception.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,123 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&#010;+&lt;head&gt;&#010;+    &lt;title&gt;Interception&lt;/title&gt;&#010;+&#010;+    &lt;style type="text/css"&gt;&#010;+&lt;!--&#010;+.style1 {font-family: "Courier New", Courier, monospace}&#010;+--&gt;&#010;+    &lt;/style&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;This is a rudimentary Aspect Orientated Programing (AOP) capability. With respect to the methods of a component, both&#010;+   before and after invocation, control can be handed to an interceptor. You can intercept a method call:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt; before it is invoked (and optionally veto its invocation, with an alternate return value).&lt;/li&gt;&#010;+    &lt;li&gt; after it is invoked (and optionally override the return value).&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;There are some limitations:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt;it will only work for interface/impl separated components&lt;/li&gt;&#010;+    &lt;li&gt;it needs a class that implements the interface in question&#010;+        &lt;ul&gt;&#010;+            &lt;li&gt;all of the methods need null implementations, even if not intended to be intercepted&lt;/li&gt;&#010;+        &lt;/ul&gt;&#010;+    &lt;/li&gt;&#010;+    &lt;li&gt;will (likely) break if there's deep recursion into Intercepted instances&lt;/li&gt;&#010;+    &lt;li&gt;you can't intercept an implementation's static methods&lt;/li&gt;&#010;+    &lt;li&gt;it is not possible to modify a method's arguments&lt;/li&gt;&#010;+    &lt;li&gt;the constructor's invocation for the component is not interceptable&lt;/li&gt;&#010;+    &lt;li&gt;the component's fields are not interceptable&lt;/li&gt;&#010;+    &lt;li&gt;only one component invoking the methods on another component will be intercepted.&#010;+      &lt;ul&gt;&#010;+        &lt;li&gt;components and related classes calling their own methods will not be intercepted&lt;/li&gt;&#010;+      &lt;/ul&gt;&#010;+    &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;div class="source"&gt;&#010;+      &lt;pre&gt;public static class BiteReporter implements Apple {&#010;+    private Intercepted.Controller controller;&#010;+&#010;+    public BiteReporter(Intercepted.Controller controller) {&#010;+        this.controller = controller;&#010;+&#010;+    } &#010;+    public boolean takeBite(int grams) {&#010;+        System.out.println(&amp;quot;Bite of &amp;quot; + grams + &amp;quot; grams of apple '&amp;quot; + controller.instance().getName() + &amp;quot;'&amp;quot;);&#010;+        return false; // ignored, but necessary.&#010;+    }&#010;+}&#010;+...&#010;+pico = new DefaultApache Composer(new Intercepting());&#010;+pico.addComponent(Apple.class, BraeburnApple.class);&#010;+Intercpeted intercepted = pico.getComponentAdapter(Apple.class).findAdapterOfType(Intercpeted.class);&#010;+intercepted.pre(Apple.class, new BiteReporter(intercepted.getController()));&#010;+// see also Intercpeted.post(...) method.&#010;+Apple a1 = pico.getComponent(Apple.class);&#010;+a1.takeBite(100); &#010;+// prints Bite of 100 grams of apple 'Braeburn' &#010;+// ... irrespective of what else Braeburn.takeBite(int) does.&#010;+  &lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&#010;+    &lt;pre&gt;pico = new DefaultApache Composer();&#010;+pico.as(INTERCEPT).addComponent(Apple.class, BraeburnApple.class);&#010;+// etc&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&#010;+    &lt;pre&gt;pico = new ContainerBuilder.withInterception().build();&#010;+pico.addComponent(Apple.class, BraeburnApple.class);&#010;+// etc&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&#010;+    &lt;pre&gt;pico = new ContainerBuilder.withBehaviors(interception()).build();&#010;+pico.addComponent(Apple.class, BraeburnApple.class);&#010;+// etc&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;&lt;b&gt;Fine grained participation in interception&lt;/b&gt;&lt;br/&gt;Assuming you're passing in the Interceptor to the classes you're using for interception of a component, you can&#010;+   participate in the fate of the method call. For a 'pre' invocation, you can veto the calling of the 'real'&#010;+   method. &lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;pre&gt;    public boolean takeBite(int grams) {&#010;+        if (grams &amp;gt; 50) {&#010;+             controller.veto();&#010;+&#010;+        }&#010;+        return false; // will be passed back to the caller.&#010;+    }&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;For a 'post' invocation, you can override the return value of the 'real' method. &lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;pre&gt;    public boolean takeBite(int grams) {        &#010;+&#010;+        if (grams &amp;gt; 50) {&#010;+             controller.override();&#010;+             (Apple) realApple = (Apple) controller.instance();&#010;+             realApple.takeBite(-1 * grams); // undo !&#010;+        }&#010;+        return false; // will be passed back to the caller.&#010;+    }&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Also for a 'post' invocation, you can access the return value of the 'real' method. &lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;pre&gt;    public boolean takeBite(int grams) {        &#010;+&#010;+        boolean rv = (boolean) controller.getOriginalRetVal();&#010;+        if (rv == false) {&#010;+             // do something !&#010;+        }&#010;+        return true; // ignored as no 'override'&#010;+    }&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/introduction.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/introduction.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/introduction.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/introduction.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,364 @@&#010;+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+    &lt;title&gt;Introduction&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&#010;+&lt;p&gt;Authors: Aslak Hellesoy, Jon Tirsen&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Basics&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;This is a quick introduction to Apache Composer's most important features. Read through it to get an idea of what&#010;+   Apache Composer is and isn't. &lt;/p&gt;&#010;+&#010;+&lt;p&gt;Apache Composer's most important feature is its ability to instantiate arbitrary objects. This is done through its API,&#010;+   which is similar to a hash table. You can put java.lang.Class objects in and get object instances back.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Example:&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;MutableApache Composer pico = new DefaultApache Composer();&#010;+pico.addComponent(ArrayList.class);&#010;+List list = (List) pico.getComponent(ArrayList.class);&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;(i)&lt;a&#010;+    href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;+                                                                                                                               API&lt;sup&gt;&lt;img&#010;+    class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;+    border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010;+&#010;+&lt;p&gt;This code does the same as this:&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+        &lt;pre&gt;List list = new ArrayList();&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;With a trivial example such as this there is no point in using Apache Composer. This was just to illustrate the basic&#010;+   API. Apache Composer becomes useful with larger number of classes and interfaces having complex dependencies between&#010;+   each other:&lt;/p&gt;&#010;+&lt;table&gt;&#010;+    &lt;tbody&gt;&#010;+        &lt;tr&gt;&#010;+            &lt;th&gt; Complex Dependencies&lt;/th&gt;&#010;+            &lt;th&gt; Juicer Example&lt;/th&gt;&#010;+        &lt;/tr&gt;&#010;+        &lt;tr&gt;&#010;+            &lt;td&gt;&lt;img src="images/complex-dependencies.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;+            &lt;td&gt;&lt;img src="images/juicer-peeler-peelable.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;+        &lt;/tr&gt;&#010;+    &lt;/tbody&gt;&#010;+&lt;/table&gt;&#010;+        &lt;p&gt;(Green means class, Yellow means interface).&lt;br /&gt;&#010;+        Apache Composer identifies dependencies by looking at the&#010;+        constructors of registered classes (&lt;a&#010;+          href="constructor-injection.html"&#010;+          title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;).&#010;+        Apache Composer can also be though of as a generic factory that&#010;+        can be configured dynamically. Apache Composer is able to&#010;+        instantiate a complex graph of several interdependent objects.&lt;/p&gt;&#010;+&#010;+        &lt;h2&gt;Write some simple classes&#010;+                                                                                             and interfaces with&#010;+                                                                                             dependencies&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;The "Juicer Example" diagram above could translate to the following code (we added a concrete Peelable):&lt;/p&gt;&#010;+&#010;+&lt;p&gt;&lt;img src="images/apple-implements-peelable.png" align="absmiddle" border="0" /&gt;&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;public interface Peelable {&#010;+    void peel();&#010;+}&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;public class Apple implements Peelable {&#010;+    public void peel() {&#010;+    }&#010;+}&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;public class Peeler implements Startable {&#010;+    private final Peelable peelable;&#010;+&#010;+    public Peeler(Peelable peelable) {&#010;+        this.peelable = peelable;&#010;+    }&#010;+&#010;+    public void start() {&#010;+        peelable.peel();&#010;+    }&#010;+&#010;+    public void stop() {&#010;+&#010;+    }&#010;+}&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;public class Juicer {&#010;+    private final Peelable peelable;&#010;+    private final Peeler peeler;&#010;+&#010;+    public Juicer(Peelable peelable, Peeler peeler) {&#010;+        this.peelable = peelable;&#010;+        this.peeler = peeler;&#010;+    }&#010;+}&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;(Note that this code suffers from the antipattern &lt;a href="propagating-dependency-antipattern.html"&#010;+                                                        title="Propagating Dependency"&gt;Propagating Dependency&lt;/a&gt; but&#010;+                                                                                                                  let's&#010;+                                                                                                                  not&#010;+                                                                                                                  worry&#010;+                                                                                                                  about&#010;+                                                                                                                  that&#010;+                                                                                                                  for&#010;+                                                                                                                  now&#010;+    &lt;img class="emoticon" src="/images/icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt=""&#010;+         border="0" /&gt;)&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Assemble components&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;You tell Apache Composer what classes to manage by registering them like this (the order of registration has no&#010;+   significance):&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;MutableApache Composer pico = new DefaultApache Composer();&#010;+pico.addComponent(Apple.class);&#010;+pico.addComponent(Juicer.class);&#010;+pico.addComponent(Peeler.class);&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;(i)&lt;a&#010;+    href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/MutableApache Composer.html"&gt;MutableApache Composer&#010;+                                                                                                                               API&lt;sup&gt;&lt;img&#010;+    class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;+    border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Instantiate components&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;You can tell Apache Composer to give you an instance of a class like this (provided it has been registered&#010;+   previously):&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+        &lt;pre&gt;Juicer juicer = (Juicer) pico.getComponent(Juicer.class);&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;This will cause Apache Composer to do something similar to this behind the scenes (except that Apache Composer uses&#010;+   reflection):&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;Peelable peelable = new Apple();&#010;+Peeler peeler = new Peeler(peelable);&#010;+Juicer juicer = new Juicer(peelable, peeler);&#010;+return juicer;&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;&lt;img class="emoticon" src="/images/icons/emoticons/information.gif" height="16" width="16" align="absmiddle" alt=""&#010;+        border="0" /&gt; Note how Apache Composer figures out that Apple is a Peelable, so that it can be passed to Peeler&#010;+                      and Juicer's constructors.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Container hierarchies&lt;/h2&gt;&#010;+&#010;+        &lt;p&gt;Apache Composer provides a powerful alternative to the &lt;a&#010;+          href="singleton-antipattern.html" title="Singleton"&gt;Singleton&lt;/a&gt;.&#010;+        With container hierarchies you can create singleton-like objects&#010;+        where you have fine grained control over the visibility scope of&#010;+        the instance. (The singleton pattern is static and global - it&#010;+        won't allow more than one instance, and it is visible from&#010;+        anywhere. Not nice when you try to build a large enterprise&#010;+        application from it).&lt;/p&gt;&#010;+&#010;+        &lt;p&gt;&lt;img src="images/pico-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/p&gt;&#010;+&#010;+&lt;p&gt;A container (and its registered components) can get access to components registered in a parent container, but not&#010;+   vice-versa. Consider this example, using the classes from above:&lt;/p&gt;&#010;+&#010;+&lt;p&gt;&lt;img class="emoticon" src="/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt=""&#010;+        border="0" /&gt;&lt;br /&gt;&#010;+    THIS WON'T WORK&amp;#33; It is for illustration purposes only&amp;#33;&lt;br /&gt;&#010;+    &lt;img class="emoticon" src="/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt=""&#010;+         border="0" /&gt;&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;// Create x hierarchy of containers&#010;+MutableApache Composer x = new DefaultApache Composer();&#010;+MutableApache Composer y = new DefaultApache Composer( x );&#010;+MutableApache Composer z = new DefaultApache Composer( y );&#010;+&#010;+// Assemble components&#010;+x.addComponent(Apple.class);&#010;+y.addComponent(Juicer.class);&#010;+z.addComponent(Peeler.class);&#010;+&#010;+// Instantiate components&#010;+Peeler peeler = (Peeler) z.getComponent(Peeler.class);&#010;+// WON'T WORK! peeler will be null&#010;+peeler = (Peeler) x.getComponent(Peeler.class);&#010;+// WON'T WORK! This will throw an exception&#010;+Juicer juicer = (Juicer) y.getComponent(Juicer.class);&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;This can be visualised as follows:&lt;br /&gt;&#010;+    &lt;img src="images/juicer-in-pico-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Let's analyse what will happen here:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt;Line 12 will work fine. z will be able to resolve the dependencies for Peeler (which is Fruit) from the parent&#010;+        container.&#010;+    &lt;/li&gt;&#010;+  &lt;li&gt;Line 14 will return null, as x can't see Peeler.&lt;/li&gt;&#010;+    &lt;li&gt;Line 16 will throw an exception, since Juicer's dependency to Peeler can't be satisfied (z can't be seen by&#010;+        y).&#010;+    &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+        &lt;p&gt;&lt;img class="emoticon"&#010;+          src="/images/icons/emoticons/warning.gif" height="16"&#010;+          width="16" align="absmiddle" alt="" border="0" /&gt; Since this&#010;+        obviously won't work, keep in mind that this was just an&#010;+        exercise to illustrate how container hierarchies work.&lt;br /&gt;&#010;+        &lt;img class="emoticon"&#010;+          src="/images/icons/emoticons/information.gif" height="16"&#010;+          width="16" align="absmiddle" alt="" border="0" /&gt; For a more&#010;+        concrete example of the usage of container hierarchies, see &lt;a&#010;+          href="http://www.nanocontainer.org/NanoWar" rel="nofollow"&gt;NanoContainer&#010;+        NanoWar&lt;sup&gt;&lt;img class="rendericon"&#010;+          src="/images/icons/linkext7.gif" height="7" width="7"&#010;+          align="absmiddle" alt="" border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;&#010;+&#010;+        &lt;h2&gt;Lifecycle&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Apache Composer has support for &lt;a href="lifecycle.html" title="Lifecycle"&gt;Lifecycle&lt;/a&gt;. If your classes implement &lt;a&#010;+    href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/Startable.html"&gt;Startable&lt;sup&gt;&lt;img&#010;+    class="rendericon" src="/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt=""&#010;+    border="0" /&gt;&lt;/sup&gt;&lt;/a&gt;, you can control the lifecycle of all your objects with a simple method call on the&#010;+                           container. The container will figure out the correct order of invocation of start()/stop()&#010;+                           all the objects managed by the container.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Calling start() on the container will call start() on all container managed objects in the order of their&#010;+   instantiation. This means starting with the ones that have no dependencies, and ending with the ones that have&#010;+   dependencies on others:&lt;/p&gt;&#010;+&lt;table&gt;&#010;+    &lt;tbody&gt;&#010;+        &lt;tr&gt;&#010;+            &lt;th&gt; MutableApache Composer.start()&lt;/th&gt;&#010;+            &lt;th&gt; MutableApache Composer.stop()&lt;/th&gt;&#010;+        &lt;/tr&gt;&#010;+        &lt;tr&gt;&#010;+            &lt;td&gt;&lt;img src="images/start-container.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;+            &lt;td&gt;&lt;img src="images/stop-container.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;+        &lt;/tr&gt;&#010;+    &lt;/tbody&gt;&#010;+&lt;/table&gt;&#010;+&lt;p&gt;Lifecycle also works for hierarchies of containers. Calling start() on a container with child containers will start&#010;+   all the containers in a breadth-first order, starting with itself. Likewise, calling stop() will call stop() on all&#010;+   containers in the hierarchy in a depth-first order. The pictures below show what happens when start() and stop() are&#010;+   called on a container with children.&lt;/p&gt;&#010;+&lt;table&gt;&#010;+    &lt;tbody&gt;&#010;+        &lt;tr&gt;&#010;+            &lt;th&gt; MutableApache Composer.start()&lt;/th&gt;&#010;+            &lt;th&gt; MutableApache Composer.stop()&lt;/th&gt;&#010;+        &lt;/tr&gt;&#010;+        &lt;tr&gt;&#010;+            &lt;td&gt;&lt;img src="images/start-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;+            &lt;td&gt;&lt;img src="images/stop-hierarchy.png" align="absmiddle" border="0" /&gt;&lt;/td&gt;&#010;+        &lt;/tr&gt;&#010;+    &lt;/tbody&gt;&#010;+&lt;/table&gt;&#010;+&lt;p&gt;&lt;img class="emoticon" src="/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt=""&#010;+        border="0" /&gt; In order for hierarchy-aware lifecycle to work, child containers must be registered as components&#010;+                      in their parent container. Just creating a container with another one as a parent will &lt;b&gt;not&lt;/b&gt;&#010;+                      cause the parent container to know about the child container.&lt;/p&gt;&#010;+&lt;h3&gt;Example&lt;/h3&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+                    &lt;pre&gt;MutableApache Composer parent = new DefaultApache Composer(new Caching());&#010;+MutableApache Composer child = new DefaultApache Composer(parent);&#010;+// We must let the parent container know about the child container.&#010;+parent.addComponent(child);&#010;+// This will start the parent, which will start the child.&#010;+parent.start();&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;&lt;strong&gt;&lt;img class="emoticon" src="/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="warning"&#010;+        border="0" /&gt; &lt;/strong&gt;Lifecycle is really only going to work for Apache Composers that are also caching component instances. Caching was a default in Apache Composer 1.x, but is not for 2.x - be warned!&lt;/p&gt;&#010;+&lt;p&gt;&lt;img class="emoticon" src="/images/icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt=""&#010;+        border="0" /&gt; Calling lifecycle methods on a container that has a parent container will &lt;b&gt;not&lt;/b&gt; propagate the&#010;+  lifecycle to the parent container. &lt;/p&gt;&#010;+&lt;p&gt;Read more about lifecycle &lt;a href="lifecycle.html" title="Lifecycle"&gt;here&lt;/a&gt;.&lt;/p&gt;&#010;+&lt;div id="bodyColumn"&gt;&#010;+    &lt;div id="contentBox"&gt;&#010;+        &lt;div class="section"&gt;&#010;+&#010;+            &lt;h3&gt;Contrasting Usage Styles &lt;/h3&gt;&#010;+&#010;+            &lt;p&gt;With Apache Composer you add components and get instances out in two styles. &lt;/p&gt;&#010;+&#010;+            &lt;p&gt;Classic bean style: &lt;/p&gt;&#010;+&#010;+            &lt;div class="source"&gt;&#010;+  &lt;pre&gt;&#010;+pico = new DefaultApache Composer();&#010;+pico.addComponent(ComponentOneImpl.class) // by type&#010;+pico.addComponent(ComponentTwoImpl.class) // by type&#010;+pico.addComponent(new ComponentThreeImpl()) // by instance&#010;+pico.addComponent(ComponentFourImpl.class) // by type&#010;+&#010;+ComponentFourImpl four = pico.getComponent(ComponentFourImpl.class);&#010;+&lt;/pre&gt;&#010;+            &lt;/div&gt;&#010;+            &lt;p&gt;Or you can use a &lt;a href="http://www.martinfowler.com/bliki/FluentInterface.html"&gt;fluent&lt;/a&gt; style if you&#010;+               want:&lt;/p&gt;&#010;+&#010;+            &lt;div class="source"&gt;&#010;+  &lt;pre&gt;&#010;+ComponentFour four = new DefaultApache Composer()&#010;+    .addComponent(ComponentOne.class)&#010;+    .addComponent(ComponentTwo.class)&#010;+    .addComponent(new ComponentThree())&#010;+    .addComponent(ComponentFour.class)&#010;+    .getComponent(ComponentFour.class);&lt;/pre&gt;&#010;+            &lt;/div&gt;&#010;+&#010;+        &lt;/div&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;/td&gt;&#010;+&lt;/tr&gt;&#010;+&lt;/table&gt;&#010;+&lt;/td&gt;&#010;+&lt;/tr&gt;&#010;+&lt;/table&gt;&#010;+&#010;+&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618174 [3/5] - in /incubator/composer/trunk: ./ composer-site/ composer-site/src/ composer-site/src/assembly/ composer-site/src/config/ composer-site/src/resources/ composer-site/src/resources/images/ composer-site/src/resources/style/ com...</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204063336.102501A9844@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204063336-102501A9844@eris-apache-org%3e</id>
<updated>2008-02-04T06:33:26Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Added: incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/inversion-of-control-history.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,115 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html&gt;&lt;head&gt;&#010;+&lt;title&gt;Inversion of Control History&lt;/title&gt;&lt;/head&gt;&#010;+&#010;+&#010;+&lt;body&gt;&#010;+&lt;p&gt;Here is some of the history of the pattern or principle known as&#010;+Inversion of Control (IoC). There is some confusion online as to&#010;+whether IoC has been renamed Dependency Injection (DI). This is not the&#010;+case, DI concerns just one aspect of IoC - component assembly. The&#010;+other two are configuration and lifecycle. &lt;/p&gt;&#010;+&lt;p&gt;See also the &lt;a href="comparisons.html"&gt;comparisons&lt;/a&gt; page. &lt;/p&gt;&#010;+&lt;h2&gt;Avalon&lt;/h2&gt;&#010;+&lt;p&gt;Inversion of Control, as a term, was popularised in 1998 by &lt;a href="http://www.betaversion.org/%7Estefano/"&gt;Stefano Mazzocchi&lt;/a&gt;&#010;+as consequence of trying to engineer a 'Java Apache Server Framework'&#010;+for the growing set of server side Java components and tools at &lt;a href="http://www.apache.org/"&gt;Apache&lt;/a&gt;.&#010;+Sun were just starting to protect the word Java when used for&#010;+branding/naming of software and computing functions, so Apache had to&#010;+look for alternative names. Avalon was chosen as a project name (queue&#010;+images of &lt;a href="http://en.wikipedia.org/wiki/Avalon"&gt;Arthurian legend&lt;/a&gt;).&lt;/p&gt;&#010;+&lt;p&gt;To the Avalon team, it was clear that components receiving various aspects of &lt;strong&gt;component assembly&lt;/strong&gt;, &lt;strong&gt;configuration&lt;/strong&gt; and &lt;strong&gt;lifecycle&lt;/strong&gt; was a superior design to those components going at getting the same themselves. &lt;/p&gt;&#010;+&lt;p&gt;It is important to point out that The Open Services Gateway (OSGi)&#010;+initiative was also started around the same time as the Avalon&#010;+framework and was similar to a degree. It was born in Europe and&#010;+specified/controlled by a foundation formed around it.&amp;nbsp; &lt;/p&gt;&#010;+&lt;p&gt;Latterly this type of IoC has been given a new name - Contextualized Dependency Lookup.&lt;/p&gt;&#010;+&lt;p&gt;Avalon was cancelled as an Apache project in 2004, by the Apache Software Foundation.&lt;/p&gt;&#010;+&lt;h2&gt;Setter Injection&lt;/h2&gt;&#010;+&lt;p&gt;&lt;a href="http://joe.truemesh.com/blog/"&gt;Joe Walnes&lt;/a&gt;, &lt;a href="http://joe.truemesh.com/blog/"&gt;Mike Cannon Brookes&lt;/a&gt; and others found themselves writing &lt;a href="http://www.opensymphony.com/xwork/"&gt;XWork&lt;/a&gt; and &lt;a href="http://www.opensymphony.com/webwork/"&gt;WebWork2&lt;/a&gt; to support their forthcoming book, &lt;a href="http://www.amazon.com/Java-Open-Source-Programming-Hibernate/dp/0471463620"&gt;Java Open Source Programming&lt;/a&gt;.&#010;+Joe pointed out that the concepts were very much like those from&#010;+IoC/Avalon that Paul had been trying to convince Joe to adopt for a&#010;+couple of years, but that dependencies were passed into the component&#010;+via setters. The need for those dependencies was declared in some&#010;+accompanying XML.&lt;/p&gt;&#010;+&lt;p&gt;Paul who worked with Joe at an Energy Trading Company in London,&#010;+suggested this was a different type of Inversion of Control. That, as a&#010;+term, has been obsoleted for "Setter Injection" of course. &lt;/p&gt;&#010;+&lt;p&gt;&lt;a href="http://blog.interface21.com/main/author/rodj/"&gt;Rod Johnson&lt;/a&gt;, lead for the &lt;a href="http://www.springframework.org/"&gt;Spring Framework&lt;/a&gt; wrote a book &lt;a href="http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764543857.html"&gt;Expert  One-on-One J2EE Design and Development&lt;/a&gt;&#010;+(published Oct 2002) that also discussed the concepts of setter&#010;+injection, and introduced the codeline that ultimately became the &lt;a href="http://sourceforge.net/projects/springframework"&gt;Spring Framework&lt;/a&gt; at SourceForge in February of 2003. &lt;/p&gt;&#010;+&lt;p&gt;Martin Fowler has suggested that it may be better to have such&#010;+dependency resolving methods prefixed with init rather than setter.&#010;+With init or set prefixes to dependency receiving methods, a container&#010;+could automatically assemble SDI components without the manifest. SDI,&#010;+under container control, works best with the manifest though. Without a&#010;+container, SDI Components are very much like simple Java beans to use:&lt;/p&gt;&#010;+&lt;p&gt;A downside of direct bean user of an SDI component is that it is&#010;+possible to instantiate a component without setting all the&#010;+dependencies. As mistakes, these should be quite quick to catch&#010;+post-compile with a simple test of that application. Months later&#010;+though, when a jar of components is replaced in an application with a&#010;+latter version of the same, a new dependency may be missed, and a&#010;+non-functioning application may be shipped to live. Again, that could&#010;+be caught with diligent testing.&lt;/p&gt;&#010;+&lt;h2&gt;Constructor  Injection &lt;/h2&gt;&#010;+&lt;p&gt;Rachel Davies, as one of the enthusiastic reviewers of Joe's book,&#010;+left a margin note for the paragraphs that discussed the elegance of&#010;+type two. The margin-note simply suggested that resolving dependencies&#010;+by constructor was more elegant. Latterly we are inclined to agree. At&#010;+that moment in time (the spring of 2003) there were no implementation&#010;+of the constructor injection idea, so it seemed logical for the initial&#010;+Apache Composer leads (Paul Hammant and Aslak Hellesoy) who liked the&#010;+idea, to kick off the project.&lt;/p&gt;&#010;+&lt;p&gt;The added advantage is that CDI Components cannot be instantiated&#010;+with missing dependencies. Thus the compiler or IDE will catch&#010;+mismatches between any constructor and the parameters passed into the&#010;+class on instantiation.&lt;/p&gt;&#010;+&lt;p&gt;&lt;a href="http://www.atg.com/en/company/dynamo.jhtml"&gt;ATG Dynamo&lt;/a&gt;&#010;+was a commercial product that was successful in the market place in the&#010;+late 90's. It also used constructors for dependency resolution.&#010;+Dynamo's commercial success yielded a little when Apache made Struts,&#010;+but it should not be forgotten that Dynamo casually used constructors&#010;+for dependencies in web-applications first. &lt;/p&gt;&#010;+&lt;h2&gt;Types 1, 2 &amp;amp; 3 renamed &lt;/h2&gt;&#010;+&lt;p&gt;In 2003, Paul was refering to the Avalon style of IoC as "type 1",&#010;+setter as "type 2" and constructor as "type 3". He went as far as&#010;+publishing an &lt;a href="http://java.sys-con.com/read/38102.htm"&gt;article&lt;/a&gt; on it in Java Developer Journal.   &lt;/p&gt;&#010;+&lt;p&gt;&lt;em&gt;December 2003&lt;/em&gt;; Rod Johnson of the Spring Framework team,&#010;+Paul Hammant (former Avaloner, and co-lead of Apache Composer), Mike&#010;+Royle, with Martin Fowler (by email) say down and played with some of&#010;+the language of Martin's forthcoming article. Martin had drafted this&#010;+article entirely independently of this team but had be kind enough to&#010;+show a draft to them. The problem the team had was with the naming of&#010;+the patterns related to Inversion of Control, and the examples of use&#010;+that Martin had shown. Rod had been using the injection phrase before&#010;+so it was felt that the component resolving style being "Dependency&#010;+Injection" would be a good thing. &lt;/p&gt;&#010;+&#010;+&lt;p&gt;Thus when Dependency Injection rightly took over:&lt;/p&gt;&#010;+&#010;+&lt;blockquote&gt;&#010;+  &lt;p&gt;&#009;Type 1 becomes Contextualized Dependency Lookup&lt;br /&gt;&#010;+    &lt;br /&gt;&#010;+    Type 2 becomes Setter Dependency Injection&lt;br /&gt;&#010;+    &lt;br /&gt;&#010;+    Type 3 becomes Constructor Dependency Injection&lt;/p&gt;&#010;+  &lt;p&gt;Type 4 was Field Injection or getter injection depending on who you spoke to. &lt;/p&gt;&#010;+&lt;/blockquote&gt;&#010;+&lt;h2&gt;Timelines&lt;/h2&gt;&#010;+&lt;p&gt;&lt;img src="images/ioc-timeline.png" alt="timeline picture" height="347" width="691" /&gt;&lt;/p&gt;&#010;+&lt;h2&gt;Prior Art&lt;/h2&gt;&#010;+&lt;p&gt;As a concept, Inversion of Control was not entirely new when&#010;+Steffano popularised it at Apache in 1998. Parts of it been talked&#010;+about before as Dependency Inversion Principle (Bob Martin) and the&#010;+'Hollywood Principle' (don't call us, we'll call you), and the term&#010;+cropped had been cropping up since 1996. &lt;/p&gt;&#010;+&lt;p&gt;Gang of Four, &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns"&gt;Design Patterns&lt;/a&gt;, 1994 "Hollywood Pattern" (don't call us, we'll call you) as discussion point on 'Template' Pattern. &lt;/p&gt;&#010;+&lt;p&gt;Robert C. Martin, "Dependency Inversion" in posting on comp.lang.c++, August 1994: &lt;a href="http://groups.google.com/group/comp.lang.c++/msg/b9c929f55c52e4a2?"&gt;OO Design Quality Metrics: An Analysis of Dependencies&lt;/a&gt; &lt;/p&gt;&#010;+&lt;p&gt;Robert C. Martin, : "Principle of Depenency Inversion" in posting on comp.lang.c++, June 1995: &lt;a href="http://groups.google.com/group/comp.lang.c++/msg/30f7c7701209faba?dmode=source"&gt;The Principles of OOD&lt;/a&gt; with follow up postings through July 1995 &lt;/p&gt;&#010;+&lt;p&gt;Robert C. Martin, The Dependency Inversion Principle, In: C++ Report, Vol. 8, May 1996. See more recent &lt;a href="http://www.objectmentor.com/resources/articles/dip.pdf"&gt;PDF&lt;/a&gt;&lt;/p&gt;&#010;+&lt;p&gt;Michael Mattesson, 1996, &lt;a href="http://web.archive.org/web/20000815083810/www.ipd.hk-r.se/michaelm/thesis/toc.html"&gt;Object-Oriented Frameworks : A survey of methodological issues&lt;/a&gt; "inversion of control" used in passing. &lt;/p&gt;&#010;+&lt;p&gt;Brian Foote and Joseph Yoder, June 1998. &lt;a href="http://www.laputan.org/mud/"&gt;Big Ball of Mud&lt;/a&gt;. Not so much on IoC, but setting the scene. &lt;/p&gt;&#010;+&lt;p&gt;Ralph E. Johnson and Brian Foote, June 1998, &lt;a href="http://www.laputan.org/drc/drc.html"&gt;Designing Reusable Classes&lt;/a&gt; "inversion of control" used in passing. &lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;/body&gt;&lt;/html&gt;&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/inversion-of-control.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,357 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&lt;!DOCTYPE html&#010;+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&#010;+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;&#010;+&lt;head&gt;&#010;+    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;&#010;+    &lt;title&gt;Inversion of Control&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;h2&gt;Overview&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Inversion of Control (IoC) is a design pattern that addresses a&#010;+component's &lt;a href="injection.html" title="Dependency Injection"&gt;dependency&#010;+resolution&lt;/a&gt;, &lt;a href="component-configuration.html"&#010;+  title="Component Configuration"&gt;configuration&lt;/a&gt; and &lt;a&#010;+  href="lifecycle.html" title="Lifecycle"&gt;lifecycle&lt;/a&gt;. It suggests that the control of those three should not be the concern of the component itself. Thus it is inverted back. Note to confuse&#010;+things slightly, IoC is also relevant to simple classes, not just&#010;+components, but we will refer to components throughout this text. The&#010;+most significant aspect to IoC is dependency resolution and most of the&#010;+discussion surrounding IoC dwells solely on that. Dependency mis-management is acknowledged to be the biggest problem that IoC is trying to solve.&lt;img src="images/ioc-venn.png" width="538" height="336" alt="IoC venn diagram" /&gt;&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Types of IoC&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;There are many types of IoC, but we'll concentrate on the type of IoC that Apache Composer introduced to the community&#010;+   - &lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;. &lt;/p&gt;&#010;+&#010;+&lt;h3&gt;IoC History&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;Some detail about the history of Inversion of Control - &lt;a href="inversion-of-control-history.html"&#010;+                                                              title="IoC History"&gt;IoC History&lt;/a&gt;&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Component Dependencies&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;It generally favors loose coupling between components. Loose coupling in turn favours:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt;More reusable classes&lt;/li&gt;&#010;+    &lt;li&gt;Classes that are easier to test&lt;/li&gt;&#010;+    &lt;li&gt;Systems that are easier to assemble and configure&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;h3&gt;Explanation&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;Simply put, a component designed according to IoC does not go off and get other components that it needs in order to&#010;+   do its job. It instead &lt;em&gt;declares&lt;/em&gt; these dependencies, and the container supplies them. Thus the name&#010;+   IoC/DIP/Hollywood Principle. The control of the dependencies for a given component is inverted. It is no longer the&#010;+   component itself that establishes its own dependencies, but something on the outside. That something could be a&#010;+   container like Apache Composer, but could easily be normal code instantiating the component in an embedded sense.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Examples&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;Here is the simplest possible IoC component :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+              &lt;pre&gt;public interface Orange {&#010;+  // methods&#010;+}&#010;+public class AppleImpl implements Apple {&#010;+  private Orange orange;&#010;+  public AppleImpl(Orange orange) {&#010;+    this.orange = orange;&#010;+  }&#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Here are some common smells that should lead you to refactor to IoC :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+              &lt;pre&gt;public class AppleImpl implements Apple{&#010;+  private Orange orange;&#010;+  public Apple() {&#010;+    this.orange = new OrangeImpl();&#010;+  }  &#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;The problem is that you are tied to the OrangleImpl implementation for provision of Orange services. Simply put, the&#010;+   above apple cannot be a (configurable) component. It's an application. All hard coded. Not reusable. It is going to&#010;+   be very difficult to have multiple instances in the same classloader with different assembly.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Here are some other smells along the same line :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+              &lt;pre&gt;public class AppleImpl implements Apple {&#010;+  private static Orange orange = OrangeFactory.getOrange();&#010;+  public Apple() {&#010;+  }  &#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;h2&gt;Component Configuration&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Sometimes we see configuration like so ...&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+            &lt;pre&gt;public class BigFatComponent {&#010;+  String config01;&#010;+  String config02;&#010;+  public BigFatComponent() {&#010;+    ResourceFactory resources = new ResourceFactory(new File(&amp;quot;mycomp.properties&amp;quot;));&#010;+    config01 = resources.get(&amp;quot;config01&amp;quot;);&#010;+    config02 = resources.get(&amp;quot;config02&amp;quot;);&#010;+  }  &#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;In the IoC world, it might be better to see the following for simple component designs :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+            &lt;pre&gt;public class BigFatComponent {&#010;+  String config01;&#010;+  String config02;&#010;+  public BigFatComponent(String config01, String config02) {&#010;+    this.config01 = config01;&#010;+    this.config02 = config02;&#010;+  }  &#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;Or this for more complex ones, or ones designed to be more open to reimplementation ..&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+            &lt;pre&gt;public interface BigFatComponentConfig {&#010;+  String getConfig01();&#010;+  String getConfig02();&#010;+}&#010;+public class BigFatComponent {&#010;+  String config01;&#010;+  String config02;&#010;+  public BigFatComponent(BigFatComponentConfig config) {&#010;+    this.config01 = config.getConfig01();&#010;+    this.config02 = config.getConfig02();&#010;+  }  &#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;With the latter design there could be many different implementations of BigFatComponentConfig. Implementations such&#010;+   as:&lt;/p&gt;&#010;+&lt;ol&gt;&#010;+    &lt;li&gt;Hard coded (a default impl)&lt;/li&gt;&#010;+    &lt;li&gt;Implementations that take config from an XML document (file, URL based or inlined in using class)&lt;/li&gt;&#010;+    &lt;li&gt;Properties File.&lt;/li&gt;&#010;+&lt;/ol&gt;&#010;+&lt;p&gt;It is the deployer's, embeddor's or container maker's choice on which to use.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Component Lifecycle&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Simply put, the lifecycle of a component is what happens to it in a controlled sense after it has been instantiated.&#010;+   Say a component has to start threads, do some timed activity or listen on a socket. The component, if not IoC, might&#010;+   do its start in its contructor. Better would be to honor some start/stop functionality from an interface, and have&#010;+   the container or embeddor manage the starting and stopping when they feel it is appropriate:&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+            &lt;pre&gt;public class SomeDaemonComponent implements Startable {&#010;+  public void start() {&#010;+    // listen or whatever&#010;+  }&#010;+  public void stop() {&#010;+  }&#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3&gt;Notes &lt;/h3&gt;&#010;+&#010;+&lt;p&gt;The lifecycle interfaces for Apache Composer are the only characterising API elements for a component. If Startable was&#010;+   in the JDK, there would be no need for this. Sadly, it also menas that every framework team has to write their own&#010;+   Startable interface. &lt;/p&gt;&#010;+&#010;+&lt;p&gt;The vast majority of components do not require lifecycle functionality, and thus don't have to implement&#010;+   anything.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;IoC Exceptions&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Of course, in all of these discussions, it is important to point out that logging is a common exception to the IoC&#010;+   rule. Apache has two static logging frameworks that are in common use: Commons-Logging and Log4J. Neither of these is&#010;+   designed along IoC lines. Their typical use is static accessed whenever it is felt appropriate in an application.&#010;+   Whilst static logging is common, the Apache Composer team do not recommend that developers of reusable components&#010;+   mandate a logging choice. We suggest instead that a Monitor component interface is created and default adapters are&#010;+   provided to a number of the logging frameworks are provided.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Overview&lt;/h2&gt;&#010;+&#010;+&lt;h2&gt;IoC Types - Family Tree&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;In recent years different approaches have emerged to deliver an IoC vision. Latter types, as part of a 'LightWeight'&#010;+   agenda have concentrated on simplicity and transparency.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Devised in London at the ThoughtWorks office in December of 2003; Present at the &amp;quot;Dependency Injection&amp;quot;&#010;+   meeting were Paul Hammant, Aslak Hellesoy, Jon Tirsen, Rod Johnson (Lead Developer of the Spring Framework), Mike&#010;+   Royle, Stacy Curl, Marcos Tarruela and Martin Fowler (electronically).&lt;/p&gt;&#010;+&#010;+&lt;p&gt;&lt;strong&gt;Inversion of Control&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt;Dependency Injection&#010;+        &lt;ul&gt;&#010;+            &lt;li&gt;Constructor Dependency Injection (CDI) &lt;br /&gt;&#010;+                &lt;br /&gt;&#010;+                Examples: Apache Composer, Spring Framework, (not in EJB 3.x sadly), Guice with Annotations&#010;+            &lt;/li&gt;&#010;+            &lt;li&gt;Setter Dependency Injection&lt;br /&gt;&#010;+                &lt;br /&gt;&#010;+                Examples: Spring Framework, Apache Composer, EJB 3.0 &amp;amp; Guice with Annotations&#010;+            &lt;/li&gt;&#010;+            &lt;li&gt;Interface Driven Setter Dependency Injection&lt;br /&gt;&#010;+                &lt;br /&gt;&#010;+                Examples: XWork, WebWork 2&#010;+            &lt;/li&gt;&#010;+            &lt;li&gt;Field Dependency Injection&lt;br /&gt;&#010;+                &lt;br /&gt;&#010;+                Examples: Plexus, Apache Composer &amp;amp; Guice with Annotations.&#010;+            &lt;/li&gt;&#010;+        &lt;/ul&gt;&#010;+    &lt;/li&gt;&#010;+    &lt;li&gt;Dependency Lookup&#010;+        &lt;ul&gt;&#010;+            &lt;li&gt;Pull approach (registry concept)&lt;br /&gt;&#010;+                &lt;br /&gt;&#010;+                Examples: EJB 2.x that leverages JNDI, Servlets that leverage JNDI&#010;+            &lt;/li&gt;&#010;+            &lt;li&gt;Contextualized Dependency Lookup - AKA Push approach &lt;br /&gt;&#010;+                &lt;br /&gt;&#010;+                Examples: Servlets that leverage ServletContext, Apache's Avalon, OSGi, Keel, Loom (they use Avalon)&#010;+            &lt;/li&gt;&#010;+        &lt;/ul&gt;&#010;+    &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;See also &lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;, &lt;a&#010;+    href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt; for more information.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Note Field Injection was categorised but there was was really no interest it until the EJB3.0 specification rolled out. Getter&#010;+   Injection flourished for a while, but did not take and was never supported by the Apache Composer team.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Examples of Common Types&lt;/h2&gt;&#010;+&#010;+&lt;h3&gt;Constructor Dependency Injection&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;This is where a dependency is handed into a component via its constructor :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+              &lt;pre&gt;public interface Orange {&#010;+  // methods&#010;+}&#010;+&#010;+public class AppleImpl implements Apple {&#010;+  private Orange orange;&#010;+  public AppleImpl(Orange orange) {&#010;+    this.orange = orange;&#010;+  }&#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;h3&gt;Setter Dependency Injection&#010;+&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;This is where dependencies are injected into a component via setters :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+    &lt;div&gt;&#010;+              &lt;pre&gt;public interface Orange {&#010;+  // methods&#010;+}&#010;+&#010;+public class AppleImpl implements Apple {&#010;+  private Orange orange;&#010;+  public void setOrange(Orange orange) {&#010;+    this.orange = orange;&#010;+  }&#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+    &lt;/div&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;h3&gt;Contextualized Dependency Lookup (Push Approach)&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;This is where dependencies are looked up from a container that is managing the component :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+              &lt;pre&gt;public interface Orange {&#010;+  // methods&#010;+}&#010;+&#010;+public class AppleImpl implements Apple, DependencyProvision {&#010;+  private Orange orange;&#010;+  public void doDependencyLookup(DependencyProvider dp) throws DependencyLookupExcpetion{&#010;+    this.orange = (Orange) dp.lookup(&amp;quot;Orange&amp;quot;);&#010;+  }&#010;+  // other methods&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;h2&gt;Terms: Service, Component &amp;amp; Class&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Component is the correct name for things managed in an IoC sense. However very small ordinary classes are manageable&#010;+   using IoC tricks, though this is for the very brave or extremists &lt;img class="emoticon"&#010;+                                                                          src="http://docs.codehaus.org/images/icons/emoticons/smile.gif"&#010;+                                                                          height="20" width="20" align="absmiddle"&#010;+                                                                          alt="" border="0" /&gt;&lt;/p&gt;&#010;+&#010;+&lt;p&gt;A component many have dependencies on others. Thus dependency is the term we prefer to describe the needs of a&#010;+   component.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Service as a term is very popular presently. We think 'Service' dictates marshaling and remoteness. Think of Web&#010;+   Service, Database service, Mail service. All of these have a concept of adaptation and transport. Typically a&#010;+   language neutral form for a request is passed over the wire. In the case of the Web Service method requests are&#010;+   marshaled to SOAP XML and forward to a suitable HTTP server for processing. Most of the time an application coder is&#010;+   hidden from the client/server and marshaling ugliness by a toolkit or API.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Dependency Injection versus Contextualized Lookup&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Dependency Injection is non-invasive. Typically this means that components can be used without a container or a&#010;+   framework. If you ignore life cycle, there is no import requirements from an applicable framework.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Contextualized Dependency Lookup is invasive. Typically this means components must be used inside a container or with&#010;+   a framework, and requires the component coder to import classes from the applicable framework jar.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Note that Apache's Avalon OSGi are not Dependency Injection types of IoC, they are Contextualized Dependency&#010;+   Lookup.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Ultimately, the contextualized lookup designs are not recommended at all. &lt;/p&gt;&#010;+&#010;+&lt;h2&gt;What's wrong with JNDI ?&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;With plain JNDI, lookup can be done in a classes' static initialiser, in the constuctor or any method including the&#010;+   finaliser. Thus there is no control (refer C of IoC). With JNDI used under EJB control, and concerning only&#010;+   components looked up from that bean's sisters (implicitly under the same container's control), the specification&#010;+   indicates that the JNDI lookup should only happen at a certain moment in the startup of an EJB application, and only&#010;+   from a set of beans declared in ejb-jar.xml. Hence, for EJB containers, the control element should be back. Should,&#010;+   of course, means that many bean containers have no clue as to when lookups are actually being done, and apps work by&#010;+   accident of deployment. Allowing it for static is truly evil. It means that a container could merely be looking at&#010;+   classes with reflection in some early setup state, and the bean could be going off and availing of remote and local&#010;+   services and components. Thus depending whether JNDI is being used in an Enterprise Java Bean or in a POJO, it is&#010;+   either an example of IoC or not.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Related Pages &lt;/h2&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt;Contextualized Lookup&#010;+        &lt;ul&gt;&#010;+            &lt;li&gt;&lt;a href="comparisons.html#comparison-ApacheAvalonanditscontainers" title="Avalon Framework"&gt;Avalon&#010;+                                                                                                            Framework&lt;/a&gt;&#010;+            &lt;/li&gt;&#010;+        &lt;/ul&gt;&#010;+    &lt;/li&gt;&#010;+    &lt;li&gt;&lt;a href="inversion-of-control-history.html" title="IoC History"&gt;IoC History&lt;/a&gt;&lt;/li&gt;&#010;+    &lt;li&gt;&#010;+        &lt;ul&gt;&#010;+            &lt;li&gt;&lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt;&#010;+                &lt;ul&gt;&#010;+                    &lt;li&gt;&lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;&#010;+                    &lt;/li&gt;&#010;+                    &lt;li&gt;&lt;a href="setter-injection.html" title="Setter Injection"&gt;Setter Injection&lt;/a&gt;&lt;/li&gt;&#010;+                &lt;/ul&gt;&#010;+            &lt;/li&gt;&#010;+        &lt;/ul&gt;&#010;+    &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/javadoc.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/javadoc.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/javadoc.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/javadoc.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,16 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Javadoc&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&#010;+&lt;p&gt;&lt;a href="javadoc/core/index.html"&gt;Core&lt;/a&gt;&lt;/p&gt;&#010;+&lt;p&gt;&lt;a href="javadoc/gems/index.html"&gt;Gems&lt;/a&gt;&lt;/p&gt;&#010;+&lt;p&gt;&lt;a href="javadoc/tck/index.html"&gt;TCK&lt;/a&gt;&lt;/p&gt;&#010;+&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/lifecycle.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/lifecycle.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/lifecycle.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/lifecycle.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,94 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Lifecycle&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Lifecycle with configuration and depenedency injection makes&#010;+Inversion of Control (IoC).&lt;/p&gt;&#010;+&lt;p&gt;After instantiation, if the component warrants it, a 'start'&#010;+stage may be required. More specifically, if a container has injected&#010;+and instantiated all components in a set, one or more of them may&#010;+require starting in the same order they were instantiated. Later, in&#010;+reverse order, the same component(s) may require stoping. In fact start&#010;+and stop may happen more than one for the life of an application.&#010;+Disposal may happen once only, before the component is eligible for&#010;+garbage collection.&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Lifecycle is really only going to work for Apache Composers that are also caching component instances. Caching was a default in Apache Composer 1.x, but is not for 2.x - be warned!&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Thus lifecycle implies three methods:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;start&lt;/li&gt;&#010;+  &lt;li&gt;stop&lt;/li&gt;&#010;+  &lt;li&gt;dispose&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;In Apache Composer we think allow a pluggable LifecycleStrategy.&lt;/p&gt;&#010;+&lt;h3&gt;Startable&lt;/h3&gt;&#010;+&lt;p&gt;Our own interface for startable. We wish it were in the JDK,&#010;+because we're big into making components unecumbered by the trappings of&#010;+containment. In English: we'd rather not make components&#010;+implement/extend/throw anything from our framework. Its a 'transparency'&#010;+thing.&lt;/p&gt;&#010;+&lt;p&gt;Here's an example of components fitting that ideal&lt;/p&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+public class Apple implements Startable{&#010;+  public void start() {&#010;+    // listen on socket, start thread etc.&#010;+  }&#010;+  public void stop() {&#010;+    // stop listening on socket, kill thread etc.&#010;+  }&#010;+}&#010;+&#010;+&#010;+...&#010;+&#010;+&#010;+pico = new DefaultApache Composer(new StartableLifecycleStrategy());&#010;+pico.addComponent(Apple.class);&#010;+pico.start();&#010;+// start gets called&#010;+&#010;+Apple a = pico.getComponent(Apple.class);&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;The StartableLifecycleStrategy can be extended if you prefer your&#010;+own interface for Startable. Just override&lt;/p&gt;&#010;+&lt;h3&gt;Reflection based start/stop/dispose&lt;/h3&gt;&#010;+&lt;p&gt;This works without an interface. Instead it works via reflection,&#010;+and appropriate method names.&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+public class Apple {&#010;+  public void start() {&#010;+    // listen on socket, start thread etc.&#010;+  }&#010;+  public void stop() {&#010;+    // stop listening on socket, kill thread etc.&#010;+  }&#010;+}&#010;+&#010;+&#010;+...&#010;+&#010;+&#010;+pico = new DefaultApache Composer(new ReflectionLifecycleStrategy());&#010;+pico.addComponent(Apple.class);&#010;+pico.start();&#010;+// start gets called&#010;+&#010;+Apple a = pico.getComponent(Apple.class);&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&#010;+&lt;p&gt;If you have other synonyms for start/stop/dispose, just extend&#010;+the ReflectionLifecycleStrategy class and provide them.&lt;/p&gt;&#010;+&lt;h3&gt;No Lifecycle&lt;/h3&gt;&#010;+&lt;p&gt;DefaultApache Composer does sets StartableLifecycleStrategy by&#010;+default. You can specify NullLifecycleStrategy instead if you are sure&#010;+that no components honor any lifecycle concept..&lt;/p&gt;&#010;+&lt;h3&gt;Custom Lifecycles&lt;/h3&gt;&#010;+&lt;p&gt;Write a class that implements LifecycleStragegy, there are just&#010;+four methods to implement. See LifecycleStrategy.&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/mock-objects.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/mock-objects.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/mock-objects.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/mock-objects.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,73 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Mock Objects&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;If you have had it with codebases that drag along everything and the kitchen sink, (possibly using the &lt;a href="singleton-antipattern.html"&gt;Singleton&lt;/a&gt;) you must read this page. Classes that look up or instantiate heavyweight classes themselves are such beasts. As you might have experienced, they are a pain to test. (And ample proof that the authors didn't follow TDD &lt;img src="/images/thumbs_down.gif" width="19" height="19" alt="thumbs down" /&gt;). Dependency Injection with Apache Composer and Mock Objects to the rescue!&lt;/p&gt;&#010;+&lt;p&gt;Mock Objects are special objects used during testing. Mock Objects and classes that honour &lt;a href="injection.html"&gt;Constructor Injection&lt;/a&gt; are a &lt;strong&gt;perfect match&lt;/strong&gt;, since such classes can be handed mocks during testing and &amp;quot;the real thing&amp;quot; when the application is run.&lt;/p&gt;&#010;+&lt;p&gt;This illustration shows how:&lt;/p&gt;&#010;+&lt;table border="0"&gt;&#010;+  &lt;tr&gt;&#010;+    &lt;td&gt;Unit-Test Time &lt;/td&gt;&#010;+    &lt;td&gt;Deployment Time &lt;/td&gt;&#010;+  &lt;/tr&gt;&#010;+  &lt;tr&gt;&#010;+    &lt;td&gt;&lt;img src="/images/mock-needs-stuff.png" width="214" height="306" alt="mock needs stuff" /&gt;&lt;/td&gt;&#010;+    &lt;td&gt;&lt;img src="/images/pico-needs-stuff.png" width="214" height="306" alt="pico needs stuff" /&gt;&lt;/td&gt;&#010;+  &lt;/tr&gt;&#010;+&lt;/table&gt;&#010;+&lt;h3&gt;The class&#010;+  &lt;/h3&gt;&#010;+  &lt;p&gt;Here is what NeedsStuff might look like:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+public class NeedsStuff {&#010;+  // These are both interfaces.&#010;+  private final BlueStuff bs;&#010;+  private final GreenStuff gs;&#010;+  public NeedsStuff(BlueStuff bs, GreenStuff gs) {&#010;+    this.bs = bs;&#010;+    this.gs = gs;&#010;+  }&#010;+ public String doIt() {&#010;+  return bs.jump() + gs.beatIt();&#010;+  }&#010;+}&lt;/pre&gt;&lt;/div&gt;&#010;+  &lt;p&gt;During test time we'll give NeedsStuff some mocks.&lt;/p&gt;&#010;+&lt;p&gt;During prime time (when the final application is running), the NeedsStuff class will be instantiated with a SuperHeavyBlueStuff and a NuclearGreenStuff instance. These require some really heavy infrastructure such as database connections and network access. We don't want to drag along that when we test NeedsStuff! (It can wait till the integration test).&lt;/p&gt;&#010;+&lt;h3&gt;Test Time&#010;+&lt;/h3&gt;&#010;+&lt;p&gt;Our test becomes like this:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+public class NeedsStuffTestCase extends junit.framework.TestCase {&#010;+  public void testNeedsStuffDoesStuff() {&#010;+    BlueStuff bs = createBlueStuffMockThatReturnsBlahOnJump();&#010;+    GreenStuff gs = createGreanStuffMockThatReturnsHuhOnBeatIt();&#010;+&#010;+    NeedsStuff ns = new NeedsStuff(bs, gs);&#010;+    assertEquals("BlahHuh", ns.doIt());&#010;+&#010;+    // verify mocks.&#010;+  }&#010;+}&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;We are testing the doIt() method without having to drag along any heavy dependencies &lt;img src="/images/smile.gif" width="20" height="20" alt="smiley" /&gt;&lt;/p&gt;&#010;+&lt;p&gt; &lt;img src="/images/information.gif" width="16" height="16" alt="info" /&gt; We won't go into further technical details about mocks, as there are many libraries to choose from. Check out &lt;a href="http://www.jmock.org/"&gt;JMock&lt;/a&gt; and &lt;a href="http://www.easymock.org/"&gt;EasyMock&lt;/a&gt;, or read about the ideas at &lt;a href="http://www.mockobjects.com/"&gt;MockObjects&lt;/a&gt; &lt;/p&gt;&#010;+&lt;h3&gt;Prime Time&#010;+&lt;/h3&gt;&#010;+&lt;p&gt;It is left to Apache Composer to instantiate NeedsStuff. In order for it to succeed, we must also configure the container with some real BlueStuff and GreanStuff:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+public class AppBootstrapper {&#010;+  public void runapp() {&#010;+    pico = new DefaultApache Composer();&#010;+    pico.addComponent(NeedsStuff.class);&#010;+    pico.addComponent(SuperHeavyBlueStuff.class);&#010;+    pico.addComponent(NuclearGreenStuff.class);&#010;+  }&#010;+}&#010;+&lt;/pre&gt;&lt;/div&gt;&#010;+&lt;p&gt;&lt;img src="images/information.gif" width="16" height="16" alt="info" /&gt; It is even possible to do this component wiring using a soft scripting language. See &lt;a href="http://www.nanocontainer.org"&gt;NanoContainer&lt;/a&gt;&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/monitors.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/monitors.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/monitors.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/monitors.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,45 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Component Monitors&lt;/title&gt;&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;A ComponentMonitor if injected into DefultApache Composer allows for certain events to me monitored at a container level. We are idealogically opposed to a forced choice of loging framework. If you're hell bent on logging, chose from a  ComponentMonitor imlementation below. For now though consider what events are monitored:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;instantiating - refering to a component &lt;/li&gt;&#010;+  &lt;li&gt;instantiated - refering to a component&lt;/li&gt;&#010;+  &lt;li&gt;instantiationFailed - refering to a component&lt;/li&gt;&#010;+  &lt;li&gt;invoking - refering to a method on a component &lt;/li&gt;&#010;+  &lt;li&gt;invoked - refering to a method on a component &lt;/li&gt;&#010;+  &lt;li&gt;invocationFailed - refering to a method on a component &lt;/li&gt;&#010;+  &lt;li&gt;lifecycleInvocationFailed - referring to start/stop/dispose methods on a component &lt;/li&gt;&#010;+  &lt;li&gt;noComponentFound - referring to getComponent(..) on a Apache Composer instance. &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;&lt;strong&gt;Return Values &lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;&lt;em&gt;Instantiating&lt;/em&gt; returns a Constructor. An implementor of ComponentMonitor can choose to return a different Constructor reference. This is one way that implementations can be replaced or decorated (AOP style) with additional/changed functionality. &lt;/p&gt;&#010;+&lt;p&gt;&lt;em&gt;noComponentFound&lt;/em&gt; returns an Object (default of null in most cases). An implementor can choose to return an instance instead. That instance should be of a type that makes sense to the component that was being sought. The getComponent(..) would have otherwise failed, but this hypothetical ComponentMonitor intercepted that failure and provided something that makes sense. &lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;General rules&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;ol&gt;&#010;+  &lt;li&gt;ComponentMonitor can generally be chained together. Meaning you can use them in combination. &lt;/li&gt;&#010;+  &lt;li&gt;Most have NullComponentMonitor (see below) as their end stop. &lt;/li&gt;&#010;+  &lt;li&gt;Any method on ComponentMonitor is open for interpretation. That means they can throw exceptions as well as return different values, making them modify Apache Composer's behavior. &lt;/li&gt;&#010;+&lt;/ol&gt;&#010;+&lt;h3&gt;Logging or text-centric varieties of ComponentMonitor &lt;/h3&gt;&#010;+&lt;p&gt;Hopefully self explanatory:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;CommonsLoggingComponentMonitor (Gems) &lt;/li&gt;&#010;+  &lt;li&gt;Log4JComponentMonitor (Gems) &lt;/li&gt;&#010;+  &lt;li&gt;ConsoleComponentMonitor  &lt;/li&gt;&#010;+  &lt;li&gt;WriterComponentMonitor&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;h3&gt;NullComponentMonitor&lt;/h3&gt;&#010;+&lt;p&gt;This is Apache Composer's default ComponentMonitor. It generally fits the NullObject pattern, but it does add behavior. Specifically if it encounters a lifecycleInvocationFailed(..) method invocation, it throws a LifecycleException in response. If you use something other than NullComponentMonitor (bear in mind the default 'end stop' for most others is also NullComponentMonitor) then you could change the way Apache Composer responds to components it cannot start, stop of dispose of. &lt;/p&gt;&#010;+&lt;h3&gt;LifecycleComponentMonitor&lt;/h3&gt;&#010;+&lt;p&gt;This  ComponentMonitor stores lifecycle failures and rethrows them later if rethrowLifecycleFailuresException() is called. &lt;/p&gt;&#010;+&lt;h3&gt;Future work&lt;/h3&gt;&#010;+&lt;p&gt;Implementations that:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Record component injections and play them back later (optimised web frameworks) &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/news.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/news.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/news.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/news.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,70 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+    &lt;title&gt;News&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;&lt;strong&gt;Jan 19, 2008&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 2.0 released (190K jar) &lt;/p&gt;&#010;+&lt;p&gt;New (versus beta 2):&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Binding Annotations support (disambiguation)&lt;/li&gt;&#010;+  &lt;li&gt;Newer and rewritten properties backed containers&lt;/li&gt;&#010;+  &lt;li&gt;Parameter names can be leveraged for all relevant types of injection&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;Changed (versus beta 2):&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Yet More Java5 generics&lt;/li&gt;&#010;+  &lt;li&gt;Build moved to JUnit 4.x and JMock 2.x (does not affect users of Apache Composer)&lt;/li&gt;&#010;+  &lt;li&gt;Built-in parameter name access, as opposed jar dependency&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;&lt;strong&gt;August 26, 2007&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 2.0 beta 2 released (152K jar) &lt;/p&gt;&#010;+&lt;p&gt;New (versus beta 1):&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Rudimentary AOP capability for components built in&lt;/li&gt;&#010;+  &lt;li&gt;Method Injection (one method post-construction with multiple arguments)&lt;/li&gt;&#010;+  &lt;li&gt;Automatic JNDI exposure&lt;/li&gt;&#010;+  &lt;li&gt;Multi Injection (Setter and after Constructor injection)&lt;/li&gt;&#010;+  &lt;li&gt;Store behavior (can extract/replace component store per thread)&lt;/li&gt;&#010;+  &lt;li&gt;Automatic components (instantiate irrespective of need)&lt;/li&gt;&#010;+  &lt;li&gt;Reentrant-Lock version of Synchronizing behavior&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;Changed (versus beta 1):&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Better Java5 generics&lt;/li&gt;&#010;+  &lt;li&gt;Renames of behaviors and injectors to more verb-like style&lt;/li&gt;&#010;+  &lt;li&gt;Startable interface more easily overridden to own choice&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;&lt;strong&gt;July 15, 2007&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 2.0 BETA-1 released (128K jar) &lt;/p&gt;&#010;+&lt;p&gt;New:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Properties for components as they are added to containers makes for increased flexibility&lt;/li&gt;&#010;+  &lt;li&gt;Field and Method annotation types of injection in addition to traditional Constructor (recommended) and Setter types &lt;/li&gt;&#010;+  &lt;li&gt;Parameters names for constructors can now drive otherwise ambiguous injections, as well as configuration&lt;/li&gt;&#010;+  &lt;li&gt;Large sets of configuration can be taken from properties files and command line arguments&lt;/li&gt;&#010;+  &lt;li&gt;ContainerBuilder to make a container with desired behavior. &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;Changed:&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;Java 5 style (use of generics, varargs, among others)&lt;/li&gt;&#010;+  &lt;li&gt;Large scale Refactoring of packages and class names&lt;/li&gt;&#010;+  &lt;li&gt;Fluent interface for adding of components to a container&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;&lt;strong&gt;Mar 18, 2007&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 1.3 released (113K jar) &lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;January 19, 2006&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 1.2 released (112K jar) &lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;November 4, 2004&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 1.1 released (75K jar) &lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;June 5,  2004&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 1.0 released (49K jar) &lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;June 29,  2003&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Apache Composer 1.0 alpha (25K jar) &lt;/p&gt;&#010;+&lt;p&gt;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp; &lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/patterns.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/patterns.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/patterns.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/patterns.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,50 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Design Patterns&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;h3&gt;Key Patterns &lt;/h3&gt;&#010;+&lt;p&gt;&lt;strong&gt;Inversion of Control (IoC). &lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;The idea that an application is controlled from the top down&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Separation of Concerns (SoC) &lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;The idea that a class (aspect) should do one job and do it well&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Separation of API (or Interface) from Implementation&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;The idea that you define and code to work interfaces&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Aspect Oriented Programming (AOP) &lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Mostly lightweight nowadays where you add a chain of interceptors around a method call that can handle orthogonal concerns&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Component Oriented Programming (COP) &lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;The idea that you decompose your software into components&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Declarative Programming&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Where you use a declarative-style language (usually xml) to determine things like component wiring (i.e. your average tomcat config file, generalized)&lt;/p&gt;&#010;+&lt;p&gt;&lt;strong&gt;Event Based Programming (EBP) &lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Basically making the inter-object method call asynchronous and encapsulating such a call into some kind of event object that can be queued, modified, etc&lt;/p&gt;&#010;+&lt;h3&gt;More Thinking &lt;/h3&gt;&#010;+&lt;p&gt;&lt;strong&gt;Good Citizen: Least surprise, least paranoia&lt;/strong&gt;&lt;/p&gt;&#010;+&lt;p&gt;Authors: Dan North, Aslak Hellesoy&lt;/p&gt;&#010;+&lt;p&gt;Imagine a software system where there is no need for you to spend your time programming defensively; your objects will be used responsibly, and your methods will always be passed sensible arguments.&lt;/p&gt;&#010;+&lt;p&gt;This low-friction utopia can be approached by establishing some simple programming rules so that every class acts as a 'good citizen' in the society of classes collaborating at runtime.&lt;/p&gt;&#010;+&lt;p&gt;This page outlines some rules that we, and others, believe lead to good citizenship. All are aimed at improving clarity, reducing surprise, and promoting basic consistency.&lt;/p&gt;&#010;+&lt;p&gt;As a good citizen, I...&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;  Keep a consistent state at all times - init() or populate() is a code smell.&lt;/li&gt;&#010;+  &lt;li&gt;Have no static fields or methods&lt;/li&gt;&#010;+  &lt;li&gt;Never expect or return null.&lt;/li&gt;&#010;+  &lt;li&gt;FailFast - even when constructing.&lt;/li&gt;&#010;+  &lt;li&gt;Am Easy to test- all dependent object I use can be passed to me, often in my constructor (typically as Mock Objects).&lt;/li&gt;&#010;+  &lt;li&gt;Accept dependent object that can easily be substituted with Mock Objects (I don't use Concrete Class Dependency).&lt;/li&gt;&#010;+  &lt;li&gt;Chain multiple constructors to a common place (using this(...)).&lt;/li&gt;&#010;+  &lt;li&gt;Always define hashCode() alongside equals()&lt;/li&gt;&#010;+  &lt;li&gt;Prefer immutable value objects that I can easily throw away.&lt;/li&gt;&#010;+  &lt;li&gt;Have a special value for 'nothing' - e.g. Collections.EMPTY_SET.&lt;/li&gt;&#010;+  &lt;li&gt;Raise checked exceptions when the caller asked for something unreasonable - e.g. open a non-existant file.&lt;/li&gt;&#010;+  &lt;li&gt;Raise unchecked exceptions when I can't do something reasonable that the caller asked of me - e.g. disk error when reading from an opened file.&lt;/li&gt;&#010;+  &lt;li&gt;Only catch exceptions that can be handled fully.&lt;/li&gt;&#010;+  &lt;li&gt;Only log information that someone needs to see.&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;p&gt;Classes that are designed for &lt;a href="injection.html"&gt;Constructor Injection&lt;/a&gt; are better citizens than those that are not.&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/project.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/project.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/project.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/project.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,27 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+    &lt;title&gt;Project&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Apache Composer is hosted at &lt;a href="http://apache.org"&gt;The Apache Software Foundation&lt;/a&gt;, presently in its incubator. &lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Project links&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Source control root for Apache Composer (you will need Maven2 installed to build):&lt;/p&gt;&#010;+&#010;+&lt;p&gt;&lt;a&#010;+    href="https://svn.apache.org/repos/asf/incubator/composer/trunk"&gt;https://svn.apache.org/repos/asf/incubator/composer/trunk&lt;/a&gt;&#010;+&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Maven repositories for artifact download : &lt;/p&gt;&#010;+&#010;+TBA&#010;+&#010;+&lt;h2&gt;License&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Apache Composer is &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;Apache licensed&lt;/a&gt;.&#010;+&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/properties.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/properties.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/properties.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/properties.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,86 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+    &lt;title&gt;Component Properties&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;DefaultApache Composer allows for some properties to be set&#010;+   per component at the time each is added. A convenience class called Characteristics lists the supplied properties. &lt;/p&gt;&#010;+&#010;+&lt;p&gt;Properties can be set for a component in a method 'as' on&#010;+   MutableApache Composer. If that is the case then the properties will&#010;+   affect the &lt;strong&gt;next&lt;/strong&gt; component added only.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;They can also be set in a more persistent manner for the&#010;+   MutableApache Composer in question, using the 'change' method. If so, they will affect all subsequent&#010;+   additions of component.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;Some examples :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+import static org.picocontainer.Characteristics.SDI;&#010;+import static org.picocontainer.Characteristics.CACHE;&#010;+...&#010;+pico = new DefaultApache Composer();&#010;+pico.as(CACHE).addComponent(Apple.class);&#010;+pico.as(CACHE, SDI).addComponent(Pear.class);&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;import static org.picocontainer.Characteristics.SDI;&#010;+import static org.picocontainer.Characteristics.CACHE;&#010;+...&#010;+pico = new DefaultApache Composer();&#010;+pico.change(CACHE).addComponent(Apple.class);&#010;+pico.change(SDI).addComponent(Pear.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;&#010;+pico = new DefaultApache Composer();&#010;+pico.as(Characteristics.CACHE).addComponent(Apple.class);&#010;+pico.as(Characteristics.CACHE,&#010;+    Characteristics.SDI).addComponent(Pear.class);&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;pico = new DefaultApache Composer();&#010;+pico.change(Characteristics.CACHE).addComponent(Apple.class);&#010;+pico.change(Characteristics.SDI).addComponent(Pear.class);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&#010;+&lt;p&gt;Some characteristics are mutually exclusive. For example CDI,&#010;+   SDI. Meaning the last one set via 'as' or 'change' rules. Others are&#010;+   additive like CACHE and HIDE_IMPL. The order of these is not important. &lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Appropriate Behavior and Injection Factories.&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;Every characteristics set for a component must be handled by a&#010;+   BehaviorFactory or InjectionFactory that recognises it. They are&#010;+   typically chained together. DefaultApache Composer's default&#010;+   BehaviorFactory and InjectionFactory are AdaptiveBehaviorFactory and&#010;+   AdaptiveInjectionFactory. These can handle CDI and SDI as well as CACHE&#010;+   and HIDE_IMPL.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;If you setup DefaultApache Composer with a&#010;+   BehaviorFactory/InjectionFactory combination that is unaware of the&#010;+   characteristics you subsequently use, Apache Composer will object by way of an&#010;+   exception as you add the component to the container. See &lt;a href="unprocessed-properties-help.html"&gt;Unprocessed Properties&lt;/a&gt;. &lt;/p&gt;&#010;+&lt;p&gt;Supplied properties (from org.picocontainer.Characteristics) -&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+  &lt;li&gt;CDI - added components will be Constructor Dependency Injection.&lt;/li&gt;&#010;+  &lt;li&gt;SDI  - added components will be Setter Dependency Injection.&lt;/li&gt;&#010;+  &lt;li&gt;METHOD_INJECTION - added components will be Method Injection (a method called inject will list the dependencies).&lt;/li&gt;&#010;+  &lt;li&gt;NO_CACHE - no caching for the component to be added (in the case of Caching being the container's default).&lt;/li&gt;&#010;+  &lt;li&gt;CACHE - cache the component to be added.&lt;/li&gt;&#010;+  &lt;li&gt;NO_JMX - JMX is not to be published for the component.&lt;/li&gt;&#010;+  &lt;li&gt;SYNCHRONIZE - ensure that the component to be added will be created only once, even if multiple threads are seeking the component simultaneously.&lt;/li&gt;&#010;+  &lt;li&gt;LOCK - an alternate to SYNCHRONIZE that leverages java.lang.concurrent.Lock for the same purpose.&lt;/li&gt;&#010;+  &lt;li&gt;SINGLE - synonym for CACHE.&lt;/li&gt;&#010;+  &lt;li&gt;HIDE_IMPL - hide the implementation of the component to be added.&lt;/li&gt;&#010;+  &lt;li&gt;NO_HIDE_IMPL - don't hide the implementation of the component to be added (in the case of ImplementationHiding being the container's default).&lt;/li&gt;&#010;+  &lt;li&gt;PROPERTY_APPLYING - allow for the application of properties for the component in question.&lt;/li&gt;&#010;+  &lt;li&gt;AUTOMATIC - instantiate the component when start() is called on the container even if component is not Startable nor depended on.&lt;/li&gt;&#010;+  &lt;li&gt;USE_NAMES - use the parameter names of the component's constructor (or injection method) for the binding of configuration or components.&lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;h3&gt;Custom Properties&lt;/h3&gt;&#010;+&lt;p&gt;You can make your own properties quite easily - check out the source to &lt;a href="http://svn.codehaus.org/picocontainer/java/2.x/trunk/pico/container/src/java/org/picocontainer/Characteristics.java"&gt;Characteristics.java&lt;/a&gt; and the classes that refer to it in Apache Composer (various implementations of ComponentFactory and ComponentAdapter). &lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/scopes.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/scopes.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/scopes.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/scopes.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,73 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Scoped Containers&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Apache Composer's scope hinges on parent/child container&#010;+relationships. From a Apache Composer instance you can make a child&#010;+container via makeChildContainer() or addChildContainer(..).&lt;/p&gt;&#010;+&lt;p&gt;These hierarchies of container can be set up with parents and&#010;+children refering to each other, or children referring to parents only,&#010;+or parents referring to children only. This changes the way that things&#010;+work considerably. If a child has its parent registered, then it can&#010;+lean on it for component resolution (but not without). If a parent has&#010;+its child registered asa child, then it can manage it (start, stop,&#010;+dispose cascade into children).&lt;/p&gt;&#010;+&lt;p&gt;Web frameworks that leverage Apache Composer typically construct a tree of containers.  For example an application level container maintains components that can be shared across the application. The application container will have child containers to maintain session level components.  These session level containers can resolve dependencies through their parent containers, but the application container will have no visibility into its children.  Additionally these child container do not have visibility into their sibling containers.  With this design, containers can easily be garbage collected at the end of their scope. &lt;/p&gt;&#010;+&lt;h2&gt;Simple Examples&lt;/h2&gt;&#010;+&lt;p&gt;Here are examples of parent/child setup:&lt;/p&gt;&#010;+    &lt;div class="source"&gt;&#010;+      &lt;pre&gt;&#010;+parent = new DefaultApache Composer();&#010;+parent.addComponent(Apple.class);&#010;+parent.addComponent(Orange.class);&#010;+parent.addComponent(Pear.class);&#010;+child = parent.makeChildContainer();&#010;+child.addComponent(DependsOnApple.class);&#010;+// this is OK&#010;+parent.start();&#010;+// cascades to child just fine&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;&#010;+parent = new DefaultApache Composer();&#010;+parent.addComponent(Apple.class);&#010;+parent.addComponent(Orange.class);&#010;+parent.addComponent(Pear.class);&#010;+child = parent.addChildContainer(new DefaultApache Composer());&#010;+child.addComponent(DependsOnApple.class);&#010;+// this is NOT OK. child can't see parent&#010;+parent.start();&#010;+// cascades to child just fine&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;&#010;+parent = new DefaultApache Composer();&#010;+parent.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class);&#010;+child = parent.addChildContainer(new DefaultApache Composer(parent));&#010;+child.addComponent(DependsOnApple.class);&#010;+// this is OK&#010;+parent.start();&#010;+// cascades to child just fine&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;div class="source"&gt;&lt;pre&gt;parent = new DefaultApache Composer();&#010;+parent.addComponent(Apple.class).addComponent(Orange.class).addComponent(Pear.class);&#010;+child = new DefaultApache Composer(parent);&#010;+child.addComponent(DependsOnApple.class);&#010;+// this is  OK&#010;+parent.start();&#010;+// does NOT cascades to child &#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;There is no limit to the extent of the chained containers, for example -&#010;+great grandparent, grandparent, parent, child, is OK.&lt;/p&gt;&#010;+&lt;p&gt;Garbage collection is the standard way of disposing of scoped containers. If the children refer to the parents, then assign child to null just works. If the parents refer to the children too, then you'll have to do a removeChildContainer(..) first before it will be eligible for garbage collection.&lt;/p&gt;&#010;+&lt;b&gt;See  &lt;a href="web-frameworks.html"&gt;web frameworks&lt;/a&gt;&lt;/b&gt;&#010;+&lt;b&gt;also.&lt;/b&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/setter-injection.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/setter-injection.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/setter-injection.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/setter-injection.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,83 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&lt;!DOCTYPE html&#010;+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&#010;+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;&#010;+&lt;head&gt;&#010;+    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;&#010;+    &lt;title&gt;Setter Injection&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;h2&gt;Overview&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Setter Dependency Injection (SDI) is where the container or embedder hands dependencies to a component via setter&#010;+   methods after instantiation.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Example&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;Joe Walnes whist working on Java Open Source Programming with other luminaries, started with a Setter Injection&#010;+   IoC design for WebWork2. This is marked up with doclet tags (though that was not hard and fast) :&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+            &lt;pre&gt;public class Shop {&#010;+   StockManager stockManager;&#010;+   String shopZipCode;&#010;+   /**&#010;+    * @service name=&amp;quot;StockManager&amp;quot;&#010;+    */&#010;+   public void setStockManager(StockManager stockManager) {&#010;+       this.stockManager = stockManager;&#010;+   }&#010;+   /**&#010;+    * @config name=&amp;quot;shopZipCode&amp;quot;&#010;+    */&#010;+   public void setStockManager(String shopZipCode) {&#010;+       this.shopZipCode= shopZipCode;&#010;+   }&#010;+   // TODO - Joe - how does setter injector do config ? Same way?&#010;+   public void initialize() {&#010;+       // all setXXXs are now done :-)&#010;+   }&#010;+}&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;The container use the meta-information to resolve all the dependencies. Components need not be interface/impl&#010;+   separated. Developer's choice.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;&lt;a name="SetterInjection-UsingSetterInjectorComponentsWithoutaContainer."&#010;+       id="SetterInjection-UsingSetterInjectorComponentsWithoutaContainer."&gt;&lt;/a&gt;Using Setter Injector Components&#010;+                                                                                Without a Container.&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;Setter Injection components can be used directly, without any container. The component-using class will&#010;+   continue to compile, but at run time it will be apparent that there are missing dependencies. The downside of&#010;+   this is that a developer may miss a setXXX(..) method invocation if they are using the component directly.&#010;+   That is fairly small as a risk as it would clearly be caught in the development cycle. Caught in the&#010;+   development cycle, but maybe obscurely so with a NullPointerException.&lt;/p&gt;&#010;+&#010;+&lt;div class="source"&gt;&#010;+              &lt;pre&gt;Shop shop = new Shop();&#010;+shop.setStockManager(myStockManager);&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;h2&gt;Container support&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;The Spring Framework project is the best example of a container that favors setter injection. Apache Composer does&#010;+   too, but we really believe that constructor injector is superior.&lt;/p&gt;&#010;+&#010;+&lt;h2&gt;Refs + Comparison&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;&lt;a href="http://www.martinfowler.com/articles/injection.html#SetterInjectionWithSpring"&gt;Setter Injection&lt;/a&gt; is a&#010;+    &lt;a href="injection.html" title="Dependency Injection"&gt;Dependency Injection&lt;/a&gt; variant where an object gets all&#010;+                                                                                   dependencies via setter methods.&#010;+                                                                                   Apache Composer support this with&#010;+    &lt;a href="http://www.picocontainer.org/picocontainer/latest/picocontainer/apidocs/org/picocontainer/defaults/SetterInjectionComponentAdapter.html"&gt;SetterInjectionComponentAdapter&lt;/a&gt;,&#010;+                                                                                                                                                                                         but&#010;+                                                                                                                                                                                         the&#010;+                                                                                                                                                                                         Apache Composer&#010;+                                                                                                                                                                                         team&#010;+                                                                                                                                                                                         recommends&#010;+    &lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt;.&lt;/p&gt;&#010;+&#010;+&lt;p&gt;The advantage of &lt;a href="constructor-injection.html" title="Constructor Injection"&gt;Constructor Injection&lt;/a&gt; is&#010;+   that the setting is atomic in a sense that either all or none of the dependencies are set and that it can occur&#010;+   once and only once. With Setter Injection there is the possibility to forget to set some of the dependencies&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/sitemap.xml&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/sitemap.xml?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/sitemap.xml (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/sitemap.xml Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,72 @@&#010;+&lt;sitemap&gt;&#010;+    &lt;section&gt;&#010;+        &lt;name&gt;About&lt;/name&gt;&#010;+        &lt;page&gt;index.html&lt;/page&gt;&#010;+        &lt;page&gt;introduction.html&lt;/page&gt;&#010;+        &lt;page&gt;javadoc.html&lt;/page&gt;&#010;+        &lt;page&gt;downloads.html&lt;/page&gt;&#010;+        &lt;page&gt;news.html&lt;/page&gt;&#010;+        &lt;page&gt;faq.html&lt;/page&gt;&#010;+        &lt;page&gt;goals.html&lt;/page&gt;&#010;+    &lt;/section&gt;&#010;+    &lt;section&gt;&#010;+        &lt;name&gt;Core Concepts&lt;/name&gt;&#010;+        &lt;page&gt;injection.html&lt;/page&gt;&#010;+        &lt;page&gt;behaviors.html&lt;/page&gt;&#010;+        &lt;page&gt;fluent-style.html&lt;/page&gt;&#010;+        &lt;page&gt;lifecycle.html&lt;/page&gt;&#010;+        &lt;page&gt;monitors.html&lt;/page&gt;&#010;+        &lt;page&gt;scopes.html&lt;/page&gt;&#010;+        &lt;page&gt;builder.html&lt;/page&gt;&#010;+        &lt;page&gt;interception.html&lt;/page&gt;&#010;+        &lt;page&gt;properties.html&lt;/page&gt;&#010;+        &lt;page&gt;disambiguation.html&lt;/page&gt;&#010;+       &lt;page&gt;component-configuration.html&lt;/page&gt;&#010;+    &lt;/section&gt;&#010;+    &lt;section&gt;&#010;+        &lt;name&gt;Architecture&lt;/name&gt;&#010;+        &lt;page&gt;patterns.html&lt;/page&gt;&#010;+        &lt;page&gt;inversion-of-control.html&lt;/page&gt;&#010;+        &lt;page&gt;adapters.html&lt;/page&gt;&#010;+        &lt;page&gt;mock-objects.html&lt;/page&gt;&#010;+        &lt;page&gt;terminology.html&lt;/page&gt;&#010;+        &lt;page&gt;constructor-injection.html&lt;/page&gt;&#010;+        &lt;page&gt;setter-injection.html&lt;/page&gt;&#010;+        &lt;page&gt;comparisons.html&lt;/page&gt;&#010;+        &lt;page&gt;transparency.html&lt;/page&gt;&#010;+    &lt;/section&gt;&#010;+    &lt;section&gt;&#010;+        &lt;name&gt;Containers&lt;/name&gt;&#010;+        &lt;page&gt;DefaultApache Composer.html&lt;/page&gt;&#010;+&#009;    &lt;page&gt;CommandLineArgumentsApache Composer.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;PropertiesApache Composer.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;SystemPropertiesApache Composer.html&lt;/page&gt;&#010;+&#009;&#009;&lt;page&gt;TransientApache Composer.html&lt;/page&gt;&#010;+    &lt;/section&gt;&#010;+    &lt;section&gt;&#010;+         &lt;name&gt;Applications&lt;/name&gt;&#010;+         &lt;page&gt;web-frameworks.html&lt;/page&gt;&#010;+    &lt;/section&gt;&#010;+    &lt;section&gt;&#010;+         &lt;name&gt;Anti-patterns&lt;/name&gt;&#010;+         &lt;page&gt;antipatterns/propagating-dependency-antipattern.html&lt;/page&gt;&#010;+         &lt;page&gt;antipatterns/long-constructor-argument-list-antipattern.html&lt;/page&gt;&#010;+         &lt;page&gt;antipatterns/container-dependency-antipattern.html&lt;/page&gt;&#010;+         &lt;page&gt;antipatterns/tests-use-container-antipattern.html&lt;/page&gt;&#010;+         &lt;page&gt;antipatterns/singleton-antipattern.html&lt;/page&gt;&#010;+    &lt;/section&gt;&#010;+    &lt;section&gt;&#010;+         &lt;name&gt;Help Pages&lt;/name&gt;&#010;+         &lt;page&gt;help/ambiguous-injectable-help.html&lt;/page&gt;&#010;+         &lt;page&gt;help/unprocessed-properties-help.html&lt;/page&gt;&#010;+     &lt;/section&gt;    &#010;+    &lt;section&gt;&#010;+         &lt;name&gt;History&lt;/name&gt;&#010;+         &lt;page&gt;inversion-of-control-history.html&lt;/page&gt;&#010;+    &lt;/section&gt;&#010;+    &lt;section&gt;&#010;+         &lt;name&gt;Project Info&lt;/name&gt;&#010;+         &lt;page&gt;project.html&lt;/page&gt;&#010;+         &lt;page&gt;team.html&lt;/page&gt;&#010;+     &lt;/section&gt;&#010;+&lt;/sitemap&gt;&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/team.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/team.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/team.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/team.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,92 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Team&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;A project like Apache Composer is always made possible by the effort of a lot of people. Read about the developers and the contributers' names below. All of them have worked together to make Apache Composer the most respected IoC framework.&lt;/p&gt;&#010;+&lt;h2&gt;Committers&lt;/h2&gt;&#010;+Apache Composer committers introduce themselves in their own words and are listed in alphabetical order.&lt;br /&gt;&#010;+&lt;h3&gt;Paul Hammant&lt;/h3&gt;&#010;+&lt;p&gt;Paul is 39, has worked for ThoughtWorks  since 2002 and is co-founder of the PicoContainer project (precursor to Apache Composer). He used to freelance but is now very happy at TW. Paul practices XP on client sites and loves open source on which he is chief zealot for TW. He formerly worked at Apache on the Avalon project and remains there working on AltRMI. He loves the simplest thing as a design metaphor, hates too much XML. He loves the lowest common denominator (LCD) as a mechanism for facilitating divergent designs. To that end, he encourages multiple implementations of LCD ideas and APIs. Paul hopes to see Milli, Kilo and Mega implementations of the Pico idea. He hopes to see a myriad of interchangeable Apache Composer Components. He hopes to see standard APIs for components emerge from those implementations, but never be forced when teams cannot agree. It would be fairly easy to guess that Paul does not like big up-front design. That not withstanding the fact that &#010; he used to do bucket-loads of it Paul with Aslak, wrote the first lines. Paired, under the influence of a couple of beers, and based on Joe's story of Rachel Davies' comments to his setter injector IoC work at the start of June 2003.&lt;/p&gt;&#010;+&lt;p&gt;Paul is also well known for &lt;a href="http://sourceforge.net/projects/eob"&gt;Enterprise Object Broker&lt;/a&gt; and &lt;a href="http://jesktopapps.sf.net/"&gt;Jesktop&lt;/a&gt;, the &lt;a href="http://openqa.org/selenium-rc/"&gt;original driven side of Selenium&lt;/a&gt; and other stupid ideas like &lt;a href="http://sourceforge.net/projects/thicky"&gt;Thicky&lt;/a&gt; and related &lt;a href="http://paulhammant.com/blog/ruby-versus-javascript-for-web3.0.html"&gt;early Web 3.0 references&lt;/a&gt;&lt;/p&gt;&#010;+&lt;h3&gt;&lt;p&gt;Konstantin Pribluda&lt;/p&gt;&lt;/h3&gt;&#010;+&lt;p&gt;I'm 32 and live in Wiesbaden. I started programming at the age of 12 and had access to really cool systems ranging from WANG 3200 through PDP 8/11 to System-360 ( actually sovjet clones of them, but who cares? ). My first &amp;quot;paid for&amp;quot; work was in 1988, and from that point I financed my study freelance software development. I developed fiscal management systems, medical video archiving, internet applications for telcos and java applet games ( later was for personal fun )...&lt;/p&gt;&#010;+&lt;p&gt;After study I continued to freelance ( this time for better paying, but also fast failing ) companies and started to work on open source software ( xdoclet ). Now I'm permanently hired project leader, and I'am in position to use ( and develop ) whatever technologies I see fit - of course xdoclet, pico, nano and a lot of other stuff.&lt;/p&gt;&#010;+&lt;p&gt;My biggest private interest ( besides open source programming ) is mountainbike racing.&lt;/p&gt;&#010;+&lt;h3&gt;&lt;p&gt;J&amp;ouml;rg Schaible&lt;/p&gt;&lt;/h3&gt;&#010;+&lt;p&gt;I was invited by Paul and Aslak early in 2004 to participate on the development of this project. I am currently 36 and write code for nearly 20 years in several languages and lately also Java. I have experience in AI software, did system programming and developed and maintained a plattform-independent GUI and database framework, and had to deal with CMS programming in JavaScript and J2EE. I was always involved in automated builds and tests for all these projects and one artifact left is JsUnit.&lt;/p&gt;&#010;+&lt;p&gt;Pico got my interest after some first steps with IoC using the Avalon framework. I felt in love with Pico from the first moment, because of its simplicity and natural way of programming. Yet, there is a lot of space for further development on top of it and I am happy to be part of it.&lt;/p&gt;&#010;+&lt;p&gt;My interests besides programming are my wife (who always gets too less time), reading books (a lot of fantasy and SF stuff), hearing celtic-rooted music (although I like others also lot), and - when in mood - cooking&lt;/p&gt;&#010;+&lt;p&gt;Last, but not least, beeing a Christian is a part of my life, where I have my roots.&lt;/p&gt;&#010;+&lt;h4&gt;Mauro Talevi&lt;/h4&gt;&#010;+&lt;p&gt;I first came across Paul at an XTC (eXtreme Tuesdays Club) on Agile development at the Ol' Bank of England Pub in London. Back then Apache Composer had yet to be born. We were both working with Avalon IoC and in particular the Phoenix microkernel. Ever since discussing all the limitations of the Avalon framework - in particular the dependency on an API - I knew that the way forward was the Pico way.&lt;/p&gt;&#010;+&lt;p&gt;I've worked in Java and enterprise systems for several years in various business domains - ranging from space data search portal for ESA to real-time messaging at the BBC - and I've come to appreciate the beauty, elegance and power of CDI.&lt;/p&gt;&#010;+&lt;h3&gt;Michael Ward&lt;/h3&gt;&#010;+&lt;p&gt;I live in Chicago, or at least that is where all my bills are sent. As it seems to be the lingo, I was assimilated into ThoughtWorks back in 2003. I have been developing professionally since 1997 and have had the great opportunity to work and live in many great locations with some exceptionally talented individuals. I was immediately drawn to Apache Composer because of its simplicity. The API is small and does not force you to define all your configurations in XML. The projects I have worked on are easier to test, refactor, debug and extend because a natural side effect of utilizing CDI is a small and easy to comprehend code base. Mike leads the &lt;a href="http://waffle.codehaus.org/"&gt;Waffle web framework&lt;/a&gt; project (the easiest for Java we think). &lt;/p&gt;&#010;+&lt;p&gt;Have worked/contributed to MicroContainer, the JMX module for NanoContainer, Apache Composer.NET and NanoContainer.NET.&lt;/p&gt;&#010;+&lt;h3&gt;Michael Rimov&lt;/h3&gt;&#010;+&lt;p&gt;Michael came to the Java world after programming for about eight years in the Windows API.  He dove head first into Java J2EE frameworks by initially working with the popular heavyweight Expresso framework where he introduced unit testing to those developers. During his stint as Lead Developer, the framework's usage numbers exploded.  After about nine years working with J2EE, Michael found the joys of light weight components and Apache Composer and has been reaping the performance benefits of both ever since.  His goal is to see it NanoContainer/NanoWAR grow in the J2EE arena, while keeping Pico perfect for embedding in all applications.&lt;/p&gt;&#010;+&lt;p&gt;Michael works for Centerline Computers, Inc in Corvallis Oregon.&lt;/p&gt;&#010;+&lt;h3&gt;Jose Peleteiro&lt;/h3&gt;&#010;+&lt;p&gt;I live in Rio de Janeiro, Brazil.&lt;/p&gt;&#010;+&lt;p&gt;http://www.peleteiro.net&lt;/p&gt;&#010;+&lt;p&gt;Jose Peleteiro works for Neoris do Brasil.&lt;/p&gt;&#010;+&lt;h2&gt;Emeritus Committers&lt;/h2&gt;&#010;+&lt;p&gt;Emeritus committers are those committers who have contributed significantly to the development of the project, but have been inactive for a period amount of time.&lt;/p&gt;&#010;+&lt;p&gt; * Thomas Heller&lt;/p&gt;&#010;+&lt;h4&gt;Aslak Helles&amp;oslash;y&lt;/h4&gt;&#010;+&lt;p&gt;Aslak is very accomplished in the Open Source space and co-founder of Apache Composer. He leads XDoclet, and has taken over QDox from Joe. He wrote most of the impressive MiddleGen, and has refactored Generama out of both. From an observers point of view Aslak is prolific. Aslak was assimilated into ThoughtWorks in 2003. [ Words by Paul ]&lt;/p&gt;&#010;+&lt;p&gt; * Mike Hogan&lt;/p&gt;&#010;+&lt;p&gt; * Stephen L. Molitor&lt;/p&gt;&#010;+&lt;h4&gt;Dan North&lt;/h4&gt;&#010;+&lt;p&gt;Dan is a passionate Agile Coach and Developer. He's adept at a huge range of languages, with Ruby being his current favorite. This is his first foray into Open Source. Dan was assimilated into ThoughtWorks in 2002. [ Words by Paul ]&lt;/p&gt;&#010;+&lt;p&gt; * Leo Simons&lt;/p&gt;&#010;+&lt;p&gt; * Chris Stevenson&lt;/p&gt;&#010;+&lt;h4&gt;James Strachan&lt;/h4&gt;&#010;+&lt;p&gt;James used to dislike IoC, when the type that forced you to implement interfaces was the only choice. He championed the whole 'beans' effort at Apache, particularly in Jakarta-Commons. Most recently he's one of the the technical figurehead of LogicBlaze and a key in the  Apache Geronimo project. Most exciting of all of James' activities has been as initial lead of the Groovy language (thank god James got off his XML horse - Ed). James refuses to join ThoughtWorks. [ Words by Paul ]&lt;/p&gt;&#010;+&lt;h4&gt;Jon Tirs&amp;eacute;n&lt;/h4&gt;&#010;+&lt;p&gt;Jon is a passionate fellow who's invidually accomplished in the Open Source space. Nanning is one of his babies, and he's a committer to Prevayler. With Aslak, DamageControl is is latest project. Jon was assimilated into ThoughtWorks in 2003. Latterly in Australia, he leads some of the &lt;a href="http://studios.thoughtworks.com/"&gt;ThoughtWorks Studios&lt;/a&gt; developments. [ Words by Paul ]&lt;/p&gt;&#010;+&lt;h4&gt;Joe Walnes&lt;/h4&gt;&#010;+&lt;p&gt;Joe Walnes is one of those high accomplished people, with a trail of &amp;quot;I must work with him&amp;quot; fans and quality Open Source projects behind him. He wrote SiteMesh, and large chunks of OpenSymphony. He started QDox, and XStream. One of the unsung heroes of Java/.Net development. Joe was assimilated into ThoughtWorks in 2002, then Google in 2006. [ Words by Paul ]&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;h3&gt;&lt;/h3&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;p&gt;Contributers&lt;/p&gt;&#010;+&lt;p&gt;A lot of people have contributed ideas and code to the Apache Composer's code base. See the names in the list below in alphabetical order.&lt;/p&gt;&#010;+&lt;p&gt; * Nicolas Averseng&lt;br /&gt;&#010;+  * Mathias Bogaert&lt;br /&gt;&#010;+  * Rao Chejarla&lt;br /&gt;&#010;+  * Jeppe Cramon&lt;br /&gt;&#010;+  * Stacy Curl&lt;br /&gt;&#010;+  * Laurent Etiemble&lt;br /&gt;&#010;+  * Scott Farquhar&lt;br /&gt;&#010;+  * Obie Fernandez&lt;br /&gt;&#010;+  * Jay Fields&lt;br /&gt;&#010;+  * Steve Freeman&lt;br /&gt;&#010;+  * Mario Gutierrez&lt;br /&gt;&#010;+  * Matt Ho&lt;br /&gt;&#010;+  * Jacob Kjome&lt;br /&gt;&#010;+  * Rafal Krzewski&lt;br /&gt;&#010;+  * Aapo Laakkonen&lt;br /&gt;&#010;+  * Graham Lea&lt;br /&gt;&#010;+  * Philipp Meier&lt;br /&gt;&#010;+  * Zohar Melamed&lt;br /&gt;&#010;+  * Kouhei Mori&lt;br /&gt;&#010;+  * Mirco Novakovic&lt;br /&gt;&#010;+  * Rickard &amp;Ouml;berg&lt;br /&gt;&#010;+  * Kevin O'Neill&lt;br /&gt;&#010;+  * Miguel A. Paraz&lt;br /&gt;&#010;+  * Gilles Philippart&lt;br /&gt;&#010;+  * Michael Rettig&lt;br /&gt;&#010;+  * Adam Rosien&lt;br /&gt;&#010;+  * Pedro Santos&lt;br /&gt;&#010;+  * Jens Schumann&lt;br /&gt;&#010;+  * Nick Sieger&lt;br /&gt;&#010;+  * Paulo Silvera&lt;br /&gt;&#010;+  * Vincent Tence&lt;br /&gt;&#010;+  * Calvin Yu&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/terminology.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/terminology.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/terminology.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/terminology.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,145 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&lt;!DOCTYPE html&#010;+    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&#010;+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;&#010;+&lt;head&gt;&#010;+    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;&#010;+    &lt;title&gt;Terminology&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&#010;+&lt;h2&gt;Overview&lt;/h2&gt;&#010;+&#010;+&lt;p&gt;These can be arrived at from the definitions.&lt;/p&gt;&#010;+&lt;ul&gt;&#010;+    &lt;li&gt;Everything is an object&lt;/li&gt;&#010;+    &lt;li&gt;Everything which is not a Contextualized Lookup component nor a domain-specific object is a POJO&lt;/li&gt;&#010;+    &lt;li&gt;A Setter Dependency Injection (SDI) component is a JavaBean, and a JavaBean is an SDI component&lt;/li&gt;&#010;+    &lt;li&gt;A Contructor Dependency Injection (CDI) Component is not a JavaBean, but is a POJO&lt;/li&gt;&#010;+    &lt;li&gt;A JavaBean can be any of the three types of IoC and domain-specific all at the same time&lt;/li&gt;&#010;+    &lt;li&gt;Spring, Apache Composer, XWork and other frameworks all support both Components and Data Objects to some&#010;+        extend. Avalon tries real hard to not support Data Objects, but that is nearly impossible.&#010;+    &lt;/li&gt;&#010;+&lt;/ul&gt;&#010;+&lt;h2&gt;Terms&lt;/h2&gt;&#010;+&#010;+&lt;h3&gt;Object or Instance&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An &amp;quot;object&amp;quot; as per the Java Language Specification.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Class&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A &amp;quot;class&amp;quot; as per the Java Language Specification.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;POJO&#010;+                                                                                                               (Plain&#010;+                                                                                                               Old&#010;+                                                                                                               Java&#010;+                                                                                                               Object)&#010;+&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that does not use nor support any other kind of component/bean specification. It does not implement&#010;+   any lifecycle or marker interfaces, it does not provide any kind of metadata. Will usually follow the minimum&#010;+   requirements for classifying it as a JavaBean though.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Javabean / Bean&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that is a &amp;quot;valid java bean&amp;quot; according to the JavaBean Specification. That is, an object&#010;+   that has a public default constructor, and that supports setting and/or retrieving all or a part of its state&#010;+   using so-called setter and getter methods, which are named getXXX(), setXXX() or isXXX(), where XXX&#010;+   identifies part of its state. The JavaBean specification defines a metadata framework, an event framework,&#010;+   and some other things which are less relevant in this context. A JavaBean may represent both data and&#010;+   functionality.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Data Object / Entity Bean / Data Bean / PODO&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that only represents data, but contains no 'logic' or any kind of other functionality (except for&#010;+   perhaps some utility methods that transform the data into some other form, like getXXXasString(). Will often&#010;+   override equals() and hashCode(); will often be serializable. Does not create threads, does not keep&#010;+   references to non-data objects.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that only represents functionality. It is a &amp;quot;unit of logic&amp;quot;, that can &amp;quot;do work&amp;quot;.&#010;+   In a well-designed application, the work that a component can do is specified in a work interface. Will&#010;+   usually not override equals() or hashCode(). It typically coexists with other components of the same language in the same application or server process.&lt;/p&gt;&#010;+&lt;h3&gt;Service&lt;/h3&gt;&#010;+&lt;p&gt;One or more components that communicate with others over the wire. Services, laced together for some large stack, may be from different technologies or languages, and share only the specification of the wire protocol. Service implies remoteness and potential unavailability or outage.&lt;/p&gt;&#010;+&lt;h3&gt;Passive Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that does not use threads (not even indirectly).&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Active Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that uses threads (possibly indirectly through the use of a Thread Pool or Executor&#010;+   component).&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Contextualized Dependancy Lookup&#010;+                                                                       Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that has a public default constructor and that usually has its state set up and/or modified&#010;+   through the use of some kind of framework-specific mechanism.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Setter&#010;+                                                                                                       Injection&#010;+                                                                                                       Component&#010;+&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that has a public default constructor and that has its state set up through the use of setter&#010;+   methods.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Constructor Injection Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that has one or more public constructors and that has its state set up through the arguments&#010;+   provided in one of these constructors.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Constructor/ Setter Dependency&#010;+                                                                                Injection Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that has a public constructor and that has its state set up through the arguments provided in&#010;+   that constructor and through the use of setter methods.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;IoC Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that does not implement any kind of logic to set up its own state, but completely depends on&#010;+   other parties to provide that state to it.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Non-IoC Component&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;A component that implements some kind of logic to set up its own state. Examples: a component that reads an&#010;+   XML file; a component that looks up dependencies in JNDI; a component that queries system properties.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Domain-Specific&#010;+                                                                                               Object&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that implements a specification that is less generic than Java itself in its applicability.&#010;+   Example: EJB, Servlets.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Spring-supported&#010;+                                                                                                 Object&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that can be 'natively' used in the Spring Framework. Any JavaBean (with some extensions to that&#010;+   specification like &amp;quot;initialization completion&amp;quot; support), any object with a public default&#010;+   constructor that does not require any method calls to set up its state.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Apache Composer-supported&#010;+                                                                                                               Object&#010;+&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that can be 'natively' used in Apache Composer. Any Type-3 component.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;XWork-supported&#010;+                                                                                               Object&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that can be 'natively' used in the XWork Framework. Any object with a public default constructor&#010;+   that has its state set up through XXXAware interfaces.&lt;/p&gt;&#010;+&#010;+&lt;h3&gt;Fail Fast&lt;/h3&gt;&#010;+&#010;+&lt;p&gt;An object that fails fast is an object that indicates as early as possible if it is in an inconsistent or&#010;+   unusable state (by throwing a fatal exception). The fastest possible way to FailFast is to do so during&#010;+   instantiation. This can be handled in an elegant way if the class is a GoodCitizen.&lt;/p&gt;&#010;+&#010;+&lt;/body&gt;&#010;+&lt;/html&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/content/transparency.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/transparency.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/transparency.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/transparency.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,25 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&#010;+&lt;html&gt;&#010;+&lt;head&gt;&#010;+&lt;title&gt;Transparency&lt;/title&gt;&#010;+&lt;/head&gt;&#010;+&lt;body&gt;&#010;+&lt;p&gt;Transparency, for Apache Composer, means that components do not have to implement any interface or abstraction in order to be components. Moreover, components do not have to adhere to any naming conventions or bundle any meta-data in order to qualify as components.  &lt;/p&gt;&#010;+&lt;p&gt;Constructor Injection is what we recommend, so the minimum definition of a component is a simple class that takes its dependencies in its constructor. For Setter Injection, it is a class with dependencies delivered via simple setters. Your components may be interface / impl separated, but we are not forcing that for interop with Apache Composer.&lt;/p&gt;&#010;+&lt;p&gt;If you live with this ideal, you may be able to use the components you design for Apache Composer with other frameworks or containers. I.e. you are not locked in. We suggest you choose other technologies that are similarly light on API and framework, and could be characterised as transparent. Good examples are XStream, Sitemesh and anything that deals with POJOs.&lt;/p&gt;&#010;+&lt;p&gt;There are some exceptions, to this goal of ours.&lt;/p&gt;&#010;+&lt;h2&gt;Lifecycle&lt;/h2&gt;&#010;+&lt;p&gt;Java does not have a Startable interface, nor does it have a Disposable (.Net has IDisposable), so we made our own. You can use ours or your own in a similar design. If you use your own, you may want to extend StartableLifecycleStrategy and override a couple of methods. That's if you need lifecycle at all.&lt;/p&gt;&#010;+&lt;p&gt;If a Startable inerface goes into J2SE, then it will probably be supported.&lt;/p&gt;&#010;+&lt;h2&gt;Annotations&lt;/h2&gt;&#010;+&lt;p&gt;We also support @Inject as an annotation for methods and fields. This is a variation of Setter Injection. The annotations are part of our codebase. Again, you can use your own, or others if you override one of the two classes from Apache Composer's codebase &lt;strong&gt;AnnotatedFieldInjection&lt;/strong&gt; and &lt;strong&gt;AnnotatedMethodInjection&lt;/strong&gt;.&lt;/p&gt;&#010;+&lt;p&gt;Annotations are a break with transparency, so we don't recomend them - stick to vanilla Constructor Injection if you can.&lt;/p&gt;&#010;+&lt;p&gt;If a simple @Inject annotation goes into J2SE, then it will probably be supported. &lt;/p&gt;&#010;+&lt;p&gt;&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;/body&gt;&#010;+&#010;+&#010;+&#010;+&lt;/html&gt;&#010;&#010;&#010;&#010;
</pre>
</div>
</content>
</entry>
<entry>
<title>svn commit: r618174 [4/5] - in /incubator/composer/trunk: ./ composer-site/ composer-site/src/ composer-site/src/assembly/ composer-site/src/config/ composer-site/src/resources/ composer-site/src/resources/images/ composer-site/src/resources/style/ com...</title>
<author><name>hammant@apache.org</name></author>
<link rel="alternate" href="http://mail-archives.apache.org/mod_mbox/incubator-composer-commits/200802.mbox/%3c20080204063336.140A91A9846@eris.apache.org%3e"/>
<id>urn:uuid:%3c20080204063336-140A91A9846@eris-apache-org%3e</id>
<updated>2008-02-04T06:33:26Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<pre>
Added: incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/content/web-frameworks.html Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,93 @@&#010;+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&#010;+&lt;html&gt;&lt;head&gt;&#010;+&lt;title&gt;Web Frameworks&lt;/title&gt;&lt;/head&gt;&#010;+&#010;+&#010;+&lt;body&gt;&#010;+&lt;p&gt;This page follows on from the &lt;a href="scopes.html"&gt;scopes&lt;/a&gt; page&lt;/p&gt;&#010;+&lt;h2&gt;Web Containers / Web Frameworks&lt;/h2&gt;&#010;+&lt;p&gt;There are only about a million Java web-frameworks for Java. There&#010;+more recent and sophisticated ones try to do Dependency Injection for&#010;+'actions' or 'controllers'. &lt;/p&gt;&#010;+&lt;p&gt;If you want to use Apache Composer for a web framework, then you're&#010;+likely to end up with three container levels. The root container would&#010;+be common to all and known as the &lt;strong&gt;application scoped&lt;/strong&gt; container. Next is a &lt;strong&gt;session-scoped&lt;/strong&gt; one, with the app one marked as its parent. Lastly a &lt;strong&gt;request scoped&lt;/strong&gt;&#010;+one, with the session one marked as its parent. There are two&#010;+not-so-subtle varations on how they would be used. One, we poineered&#010;+with Apache Composer 1.x in 2003, the other inroduced with Apache Composer&#010;+2.x in 2007.&lt;/p&gt;&#010;+&lt;h3&gt;Apache Composer and web frameworks - the old way.&lt;/h3&gt;&#010;+&lt;p&gt;You make one instance of the app container. For each new HTTP&#010;+Session you make a new session level container, and put it into the&#010;+session itself - refer HttpSession.setAttribute(key,val). For each&#010;+request, you make a new Request level container and discard it at the&#010;+end of the request. For as long as it lives, the request level&#010;+container's parent would be the session container.&lt;/p&gt;&#010;+&lt;p&gt;There are two downsides of this approach. 1) you have to repeatedly&#010;+add components to the session and request containers as they are&#010;+instantiated. 2) the serialization of the session (by Tomcat etc) might&#010;+cause more things to be serialized than you intend - i.e. the session&#010;+container refers to the application container.&lt;/p&gt;&#010;+&lt;h3&gt;Apache Composer and web frameworks - the new way.&lt;/h3&gt;&#010;+&lt;p&gt;You make one instance of the app, session and request container on&#010;+servlet load. For the Application one, you choose Caching as the&#010;+behavior factory. For the session and request level ones, you choose&#010;+Storing instead. You wrap the Storing behavior factory instances in&#010;+HttpSessionStoring and reprogram each http request like so:&lt;/p&gt;&#010;+&lt;div class="source"&gt;&#010;+  &lt;pre&gt;public class MyTinyApacheComposerServlet extends HttpServlet {&#010;+&#010;+    private DefaultApache Composer requestContainer;&#010;+&#010;+    private HttpSessionStoring sessionStoring;&#010;+    private HttpSessionStoring requestStoring;&#010;+&#010;+    public void init(ServletConfig cfg) throws ServletException {&#010;+&#010;+        Apache Composer appContainer = new DefaultApache Composer(new Caching()); // app scoped components are cached for all users/sessions&#010;+&#010;+        Storing storingBehavior1 = new Storing();&#010;+        Apache Composer sessionContainer = new DefaultApache Composer(storingBehavior1, appContainer);&#010;+        sessionStoringAdapter = new HttpSessionStoringAdapter(storingBehavior1, "sessionStore");&#010;+&#010;+        Storing storingBehavior2 = new Storing();&#010;+        requestContainer = new DefaultApache Composer(storingBehavior2, sessionContainer);&#010;+        requestStoringAdapter = new HttpSessionStoringAdapter(storingBehavior2, "requestStore");&#010;+&#010;+        // populate app, session and request scoped containers.&#010;+        appContainer.addComponent(HibernateManager.class, MyHibernateManager.class); // all sessions share one HibernateManager&#010;+        sessionContainer.addComponent(ShoppingCart.class, FifoCart.class); // a new cart per user&#010;+        requestContainer.addComponent("/addToCart.do", AddToCart.class); // key crudely maps to URL&#010;+        requestContainer.addComponent("/removeFromCart.do", RemoveFromCart.class);&#010;+        // etc&#010;+&#010;+    }&#010;+&#010;+    protected void service(HttpServletRequest req, HttpServletResponse resp)&#010;+        throws ServletException, IOException {&#010;+&#010;+        sessionStoringAdapter.retrieveOrCreateStore(req.getSession()); // associate thread with session, for caching (session scoped components)&#010;+        requestStoringAdapter.resetStore(); // cache components per request (request scoped components)&#010;+&#010;+        Action action = (Action) requestContainer.getComponent(req.getPathTranslated());&#010;+&#010;+        try {&#010;+            action.execute(req, resp); // yeah yeah, this is pretty basic&#010;+        } finally {&#010;+            sessionStoringAdapter.invalidateStore();&#010;+            requestStoringAdapter.invalidateStore();&#010;+        }&#010;+        // trying to retrieve components from at session or request scopes from here on will result in an UnsupportedOperationException&#010;+    }&#010;+&#010;+}&#010;+&lt;/pre&gt;&#010;+&lt;/div&gt;&#010;+&lt;p&gt;The HttpSessionStoring class is not in the core jar, its in the&#010;+'gems' one. If you don't want a second jar - copy the class (it's real&#010;+simple) to your web framework's codebase.&lt;/p&gt;&#010;+&lt;h2&gt;Real Web Frameworks&lt;/h2&gt;&#010;+&lt;p&gt;&lt;a href="http://waffle.codehaus.org"&gt;Waffle&lt;/a&gt; - hopefully the pinnacle of Java action/controller web-frameworks.&lt;/p&gt;&#010;+&lt;p&gt;&amp;nbsp;&lt;/p&gt;&#010;+&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&#010;+&lt;/body&gt;&lt;/html&gt;&#010;\ No newline at end of file&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/images/apple-implements-peelable.png&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/images/apple-implements-peelable.png?rev=618174&amp;view=auto&#010;==============================================================================&#010;Binary file - no diff available.&#010;&#010;Propchange: incubator/composer/trunk/composer-site/src/site/resources/images/apple-implements-peelable.png&#010;------------------------------------------------------------------------------&#010;    svn:mime-type = application/octet-stream&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/images/complex-dependencies.png&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/images/complex-dependencies.png?rev=618174&amp;view=auto&#010;==============================================================================&#010;Binary file - no diff available.&#010;&#010;Propchange: incubator/composer/trunk/composer-site/src/site/resources/images/complex-dependencies.png&#010;------------------------------------------------------------------------------&#010;    svn:mime-type = application/octet-stream&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/images/information.gif&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/images/information.gif?rev=618174&amp;view=auto&#010;==============================================================================&#010;Binary file - no diff available.&#010;&#010;Propchange: incubator/composer/trunk/composer-site/src/site/resources/images/information.gif&#010;------------------------------------------------------------------------------&#010;    svn:mime-type = application/octet-stream&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/images/ioc-timeline.graffle&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/images/ioc-timeline.graffle?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/images/ioc-timeline.graffle (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/images/ioc-timeline.graffle Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,1794 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&lt;!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;&#010;+&lt;plist version="1.0"&gt;&#010;+&lt;dict&gt;&#010;+&#009;&lt;key&gt;ActiveLayerIndex&lt;/key&gt;&#010;+&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&lt;key&gt;AutoAdjust&lt;/key&gt;&#010;+&#009;&lt;true/&gt;&#010;+&#009;&lt;key&gt;CanvasColor&lt;/key&gt;&#010;+&#009;&lt;dict&gt;&#010;+&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&lt;/dict&gt;&#010;+&#009;&lt;key&gt;CanvasOrigin&lt;/key&gt;&#010;+&#009;&lt;string&gt;{0, 0}&lt;/string&gt;&#010;+&#009;&lt;key&gt;CanvasScale&lt;/key&gt;&#010;+&#009;&lt;real&gt;1&lt;/real&gt;&#010;+&#009;&lt;key&gt;ColumnAlign&lt;/key&gt;&#010;+&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&lt;key&gt;ColumnSpacing&lt;/key&gt;&#010;+&#009;&lt;real&gt;36&lt;/real&gt;&#010;+&#009;&lt;key&gt;CreationDate&lt;/key&gt;&#010;+&#009;&lt;string&gt;2007-07-05 07:41:06 -0700&lt;/string&gt;&#010;+&#009;&lt;key&gt;Creator&lt;/key&gt;&#010;+&#009;&lt;string&gt;Paul Hammant&lt;/string&gt;&#010;+&#009;&lt;key&gt;DisplayScale&lt;/key&gt;&#010;+&#009;&lt;string&gt;1 in = 1 in&lt;/string&gt;&#010;+&#009;&lt;key&gt;GraphDocumentVersion&lt;/key&gt;&#010;+&#009;&lt;integer&gt;5&lt;/integer&gt;&#010;+&#009;&lt;key&gt;GraphicsList&lt;/key&gt;&#010;+&#009;&lt;array&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{527.868, 135.328}, {42, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;61&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Guice}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;60&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{567, 142.825}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{607, 142.825}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;b&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;g&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;r&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.501961&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;3&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{649.5, 221}, {91, 28}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;58&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 contextualized \&#010;+lookup}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{629, 208}, {23, 43}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;48&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;57&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs72 \cf0 \}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{656, 153}, {78, 56}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;56&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Original\&#010;+Dependency\&#010;+Injection\&#010;+Frameworks}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{629, 150}, {27, 58}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;48&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;55&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs96 \cf0 \}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{332.5, 202}, {81, 28}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;54&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Bob C Martin\&#010;+DIP article}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;53&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{372.5, 223.227}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{372.5, 257.227}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Pattern&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{325.124, 303.955}, {73, 70}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;52&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 GoF \&#010;+reference\&#010;+to\&#010;+"Hollywood \&#010;+Pattern"}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;50&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{361.124, 328}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{361.124, 271}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Pattern&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{531.455, 156}, {45, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;a&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.53&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;48&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;47&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.48993289470672607&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Spring}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;47&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{503.003, 163}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{607, 163}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;b&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;g&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;r&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.501961&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;3&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{524.868, 176}, {61, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;46&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;45&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.44597944617271423&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Hivemind}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;45&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{513, 183}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{608, 183}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;b&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;g&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;r&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.501961&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;3&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{396, 27.509}, {67, 84}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;44&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Steffano\&#010;+Mazzocchi\&#010;+starts\&#010;+IoC\&#010;+band \&#010;+wagon}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;43&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{429, 93}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{429, 212}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Pattern&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{417, 309.773}, {59, 70}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;40&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Foote &amp;amp;\&#010;+Yoder\&#010;+"Big Ball \&#010;+of Mud"\&#010;+article}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;39&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{446, 334}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{446, 271}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Pattern&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{484.5, 62.0068}, {53, 56}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;35&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;34&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.032467532902956009&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Spring\&#010;+&amp;amp; Pico\&#010;+projects\&#010;+start}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;34&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{511, 88}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{511, 149.809}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Pattern&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{492.5, 289.136}, {61, 70}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;33&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;31&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.032467532902956009&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Martin \&#010;+Fowler\&#010;+publishes\&#010;+Injection\&#010;+article}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;31&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{523, 328}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{523, 209}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Pattern&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{175.683, 111.656}, {135, 28}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;29&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;28&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.23357692360877991&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Smalltalk developers \&#010;+doing constructors right}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;28&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{132, 125.656}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{608, 125.656}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;b&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;g&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.501961&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;r&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;3&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{540.503, 195}, {34, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;25&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;24&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.48993289470672607&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Pico}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;24&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{509, 202}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{608, 202}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;b&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;g&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;r&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.501961&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;3&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{451.214, 235.5}, {40, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;22&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;21&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.25659963488578796&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 OSGi}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;21&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{424, 242.5}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{608, 242.5}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;b&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;g&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.501961&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;r&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;3&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{449.5, 215.227}, {47, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FontInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Font&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;Helvetica&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Size&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;12&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;20&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Line&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;19&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Position&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;real&gt;0.32885900139808655&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;RotationType&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 Avalon}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;19&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{424, 222.227}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{573, 222.227}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Color&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;b&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;g&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0.501961&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;key&gt;r&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NegativeControls&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;3&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;16&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{662.438, 262}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{662.438, 261}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;5&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;15&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{465, 262}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{465, 261}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;5&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;14&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{267.562, 262}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{267.562, 261}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;5&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;9&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{70.125, 262}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{70.125, 261}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;5&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{644.438, 284}, {37, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;8&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 2010}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{447, 284}, {37, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;7&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 2000}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{249.562, 284}, {37, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;6&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 1990}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{52.125, 284}, {37, 14}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;3&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}&#010;+{\colortbl;\red255\green255\blue255;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural&#010;+&#010;+\f0\fs24 \cf0 1980}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Wrap&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;LineGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;2&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Points&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{65.5625, 266}&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{709, 266}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;HeadArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;FilledArrow&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;TailArrow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Width&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;real&gt;5&lt;/real&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&lt;/array&gt;&#010;+&#009;&lt;key&gt;GridInfo&lt;/key&gt;&#010;+&#009;&lt;dict/&gt;&#010;+&#009;&lt;key&gt;GuidesLocked&lt;/key&gt;&#010;+&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&lt;key&gt;GuidesVisible&lt;/key&gt;&#010;+&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&lt;key&gt;HPages&lt;/key&gt;&#010;+&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&lt;key&gt;ImageCounter&lt;/key&gt;&#010;+&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&lt;key&gt;IsPalette&lt;/key&gt;&#010;+&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&lt;key&gt;KeepToScale&lt;/key&gt;&#010;+&#009;&lt;false/&gt;&#010;+&#009;&lt;key&gt;Layers&lt;/key&gt;&#010;+&#009;&lt;array&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Lock&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Name&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Layer 1&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Print&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;View&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&lt;/array&gt;&#010;+&#009;&lt;key&gt;LayoutInfo&lt;/key&gt;&#010;+&#009;&lt;dict/&gt;&#010;+&#009;&lt;key&gt;LinksVisible&lt;/key&gt;&#010;+&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&lt;key&gt;MagnetsVisible&lt;/key&gt;&#010;+&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&lt;key&gt;MasterSheet&lt;/key&gt;&#010;+&#009;&lt;string&gt;Master 1&lt;/string&gt;&#010;+&#009;&lt;key&gt;MasterSheets&lt;/key&gt;&#010;+&#009;&lt;array&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ActiveLayerIndex&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;AutoAdjust&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;true/&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;CanvasColor&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;CanvasOrigin&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{0, 0}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;CanvasScale&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;real&gt;1&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ColumnAlign&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ColumnSpacing&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;real&gt;36&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;DisplayScale&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;1 in = 1 in&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;GraphicsList&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array/&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;GridInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict/&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;HPages&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;IsPalette&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;KeepToScale&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;false/&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Layers&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Lock&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Name&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;Layer 1&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Print&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;View&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;LayoutInfo&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict/&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Orientation&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;2&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;OutlineStyle&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Basic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;RowAlign&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;RowSpacing&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;real&gt;36&lt;/real&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;SheetTitle&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Master 1&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;UniqueID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;VPages&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&#009;&lt;/dict&gt;&#010;+&#009;&lt;/array&gt;&#010;+&#009;&lt;key&gt;ModificationDate&lt;/key&gt;&#010;+&#009;&lt;string&gt;2007-07-21 19:46:55 -0700&lt;/string&gt;&#010;+&#009;&lt;key&gt;Modifier&lt;/key&gt;&#010;+&#009;&lt;string&gt;Paul Hammant&lt;/string&gt;&#010;+&#009;&lt;key&gt;NotesVisible&lt;/key&gt;&#010;+&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&lt;key&gt;Orientation&lt;/key&gt;&#010;+&#009;&lt;integer&gt;2&lt;/integer&gt;&#010;+&#009;&lt;key&gt;OriginVisible&lt;/key&gt;&#010;+&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&lt;key&gt;OutlineStyle&lt;/key&gt;&#010;+&#009;&lt;string&gt;Basic&lt;/string&gt;&#010;+&#009;&lt;key&gt;PageBreaks&lt;/key&gt;&#010;+&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&lt;key&gt;PrintInfo&lt;/key&gt;&#010;+&#009;&lt;dict&gt;&#010;+&#009;&#009;&lt;key&gt;NSBottomMargin&lt;/key&gt;&#010;+&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;float&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&lt;key&gt;NSLeftMargin&lt;/key&gt;&#010;+&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;float&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&lt;key&gt;NSOrientation&lt;/key&gt;&#010;+&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;int&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&lt;key&gt;NSPaperSize&lt;/key&gt;&#010;+&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;size&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{792, 612}&lt;/string&gt;&#010;+&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&lt;key&gt;NSRightMargin&lt;/key&gt;&#010;+&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;float&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&lt;/array&gt;&#010;+&#009;&#009;&lt;key&gt;NSTopMargin&lt;/key&gt;&#010;+&#009;&#009;&lt;array&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;float&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&lt;/array&gt;&#010;+&#009;&lt;/dict&gt;&#010;+&#009;&lt;key&gt;ReadOnly&lt;/key&gt;&#010;+&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&lt;key&gt;RowAlign&lt;/key&gt;&#010;+&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&lt;key&gt;RowSpacing&lt;/key&gt;&#010;+&#009;&lt;real&gt;36&lt;/real&gt;&#010;+&#009;&lt;key&gt;SheetTitle&lt;/key&gt;&#010;+&#009;&lt;string&gt;Canvas 1&lt;/string&gt;&#010;+&#009;&lt;key&gt;SmartAlignmentGuidesActive&lt;/key&gt;&#010;+&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&lt;key&gt;SmartDistanceGuidesActive&lt;/key&gt;&#010;+&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&lt;key&gt;UniqueID&lt;/key&gt;&#010;+&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&lt;key&gt;UseEntirePage&lt;/key&gt;&#010;+&#009;&lt;true/&gt;&#010;+&#009;&lt;key&gt;VPages&lt;/key&gt;&#010;+&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&lt;key&gt;WindowInfo&lt;/key&gt;&#010;+&#009;&lt;dict&gt;&#010;+&#009;&#009;&lt;key&gt;CurrentSheet&lt;/key&gt;&#010;+&#009;&#009;&lt;string&gt;0&lt;/string&gt;&#010;+&#009;&#009;&lt;key&gt;DrawerOpen&lt;/key&gt;&#010;+&#009;&#009;&lt;false/&gt;&#010;+&#009;&#009;&lt;key&gt;DrawerTab&lt;/key&gt;&#010;+&#009;&#009;&lt;string&gt;Outline&lt;/string&gt;&#010;+&#009;&#009;&lt;key&gt;DrawerWidth&lt;/key&gt;&#010;+&#009;&#009;&lt;real&gt;209&lt;/real&gt;&#010;+&#009;&#009;&lt;key&gt;FitInWindow&lt;/key&gt;&#010;+&#009;&#009;&lt;false/&gt;&#010;+&#009;&#009;&lt;key&gt;Frame&lt;/key&gt;&#010;+&#009;&#009;&lt;string&gt;{{330, 31}, {898, 815}}&lt;/string&gt;&#010;+&#009;&#009;&lt;key&gt;ShowRuler&lt;/key&gt;&#010;+&#009;&#009;&lt;false/&gt;&#010;+&#009;&#009;&lt;key&gt;ShowStatusBar&lt;/key&gt;&#010;+&#009;&#009;&lt;true/&gt;&#010;+&#009;&#009;&lt;key&gt;VisibleRegion&lt;/key&gt;&#010;+&#009;&#009;&lt;string&gt;{{-56, -62}, {883, 701}}&lt;/string&gt;&#010;+&#009;&#009;&lt;key&gt;Zoom&lt;/key&gt;&#010;+&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&lt;/dict&gt;&#010;+&lt;/dict&gt;&#010;+&lt;/plist&gt;&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/images/ioc-timeline.png&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/images/ioc-timeline.png?rev=618174&amp;view=auto&#010;==============================================================================&#010;Binary file - no diff available.&#010;&#010;Propchange: incubator/composer/trunk/composer-site/src/site/resources/images/ioc-timeline.png&#010;------------------------------------------------------------------------------&#010;    svn:mime-type = application/octet-stream&#010;&#010;Added: incubator/composer/trunk/composer-site/src/site/resources/images/ioc-venn.graffle&#010;URL: http://svn.apache.org/viewvc/incubator/composer/trunk/composer-site/src/site/resources/images/ioc-venn.graffle?rev=618174&amp;view=auto&#010;==============================================================================&#010;--- incubator/composer/trunk/composer-site/src/site/resources/images/ioc-venn.graffle (added)&#010;+++ incubator/composer/trunk/composer-site/src/site/resources/images/ioc-venn.graffle Sun Feb  3 22:33:20 2008&#010;@@ -0,0 +1,755 @@&#010;+&lt;?xml version="1.0" encoding="UTF-8"?&gt;&#010;+&lt;!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;&#010;+&lt;plist version="1.0"&gt;&#010;+&lt;dict&gt;&#010;+&#009;&lt;key&gt;ActiveLayerIndex&lt;/key&gt;&#010;+&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&lt;key&gt;AutoAdjust&lt;/key&gt;&#010;+&#009;&lt;true/&gt;&#010;+&#009;&lt;key&gt;CanvasColor&lt;/key&gt;&#010;+&#009;&lt;dict&gt;&#010;+&#009;&#009;&lt;key&gt;w&lt;/key&gt;&#010;+&#009;&#009;&lt;string&gt;1&lt;/string&gt;&#010;+&#009;&lt;/dict&gt;&#010;+&#009;&lt;key&gt;CanvasOrigin&lt;/key&gt;&#010;+&#009;&lt;string&gt;{0, 0}&lt;/string&gt;&#010;+&#009;&lt;key&gt;CanvasScale&lt;/key&gt;&#010;+&#009;&lt;real&gt;1&lt;/real&gt;&#010;+&#009;&lt;key&gt;ColumnAlign&lt;/key&gt;&#010;+&#009;&lt;integer&gt;1&lt;/integer&gt;&#010;+&#009;&lt;key&gt;ColumnSpacing&lt;/key&gt;&#010;+&#009;&lt;real&gt;36&lt;/real&gt;&#010;+&#009;&lt;key&gt;CreationDate&lt;/key&gt;&#010;+&#009;&lt;string&gt;2007-08-03 08:18:12 -0700&lt;/string&gt;&#010;+&#009;&lt;key&gt;Creator&lt;/key&gt;&#010;+&#009;&lt;string&gt;Paul Hammant&lt;/string&gt;&#010;+&#009;&lt;key&gt;DisplayScale&lt;/key&gt;&#010;+&#009;&lt;string&gt;1 in = 1 in&lt;/string&gt;&#010;+&#009;&lt;key&gt;GraphDocumentVersion&lt;/key&gt;&#010;+&#009;&lt;integer&gt;5&lt;/integer&gt;&#010;+&#009;&lt;key&gt;GraphicsList&lt;/key&gt;&#010;+&#009;&lt;array&gt;&#010;+&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Bounds&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;{{502, 290.5}, {51, 49}}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Class&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;ShapedGraphic&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;FitText&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;YES&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Flow&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Resize&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;ID&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;integer&gt;22&lt;/integer&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Shape&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;string&gt;Rectangle&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Style&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;fill&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;shadow&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;stroke&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;key&gt;Draws&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&#009;&lt;string&gt;NO&lt;/string&gt;&#010;+&#009;&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&lt;dict&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Align&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;integer&gt;0&lt;/integer&gt;&#010;+&#009;&#009;&#009;&#009;&lt;key&gt;Text&lt;/key&gt;&#010;+&#009;&#009;&#009;&#009;&lt;string&gt;{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420&#010;+{\fonttbl\f0\fnil\fcharset111 ZapfDingbatsITC;}&#010;+{\colortbl;\red255\green255\blue255;\red0\green255\blue0;}&#010;+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural&#010;+&#010;+\f0\fs96 \cf2 4}&lt;/string&gt;&#010;+&#009;&#009;&#009;&lt;/dict&gt;&#010;+&#009