You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by Andreas Andreou <an...@di.uoa.gr> on 2011/02/09 22:49:00 UTC

Re: svn commit: r1069114 [1/2] - in /tapestry/tapestry5/trunk: ./ quickstart/src/main/resources/archetype-resources/src/main/java/services/ tapestry-annotations/ tapestry-core/ tapestry-core/src/main/java/org/apache/tapestry5/ tapestry-core/src/main/

Should the reference to ftp://howardlewisship.com/snapshot-repository
exist in the commit?

On Wed, Feb 9, 2011 at 23:18,  <hl...@apache.org> wrote:
> Author: hlship
> Date: Wed Feb  9 21:18:11 2011
> New Revision: 1069114
>
> URL: http://svn.apache.org/viewvc?rev=1069114&view=rev
> Log:
> Merge branch 'local' into trunk
>
> Added:
>    tapestry/tapestry5/trunk/build.gradle
>    tapestry/tapestry5/trunk/settings.gradle
>    tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
>    tapestry/tapestry5/trunk/tapestry-core/build.gradle
>    tapestry/tapestry5/trunk/tapestry-func/build.gradle
>    tapestry/tapestry5/trunk/tapestry-ioc/build.gradle
>    tapestry/tapestry5/trunk/tapestry-json/build.gradle
>    tapestry/tapestry5/trunk/tapestry-test/build.gradle
> Removed:
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedApplicationStateObject.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/PrimaryKeyEncoder.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ApplicationState.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeStylesheet.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedApplicationStateObjectAnalyzer.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeJavaScriptLibraryWorker.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeStylesheetWorker.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoder.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoderTest.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoderTest.java
>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
> Modified:
>    tapestry/tapestry5/trunk/.gitignore
>    tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ViewRegistration.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ZoneDemo.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForASO.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentLocaleImplTest.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MaybeStateHolder.java
>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/StateHolder.java
>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java
>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFabUtils.java
>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerthreadManager.java
>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/IOCTestCase.java
>    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImplTest.java
>
> Modified: tapestry/tapestry5/trunk/.gitignore
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/.gitignore?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/.gitignore (original)
> +++ tapestry/tapestry5/trunk/.gitignore Wed Feb  9 21:18:11 2011
> @@ -7,4 +7,8 @@
>  *.iws
>  target
>  test-output
> -temp-testng*.xml
> \ No newline at end of file
> +temp-testng*.xml
> +build/
> +.gradle
> +*~
> +\#*
> \ No newline at end of file
>
> Added: tapestry/tapestry5/trunk/build.gradle
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/build.gradle?rev=1069114&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/build.gradle (added)
> +++ tapestry/tapestry5/trunk/build.gradle Wed Feb  9 21:18:11 2011
> @@ -0,0 +1,69 @@
> +description = "Apache Tapestry 5 Project"
> +
> +if (!project.hasProperty('deployUserName')) deployUserName = '*UNSET-USERNAME*'
> +if (!project.hasProperty('deployPassword')) deployPassword = '*UNSET-PASSWORD*'
> +
> +
> +jettyVersion = '7.0.0.v20091005'
> +tomcatVersion = '6.0.30'
> +testngVersion = '5.14.9'
> +easymockVersion = '3.0'
> +
> +subprojects {
> +    apply plugin: 'java'
> +    apply plugin: 'groovy' // mostly for testing
> +    apply plugin: 'eclipse'
> +    apply plugin: 'maven'
> +    apply plugin: 'project-report'
> +
> +    sourceCompatibility = '1.5'
> +    targetCompatibility = '1.5'
> +
> +    version = '5.3.0-SNAPSHOT'
> +
> +    group = 'org.apache.tapestry'
> +
> +    repositories {
> +        mavenCentral()
> +
> +        // All things JBoss/Javassist/Hibernate
> +        mavenRepo urls: "https://repository.jboss.org/nexus/content/repositories/releases/"
> +    }
> +
> +    configurations {
> +        deployerJars
> +    }
> +
> +    dependencies {
> +        groovy "org.codehaus.groovy:groovy-all:1.7.4"
> +
> +        deployerJars "org.apache.maven.wagon:wagon-ftp:1.0-beta-2"
> +    }
> +
> +    test {
> +        useTestNG()
> +
> +        options.suites("src/test/conf/testng.xml")
> +    }
> +
> +    task sourcesJar(type: Jar, dependsOn:classes) {
> +       classifier = 'sources'
> +       from sourceSets.main.allSource
> +    }
> +
> +    artifacts {
> +       archives sourcesJar
> +    }
> +
> +
> +    uploadArchives {
> +        repositories.mavenDeployer {
> +            configuration = configurations.deployerJars
> +            // deployUserName and deployPassword should be specified in ~/.gradle/gradle.properties
> +            snapshotRepository(url: "ftp://howardlewisship.com/snapshot-repository") {
> +              authentication(userName: deployUserName, password: deployPassword)
> +            }
> +
> +        }
> +    }
> +}
> \ No newline at end of file
>
> Modified: tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java (original)
> +++ tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java Wed Feb  9 21:18:11 2011
> @@ -51,6 +51,14 @@ public class AppModule
>         // header. If existing assets are changed, the version number should also
>         // change, to force the browser to download new versions.
>         configuration.add(SymbolConstants.APPLICATION_VERSION, "${version}");
> +
> +        // This is desirable in development, but again, is usually turned off
> +        // by the time the application gets to production. The Blackbird console
> +        // is very functionaly, but may be intimidating to users (who should not see
> +        // it unless there are Ajax-oriented programming bugs). Regardless, when disabled
> +        // a simple floating, fading message is displayed at the top of the page.
> +
> +        configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "true");
>     }
>
>
>
> Added: tapestry/tapestry5/trunk/settings.gradle
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/settings.gradle?rev=1069114&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/settings.gradle (added)
> +++ tapestry/tapestry5/trunk/settings.gradle Wed Feb  9 21:18:11 2011
> @@ -0,0 +1,4 @@
> +include "tapestry-annotations", "tapestry-test", "tapestry-func", "tapestry-ioc", "tapestry-json", "tapestry-core"
> +// TODO: tapestry-hibernate-core, tapestry-hibernate, tapestry-jmx, tapestry-upload, tapestry-spring, tapestry-beanvalidator
> +// TODO (LATER): tapestry-component-report, quickstart
> +
>
> Added: tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-annotations/build.gradle?rev=1069114&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-annotations/build.gradle (added)
> +++ tapestry/tapestry5/trunk/tapestry-annotations/build.gradle Wed Feb  9 21:18:11 2011
> @@ -0,0 +1,10 @@
> +description = "Annotations used with Tapestry applications"
> +
> +// To avoid conflict with the Tapestry 4 tapestry-annotations, so both may be used at the same time
> +baseName = 'tapestry5-annotations'
> +
> +configure(install.repositories.mavenInstaller) {
> +  pom.project {
> +    artifactId baseName
> +  }
> +}
> \ No newline at end of file
>
> Added: tapestry/tapestry5/trunk/tapestry-core/build.gradle
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/build.gradle?rev=1069114&view=auto
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/build.gradle (added)
> +++ tapestry/tapestry5/trunk/tapestry-core/build.gradle Wed Feb  9 21:18:11 2011
> @@ -0,0 +1,14 @@
> +description="Central module for Tapestry, containing all core services and components"
> +
> +dependencies {
> +  compile project(':tapestry-ioc')
> +  compile project(':tapestry-json')
> +
> +  testCompile project(':tapestry-test')
> +
> +  compile "commons-codec:commons-codec:1.3"
> +  compile "javax.servlet:servlet-api:2.4"
> +
> +  compile "org.antlr:antlr-runtime:3.3", { transitive = false }
> +
> +}
> \ No newline at end of file
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java Wed Feb  9 21:18:11 2011
> @@ -1,4 +1,4 @@
> -// Copyright 2009, 2010 The Apache Software Foundation
> +// Copyright 2009, 2010, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -27,7 +27,7 @@ import org.apache.tapestry5.TrackableCom
>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
>  import org.apache.tapestry5.annotations.Environmental;
>  import org.apache.tapestry5.annotations.Events;
> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
> +import org.apache.tapestry5.annotations.Import;
>  import org.apache.tapestry5.annotations.Parameter;
>  import org.apache.tapestry5.annotations.SupportsInformalParameters;
>  import org.apache.tapestry5.dom.Element;
> @@ -53,7 +53,7 @@ import org.apache.tapestry5.services.jav
>  * @since 5.1.0.1
>  */
>  @SupportsInformalParameters
> -@IncludeJavaScriptLibrary("ProgressiveDisplay.js")
> +@Import(library = "ProgressiveDisplay.js")
>  @Events(EventConstants.PROGRESSIVE_DISPLAY)
>  @SuppressWarnings("all")
>  public class ProgressiveDisplay
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java Wed Feb  9 21:18:11 2011
> @@ -1,4 +1,4 @@
> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -17,11 +17,19 @@ package org.apache.tapestry5.corelib.mix
>  import java.util.Collections;
>  import java.util.List;
>
> -import org.apache.tapestry5.*;
> +import org.apache.tapestry5.Asset;
> +import org.apache.tapestry5.BindingConstants;
> +import org.apache.tapestry5.CSSClassConstants;
> +import org.apache.tapestry5.ComponentEventCallback;
> +import org.apache.tapestry5.ComponentResources;
> +import org.apache.tapestry5.ContentType;
> +import org.apache.tapestry5.EventConstants;
> +import org.apache.tapestry5.Field;
> +import org.apache.tapestry5.Link;
> +import org.apache.tapestry5.MarkupWriter;
>  import org.apache.tapestry5.annotations.Environmental;
>  import org.apache.tapestry5.annotations.Events;
>  import org.apache.tapestry5.annotations.Import;
> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>  import org.apache.tapestry5.annotations.InjectContainer;
>  import org.apache.tapestry5.annotations.Parameter;
>  import org.apache.tapestry5.annotations.Path;
> @@ -29,7 +37,6 @@ import org.apache.tapestry5.annotations.
>  import org.apache.tapestry5.internal.util.Holder;
>  import org.apache.tapestry5.ioc.annotations.Inject;
>  import org.apache.tapestry5.ioc.services.TypeCoercer;
> -import org.apache.tapestry5.json.JSONArray;
>  import org.apache.tapestry5.json.JSONObject;
>  import org.apache.tapestry5.services.MarkupWriterFactory;
>  import org.apache.tapestry5.services.ResponseRenderer;
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java Wed Feb  9 21:18:11 2011
> @@ -1,4 +1,4 @@
> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -21,15 +21,16 @@ import org.apache.tapestry5.SymbolConsta
>  import org.apache.tapestry5.internal.TapestryInternalUtils;
>  import org.apache.tapestry5.ioc.annotations.Symbol;
>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>  import org.apache.tapestry5.services.PersistentLocale;
>
>  public class PersistentLocaleImpl implements PersistentLocale
>  {
> -    private final PerthreadManager perThreadManager;
> -
>     private final String supportedLocales;
>
> +    private final PerThreadValue<Locale> localeValue;
> +
>     private final Set<String> localeNames = CollectionFactory.newSet();
>
>     public PersistentLocaleImpl(PerthreadManager perThreadManager,
> @@ -37,9 +38,10 @@ public class PersistentLocaleImpl implem
>     @Symbol(SymbolConstants.SUPPORTED_LOCALES)
>     String supportedLocales)
>     {
> -        this.perThreadManager = perThreadManager;
>         this.supportedLocales = supportedLocales;
>
> +        localeValue = perThreadManager.createValue();
> +
>         for (String name : TapestryInternalUtils.splitAtCommas(supportedLocales))
>         {
>             localeNames.add(name.toLowerCase());
> @@ -49,26 +51,26 @@ public class PersistentLocaleImpl implem
>     public void set(Locale locale)
>     {
>         assert locale != null;
> +
>         if (!localeNames.contains(locale.toString().toLowerCase()))
>         {
>             String message = String
> -                    .format(
> -                            "Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
> +                    .format("Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
>                             locale, supportedLocales, SymbolConstants.SUPPORTED_LOCALES);
>
>             throw new IllegalArgumentException(message);
>         }
>
> -        perThreadManager.put(this, locale);
> +        localeValue.set(locale);
>     }
>
>     public Locale get()
>     {
> -        return (Locale) perThreadManager.get(this);
> +        return localeValue.get();
>     }
>
>     public boolean isSet()
>     {
> -        return get() != null;
> +        return localeValue.exists();
>     }
>  }
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java Wed Feb  9 21:18:11 2011
> @@ -1,4 +1,4 @@
> -// Copyright 2007, 2008, 2010 The Apache Software Foundation
> +// Copyright 2007, 2008, 2010, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -15,10 +15,7 @@
>  package org.apache.tapestry5.internal.transform;
>
>  import java.util.List;
> -import java.util.Map;
> -import java.util.TreeMap;
>
> -import org.apache.tapestry5.annotations.ApplicationState;
>  import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.func.Predicate;
>  import org.apache.tapestry5.internal.services.ComponentClassCache;
> @@ -48,30 +45,14 @@ public class ApplicationStateWorker impl
>
>     public void transform(ClassTransformation transformation, MutableComponentModel model)
>     {
> -        Map<TransformField, Boolean> fields = new TreeMap<TransformField, Boolean>();
> -
> -        for (TransformField field : transformation.matchFieldsWithAnnotation(ApplicationState.class))
> -        {
> -            ApplicationState annotation = field.getAnnotation(ApplicationState.class);
> -
> -            fields.put(field, annotation.create());
> -
> -            field.claim(annotation);
> -        }
> -
>         for (TransformField field : transformation.matchFieldsWithAnnotation(SessionState.class))
>         {
>             SessionState annotation = field.getAnnotation(SessionState.class);
>
> -            fields.put(field, annotation.create());
> +            transform(transformation, field, annotation.create());
>
>             field.claim(annotation);
>         }
> -
> -        for (Map.Entry<TransformField, Boolean> e : fields.entrySet())
> -        {
> -            transform(transformation, e.getKey(), e.getValue());
> -        }
>     }
>
>     @SuppressWarnings("unchecked")
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java Wed Feb  9 21:18:11 2011
> @@ -1,4 +1,4 @@
> -// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
> +// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -25,10 +25,24 @@ import org.apache.tapestry5.internal.bin
>  import org.apache.tapestry5.internal.services.ComponentClassCache;
>  import org.apache.tapestry5.ioc.internal.util.InternalUtils;
>  import org.apache.tapestry5.ioc.internal.util.TapestryException;
> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>  import org.apache.tapestry5.ioc.services.TypeCoercer;
>  import org.apache.tapestry5.model.MutableComponentModel;
> -import org.apache.tapestry5.services.*;
> +import org.apache.tapestry5.services.BindingSource;
> +import org.apache.tapestry5.services.ClassTransformation;
> +import org.apache.tapestry5.services.ComponentClassTransformWorker;
> +import org.apache.tapestry5.services.ComponentDefaultProvider;
> +import org.apache.tapestry5.services.ComponentMethodAdvice;
> +import org.apache.tapestry5.services.ComponentMethodInvocation;
> +import org.apache.tapestry5.services.ComponentValueProvider;
> +import org.apache.tapestry5.services.FieldAccess;
> +import org.apache.tapestry5.services.MethodAccess;
> +import org.apache.tapestry5.services.MethodInvocationResult;
> +import org.apache.tapestry5.services.TransformConstants;
> +import org.apache.tapestry5.services.TransformField;
> +import org.apache.tapestry5.services.TransformMethod;
> +import org.apache.tapestry5.services.TransformMethodSignature;
>  import org.slf4j.Logger;
>  import org.slf4j.LoggerFactory;
>
> @@ -230,10 +244,10 @@ public class ParameterWorker implements
>             {
>                 final InternalComponentResources icr = (InternalComponentResources) resources;
>
> -                final String key = String.format("ParameterWorker:%s/%s", resources.getCompleteId(), parameterName);
> -
>                 final Class fieldType = classCache.forName(fieldTypeName);
>
> +                final PerThreadValue<ParameterState> stateValue = perThreadManager.createValue();
> +
>                 // Rely on some code generation in the component to set the default binding from
>                 // the field, or from a default method.
>
> @@ -259,13 +273,13 @@ public class ParameterWorker implements
>
>                     private ParameterState getState()
>                     {
> -                        ParameterState state = (ParameterState) perThreadManager.get(key);
> +                        ParameterState state = stateValue.get();
>
>                         if (state == null)
>                         {
>                             state = new ParameterState();
>                             state.value = defaultValue;
> -                            perThreadManager.put(key, state);
> +                            stateValue.set(state);
>                         }
>
>                         return state;
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Wed Feb  9 21:18:11 2011
> @@ -35,10 +35,44 @@ import javax.servlet.ServletContext;
>  import javax.servlet.http.HttpServletRequest;
>  import javax.servlet.http.HttpServletResponse;
>
> -import org.apache.tapestry5.*;
> +import org.apache.tapestry5.Asset;
> +import org.apache.tapestry5.BindingConstants;
> +import org.apache.tapestry5.Block;
> +import org.apache.tapestry5.ComponentResources;
> +import org.apache.tapestry5.EventContext;
> +import org.apache.tapestry5.Field;
> +import org.apache.tapestry5.FieldValidationSupport;
> +import org.apache.tapestry5.FieldValidator;
> +import org.apache.tapestry5.Link;
> +import org.apache.tapestry5.MarkupWriter;
> +import org.apache.tapestry5.MetaDataConstants;
> +import org.apache.tapestry5.NullFieldStrategy;
> +import org.apache.tapestry5.OptimizedSessionPersistedObject;
> +import org.apache.tapestry5.PersistenceConstants;
> +import org.apache.tapestry5.PropertyOverrides;
> +import org.apache.tapestry5.RenderSupport;
> +import org.apache.tapestry5.Renderable;
> +import org.apache.tapestry5.SelectModel;
> +import org.apache.tapestry5.StreamResponse;
> +import org.apache.tapestry5.SymbolConstants;
> +import org.apache.tapestry5.TapestryConstants;
> +import org.apache.tapestry5.Translator;
> +import org.apache.tapestry5.ValidationDecorator;
> +import org.apache.tapestry5.Validator;
> +import org.apache.tapestry5.VersionUtils;
>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
> -import org.apache.tapestry5.annotations.*;
> +import org.apache.tapestry5.annotations.ActivationRequestParameter;
>  import org.apache.tapestry5.annotations.ContentType;
> +import org.apache.tapestry5.annotations.HeartbeatDeferred;
> +import org.apache.tapestry5.annotations.Import;
> +import org.apache.tapestry5.annotations.Meta;
> +import org.apache.tapestry5.annotations.PageAttached;
> +import org.apache.tapestry5.annotations.PageDetached;
> +import org.apache.tapestry5.annotations.PageLoaded;
> +import org.apache.tapestry5.annotations.PageReset;
> +import org.apache.tapestry5.annotations.Path;
> +import org.apache.tapestry5.annotations.Secure;
> +import org.apache.tapestry5.annotations.Service;
>  import org.apache.tapestry5.beaneditor.Validate;
>  import org.apache.tapestry5.corelib.ClientValidation;
>  import org.apache.tapestry5.corelib.LoopFormState;
> @@ -59,7 +93,18 @@ import org.apache.tapestry5.internal.bea
>  import org.apache.tapestry5.internal.beaneditor.MessagesConstraintGenerator;
>  import org.apache.tapestry5.internal.beaneditor.PrimitiveFieldConstraintGenerator;
>  import org.apache.tapestry5.internal.beaneditor.ValidateAnnotationConstraintGenerator;
> -import org.apache.tapestry5.internal.bindings.*;
> +import org.apache.tapestry5.internal.bindings.AssetBindingFactory;
> +import org.apache.tapestry5.internal.bindings.BlockBindingFactory;
> +import org.apache.tapestry5.internal.bindings.ComponentBindingFactory;
> +import org.apache.tapestry5.internal.bindings.ContextBindingFactory;
> +import org.apache.tapestry5.internal.bindings.LiteralBindingFactory;
> +import org.apache.tapestry5.internal.bindings.MessageBindingFactory;
> +import org.apache.tapestry5.internal.bindings.NullFieldStrategyBindingFactory;
> +import org.apache.tapestry5.internal.bindings.PropBindingFactory;
> +import org.apache.tapestry5.internal.bindings.RenderVariableBindingFactory;
> +import org.apache.tapestry5.internal.bindings.SymbolBindingFactory;
> +import org.apache.tapestry5.internal.bindings.TranslateBindingFactory;
> +import org.apache.tapestry5.internal.bindings.ValidateBindingFactory;
>  import org.apache.tapestry5.internal.grid.CollectionGridDataSource;
>  import org.apache.tapestry5.internal.grid.NullDataSource;
>  import org.apache.tapestry5.internal.gzip.GZipFilter;
> @@ -89,18 +134,85 @@ import org.apache.tapestry5.internal.ser
>  import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
>  import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
>  import org.apache.tapestry5.internal.services.templates.PageTemplateLocator;
> -import org.apache.tapestry5.internal.transform.*;
> +import org.apache.tapestry5.internal.transform.ActivationRequestParameterWorker;
> +import org.apache.tapestry5.internal.transform.ApplicationStateWorker;
> +import org.apache.tapestry5.internal.transform.BindParameterWorker;
> +import org.apache.tapestry5.internal.transform.CachedWorker;
> +import org.apache.tapestry5.internal.transform.ComponentWorker;
> +import org.apache.tapestry5.internal.transform.DiscardAfterWorker;
> +import org.apache.tapestry5.internal.transform.EnvironmentalWorker;
> +import org.apache.tapestry5.internal.transform.HeartbeatDeferredWorker;
> +import org.apache.tapestry5.internal.transform.ImportWorker;
> +import org.apache.tapestry5.internal.transform.InjectComponentWorker;
> +import org.apache.tapestry5.internal.transform.InjectContainerWorker;
> +import org.apache.tapestry5.internal.transform.InjectNamedWorker;
> +import org.apache.tapestry5.internal.transform.InjectPageWorker;
> +import org.apache.tapestry5.internal.transform.InjectServiceWorker;
> +import org.apache.tapestry5.internal.transform.InjectWorker;
> +import org.apache.tapestry5.internal.transform.InvokePostRenderCleanupOnResourcesWorker;
> +import org.apache.tapestry5.internal.transform.LogWorker;
> +import org.apache.tapestry5.internal.transform.MixinAfterWorker;
> +import org.apache.tapestry5.internal.transform.MixinWorker;
> +import org.apache.tapestry5.internal.transform.OnEventWorker;
> +import org.apache.tapestry5.internal.transform.PageActivationContextWorker;
> +import org.apache.tapestry5.internal.transform.PageLifecycleAnnotationWorker;
> +import org.apache.tapestry5.internal.transform.PageResetAnnotationWorker;
> +import org.apache.tapestry5.internal.transform.ParameterWorker;
> +import org.apache.tapestry5.internal.transform.PersistWorker;
> +import org.apache.tapestry5.internal.transform.PropertyWorker;
> +import org.apache.tapestry5.internal.transform.RenderCommandWorker;
> +import org.apache.tapestry5.internal.transform.RenderPhaseMethodWorker;
> +import org.apache.tapestry5.internal.transform.RetainWorker;
> +import org.apache.tapestry5.internal.transform.SessionAttributeWorker;
> +import org.apache.tapestry5.internal.transform.SupportsInformalParametersWorker;
> +import org.apache.tapestry5.internal.transform.UnclaimedFieldWorker;
>  import org.apache.tapestry5.internal.translator.NumericTranslator;
>  import org.apache.tapestry5.internal.translator.NumericTranslatorSupport;
>  import org.apache.tapestry5.internal.translator.StringTranslator;
> -import org.apache.tapestry5.internal.util.PrimaryKeyEncoder2ValueEncoder;
>  import org.apache.tapestry5.internal.util.RenderableAsBlock;
>  import org.apache.tapestry5.internal.util.StringRenderable;
>  import org.apache.tapestry5.internal.validator.ValidatorMacroImpl;
> -import org.apache.tapestry5.ioc.*;
> -import org.apache.tapestry5.ioc.annotations.*;
> +import org.apache.tapestry5.ioc.AnnotationProvider;
> +import org.apache.tapestry5.ioc.Configuration;
> +import org.apache.tapestry5.ioc.Location;
> +import org.apache.tapestry5.ioc.MappedConfiguration;
> +import org.apache.tapestry5.ioc.Messages;
> +import org.apache.tapestry5.ioc.MethodAdviceReceiver;
> +import org.apache.tapestry5.ioc.ObjectLocator;
> +import org.apache.tapestry5.ioc.ObjectProvider;
> +import org.apache.tapestry5.ioc.OrderedConfiguration;
> +import org.apache.tapestry5.ioc.Resource;
> +import org.apache.tapestry5.ioc.ScopeConstants;
> +import org.apache.tapestry5.ioc.ServiceBinder;
> +import org.apache.tapestry5.ioc.annotations.Autobuild;
> +import org.apache.tapestry5.ioc.annotations.Contribute;
> +import org.apache.tapestry5.ioc.annotations.Inject;
> +import org.apache.tapestry5.ioc.annotations.InjectService;
> +import org.apache.tapestry5.ioc.annotations.IntermediateType;
> +import org.apache.tapestry5.ioc.annotations.Local;
> +import org.apache.tapestry5.ioc.annotations.Marker;
> +import org.apache.tapestry5.ioc.annotations.Match;
> +import org.apache.tapestry5.ioc.annotations.Primary;
> +import org.apache.tapestry5.ioc.annotations.Scope;
> +import org.apache.tapestry5.ioc.annotations.SubModule;
> +import org.apache.tapestry5.ioc.annotations.Symbol;
>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
> -import org.apache.tapestry5.ioc.services.*;
> +import org.apache.tapestry5.ioc.services.Builtin;
> +import org.apache.tapestry5.ioc.services.ChainBuilder;
> +import org.apache.tapestry5.ioc.services.ClassFactory;
> +import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
> +import org.apache.tapestry5.ioc.services.Coercion;
> +import org.apache.tapestry5.ioc.services.CoercionTuple;
> +import org.apache.tapestry5.ioc.services.LazyAdvisor;
> +import org.apache.tapestry5.ioc.services.MasterObjectProvider;
> +import org.apache.tapestry5.ioc.services.PerthreadManager;
> +import org.apache.tapestry5.ioc.services.PipelineBuilder;
> +import org.apache.tapestry5.ioc.services.PropertyAccess;
> +import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
> +import org.apache.tapestry5.ioc.services.StrategyBuilder;
> +import org.apache.tapestry5.ioc.services.SymbolSource;
> +import org.apache.tapestry5.ioc.services.ThreadLocale;
> +import org.apache.tapestry5.ioc.services.TypeCoercer;
>  import org.apache.tapestry5.ioc.util.AvailableValues;
>  import org.apache.tapestry5.ioc.util.IdAllocator;
>  import org.apache.tapestry5.ioc.util.StrategyRegistry;
> @@ -524,31 +636,22 @@ public final class TapestryModule
>      * <dt>Persist</dt>
>      * <dd>Allows fields to store their their value persistently between requests</dd>
>      * <dt>Parameter</dt>
> -     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter}
> -     * annotation</dd>
> +     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter} annotation</dd>
>      * <dt>Component</dt>
> -     * <dd>Defines embedded components based on the
> -     * {@link org.apache.tapestry5.annotations.Component} annotation</dd>
> +     * <dd>Defines embedded components based on the {@link org.apache.tapestry5.annotations.Component} annotation</dd>
>      * <dt>Mixin</dt>
>      * <dd>Adds a mixin as part of a component's implementation</dd>
>      * <dt>Environment</dt>
> -     * <dd>Allows fields to contain values extracted from the
> -     * {@link org.apache.tapestry5.services.Environment} service</dd>
> +     * <dd>Allows fields to contain values extracted from the {@link org.apache.tapestry5.services.Environment} service</dd>
>      * <dt>Inject</dt>
> -     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a
> -     * value is supplied</dd>
> +     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a value is supplied</dd>
>      * <dt>InjectService</dt>
>      * <dd>Handles the {@link org.apache.tapestry5.ioc.annotations.InjectService} annotation</dd>
>      * <dt>InjectPage</dt>
> -     * <dd>Adds code to allow access to other pages via the
> -     * {@link org.apache.tapestry5.annotations.InjectPage} field annotation</dd>
> +     * <dd>Adds code to allow access to other pages via the {@link org.apache.tapestry5.annotations.InjectPage} field
> +     * annotation</dd>
>      * <dt>InjectBlock</dt>
>      * <dd>Allows a block from the template to be injected into a field</dd>
> -     * <dt>IncludeStylesheet</dt>
> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeStylesheet} annotation</dd>
> -     * <dt>IncludeJavaScriptLibrary</dt>
> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeJavaScriptLibrary} annotation
> -     * </dd>
>      * <dt>Import</dt>
>      * <dd>Supports the {@link Import} annotation</dd>
>      * <dt>SupportsInformalParameters</dt>
> @@ -564,12 +667,10 @@ public final class TapestryModule
>      * <dt>RenderPhase</dt>
>      * <dd>Link in render phaes methods</dd>
>      * <dt>InvokePostRenderCleanupOnResources</dt>
> -     * <dd>Makes sure
> -     * {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is
> -     * invoked after a component finishes rendering</dd>
> +     * <dd>Makes sure {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is invoked
> +     * after a component finishes rendering</dd>
>      * <dt>GenerateAccessors</dt>
> -     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property}
> -     * annotation is present</dd>
> +     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property} annotation is present</dd>
>      * <dt>Cached</dt>
>      * <dd>Checks for the {@link org.apache.tapestry5.annotations.Cached} annotation</dd>
>      * <dt>Log</dt>
> @@ -637,9 +738,6 @@ public final class TapestryModule
>
>         configuration.addInstance("DiscardAfter", DiscardAfterWorker.class);
>
> -        configuration.addInstance("IncludeStylesheet", IncludeStylesheetWorker.class, "after:SetupRender");
> -        configuration
> -                .addInstance("IncludeJavaScriptLibrary", IncludeJavaScriptLibraryWorker.class, "after:SetupRender");
>         configuration.addInstance("Import", ImportWorker.class, "after:SetupRender");
>
>         configuration.add("InvokePostRenderCleanupOnResources", new InvokePostRenderCleanupOnResourcesWorker());
> @@ -794,11 +892,10 @@ public final class TapestryModule
>      * <dt>CommonResources</dt>
>      * <dd>access to properties of resources (log, messages, etc.)</dd>
>      * <dt>Asset</dt>
> -     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to
> -     * the component class</dd>
> +     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to the component class</dd>
>      * <dt>Service</dt>
> -     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type
> -     * against Tapestry IoC services</dd>
> +     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type against Tapestry IoC
> +     * services</dd>
>      * </dl>
>      */
>     public static void contributeInjectionProvider(OrderedConfiguration<InjectionProvider> configuration,
> @@ -861,11 +958,11 @@ public final class TapestryModule
>     /**
>      * <dl>
>      * <dt>StoreIntoGlobals</dt>
> -     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals}
> -     * at the start of the pipeline</dd>
> +     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals} at the start of the
> +     * pipeline</dd>
>      * <dt>IgnoredPaths</dt>
> -     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration)
> -     * to be mapped to other applications</dd>
> +     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration) to be mapped to other
> +     * applications</dd>
>      * <dt>GZip</dt>
>      * <dd>Handles GZIP compression of response streams (if supported by client)</dd>
>      */
> @@ -902,18 +999,17 @@ public final class TapestryModule
>      * Continues a number of filters into the RequestHandler service:
>      * <dl>
>      * <dt>StaticFiles</dt>
> -     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the
> -     * servlet container process the request</dd>
> +     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the servlet container process
> +     * the request</dd>
>      * <dt>CheckForUpdates</dt>
> -     * <dd>Periodically fires events that checks to see if the file system sources for any cached
> -     * data has changed (see {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
> +     * <dd>Periodically fires events that checks to see if the file system sources for any cached data has changed (see
> +     * {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
>      * <dt>ErrorFilter</dt>
> -     * <dd>Catches request errors and lets the
> -     * {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them</dd>
> +     * <dd>Catches request errors and lets the {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them
> +     * </dd>
>      * <dt>StoreIntoGlobals</dt>
> -     * <dd>Stores the request and response into the
> -     * {@link org.apache.tapestry5.services.RequestGlobals} service (this is repeated at the end of
> -     * the pipeline, in case any filter substitutes the request or response).
> +     * <dd>Stores the request and response into the {@link org.apache.tapestry5.services.RequestGlobals} service (this
> +     * is repeated at the end of the pipeline, in case any filter substitutes the request or response).
>      * </dl>
>      */
>     public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration, Context context,
> @@ -1028,7 +1124,6 @@ public final class TapestryModule
>      * <li>String to {@link Renderable}
>      * <li>{@link Renderable} to {@link Block}
>      * <li>String to {@link DateFormat}
> -     * <li>{@link PrimaryKeyEncoder} to {@link ValueEncoder}
>      * <li>String to {@link Resource} (via {@link AssetSource#resourceForPath(String)})
>      * <li>{@link Renderable} to {@link RenderCommand}</li>
>      * <li>String to {@link LoopFormState}</li>
> @@ -1173,9 +1268,6 @@ public final class TapestryModule
>                     }
>                 }));
>
> -        configuration.add(CoercionTuple.create(PrimaryKeyEncoder.class, ValueEncoder.class,
> -                new PrimaryKeyEncoder2ValueEncoder(coercer)));
> -
>         configuration.add(CoercionTuple.create(Date.class, Calendar.class, new Coercion<Date, Calendar>()
>         {
>             public Calendar coerce(Date input)
> @@ -1278,9 +1370,9 @@ public final class TapestryModule
>      * the chain is responsible for ordinary
>      * property names (and property paths).
>      * <p/>
> -     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See
> -     * <a href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no
> -     * longer any built-in contributions to the configuration.
> +     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See <a
> +     * href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no longer any built-in
> +     * contributions to the configuration.
>      *
>      * @param configuration
>      *            contributions of special factories for some constants, each
> @@ -1348,8 +1440,7 @@ public final class TapestryModule
>     }
>
>     /**
> -     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's
> -     * {@link Environment}.
> +     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's {@link Environment}.
>      *
>      * @since 5.2.0
>      */
> @@ -1359,8 +1450,7 @@ public final class TapestryModule
>     }
>
>     /**
> -     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport}
> -     * inside this
> +     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport} inside this
>      * thread's {@link org.apache.tapestry5.services.Environment}.
>      *
>      * @since 5.1.0.1
> @@ -1418,8 +1508,7 @@ public final class TapestryModule
>     }
>
>     /**
> -     * Initializes the application, using a pipeline of
> -     * {@link org.apache.tapestry5.services.ApplicationInitializer}s.
> +     * Initializes the application, using a pipeline of {@link org.apache.tapestry5.services.ApplicationInitializer}s.
>      */
>     @Marker(Primary.class)
>     public ApplicationInitializer buildApplicationInitializer(Logger logger,
> @@ -1621,8 +1710,7 @@ public final class TapestryModule
>
>     /**
>      * The MarkupRenderer service is used to render a full page as markup.
> -     * Supports an ordered configuration of
> -     * {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
>      */
>     public MarkupRenderer buildMarkupRenderer(Logger logger, @Autobuild
>     MarkupRendererTerminator terminator, List<MarkupRendererFilter> configuration)
> @@ -1634,11 +1722,10 @@ public final class TapestryModule
>     /**
>      * A wrapper around {@link org.apache.tapestry5.internal.services.PageRenderQueue} used for
>      * partial page renders.
> -     * Supports an ordered configuration of
> -     * {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
>      *
> -     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration,
> -     *      org.apache.tapestry5.Asset, org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
> +     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration, org.apache.tapestry5.Asset,
> +     *      org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
>      */
>     public PartialMarkupRenderer buildPartialMarkupRenderer(Logger logger,
>             List<PartialMarkupRendererFilter> configuration, @Autobuild
> @@ -1675,8 +1762,7 @@ public final class TapestryModule
>     /**
>      * Builds the action request handler for Ajax requests, based on a
>      * {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder
> -     * pipeline} around
> -     * {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
> +     * pipeline} around {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
>      * the
>      * request handler are supported here as well.
>      */
> @@ -1728,11 +1814,11 @@ public final class TapestryModule
>      * <dt>String</dt>
>      * <dd>Sends a page render redirect</dd>
>      * <dt>Class</dt>
> -     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is
> -     * more refactoring safe than the page name)</dd>
> +     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is more refactoring safe
> +     * than the page name)</dd>
>      * <dt>{@link Component}</dt>
> -     * <dd>A page's root component (though a non-root component will work, but will generate a
> -     * warning). A direct to the containing page is sent.</dd>
> +     * <dd>A page's root component (though a non-root component will work, but will generate a warning). A direct to the
> +     * containing page is sent.</dd>
>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>      * <dd>The stream response is sent as the actual reply.</dd>
>      * <dt>URL</dt>
> @@ -1788,16 +1874,13 @@ public final class TapestryModule
>      * <dt>{@link RenderCommand}</dt>
>      * <dd>Typically, a {@link org.apache.tapestry5.Block}</dd>
>      * <dt>{@link org.apache.tapestry5.annotations.Component}</dt>
> -     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON
> -     * response is sent)</dd>
> -     * <dt>{@link org.apache.tapestry5.json.JSONObject} or
> -     * {@link org.apache.tapestry5.json.JSONArray}</dt>
> +     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON response is sent)</dd>
> +     * <dt>{@link org.apache.tapestry5.json.JSONObject} or {@link org.apache.tapestry5.json.JSONArray}</dt>
>      * <dd>The JSONObject is returned as a text/javascript response</dd>
>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>      * <dd>The stream response is sent as the actual response</dd>
>      * <dt>String</dt>
> -     * <dd>Interprets the value as a logical page name and sends a client response to redirect to
> -     * that page</dd>
> +     * <dd>Interprets the value as a logical page name and sends a client response to redirect to that page</dd>
>      * <dt>{@link org.apache.tapestry5.Link}</dt>
>      * <dd>Sends a JSON response to redirect to the link</dd>
>      * <dt>{@link Class}</dt>
> @@ -1806,10 +1889,9 @@ public final class TapestryModule
>      * <dd>Sends a single JSON response to update the content of multiple zones
>      * </dl>
>      * <p>
> -     * In most cases, when you want to support a new type, you should convert it to one of the
> -     * built-in supported types (such as {@link RenderCommand}. You can then inject the master
> -     * AjaxComponentEventResultProcessor (use the {@link Ajax} marker annotation) and delegate to
> -     * it.
> +     * In most cases, when you want to support a new type, you should convert it to one of the built-in supported types
> +     * (such as {@link RenderCommand}. You can then inject the master AjaxComponentEventResultProcessor (use the
> +     * {@link Ajax} marker annotation) and delegate to it.
>      */
>     @Contribute(ComponentEventResultProcessor.class)
>     @Ajax
> @@ -1837,8 +1919,8 @@ public final class TapestryModule
>      * <dt>Asset</dt>
>      * <dd>Provides access to assets (context, classpath and virtual) via {@link AssetDispatcher}</dd>
>      * <dt>PageRender</dt>
> -     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and
> -     * forwards onto {@link PageRenderRequestHandler}</dd>
> +     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and forwards onto
> +     * {@link PageRenderRequestHandler}</dd>
>      * <dt>ComponentEvent</dt>
>      * <dd>Identifies the {@link ComponentEventRequestParameters} and forwards onto the
>      * {@link ComponentEventRequestHandler}</dd>
> @@ -1869,9 +1951,9 @@ public final class TapestryModule
>
>     /**
>      * Contributes a default object renderer for type Object, plus specialized
> -     * renderers for {@link org.apache.tapestry5.services.Request},
> -     * {@link org.apache.tapestry5.ioc.Location}, {@link org.apache.tapestry5.ComponentResources},
> -     * {@link org.apache.tapestry5.EventContext}, {@link AvailableValues},
> +     * renderers for {@link org.apache.tapestry5.services.Request}, {@link org.apache.tapestry5.ioc.Location},
> +     * {@link org.apache.tapestry5.ComponentResources}, {@link org.apache.tapestry5.EventContext},
> +     * {@link AvailableValues},
>      * List, and Object[].
>      */
>     @SuppressWarnings("unchecked")
> @@ -1908,8 +1990,8 @@ public final class TapestryModule
>     }
>
>     /**
> -     * Adds page render filters, each of which provides an
> -     * {@link org.apache.tapestry5.annotations.Environmental} service. Filters
> +     * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
> +     * service. Filters
>      * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
>      * components as they render.
>      * <dl>
> @@ -2486,8 +2568,7 @@ public final class TapestryModule
>     }
>
>     /**
> -     * Adds a listener to the
> -     * {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
> +     * Adds a listener to the {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
>      * {@link PropertyAccess} and {@link TypeCoercer} caches on
>      * a class loader invalidation. In addition, forces the
>      * realization of {@link ComponentClassResolver} at startup.
> @@ -2538,12 +2619,11 @@ public final class TapestryModule
>      * Contributes filters:
>      * <dl>
>      * <dt>Ajax</dt>
> -     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so
> -     * </dd>
> +     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so</dd>
>      * <dt>ImmediateRender</dt>
>      * <dd>When {@linkplain SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
> -     * immediate action response rendering} is enabled, generates the markup response (instead of a
> -     * page redirect response, which is the normal behavior)</dd>
> +     * immediate action response rendering} is enabled, generates the markup response (instead of a page redirect
> +     * response, which is the normal behavior)</dd>
>      * <dt>Secure</dt>
>      * <dd>Sends a redirect if an non-secure request accesses a secure page</dd>
>      * </dl>
> @@ -2686,8 +2766,7 @@ public final class TapestryModule
>      * Identifies String, Number and Boolean as immutable objects, a catch-all
>      * handler for Object (that understands
>      * the {@link org.apache.tapestry5.annotations.ImmutableSessionPersistedObject} annotation),
> -     * and handlers for {@link org.apache.tapestry5.OptimizedSessionPersistedObject} and
> -     * {@link org.apache.tapestry5.OptimizedApplicationStateObject}.
> +     * and a handler for {@link org.apache.tapestry5.OptimizedSessionPersistedObject}.
>      *
>      * @since 5.1.0.0
>      */
> @@ -2709,7 +2788,6 @@ public final class TapestryModule
>         configuration.add(Boolean.class, immutable);
>
>         configuration.add(OptimizedSessionPersistedObject.class, new OptimizedSessionPersistedObjectAnalyzer());
> -        configuration.add(OptimizedApplicationStateObject.class, new OptimizedApplicationStateObjectAnalyzer());
>     }
>
>     /**
> @@ -2894,8 +2972,7 @@ public final class TapestryModule
>     }
>
>     /**
> -     * Contributes "AppCatalog" as the Resource defined by
> -     * {@link SymbolConstants#APPLICATION_CATALOG}.
> +     * Contributes "AppCatalog" as the Resource defined by {@link SymbolConstants#APPLICATION_CATALOG}.
>      *
>      * @since 5.2.0
>      */
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java Wed Feb  9 21:18:11 2011
> @@ -1,4 +1,4 @@
> -// Copyright 2010 The Apache Software Foundation
> +// Copyright 2010, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -20,7 +20,6 @@ import org.apache.tapestry5.FieldFocusPr
>  import org.apache.tapestry5.RenderSupport;
>  import org.apache.tapestry5.SymbolConstants;
>  import org.apache.tapestry5.annotations.Environmental;
> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>  import org.apache.tapestry5.json.JSONObject;
>  import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
>
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml Wed Feb  9 21:18:11 2011
> @@ -1,20 +1,20 @@
>  <html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>
> -    <h1>DateField in AjaxFormLoop</h1>
> +  <h1>DateField in AjaxFormLoop</h1>
>
> -    <t:form>
> +  <t:form>
>
> -        <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderConverter">
> +    <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderEncoder">
>
> -            <t:datefield value="current.date"/>
> -            <t:removerowlink>remove</t:removerowlink>
> +      <t:datefield value="current.date"/>
> +      <t:removerowlink>remove</t:removerowlink>
>
> -        </div>
> +    </div>
>
> -        <p>
> -            <input type="submit" value="Go"/>
> -        </p>
> -    </t:form>
> +    <p>
> +      <input type="submit" value="Go"/>
> +    </p>
> +  </t:form>
>
>
>  </html>
> \ No newline at end of file
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml Wed Feb  9 21:18:11 2011
> @@ -1,36 +1,35 @@
>  <html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>
> -    <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
> +  <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
>
> -    <t:form>
> +  <t:form>
>
> -        <ul>
> -            <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="encoder"
> -                context="demoContextValue">
> -                <t:submitnotifier>
> -                    <t:textfield t:id="value" value="item.value"/>
> -                    <t:removerowlink>remove</t:removerowlink>
> -                </t:submitnotifier>
> -                <t:parameter name="addRow">
> -                    <t:addrowlink>Add a row</t:addrowlink>
> -                </t:parameter>
> -            </li>
> -        </ul>
> -
> -        <div class="t-beaneditor-row">
> -            <input type="submit" value="Sum up the values"/>
> -        </div>
> -
> -    </t:form>
> -
> -    <p>
> -        Current sum:
> -        <span id="sum">${sum}</span>
> -    </p>
> +    <ul>
> +      <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="doubleItemEncoder" context="demoContextValue">
> +        <t:submitnotifier>
> +          <t:textfield t:id="value" value="item.value"/>
> +          <t:removerowlink>remove</t:removerowlink>
> +        </t:submitnotifier>
> +        <t:parameter name="addRow">
> +          <t:addrowlink>Add a row</t:addrowlink>
> +        </t:parameter>
> +      </li>
> +    </ul>
> +
> +    <div class="t-beaneditor-row">
> +      <input type="submit" value="Sum up the values"/>
> +    </div>
> +
> +  </t:form>
> +
> +  <p>
> +    Current sum:
> +    <span id="sum">${sum}</span>
> +  </p>
>
> -    <h2>Data</h2>
> +  <h2>Data</h2>
>
> -    <t:grid source="doubleItems"/>
> +  <t:grid source="doubleItems"/>
>
>
>  </html>
> \ No newline at end of file
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml Wed Feb  9 21:18:11 2011
> @@ -11,7 +11,7 @@
>                 <th> Title </th>
>                 <th> Reorder </th>
>             </tr>
> -            <tr t:type="Loop" source="items" value="item" encoder="encoder">
> +            <tr t:type="Loop" source="items" value="item" encoder="toDoItemEncoder">
>                 <td>
>                     <input t:type="TextField" t:id="title" value="item.title" size="30"
>                         validate="required"/>
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2009 The Apache Software Foundation
> +// Copyright 2009, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2007 The Apache Software Foundation
> +// Copyright 2007, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,13 +14,13 @@
>
>  package org.apache.tapestry5.integration.app1.base;
>
> -import org.apache.tapestry5.annotations.ApplicationState;
>  import org.apache.tapestry5.annotations.Property;
> +import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.integration.app1.data.IncidentData;
>
>  public class BaseComponent
>  {
> -    @ApplicationState
> +    @SessionState
>     @Property
>     private IncidentData incidentData;
>  }
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java Wed Feb  9 21:18:11 2011
> @@ -4,7 +4,7 @@
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,7 +14,7 @@
>
>  package org.apache.tapestry5.integration.app1.components;
>
> -import org.apache.tapestry5.annotations.IncludeStylesheet;
> +import org.apache.tapestry5.annotations.Import;
>  import org.apache.tapestry5.ioc.annotations.Inject;
>  import org.apache.tapestry5.ioc.services.Builtin;
>  import org.apache.tapestry5.ioc.services.ClassFactory;
> @@ -22,10 +22,11 @@ import org.apache.tapestry5.services.Com
>  import org.apache.tapestry5.services.Request;
>
>  /**
> - * Here's a component with a template, including a t:body element.   Really should rename this to "Layout" as that's the
> + * Here's a component with a template, including a t:body element. Really should rename this to "Layout" as that's the
>  * T5 naming.
>  */
> -@IncludeStylesheet({ "context:layout/style.css", "context:css/app.css" })
> +@Import(stylesheet =
> +{ "context:layout/style.css", "context:css/app.css" })
>  public class Border
>  {
>     @Inject
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2008 The Apache Software Foundation
> +// Copyright 2008, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,8 +14,8 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.annotations.ApplicationState;
>  import org.apache.tapestry5.annotations.Component;
> +import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.corelib.components.BeanEditor;
>  import org.apache.tapestry5.corelib.components.Form;
>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
> @@ -25,13 +25,13 @@ public class BeanEditorBeanEditContext
>     @Component
>     private Form form;
>
> -    @Component(parameters = { "object=registrationData" })
> +    @Component(parameters =
> +    { "object=registrationData" })
>     private BeanEditor editor;
>
> -    @ApplicationState
> +    @SessionState
>     private RegistrationData data;
>
> -
>     public RegistrationData getRegistrationData()
>     {
>         return data;
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java Wed Feb  9 21:18:11 2011
> @@ -1,4 +1,4 @@
> -// Copyright 2007, 2010 The Apache Software Foundation
> +// Copyright 2007, 2010, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
> @@ -15,10 +15,10 @@
>  package org.apache.tapestry5.integration.app1.pages;
>
>  import org.apache.tapestry5.PersistenceConstants;
> -import org.apache.tapestry5.annotations.ApplicationState;
>  import org.apache.tapestry5.annotations.Component;
>  import org.apache.tapestry5.annotations.Persist;
>  import org.apache.tapestry5.annotations.Property;
> +import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.beaneditor.Validate;
>  import org.apache.tapestry5.corelib.ClientValidation;
>  import org.apache.tapestry5.corelib.components.BeanEditForm;
> @@ -33,7 +33,7 @@ public class BeanEditorDemo
>     { "clientValidation=prop:clientValidation" })
>     private BeanEditForm form;
>
> -    @ApplicationState
> +    @SessionState
>     @Property
>     private RegistrationData registrationData;
>
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2008 The Apache Software Foundation
> +// Copyright 2008, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,8 +14,8 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.annotations.ApplicationState;
>  import org.apache.tapestry5.annotations.Component;
> +import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.corelib.components.BeanEditor;
>  import org.apache.tapestry5.corelib.components.Form;
>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
> @@ -25,10 +25,11 @@ public class BeanEditorOverride
>     @Component
>     private Form form;
>
> -    @Component(parameters = { "object=registrationData" })
> +    @Component(parameters =
> +    { "object=registrationData" })
>     private BeanEditor editor;
>
> -    @ApplicationState
> +    @SessionState
>     private RegistrationData data;
>
>     public RegistrationData getRegistrationData()
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -//  Copyright 2008, 2009 The Apache Software Foundation
> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,18 +14,18 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.PrimaryKeyEncoder;
> -import org.apache.tapestry5.annotations.Persist;
> -import org.apache.tapestry5.annotations.Property;
> -import org.apache.tapestry5.integration.app1.data.DateHolder;
> -import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
> -
>  import java.util.Collections;
>  import java.util.Comparator;
>  import java.util.List;
>  import java.util.Map;
>
> +import org.apache.tapestry5.ValueEncoder;
> +import org.apache.tapestry5.annotations.Persist;
> +import org.apache.tapestry5.annotations.Property;
> +import org.apache.tapestry5.func.F;
> +import org.apache.tapestry5.integration.app1.data.DateHolder;
> +import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
> +
>  public class DateFieldAjaxFormLoop
>  {
>     @Persist
> @@ -40,6 +40,24 @@ public class DateFieldAjaxFormLoop
>             database = CollectionFactory.newMap();
>     }
>
> +    public ValueEncoder<DateHolder> getDateHolderEncoder()
> +    {
> +        return new ValueEncoder<DateHolder>()
> +        {
> +            public String toClient(DateHolder value)
> +            {
> +                return String.valueOf(value.getId());
> +            }
> +
> +            public DateHolder toValue(String clientValue)
> +            {
> +                Integer key = new Integer(clientValue);
> +
> +                return database.get(key);
> +            }
> +
> +        };
> +    }
>
>     public List<DateHolder> getDateHolders()
>     {
> @@ -56,19 +74,6 @@ public class DateFieldAjaxFormLoop
>         return result;
>     }
>
> -    public PrimaryKeyEncoder<Integer, DateHolder> getDateHolderConverter()
> -    {
> -        DefaultPrimaryKeyEncoder<Integer, DateHolder> result =
> -                new DefaultPrimaryKeyEncoder<Integer, DateHolder>(Integer.class);
> -
> -        for (DateHolder dh : getDateHolders())
> -        {
> -            result.add(dh.getId(), dh);
> -        }
> -
> -        return result;
> -    }
> -
>     DateHolder onAddRowFromLoop()
>     {
>         DateHolder dh = new DateHolder();
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2008, 2009 The Apache Software Foundation
> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,7 +14,13 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.PrimaryKeyEncoder;
> +import java.util.Collections;
> +import java.util.Comparator;
> +import java.util.List;
> +import java.util.Map;
> +import java.util.concurrent.atomic.AtomicLong;
> +
> +import org.apache.tapestry5.ValueEncoder;
>  import org.apache.tapestry5.annotations.Log;
>  import org.apache.tapestry5.annotations.Persist;
>  import org.apache.tapestry5.annotations.Property;
> @@ -22,12 +28,6 @@ import org.apache.tapestry5.integration.
>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>  import org.testng.Assert;
>
> -import java.util.Collections;
> -import java.util.Comparator;
> -import java.util.List;
> -import java.util.Map;
> -import java.util.concurrent.atomic.AtomicLong;
> -
>  public class FormInjectorDemo
>  {
>     private static final long DEMO_CONTEXT_VALUE = System.currentTimeMillis();
> @@ -51,27 +51,21 @@ public class FormInjectorDemo
>         }
>     }
>
> -    public PrimaryKeyEncoder getEncoder()
> +    public ValueEncoder<DoubleItem> getDoubleItemEncoder()
>     {
> -        return new PrimaryKeyEncoder<Long, DoubleItem>()
> +        return new ValueEncoder<DoubleItem>()
>         {
> -            public Long toKey(DoubleItem value)
> -            {
> -                return value.getId();
> -            }
>
> -            public void prepareForKeys(List<Long> keys)
> +            public DoubleItem toValue(String clientValue)
>             {
> -            }
> +                Long key = new Long(clientValue);
>
> -            public DoubleItem toValue(Long key)
> -            {
>                 return DB.get(key);
>             }
>
> -            public Class<Long> getKeyType()
> +            public String toClient(DoubleItem value)
>             {
> -                return Long.class;
> +                return String.valueOf(value.getId());
>             }
>         };
>     }
> @@ -94,7 +88,7 @@ public class FormInjectorDemo
>     Object onAddRow(long context)
>     {
>         Assert.assertEquals(context, DEMO_CONTEXT_VALUE,
> -                            "Context value provided to AjaxFormLoop must be provided to the event handler method.");
> +                "Context value provided to AjaxFormLoop must be provided to the event handler method.");
>
>         DoubleItem item = new DoubleItem();
>         item.setId(ID_ALLOCATOR.incrementAndGet());
> @@ -119,7 +113,6 @@ public class FormInjectorDemo
>         sum += item.getValue();
>     }
>
> -
>     void onActionFromReset()
>     {
>         DB.clear();
> @@ -133,6 +126,6 @@ public class FormInjectorDemo
>     void onActivate(String context)
>     {
>         Assert.assertEquals(context, "FakePageActivationContextValue",
> -                            "Page activation context was not passed through correctly.");
> +                "Page activation context was not passed through correctly.");
>     }
>  }
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2007 The Apache Software Foundation
> +// Copyright 2007, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,16 +14,16 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.annotations.ApplicationState;
> +import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.integration.app1.data.RolePath;
>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>
>  public class MultiBeanDemoResult
>  {
> -    @ApplicationState
> +    @SessionState
>     private UserCredentials credentials;
>
> -    @ApplicationState
> +    @SessionState
>     private RolePath rolePath;
>
>     public UserCredentials getCredentials()
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2007 The Apache Software Foundation
> +// Copyright 2007, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,19 +14,19 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.annotations.ApplicationState;
>  import org.apache.tapestry5.annotations.Component;
>  import org.apache.tapestry5.annotations.InjectPage;
> +import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.corelib.components.Form;
>  import org.apache.tapestry5.integration.app1.data.RolePath;
>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>
>  public class MultiBeanEditDemo
>  {
> -    @ApplicationState
> +    @SessionState
>     private UserCredentials credentials;
>
> -    @ApplicationState
> +    @SessionState
>     private RolePath rolePath;
>
>     @InjectPage
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java Wed Feb  9 21:18:11 2011
> @@ -1,10 +1,10 @@
> -// Copyright 2007 The Apache Software Foundation
> +// Copyright 2007, 2011 The Apache Software Foundation
>  //
>  // Licensed under the Apache License, Version 2.0 (the "License");
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,12 +14,12 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.annotations.ApplicationState;
> +import org.apache.tapestry5.annotations.SessionState;
>  import org.apache.tapestry5.integration.app1.data.BirthdayReminder;
>
>  public class ShowBirthdayReminder
>  {
> -    @ApplicationState
> +    @SessionState
>     private BirthdayReminder reminder;
>
>     public BirthdayReminder getReminder()
>
> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java?rev=1069114&r1=1069113&r2=1069114&view=diff
> ==============================================================================
> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java (original)
> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java Wed Feb  9 21:18:11 2011
> @@ -4,7 +4,7 @@
>  // you may not use this file except in compliance with the License.
>  // You may obtain a copy of the License at
>  //
> -//     http://www.apache.org/licenses/LICENSE-2.0
> +// http://www.apache.org/licenses/LICENSE-2.0
>  //
>  // Unless required by applicable law or agreed to in writing, software
>  // distributed under the License is distributed on an "AS IS" BASIS,
> @@ -14,31 +14,58 @@
>
>  package org.apache.tapestry5.integration.app1.pages;
>
> -import org.apache.tapestry5.PrimaryKeyEncoder;
> +import java.util.List;
> +
> +import org.apache.tapestry5.ValueEncoder;
>  import org.apache.tapestry5.annotations.Component;
> +import org.apache.tapestry5.annotations.Property;
>  import org.apache.tapestry5.corelib.components.Form;
> +import org.apache.tapestry5.func.F;
> +import org.apache.tapestry5.func.Predicate;
>  import org.apache.tapestry5.integration.app1.data.ToDoItem;
>  import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
>  import org.apache.tapestry5.ioc.annotations.Inject;
> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
> -
> -import java.util.List;
>
>  public class ToDoList
>  {
> +    @Property
>     @Inject
>     private ToDoDatabase database;
>
> -    private ToDoItem item;
> +    private List<ToDoItem> items;
>
> -    private DefaultPrimaryKeyEncoder<Long, ToDoItem> encoder;
> +    private ToDoItem item;
>
>     @Component
>     private Form form;
>
> +    public ValueEncoder<ToDoItem> getToDoItemEncoder()
> +    {
> +        return new ValueEncoder<ToDoItem>()
> +        {
> +            public ToDoItem toValue(String clientValue)
> +            {
> +                final long id = Long.parseLong(clientValue);
> +
> +                return F.flow(items).filter(new Predicate<ToDoItem>()
> +                {
> +                    public boolean accept(ToDoItem element)
> +                    {
> +                        return element.getId() == id;
> +                    }
> +                }).first();
> +            }
> +
> +            public String toClient(ToDoItem value)
> +            {
> +                return String.valueOf(value.getId());
> +            }
> +        };
> +    }
> +
>     public List<ToDoItem> getItems()
>     {
> -        return encoder.getValues();
> +        return items;
>     }
>
>     public ToDoItem getItem()
> @@ -51,33 +78,16 @@ public class ToDoList
>         this.item = item;
>     }
>
> -    public ToDoDatabase getDatabase()
> -    {
> -        return database;
> -    }
> -
> -    public PrimaryKeyEncoder getEncoder()
> -    {
> -        return encoder;
> -    }
> -
>     void onPrepare()
>     {
> -        List<ToDoItem> items = database.findAll();
> -
> -        encoder = new DefaultPrimaryKeyEncoder<Long, ToDoItem>(long.class);
> -
> -        for (ToDoItem item : items)
> -        {
> -            encoder.add(item.getId(), item);
> -        }
> +        items = database.findAll();
>     }
>
>     void onSuccess()
>     {
>         int order = 0;
>
> -        for (ToDoItem item : encoder.getValues())
> +        for (ToDoItem item : items)
>         {
>             item.setOrder(order++);
>             database.update(item);
> @@ -90,7 +100,7 @@ public class ToDoList
>         {
>             ToDoItem item = new ToDoItem();
>             item.setTitle("<New To Do>");
> -            item.setOrder(encoder.getValues().size());
> +            item.setOrder(items.size());
>
>             database.add(item);
>         }
>
>
>



-- 
Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
Tapestry PMC / Tacos developer
Open Source / JEE Consulting

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: Gradle build

Posted by Igor Drobiazko <ig...@gmail.com>.
Before we decide to move to gradle we should know if our Hudson is able to
run Gradle builds. If not how can we install gradle on the build machine?

2011/2/10 Howard Lewis Ship <hl...@gmail.com>

> For now, Maven can be the primary dev tool while I work on the Gradle
> version. Only once the Gradle version is fully functional for all the
> things Maven does should we scrap Maven.  I'll appreciate it if you
> help keep the build.gradle file up to date as dependencies change, or
> at least, drop me a note.
>
> 2011/2/10 Andreas Andreou <an...@di.uoa.gr>:
> > Well, until there's a final decision on which to keep,
> > both should be up to date.
> >
> > 2011/2/10 Igor Drobiazko <ig...@gmail.com>:
> >> Keeping both would cause too much problems. Sooner or later the
> dependencies
> >> will differ.
> >>
> >> 2011/2/10 Andreas Andreou <an...@di.uoa.gr>
> >>
> >>> Can't we keep both systems around?
> >>>
> >>> I guess at some point we'll run a vote on which one to
> >>> keep using but it's probably too early to do that now.
> >>>
> >>> 2011/2/10 Igor Drobiazko <ig...@gmail.com>:
> >>> > BTW will our Hudson be able to build Tapestry with gradle?
> >>> >
> >>> > 2011/2/10 andyhot <an...@di.uoa.gr>
> >>> >
> >>> >> ah, ok! i thought i was missing a step or had misconfigured
> >>> >> something.
> >>> >>
> >>> >> On 10/2/2011 10:43 πμ, Howard Lewis Ship wrote:
> >>> >> > Yes, the Gradle build is far from complete.  I'm working on the
> Antlr
> >>> >> > stuff ... Tapestry's grammar is for Antlr3 but the Gradle support
> is
> >>> >> > currently Antlr2.  I should have something together in a couple of
> >>> >> > days.  All the other Gradle conversion work was pretty much cake,
> >>> >> > though the main issue of creating and uploading artifacts and site
> >>> >> > documentation remain.  For the moment, I just want a build, and
> >>> >> > Eclipse support.
> >>> >> >
> >>> >> > On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr>
> wrote:
> >>> >> >> Can't we use the maven target for those cases? or is there a
> >>> consensus
> >>> >> >> to remove the poms?
> >>> >> >>
> >>> >> >> Also, while trying out tapestry-core with gradle i get
> compilation
> >>> >> >> errors (they're due to the stuff in src\main\antlr\ not getting
> >>> >> >> "precompiled") - how are you tackling this?
> >>> >> >>
> >>> >> >> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
> >>> >> >>> Actually, that's just copy-n-paste from the tapx Gradle files.
>  I'll
> >>> >> >>> strip it out in the meantime, later figure out the SSH magic for
> >>> Nexus
> >>> >> >>> deployments.
> >>> >> >>>
> >>> >> >>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <
> andyhot@di.uoa.gr>
> >>> >> wrote:
> >>> >> >>>> Well, I don't know - i guess if it's not easy to customize this
> per
> >>> >> user,
> >>> >> >>>> then it can stay there for a while. On the other hand, i think
> we
> >>> do
> >>> >> deployfads
> >>> >> >>>> snapshots to repository.apache.org after eash commit, so i
> thought
> >>> >> i'd aask
> >>> >> >>>>
> >>> >> >>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <
> hlship@gmail.com
> >>> >
> >>> >> wrote:
> >>> >> >>>>> At best, its only temporary. Is that a problem?
> >>> >> >>>>>
> >>> >> >>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <
> >>> andyhot@di.uoa.gr>
> >>> >> wrote:
> >>> >> >>>>>> Should the reference to
> >>> >> ftp://howardlewisship.com/snapshot-repository
> >>> >> >>>>>> exist in the commit?
> >>> >> >>
> >>> >> >>
> >>> >> >> --
> >>> >> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >>> >> >> Apache Tapestry PMC
> >>> >> >> Open Source / JEE Consulting
> >>> >> >>
> >>> >> >>
> ---------------------------------------------------------------------
> >>> >> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> >>> >> >> For additional commands, e-mail: dev-help@tapestry.apache.org
> >>> >> >>
> >>> >> >>
> >>> >> >
> >>> >> >
> >>> >> >
> >>> >>
> >>> >> --
> >>> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >>> >> Apache Tapestry PMC
> >>> >> Open Source / JEE Consulting
> >>> >>
> >>> >>
> ---------------------------------------------------------------------
> >>> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> >>> >> For additional commands, e-mail: dev-help@tapestry.apache.org
> >>> >>
> >>> >>
> >>> >
> >>> >
> >>> > --
> >>> > Best regards,
> >>> >
> >>> > Igor Drobiazko
> >>> > http://tapestry5.de
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >>> Apache Tapestry PMC / http://chesstu.be owner
> >>> Open Source / JEE Consulting
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> >>> For additional commands, e-mail: dev-help@tapestry.apache.org
> >>>
> >>>
> >>
> >>
> >> --
> >> Best regards,
> >>
> >> Igor Drobiazko
> >> http://tapestry5.de
> >>
> >
> >
> >
> > --
> > Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> > Apache Tapestry PMC / http://chesstu.be owner
> > Open Source / JEE Consulting
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: dev-help@tapestry.apache.org
> >
> >
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>


-- 
Best regards,

Igor Drobiazko
http://tapestry5.de

Re: Gradle build

Posted by Howard Lewis Ship <hl...@gmail.com>.
For now, Maven can be the primary dev tool while I work on the Gradle
version. Only once the Gradle version is fully functional for all the
things Maven does should we scrap Maven.  I'll appreciate it if you
help keep the build.gradle file up to date as dependencies change, or
at least, drop me a note.

2011/2/10 Andreas Andreou <an...@di.uoa.gr>:
> Well, until there's a final decision on which to keep,
> both should be up to date.
>
> 2011/2/10 Igor Drobiazko <ig...@gmail.com>:
>> Keeping both would cause too much problems. Sooner or later the dependencies
>> will differ.
>>
>> 2011/2/10 Andreas Andreou <an...@di.uoa.gr>
>>
>>> Can't we keep both systems around?
>>>
>>> I guess at some point we'll run a vote on which one to
>>> keep using but it's probably too early to do that now.
>>>
>>> 2011/2/10 Igor Drobiazko <ig...@gmail.com>:
>>> > BTW will our Hudson be able to build Tapestry with gradle?
>>> >
>>> > 2011/2/10 andyhot <an...@di.uoa.gr>
>>> >
>>> >> ah, ok! i thought i was missing a step or had misconfigured
>>> >> something.
>>> >>
>>> >> On 10/2/2011 10:43 πμ, Howard Lewis Ship wrote:
>>> >> > Yes, the Gradle build is far from complete.  I'm working on the Antlr
>>> >> > stuff ... Tapestry's grammar is for Antlr3 but the Gradle support is
>>> >> > currently Antlr2.  I should have something together in a couple of
>>> >> > days.  All the other Gradle conversion work was pretty much cake,
>>> >> > though the main issue of creating and uploading artifacts and site
>>> >> > documentation remain.  For the moment, I just want a build, and
>>> >> > Eclipse support.
>>> >> >
>>> >> > On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr> wrote:
>>> >> >> Can't we use the maven target for those cases? or is there a
>>> consensus
>>> >> >> to remove the poms?
>>> >> >>
>>> >> >> Also, while trying out tapestry-core with gradle i get compilation
>>> >> >> errors (they're due to the stuff in src\main\antlr\ not getting
>>> >> >> "precompiled") - how are you tackling this?
>>> >> >>
>>> >> >> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
>>> >> >>> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
>>> >> >>> strip it out in the meantime, later figure out the SSH magic for
>>> Nexus
>>> >> >>> deployments.
>>> >> >>>
>>> >> >>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr>
>>> >> wrote:
>>> >> >>>> Well, I don't know - i guess if it's not easy to customize this per
>>> >> user,
>>> >> >>>> then it can stay there for a while. On the other hand, i think we
>>> do
>>> >> deployfads
>>> >> >>>> snapshots to repository.apache.org after eash commit, so i thought
>>> >> i'd aask
>>> >> >>>>
>>> >> >>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hlship@gmail.com
>>> >
>>> >> wrote:
>>> >> >>>>> At best, its only temporary. Is that a problem?
>>> >> >>>>>
>>> >> >>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <
>>> andyhot@di.uoa.gr>
>>> >> wrote:
>>> >> >>>>>> Should the reference to
>>> >> ftp://howardlewisship.com/snapshot-repository
>>> >> >>>>>> exist in the commit?
>>> >> >>
>>> >> >>
>>> >> >> --
>>> >> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>>> >> >> Apache Tapestry PMC
>>> >> >> Open Source / JEE Consulting
>>> >> >>
>>> >> >> ---------------------------------------------------------------------
>>> >> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>>> >> >> For additional commands, e-mail: dev-help@tapestry.apache.org
>>> >> >>
>>> >> >>
>>> >> >
>>> >> >
>>> >> >
>>> >>
>>> >> --
>>> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>>> >> Apache Tapestry PMC
>>> >> Open Source / JEE Consulting
>>> >>
>>> >> ---------------------------------------------------------------------
>>> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>>> >> For additional commands, e-mail: dev-help@tapestry.apache.org
>>> >>
>>> >>
>>> >
>>> >
>>> > --
>>> > Best regards,
>>> >
>>> > Igor Drobiazko
>>> > http://tapestry5.de
>>> >
>>>
>>>
>>>
>>> --
>>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>>> Apache Tapestry PMC / http://chesstu.be owner
>>> Open Source / JEE Consulting
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: dev-help@tapestry.apache.org
>>>
>>>
>>
>>
>> --
>> Best regards,
>>
>> Igor Drobiazko
>> http://tapestry5.de
>>
>
>
>
> --
> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> Apache Tapestry PMC / http://chesstu.be owner
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: Gradle build

Posted by Andreas Andreou <an...@di.uoa.gr>.
Well, until there's a final decision on which to keep,
both should be up to date.

2011/2/10 Igor Drobiazko <ig...@gmail.com>:
> Keeping both would cause too much problems. Sooner or later the dependencies
> will differ.
>
> 2011/2/10 Andreas Andreou <an...@di.uoa.gr>
>
>> Can't we keep both systems around?
>>
>> I guess at some point we'll run a vote on which one to
>> keep using but it's probably too early to do that now.
>>
>> 2011/2/10 Igor Drobiazko <ig...@gmail.com>:
>> > BTW will our Hudson be able to build Tapestry with gradle?
>> >
>> > 2011/2/10 andyhot <an...@di.uoa.gr>
>> >
>> >> ah, ok! i thought i was missing a step or had misconfigured
>> >> something.
>> >>
>> >> On 10/2/2011 10:43 πμ, Howard Lewis Ship wrote:
>> >> > Yes, the Gradle build is far from complete.  I'm working on the Antlr
>> >> > stuff ... Tapestry's grammar is for Antlr3 but the Gradle support is
>> >> > currently Antlr2.  I should have something together in a couple of
>> >> > days.  All the other Gradle conversion work was pretty much cake,
>> >> > though the main issue of creating and uploading artifacts and site
>> >> > documentation remain.  For the moment, I just want a build, and
>> >> > Eclipse support.
>> >> >
>> >> > On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr> wrote:
>> >> >> Can't we use the maven target for those cases? or is there a
>> consensus
>> >> >> to remove the poms?
>> >> >>
>> >> >> Also, while trying out tapestry-core with gradle i get compilation
>> >> >> errors (they're due to the stuff in src\main\antlr\ not getting
>> >> >> "precompiled") - how are you tackling this?
>> >> >>
>> >> >> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
>> >> >>> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
>> >> >>> strip it out in the meantime, later figure out the SSH magic for
>> Nexus
>> >> >>> deployments.
>> >> >>>
>> >> >>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr>
>> >> wrote:
>> >> >>>> Well, I don't know - i guess if it's not easy to customize this per
>> >> user,
>> >> >>>> then it can stay there for a while. On the other hand, i think we
>> do
>> >> deployfads
>> >> >>>> snapshots to repository.apache.org after eash commit, so i thought
>> >> i'd aask
>> >> >>>>
>> >> >>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hlship@gmail.com
>> >
>> >> wrote:
>> >> >>>>> At best, its only temporary. Is that a problem?
>> >> >>>>>
>> >> >>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <
>> andyhot@di.uoa.gr>
>> >> wrote:
>> >> >>>>>> Should the reference to
>> >> ftp://howardlewisship.com/snapshot-repository
>> >> >>>>>> exist in the commit?
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> >> >> Apache Tapestry PMC
>> >> >> Open Source / JEE Consulting
>> >> >>
>> >> >> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> >> >> For additional commands, e-mail: dev-help@tapestry.apache.org
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >> >
>> >>
>> >> --
>> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> >> Apache Tapestry PMC
>> >> Open Source / JEE Consulting
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> >> For additional commands, e-mail: dev-help@tapestry.apache.org
>> >>
>> >>
>> >
>> >
>> > --
>> > Best regards,
>> >
>> > Igor Drobiazko
>> > http://tapestry5.de
>> >
>>
>>
>>
>> --
>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> Apache Tapestry PMC / http://chesstu.be owner
>> Open Source / JEE Consulting
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: dev-help@tapestry.apache.org
>>
>>
>
>
> --
> Best regards,
>
> Igor Drobiazko
> http://tapestry5.de
>



-- 
Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
Apache Tapestry PMC / http://chesstu.be owner
Open Source / JEE Consulting

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: Gradle build

Posted by Igor Drobiazko <ig...@gmail.com>.
Keeping both would cause too much problems. Sooner or later the dependencies
will differ.

2011/2/10 Andreas Andreou <an...@di.uoa.gr>

> Can't we keep both systems around?
>
> I guess at some point we'll run a vote on which one to
> keep using but it's probably too early to do that now.
>
> 2011/2/10 Igor Drobiazko <ig...@gmail.com>:
> > BTW will our Hudson be able to build Tapestry with gradle?
> >
> > 2011/2/10 andyhot <an...@di.uoa.gr>
> >
> >> ah, ok! i thought i was missing a step or had misconfigured
> >> something.
> >>
> >> On 10/2/2011 10:43 πμ, Howard Lewis Ship wrote:
> >> > Yes, the Gradle build is far from complete.  I'm working on the Antlr
> >> > stuff ... Tapestry's grammar is for Antlr3 but the Gradle support is
> >> > currently Antlr2.  I should have something together in a couple of
> >> > days.  All the other Gradle conversion work was pretty much cake,
> >> > though the main issue of creating and uploading artifacts and site
> >> > documentation remain.  For the moment, I just want a build, and
> >> > Eclipse support.
> >> >
> >> > On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr> wrote:
> >> >> Can't we use the maven target for those cases? or is there a
> consensus
> >> >> to remove the poms?
> >> >>
> >> >> Also, while trying out tapestry-core with gradle i get compilation
> >> >> errors (they're due to the stuff in src\main\antlr\ not getting
> >> >> "precompiled") - how are you tackling this?
> >> >>
> >> >> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
> >> >>> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
> >> >>> strip it out in the meantime, later figure out the SSH magic for
> Nexus
> >> >>> deployments.
> >> >>>
> >> >>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr>
> >> wrote:
> >> >>>> Well, I don't know - i guess if it's not easy to customize this per
> >> user,
> >> >>>> then it can stay there for a while. On the other hand, i think we
> do
> >> deployfads
> >> >>>> snapshots to repository.apache.org after eash commit, so i thought
> >> i'd aask
> >> >>>>
> >> >>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hlship@gmail.com
> >
> >> wrote:
> >> >>>>> At best, its only temporary. Is that a problem?
> >> >>>>>
> >> >>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <
> andyhot@di.uoa.gr>
> >> wrote:
> >> >>>>>> Should the reference to
> >> ftp://howardlewisship.com/snapshot-repository
> >> >>>>>> exist in the commit?
> >> >>
> >> >>
> >> >> --
> >> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >> >> Apache Tapestry PMC
> >> >> Open Source / JEE Consulting
> >> >>
> >> >> ---------------------------------------------------------------------
> >> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> >> >> For additional commands, e-mail: dev-help@tapestry.apache.org
> >> >>
> >> >>
> >> >
> >> >
> >> >
> >>
> >> --
> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >> Apache Tapestry PMC
> >> Open Source / JEE Consulting
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> >> For additional commands, e-mail: dev-help@tapestry.apache.org
> >>
> >>
> >
> >
> > --
> > Best regards,
> >
> > Igor Drobiazko
> > http://tapestry5.de
> >
>
>
>
> --
> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> Apache Tapestry PMC / http://chesstu.be owner
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>


-- 
Best regards,

Igor Drobiazko
http://tapestry5.de

Re: Gradle build

Posted by Andreas Andreou <an...@di.uoa.gr>.
Can't we keep both systems around?

I guess at some point we'll run a vote on which one to
keep using but it's probably too early to do that now.

2011/2/10 Igor Drobiazko <ig...@gmail.com>:
> BTW will our Hudson be able to build Tapestry with gradle?
>
> 2011/2/10 andyhot <an...@di.uoa.gr>
>
>> ah, ok! i thought i was missing a step or had misconfigured
>> something.
>>
>> On 10/2/2011 10:43 πμ, Howard Lewis Ship wrote:
>> > Yes, the Gradle build is far from complete.  I'm working on the Antlr
>> > stuff ... Tapestry's grammar is for Antlr3 but the Gradle support is
>> > currently Antlr2.  I should have something together in a couple of
>> > days.  All the other Gradle conversion work was pretty much cake,
>> > though the main issue of creating and uploading artifacts and site
>> > documentation remain.  For the moment, I just want a build, and
>> > Eclipse support.
>> >
>> > On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr> wrote:
>> >> Can't we use the maven target for those cases? or is there a consensus
>> >> to remove the poms?
>> >>
>> >> Also, while trying out tapestry-core with gradle i get compilation
>> >> errors (they're due to the stuff in src\main\antlr\ not getting
>> >> "precompiled") - how are you tackling this?
>> >>
>> >> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
>> >>> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
>> >>> strip it out in the meantime, later figure out the SSH magic for Nexus
>> >>> deployments.
>> >>>
>> >>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr>
>> wrote:
>> >>>> Well, I don't know - i guess if it's not easy to customize this per
>> user,
>> >>>> then it can stay there for a while. On the other hand, i think we do
>> deployfads
>> >>>> snapshots to repository.apache.org after eash commit, so i thought
>> i'd aask
>> >>>>
>> >>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hl...@gmail.com>
>> wrote:
>> >>>>> At best, its only temporary. Is that a problem?
>> >>>>>
>> >>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr>
>> wrote:
>> >>>>>> Should the reference to
>> ftp://howardlewisship.com/snapshot-repository
>> >>>>>> exist in the commit?
>> >>
>> >>
>> >> --
>> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> >> Apache Tapestry PMC
>> >> Open Source / JEE Consulting
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> >> For additional commands, e-mail: dev-help@tapestry.apache.org
>> >>
>> >>
>> >
>> >
>> >
>>
>> --
>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> Apache Tapestry PMC
>> Open Source / JEE Consulting
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: dev-help@tapestry.apache.org
>>
>>
>
>
> --
> Best regards,
>
> Igor Drobiazko
> http://tapestry5.de
>



-- 
Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
Apache Tapestry PMC / http://chesstu.be owner
Open Source / JEE Consulting

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: Gradle build

Posted by Igor Drobiazko <ig...@gmail.com>.
BTW will our Hudson be able to build Tapestry with gradle?

2011/2/10 andyhot <an...@di.uoa.gr>

> ah, ok! i thought i was missing a step or had misconfigured
> something.
>
> On 10/2/2011 10:43 πμ, Howard Lewis Ship wrote:
> > Yes, the Gradle build is far from complete.  I'm working on the Antlr
> > stuff ... Tapestry's grammar is for Antlr3 but the Gradle support is
> > currently Antlr2.  I should have something together in a couple of
> > days.  All the other Gradle conversion work was pretty much cake,
> > though the main issue of creating and uploading artifacts and site
> > documentation remain.  For the moment, I just want a build, and
> > Eclipse support.
> >
> > On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr> wrote:
> >> Can't we use the maven target for those cases? or is there a consensus
> >> to remove the poms?
> >>
> >> Also, while trying out tapestry-core with gradle i get compilation
> >> errors (they're due to the stuff in src\main\antlr\ not getting
> >> "precompiled") - how are you tackling this?
> >>
> >> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
> >>> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
> >>> strip it out in the meantime, later figure out the SSH magic for Nexus
> >>> deployments.
> >>>
> >>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr>
> wrote:
> >>>> Well, I don't know - i guess if it's not easy to customize this per
> user,
> >>>> then it can stay there for a while. On the other hand, i think we do
> deployfads
> >>>> snapshots to repository.apache.org after eash commit, so i thought
> i'd aask
> >>>>
> >>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hl...@gmail.com>
> wrote:
> >>>>> At best, its only temporary. Is that a problem?
> >>>>>
> >>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr>
> wrote:
> >>>>>> Should the reference to
> ftp://howardlewisship.com/snapshot-repository
> >>>>>> exist in the commit?
> >>
> >>
> >> --
> >> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> >> Apache Tapestry PMC
> >> Open Source / JEE Consulting
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> >> For additional commands, e-mail: dev-help@tapestry.apache.org
> >>
> >>
> >
> >
> >
>
> --
> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> Apache Tapestry PMC
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>


-- 
Best regards,

Igor Drobiazko
http://tapestry5.de

Re: Gradle build

Posted by andyhot <an...@di.uoa.gr>.
ah, ok! i thought i was missing a step or had misconfigured
something.

On 10/2/2011 10:43 πμ, Howard Lewis Ship wrote:
> Yes, the Gradle build is far from complete.  I'm working on the Antlr
> stuff ... Tapestry's grammar is for Antlr3 but the Gradle support is
> currently Antlr2.  I should have something together in a couple of
> days.  All the other Gradle conversion work was pretty much cake,
> though the main issue of creating and uploading artifacts and site
> documentation remain.  For the moment, I just want a build, and
> Eclipse support.
> 
> On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr> wrote:
>> Can't we use the maven target for those cases? or is there a consensus
>> to remove the poms?
>>
>> Also, while trying out tapestry-core with gradle i get compilation
>> errors (they're due to the stuff in src\main\antlr\ not getting
>> "precompiled") - how are you tackling this?
>>
>> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
>>> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
>>> strip it out in the meantime, later figure out the SSH magic for Nexus
>>> deployments.
>>>
>>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>>>> Well, I don't know - i guess if it's not easy to customize this per user,
>>>> then it can stay there for a while. On the other hand, i think we do deployfads
>>>> snapshots to repository.apache.org after eash commit, so i thought i'd aask
>>>>
>>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hl...@gmail.com> wrote:
>>>>> At best, its only temporary. Is that a problem?
>>>>>
>>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>>>>>> Should the reference to ftp://howardlewisship.com/snapshot-repository
>>>>>> exist in the commit?
>>
>>
>> --
>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> Apache Tapestry PMC
>> Open Source / JEE Consulting
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: dev-help@tapestry.apache.org
>>
>>
> 
> 
> 

-- 
Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
Apache Tapestry PMC
Open Source / JEE Consulting

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: Gradle build (was: Re: svn commit: r1069114 [1/2] - in /tapestry/tapestry5/trunk: ./ quickstart/src/main/resources/archetype-resources/src/main/java/services/ tapestry-...)

Posted by Howard Lewis Ship <hl...@gmail.com>.
Yes, the Gradle build is far from complete.  I'm working on the Antlr
stuff ... Tapestry's grammar is for Antlr3 but the Gradle support is
currently Antlr2.  I should have something together in a couple of
days.  All the other Gradle conversion work was pretty much cake,
though the main issue of creating and uploading artifacts and site
documentation remain.  For the moment, I just want a build, and
Eclipse support.

On Thu, Feb 10, 2011 at 12:26 AM, andyhot <an...@di.uoa.gr> wrote:
> Can't we use the maven target for those cases? or is there a consensus
> to remove the poms?
>
> Also, while trying out tapestry-core with gradle i get compilation
> errors (they're due to the stuff in src\main\antlr\ not getting
> "precompiled") - how are you tackling this?
>
> On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
>> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
>> strip it out in the meantime, later figure out the SSH magic for Nexus
>> deployments.
>>
>> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>>> Well, I don't know - i guess if it's not easy to customize this per user,
>>> then it can stay there for a while. On the other hand, i think we do deployfads
>>> snapshots to repository.apache.org after eash commit, so i thought i'd aask
>>>
>>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hl...@gmail.com> wrote:
>>>> At best, its only temporary. Is that a problem?
>>>>
>>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>>>>> Should the reference to ftp://howardlewisship.com/snapshot-repository
>>>>> exist in the commit?
>
>
> --
> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> Apache Tapestry PMC
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Gradle build (was: Re: svn commit: r1069114 [1/2] - in /tapestry/tapestry5/trunk: ./ quickstart/src/main/resources/archetype-resources/src/main/java/services/ tapestry-...)

Posted by andyhot <an...@di.uoa.gr>.
Can't we use the maven target for those cases? or is there a consensus
to remove the poms?

Also, while trying out tapestry-core with gradle i get compilation
errors (they're due to the stuff in src\main\antlr\ not getting
"precompiled") - how are you tackling this?

On 10/2/2011 10:05 πμ, Howard Lewis Ship wrote:
> Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
> strip it out in the meantime, later figure out the SSH magic for Nexus
> deployments.
> 
> On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>> Well, I don't know - i guess if it's not easy to customize this per user,
>> then it can stay there for a while. On the other hand, i think we do deployfads
>> snapshots to repository.apache.org after eash commit, so i thought i'd aask
>>
>> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hl...@gmail.com> wrote:
>>> At best, its only temporary. Is that a problem?
>>>
>>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>>>> Should the reference to ftp://howardlewisship.com/snapshot-repository
>>>> exist in the commit?


-- 
Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
Apache Tapestry PMC
Open Source / JEE Consulting

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: svn commit: r1069114 [1/2] - in /tapestry/tapestry5/trunk: ./ quickstart/src/main/resources/archetype-resources/src/main/java/services/ tapestry-annotations/ tapestry-core/ tapestry-core/src/main/java/org/apache/tapestry5/ tapestry-core/src/main/

Posted by Howard Lewis Ship <hl...@gmail.com>.
Actually, that's just copy-n-paste from the tapx Gradle files.  I'll
strip it out in the meantime, later figure out the SSH magic for Nexus
deployments.

On Wed, Feb 9, 2011 at 2:47 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
> Well, I don't know - i guess if it's not easy to customize this per user,
> then it can stay there for a while. On the other hand, i think we do deploy
> snapshots to repository.apache.org after eash commit, so i thought i'd ask
>
> On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hl...@gmail.com> wrote:
>> At best, its only temporary. Is that a problem?
>>
>> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>>> Should the reference to ftp://howardlewisship.com/snapshot-repository
>>> exist in the commit?
>>>
>>> On Wed, Feb 9, 2011 at 23:18,  <hl...@apache.org> wrote:
>>>> Author: hlship
>>>> Date: Wed Feb  9 21:18:11 2011
>>>> New Revision: 1069114
>>>>
>>>> URL: http://svn.apache.org/viewvc?rev=1069114&view=rev
>>>> Log:
>>>> Merge branch 'local' into trunk
>>>>
>>>> Added:
>>>>    tapestry/tapestry5/trunk/build.gradle
>>>>    tapestry/tapestry5/trunk/settings.gradle
>>>>    tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
>>>>    tapestry/tapestry5/trunk/tapestry-core/build.gradle
>>>>    tapestry/tapestry5/trunk/tapestry-func/build.gradle
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/build.gradle
>>>>    tapestry/tapestry5/trunk/tapestry-json/build.gradle
>>>>    tapestry/tapestry5/trunk/tapestry-test/build.gradle
>>>> Removed:
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedApplicationStateObject.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/PrimaryKeyEncoder.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ApplicationState.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeStylesheet.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedApplicationStateObjectAnalyzer.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeJavaScriptLibraryWorker.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeStylesheetWorker.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoder.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoderTest.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoderTest.java
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
>>>> Modified:
>>>>    tapestry/tapestry5/trunk/.gitignore
>>>>    tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ViewRegistration.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ZoneDemo.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForASO.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentLocaleImplTest.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MaybeStateHolder.java
>>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/StateHolder.java
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFabUtils.java
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerthreadManager.java
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/IOCTestCase.java
>>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImplTest.java
>>>>
>>>> Modified: tapestry/tapestry5/trunk/.gitignore
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/.gitignore?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/.gitignore (original)
>>>> +++ tapestry/tapestry5/trunk/.gitignore Wed Feb  9 21:18:11 2011
>>>> @@ -7,4 +7,8 @@
>>>>  *.iws
>>>>  target
>>>>  test-output
>>>> -temp-testng*.xml
>>>> \ No newline at end of file
>>>> +temp-testng*.xml
>>>> +build/
>>>> +.gradle
>>>> +*~
>>>> +\#*
>>>> \ No newline at end of file
>>>>
>>>> Added: tapestry/tapestry5/trunk/build.gradle
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/build.gradle?rev=1069114&view=auto
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/build.gradle (added)
>>>> +++ tapestry/tapestry5/trunk/build.gradle Wed Feb  9 21:18:11 2011
>>>> @@ -0,0 +1,69 @@
>>>> +description = "Apache Tapestry 5 Project"
>>>> +
>>>> +if (!project.hasProperty('deployUserName')) deployUserName = '*UNSET-USERNAME*'
>>>> +if (!project.hasProperty('deployPassword')) deployPassword = '*UNSET-PASSWORD*'
>>>> +
>>>> +
>>>> +jettyVersion = '7.0.0.v20091005'
>>>> +tomcatVersion = '6.0.30'
>>>> +testngVersion = '5.14.9'
>>>> +easymockVersion = '3.0'
>>>> +
>>>> +subprojects {
>>>> +    apply plugin: 'java'
>>>> +    apply plugin: 'groovy' // mostly for testing
>>>> +    apply plugin: 'eclipse'
>>>> +    apply plugin: 'maven'
>>>> +    apply plugin: 'project-report'
>>>> +
>>>> +    sourceCompatibility = '1.5'
>>>> +    targetCompatibility = '1.5'
>>>> +
>>>> +    version = '5.3.0-SNAPSHOT'
>>>> +
>>>> +    group = 'org.apache.tapestry'
>>>> +
>>>> +    repositories {
>>>> +        mavenCentral()
>>>> +
>>>> +        // All things JBoss/Javassist/Hibernate
>>>> +        mavenRepo urls: "https://repository.jboss.org/nexus/content/repositories/releases/"
>>>> +    }
>>>> +
>>>> +    configurations {
>>>> +        deployerJars
>>>> +    }
>>>> +
>>>> +    dependencies {
>>>> +        groovy "org.codehaus.groovy:groovy-all:1.7.4"
>>>> +
>>>> +        deployerJars "org.apache.maven.wagon:wagon-ftp:1.0-beta-2"
>>>> +    }
>>>> +
>>>> +    test {
>>>> +        useTestNG()
>>>> +
>>>> +        options.suites("src/test/conf/testng.xml")
>>>> +    }
>>>> +
>>>> +    task sourcesJar(type: Jar, dependsOn:classes) {
>>>> +       classifier = 'sources'
>>>> +       from sourceSets.main.allSource
>>>> +    }
>>>> +
>>>> +    artifacts {
>>>> +       archives sourcesJar
>>>> +    }
>>>> +
>>>> +
>>>> +    uploadArchives {
>>>> +        repositories.mavenDeployer {
>>>> +            configuration = configurations.deployerJars
>>>> +            // deployUserName and deployPassword should be specified in ~/.gradle/gradle.properties
>>>> +            snapshotRepository(url: "ftp://howardlewisship.com/snapshot-repository") {
>>>> +              authentication(userName: deployUserName, password: deployPassword)
>>>> +            }
>>>> +
>>>> +        }
>>>> +    }
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Modified: tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java (original)
>>>> +++ tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java Wed Feb  9 21:18:11 2011
>>>> @@ -51,6 +51,14 @@ public class AppModule
>>>>         // header. If existing assets are changed, the version number should also
>>>>         // change, to force the browser to download new versions.
>>>>         configuration.add(SymbolConstants.APPLICATION_VERSION, "${version}");
>>>> +
>>>> +        // This is desirable in development, but again, is usually turned off
>>>> +        // by the time the application gets to production. The Blackbird console
>>>> +        // is very functionaly, but may be intimidating to users (who should not see
>>>> +        // it unless there are Ajax-oriented programming bugs). Regardless, when disabled
>>>> +        // a simple floating, fading message is displayed at the top of the page.
>>>> +
>>>> +        configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "true");
>>>>     }
>>>>
>>>>
>>>>
>>>> Added: tapestry/tapestry5/trunk/settings.gradle
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/settings.gradle?rev=1069114&view=auto
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/settings.gradle (added)
>>>> +++ tapestry/tapestry5/trunk/settings.gradle Wed Feb  9 21:18:11 2011
>>>> @@ -0,0 +1,4 @@
>>>> +include "tapestry-annotations", "tapestry-test", "tapestry-func", "tapestry-ioc", "tapestry-json", "tapestry-core"
>>>> +// TODO: tapestry-hibernate-core, tapestry-hibernate, tapestry-jmx, tapestry-upload, tapestry-spring, tapestry-beanvalidator
>>>> +// TODO (LATER): tapestry-component-report, quickstart
>>>> +
>>>>
>>>> Added: tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-annotations/build.gradle?rev=1069114&view=auto
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-annotations/build.gradle (added)
>>>> +++ tapestry/tapestry5/trunk/tapestry-annotations/build.gradle Wed Feb  9 21:18:11 2011
>>>> @@ -0,0 +1,10 @@
>>>> +description = "Annotations used with Tapestry applications"
>>>> +
>>>> +// To avoid conflict with the Tapestry 4 tapestry-annotations, so both may be used at the same time
>>>> +baseName = 'tapestry5-annotations'
>>>> +
>>>> +configure(install.repositories.mavenInstaller) {
>>>> +  pom.project {
>>>> +    artifactId baseName
>>>> +  }
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Added: tapestry/tapestry5/trunk/tapestry-core/build.gradle
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/build.gradle?rev=1069114&view=auto
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/build.gradle (added)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/build.gradle Wed Feb  9 21:18:11 2011
>>>> @@ -0,0 +1,14 @@
>>>> +description="Central module for Tapestry, containing all core services and components"
>>>> +
>>>> +dependencies {
>>>> +  compile project(':tapestry-ioc')
>>>> +  compile project(':tapestry-json')
>>>> +
>>>> +  testCompile project(':tapestry-test')
>>>> +
>>>> +  compile "commons-codec:commons-codec:1.3"
>>>> +  compile "javax.servlet:servlet-api:2.4"
>>>> +
>>>> +  compile "org.antlr:antlr-runtime:3.3", { transitive = false }
>>>> +
>>>> +}
>>>> \ No newline at end of file
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,4 +1,4 @@
>>>> -// Copyright 2009, 2010 The Apache Software Foundation
>>>> +// Copyright 2009, 2010, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>> @@ -27,7 +27,7 @@ import org.apache.tapestry5.TrackableCom
>>>>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
>>>>  import org.apache.tapestry5.annotations.Environmental;
>>>>  import org.apache.tapestry5.annotations.Events;
>>>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>>> +import org.apache.tapestry5.annotations.Import;
>>>>  import org.apache.tapestry5.annotations.Parameter;
>>>>  import org.apache.tapestry5.annotations.SupportsInformalParameters;
>>>>  import org.apache.tapestry5.dom.Element;
>>>> @@ -53,7 +53,7 @@ import org.apache.tapestry5.services.jav
>>>>  * @since 5.1.0.1
>>>>  */
>>>>  @SupportsInformalParameters
>>>> -@IncludeJavaScriptLibrary("ProgressiveDisplay.js")
>>>> +@Import(library = "ProgressiveDisplay.js")
>>>>  @Events(EventConstants.PROGRESSIVE_DISPLAY)
>>>>  @SuppressWarnings("all")
>>>>  public class ProgressiveDisplay
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,4 +1,4 @@
>>>> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
>>>> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>> @@ -17,11 +17,19 @@ package org.apache.tapestry5.corelib.mix
>>>>  import java.util.Collections;
>>>>  import java.util.List;
>>>>
>>>> -import org.apache.tapestry5.*;
>>>> +import org.apache.tapestry5.Asset;
>>>> +import org.apache.tapestry5.BindingConstants;
>>>> +import org.apache.tapestry5.CSSClassConstants;
>>>> +import org.apache.tapestry5.ComponentEventCallback;
>>>> +import org.apache.tapestry5.ComponentResources;
>>>> +import org.apache.tapestry5.ContentType;
>>>> +import org.apache.tapestry5.EventConstants;
>>>> +import org.apache.tapestry5.Field;
>>>> +import org.apache.tapestry5.Link;
>>>> +import org.apache.tapestry5.MarkupWriter;
>>>>  import org.apache.tapestry5.annotations.Environmental;
>>>>  import org.apache.tapestry5.annotations.Events;
>>>>  import org.apache.tapestry5.annotations.Import;
>>>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>>>  import org.apache.tapestry5.annotations.InjectContainer;
>>>>  import org.apache.tapestry5.annotations.Parameter;
>>>>  import org.apache.tapestry5.annotations.Path;
>>>> @@ -29,7 +37,6 @@ import org.apache.tapestry5.annotations.
>>>>  import org.apache.tapestry5.internal.util.Holder;
>>>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>>>  import org.apache.tapestry5.ioc.services.TypeCoercer;
>>>> -import org.apache.tapestry5.json.JSONArray;
>>>>  import org.apache.tapestry5.json.JSONObject;
>>>>  import org.apache.tapestry5.services.MarkupWriterFactory;
>>>>  import org.apache.tapestry5.services.ResponseRenderer;
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,4 +1,4 @@
>>>> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
>>>> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>> @@ -21,15 +21,16 @@ import org.apache.tapestry5.SymbolConsta
>>>>  import org.apache.tapestry5.internal.TapestryInternalUtils;
>>>>  import org.apache.tapestry5.ioc.annotations.Symbol;
>>>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>>> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>>>>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>>>>  import org.apache.tapestry5.services.PersistentLocale;
>>>>
>>>>  public class PersistentLocaleImpl implements PersistentLocale
>>>>  {
>>>> -    private final PerthreadManager perThreadManager;
>>>> -
>>>>     private final String supportedLocales;
>>>>
>>>> +    private final PerThreadValue<Locale> localeValue;
>>>> +
>>>>     private final Set<String> localeNames = CollectionFactory.newSet();
>>>>
>>>>     public PersistentLocaleImpl(PerthreadManager perThreadManager,
>>>> @@ -37,9 +38,10 @@ public class PersistentLocaleImpl implem
>>>>     @Symbol(SymbolConstants.SUPPORTED_LOCALES)
>>>>     String supportedLocales)
>>>>     {
>>>> -        this.perThreadManager = perThreadManager;
>>>>         this.supportedLocales = supportedLocales;
>>>>
>>>> +        localeValue = perThreadManager.createValue();
>>>> +
>>>>         for (String name : TapestryInternalUtils.splitAtCommas(supportedLocales))
>>>>         {
>>>>             localeNames.add(name.toLowerCase());
>>>> @@ -49,26 +51,26 @@ public class PersistentLocaleImpl implem
>>>>     public void set(Locale locale)
>>>>     {
>>>>         assert locale != null;
>>>> +
>>>>         if (!localeNames.contains(locale.toString().toLowerCase()))
>>>>         {
>>>>             String message = String
>>>> -                    .format(
>>>> -                            "Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
>>>> +                    .format("Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
>>>>                             locale, supportedLocales, SymbolConstants.SUPPORTED_LOCALES);
>>>>
>>>>             throw new IllegalArgumentException(message);
>>>>         }
>>>>
>>>> -        perThreadManager.put(this, locale);
>>>> +        localeValue.set(locale);
>>>>     }
>>>>
>>>>     public Locale get()
>>>>     {
>>>> -        return (Locale) perThreadManager.get(this);
>>>> +        return localeValue.get();
>>>>     }
>>>>
>>>>     public boolean isSet()
>>>>     {
>>>> -        return get() != null;
>>>> +        return localeValue.exists();
>>>>     }
>>>>  }
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,4 +1,4 @@
>>>> -// Copyright 2007, 2008, 2010 The Apache Software Foundation
>>>> +// Copyright 2007, 2008, 2010, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>> @@ -15,10 +15,7 @@
>>>>  package org.apache.tapestry5.internal.transform;
>>>>
>>>>  import java.util.List;
>>>> -import java.util.Map;
>>>> -import java.util.TreeMap;
>>>>
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>>  import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.func.Predicate;
>>>>  import org.apache.tapestry5.internal.services.ComponentClassCache;
>>>> @@ -48,30 +45,14 @@ public class ApplicationStateWorker impl
>>>>
>>>>     public void transform(ClassTransformation transformation, MutableComponentModel model)
>>>>     {
>>>> -        Map<TransformField, Boolean> fields = new TreeMap<TransformField, Boolean>();
>>>> -
>>>> -        for (TransformField field : transformation.matchFieldsWithAnnotation(ApplicationState.class))
>>>> -        {
>>>> -            ApplicationState annotation = field.getAnnotation(ApplicationState.class);
>>>> -
>>>> -            fields.put(field, annotation.create());
>>>> -
>>>> -            field.claim(annotation);
>>>> -        }
>>>> -
>>>>         for (TransformField field : transformation.matchFieldsWithAnnotation(SessionState.class))
>>>>         {
>>>>             SessionState annotation = field.getAnnotation(SessionState.class);
>>>>
>>>> -            fields.put(field, annotation.create());
>>>> +            transform(transformation, field, annotation.create());
>>>>
>>>>             field.claim(annotation);
>>>>         }
>>>> -
>>>> -        for (Map.Entry<TransformField, Boolean> e : fields.entrySet())
>>>> -        {
>>>> -            transform(transformation, e.getKey(), e.getValue());
>>>> -        }
>>>>     }
>>>>
>>>>     @SuppressWarnings("unchecked")
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,4 +1,4 @@
>>>> -// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
>>>> +// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>> @@ -25,10 +25,24 @@ import org.apache.tapestry5.internal.bin
>>>>  import org.apache.tapestry5.internal.services.ComponentClassCache;
>>>>  import org.apache.tapestry5.ioc.internal.util.InternalUtils;
>>>>  import org.apache.tapestry5.ioc.internal.util.TapestryException;
>>>> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>>>>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>>>>  import org.apache.tapestry5.ioc.services.TypeCoercer;
>>>>  import org.apache.tapestry5.model.MutableComponentModel;
>>>> -import org.apache.tapestry5.services.*;
>>>> +import org.apache.tapestry5.services.BindingSource;
>>>> +import org.apache.tapestry5.services.ClassTransformation;
>>>> +import org.apache.tapestry5.services.ComponentClassTransformWorker;
>>>> +import org.apache.tapestry5.services.ComponentDefaultProvider;
>>>> +import org.apache.tapestry5.services.ComponentMethodAdvice;
>>>> +import org.apache.tapestry5.services.ComponentMethodInvocation;
>>>> +import org.apache.tapestry5.services.ComponentValueProvider;
>>>> +import org.apache.tapestry5.services.FieldAccess;
>>>> +import org.apache.tapestry5.services.MethodAccess;
>>>> +import org.apache.tapestry5.services.MethodInvocationResult;
>>>> +import org.apache.tapestry5.services.TransformConstants;
>>>> +import org.apache.tapestry5.services.TransformField;
>>>> +import org.apache.tapestry5.services.TransformMethod;
>>>> +import org.apache.tapestry5.services.TransformMethodSignature;
>>>>  import org.slf4j.Logger;
>>>>  import org.slf4j.LoggerFactory;
>>>>
>>>> @@ -230,10 +244,10 @@ public class ParameterWorker implements
>>>>             {
>>>>                 final InternalComponentResources icr = (InternalComponentResources) resources;
>>>>
>>>> -                final String key = String.format("ParameterWorker:%s/%s", resources.getCompleteId(), parameterName);
>>>> -
>>>>                 final Class fieldType = classCache.forName(fieldTypeName);
>>>>
>>>> +                final PerThreadValue<ParameterState> stateValue = perThreadManager.createValue();
>>>> +
>>>>                 // Rely on some code generation in the component to set the default binding from
>>>>                 // the field, or from a default method.
>>>>
>>>> @@ -259,13 +273,13 @@ public class ParameterWorker implements
>>>>
>>>>                     private ParameterState getState()
>>>>                     {
>>>> -                        ParameterState state = (ParameterState) perThreadManager.get(key);
>>>> +                        ParameterState state = stateValue.get();
>>>>
>>>>                         if (state == null)
>>>>                         {
>>>>                             state = new ParameterState();
>>>>                             state.value = defaultValue;
>>>> -                            perThreadManager.put(key, state);
>>>> +                            stateValue.set(state);
>>>>                         }
>>>>
>>>>                         return state;
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Wed Feb  9 21:18:11 2011
>>>> @@ -35,10 +35,44 @@ import javax.servlet.ServletContext;
>>>>  import javax.servlet.http.HttpServletRequest;
>>>>  import javax.servlet.http.HttpServletResponse;
>>>>
>>>> -import org.apache.tapestry5.*;
>>>> +import org.apache.tapestry5.Asset;
>>>> +import org.apache.tapestry5.BindingConstants;
>>>> +import org.apache.tapestry5.Block;
>>>> +import org.apache.tapestry5.ComponentResources;
>>>> +import org.apache.tapestry5.EventContext;
>>>> +import org.apache.tapestry5.Field;
>>>> +import org.apache.tapestry5.FieldValidationSupport;
>>>> +import org.apache.tapestry5.FieldValidator;
>>>> +import org.apache.tapestry5.Link;
>>>> +import org.apache.tapestry5.MarkupWriter;
>>>> +import org.apache.tapestry5.MetaDataConstants;
>>>> +import org.apache.tapestry5.NullFieldStrategy;
>>>> +import org.apache.tapestry5.OptimizedSessionPersistedObject;
>>>> +import org.apache.tapestry5.PersistenceConstants;
>>>> +import org.apache.tapestry5.PropertyOverrides;
>>>> +import org.apache.tapestry5.RenderSupport;
>>>> +import org.apache.tapestry5.Renderable;
>>>> +import org.apache.tapestry5.SelectModel;
>>>> +import org.apache.tapestry5.StreamResponse;
>>>> +import org.apache.tapestry5.SymbolConstants;
>>>> +import org.apache.tapestry5.TapestryConstants;
>>>> +import org.apache.tapestry5.Translator;
>>>> +import org.apache.tapestry5.ValidationDecorator;
>>>> +import org.apache.tapestry5.Validator;
>>>> +import org.apache.tapestry5.VersionUtils;
>>>>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
>>>> -import org.apache.tapestry5.annotations.*;
>>>> +import org.apache.tapestry5.annotations.ActivationRequestParameter;
>>>>  import org.apache.tapestry5.annotations.ContentType;
>>>> +import org.apache.tapestry5.annotations.HeartbeatDeferred;
>>>> +import org.apache.tapestry5.annotations.Import;
>>>> +import org.apache.tapestry5.annotations.Meta;
>>>> +import org.apache.tapestry5.annotations.PageAttached;
>>>> +import org.apache.tapestry5.annotations.PageDetached;
>>>> +import org.apache.tapestry5.annotations.PageLoaded;
>>>> +import org.apache.tapestry5.annotations.PageReset;
>>>> +import org.apache.tapestry5.annotations.Path;
>>>> +import org.apache.tapestry5.annotations.Secure;
>>>> +import org.apache.tapestry5.annotations.Service;
>>>>  import org.apache.tapestry5.beaneditor.Validate;
>>>>  import org.apache.tapestry5.corelib.ClientValidation;
>>>>  import org.apache.tapestry5.corelib.LoopFormState;
>>>> @@ -59,7 +93,18 @@ import org.apache.tapestry5.internal.bea
>>>>  import org.apache.tapestry5.internal.beaneditor.MessagesConstraintGenerator;
>>>>  import org.apache.tapestry5.internal.beaneditor.PrimitiveFieldConstraintGenerator;
>>>>  import org.apache.tapestry5.internal.beaneditor.ValidateAnnotationConstraintGenerator;
>>>> -import org.apache.tapestry5.internal.bindings.*;
>>>> +import org.apache.tapestry5.internal.bindings.AssetBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.BlockBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.ComponentBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.ContextBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.LiteralBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.MessageBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.NullFieldStrategyBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.PropBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.RenderVariableBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.SymbolBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.TranslateBindingFactory;
>>>> +import org.apache.tapestry5.internal.bindings.ValidateBindingFactory;
>>>>  import org.apache.tapestry5.internal.grid.CollectionGridDataSource;
>>>>  import org.apache.tapestry5.internal.grid.NullDataSource;
>>>>  import org.apache.tapestry5.internal.gzip.GZipFilter;
>>>> @@ -89,18 +134,85 @@ import org.apache.tapestry5.internal.ser
>>>>  import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
>>>>  import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
>>>>  import org.apache.tapestry5.internal.services.templates.PageTemplateLocator;
>>>> -import org.apache.tapestry5.internal.transform.*;
>>>> +import org.apache.tapestry5.internal.transform.ActivationRequestParameterWorker;
>>>> +import org.apache.tapestry5.internal.transform.ApplicationStateWorker;
>>>> +import org.apache.tapestry5.internal.transform.BindParameterWorker;
>>>> +import org.apache.tapestry5.internal.transform.CachedWorker;
>>>> +import org.apache.tapestry5.internal.transform.ComponentWorker;
>>>> +import org.apache.tapestry5.internal.transform.DiscardAfterWorker;
>>>> +import org.apache.tapestry5.internal.transform.EnvironmentalWorker;
>>>> +import org.apache.tapestry5.internal.transform.HeartbeatDeferredWorker;
>>>> +import org.apache.tapestry5.internal.transform.ImportWorker;
>>>> +import org.apache.tapestry5.internal.transform.InjectComponentWorker;
>>>> +import org.apache.tapestry5.internal.transform.InjectContainerWorker;
>>>> +import org.apache.tapestry5.internal.transform.InjectNamedWorker;
>>>> +import org.apache.tapestry5.internal.transform.InjectPageWorker;
>>>> +import org.apache.tapestry5.internal.transform.InjectServiceWorker;
>>>> +import org.apache.tapestry5.internal.transform.InjectWorker;
>>>> +import org.apache.tapestry5.internal.transform.InvokePostRenderCleanupOnResourcesWorker;
>>>> +import org.apache.tapestry5.internal.transform.LogWorker;
>>>> +import org.apache.tapestry5.internal.transform.MixinAfterWorker;
>>>> +import org.apache.tapestry5.internal.transform.MixinWorker;
>>>> +import org.apache.tapestry5.internal.transform.OnEventWorker;
>>>> +import org.apache.tapestry5.internal.transform.PageActivationContextWorker;
>>>> +import org.apache.tapestry5.internal.transform.PageLifecycleAnnotationWorker;
>>>> +import org.apache.tapestry5.internal.transform.PageResetAnnotationWorker;
>>>> +import org.apache.tapestry5.internal.transform.ParameterWorker;
>>>> +import org.apache.tapestry5.internal.transform.PersistWorker;
>>>> +import org.apache.tapestry5.internal.transform.PropertyWorker;
>>>> +import org.apache.tapestry5.internal.transform.RenderCommandWorker;
>>>> +import org.apache.tapestry5.internal.transform.RenderPhaseMethodWorker;
>>>> +import org.apache.tapestry5.internal.transform.RetainWorker;
>>>> +import org.apache.tapestry5.internal.transform.SessionAttributeWorker;
>>>> +import org.apache.tapestry5.internal.transform.SupportsInformalParametersWorker;
>>>> +import org.apache.tapestry5.internal.transform.UnclaimedFieldWorker;
>>>>  import org.apache.tapestry5.internal.translator.NumericTranslator;
>>>>  import org.apache.tapestry5.internal.translator.NumericTranslatorSupport;
>>>>  import org.apache.tapestry5.internal.translator.StringTranslator;
>>>> -import org.apache.tapestry5.internal.util.PrimaryKeyEncoder2ValueEncoder;
>>>>  import org.apache.tapestry5.internal.util.RenderableAsBlock;
>>>>  import org.apache.tapestry5.internal.util.StringRenderable;
>>>>  import org.apache.tapestry5.internal.validator.ValidatorMacroImpl;
>>>> -import org.apache.tapestry5.ioc.*;
>>>> -import org.apache.tapestry5.ioc.annotations.*;
>>>> +import org.apache.tapestry5.ioc.AnnotationProvider;
>>>> +import org.apache.tapestry5.ioc.Configuration;
>>>> +import org.apache.tapestry5.ioc.Location;
>>>> +import org.apache.tapestry5.ioc.MappedConfiguration;
>>>> +import org.apache.tapestry5.ioc.Messages;
>>>> +import org.apache.tapestry5.ioc.MethodAdviceReceiver;
>>>> +import org.apache.tapestry5.ioc.ObjectLocator;
>>>> +import org.apache.tapestry5.ioc.ObjectProvider;
>>>> +import org.apache.tapestry5.ioc.OrderedConfiguration;
>>>> +import org.apache.tapestry5.ioc.Resource;
>>>> +import org.apache.tapestry5.ioc.ScopeConstants;
>>>> +import org.apache.tapestry5.ioc.ServiceBinder;
>>>> +import org.apache.tapestry5.ioc.annotations.Autobuild;
>>>> +import org.apache.tapestry5.ioc.annotations.Contribute;
>>>> +import org.apache.tapestry5.ioc.annotations.Inject;
>>>> +import org.apache.tapestry5.ioc.annotations.InjectService;
>>>> +import org.apache.tapestry5.ioc.annotations.IntermediateType;
>>>> +import org.apache.tapestry5.ioc.annotations.Local;
>>>> +import org.apache.tapestry5.ioc.annotations.Marker;
>>>> +import org.apache.tapestry5.ioc.annotations.Match;
>>>> +import org.apache.tapestry5.ioc.annotations.Primary;
>>>> +import org.apache.tapestry5.ioc.annotations.Scope;
>>>> +import org.apache.tapestry5.ioc.annotations.SubModule;
>>>> +import org.apache.tapestry5.ioc.annotations.Symbol;
>>>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>>> -import org.apache.tapestry5.ioc.services.*;
>>>> +import org.apache.tapestry5.ioc.services.Builtin;
>>>> +import org.apache.tapestry5.ioc.services.ChainBuilder;
>>>> +import org.apache.tapestry5.ioc.services.ClassFactory;
>>>> +import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
>>>> +import org.apache.tapestry5.ioc.services.Coercion;
>>>> +import org.apache.tapestry5.ioc.services.CoercionTuple;
>>>> +import org.apache.tapestry5.ioc.services.LazyAdvisor;
>>>> +import org.apache.tapestry5.ioc.services.MasterObjectProvider;
>>>> +import org.apache.tapestry5.ioc.services.PerthreadManager;
>>>> +import org.apache.tapestry5.ioc.services.PipelineBuilder;
>>>> +import org.apache.tapestry5.ioc.services.PropertyAccess;
>>>> +import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
>>>> +import org.apache.tapestry5.ioc.services.StrategyBuilder;
>>>> +import org.apache.tapestry5.ioc.services.SymbolSource;
>>>> +import org.apache.tapestry5.ioc.services.ThreadLocale;
>>>> +import org.apache.tapestry5.ioc.services.TypeCoercer;
>>>>  import org.apache.tapestry5.ioc.util.AvailableValues;
>>>>  import org.apache.tapestry5.ioc.util.IdAllocator;
>>>>  import org.apache.tapestry5.ioc.util.StrategyRegistry;
>>>> @@ -524,31 +636,22 @@ public final class TapestryModule
>>>>      * <dt>Persist</dt>
>>>>      * <dd>Allows fields to store their their value persistently between requests</dd>
>>>>      * <dt>Parameter</dt>
>>>> -     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter}
>>>> -     * annotation</dd>
>>>> +     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter} annotation</dd>
>>>>      * <dt>Component</dt>
>>>> -     * <dd>Defines embedded components based on the
>>>> -     * {@link org.apache.tapestry5.annotations.Component} annotation</dd>
>>>> +     * <dd>Defines embedded components based on the {@link org.apache.tapestry5.annotations.Component} annotation</dd>
>>>>      * <dt>Mixin</dt>
>>>>      * <dd>Adds a mixin as part of a component's implementation</dd>
>>>>      * <dt>Environment</dt>
>>>> -     * <dd>Allows fields to contain values extracted from the
>>>> -     * {@link org.apache.tapestry5.services.Environment} service</dd>
>>>> +     * <dd>Allows fields to contain values extracted from the {@link org.apache.tapestry5.services.Environment} service</dd>
>>>>      * <dt>Inject</dt>
>>>> -     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a
>>>> -     * value is supplied</dd>
>>>> +     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a value is supplied</dd>
>>>>      * <dt>InjectService</dt>
>>>>      * <dd>Handles the {@link org.apache.tapestry5.ioc.annotations.InjectService} annotation</dd>
>>>>      * <dt>InjectPage</dt>
>>>> -     * <dd>Adds code to allow access to other pages via the
>>>> -     * {@link org.apache.tapestry5.annotations.InjectPage} field annotation</dd>
>>>> +     * <dd>Adds code to allow access to other pages via the {@link org.apache.tapestry5.annotations.InjectPage} field
>>>> +     * annotation</dd>
>>>>      * <dt>InjectBlock</dt>
>>>>      * <dd>Allows a block from the template to be injected into a field</dd>
>>>> -     * <dt>IncludeStylesheet</dt>
>>>> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeStylesheet} annotation</dd>
>>>> -     * <dt>IncludeJavaScriptLibrary</dt>
>>>> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeJavaScriptLibrary} annotation
>>>> -     * </dd>
>>>>      * <dt>Import</dt>
>>>>      * <dd>Supports the {@link Import} annotation</dd>
>>>>      * <dt>SupportsInformalParameters</dt>
>>>> @@ -564,12 +667,10 @@ public final class TapestryModule
>>>>      * <dt>RenderPhase</dt>
>>>>      * <dd>Link in render phaes methods</dd>
>>>>      * <dt>InvokePostRenderCleanupOnResources</dt>
>>>> -     * <dd>Makes sure
>>>> -     * {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is
>>>> -     * invoked after a component finishes rendering</dd>
>>>> +     * <dd>Makes sure {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is invoked
>>>> +     * after a component finishes rendering</dd>
>>>>      * <dt>GenerateAccessors</dt>
>>>> -     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property}
>>>> -     * annotation is present</dd>
>>>> +     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property} annotation is present</dd>
>>>>      * <dt>Cached</dt>
>>>>      * <dd>Checks for the {@link org.apache.tapestry5.annotations.Cached} annotation</dd>
>>>>      * <dt>Log</dt>
>>>> @@ -637,9 +738,6 @@ public final class TapestryModule
>>>>
>>>>         configuration.addInstance("DiscardAfter", DiscardAfterWorker.class);
>>>>
>>>> -        configuration.addInstance("IncludeStylesheet", IncludeStylesheetWorker.class, "after:SetupRender");
>>>> -        configuration
>>>> -                .addInstance("IncludeJavaScriptLibrary", IncludeJavaScriptLibraryWorker.class, "after:SetupRender");
>>>>         configuration.addInstance("Import", ImportWorker.class, "after:SetupRender");
>>>>
>>>>         configuration.add("InvokePostRenderCleanupOnResources", new InvokePostRenderCleanupOnResourcesWorker());
>>>> @@ -794,11 +892,10 @@ public final class TapestryModule
>>>>      * <dt>CommonResources</dt>
>>>>      * <dd>access to properties of resources (log, messages, etc.)</dd>
>>>>      * <dt>Asset</dt>
>>>> -     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to
>>>> -     * the component class</dd>
>>>> +     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to the component class</dd>
>>>>      * <dt>Service</dt>
>>>> -     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type
>>>> -     * against Tapestry IoC services</dd>
>>>> +     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type against Tapestry IoC
>>>> +     * services</dd>
>>>>      * </dl>
>>>>      */
>>>>     public static void contributeInjectionProvider(OrderedConfiguration<InjectionProvider> configuration,
>>>> @@ -861,11 +958,11 @@ public final class TapestryModule
>>>>     /**
>>>>      * <dl>
>>>>      * <dt>StoreIntoGlobals</dt>
>>>> -     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals}
>>>> -     * at the start of the pipeline</dd>
>>>> +     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals} at the start of the
>>>> +     * pipeline</dd>
>>>>      * <dt>IgnoredPaths</dt>
>>>> -     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration)
>>>> -     * to be mapped to other applications</dd>
>>>> +     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration) to be mapped to other
>>>> +     * applications</dd>
>>>>      * <dt>GZip</dt>
>>>>      * <dd>Handles GZIP compression of response streams (if supported by client)</dd>
>>>>      */
>>>> @@ -902,18 +999,17 @@ public final class TapestryModule
>>>>      * Continues a number of filters into the RequestHandler service:
>>>>      * <dl>
>>>>      * <dt>StaticFiles</dt>
>>>> -     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the
>>>> -     * servlet container process the request</dd>
>>>> +     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the servlet container process
>>>> +     * the request</dd>
>>>>      * <dt>CheckForUpdates</dt>
>>>> -     * <dd>Periodically fires events that checks to see if the file system sources for any cached
>>>> -     * data has changed (see {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
>>>> +     * <dd>Periodically fires events that checks to see if the file system sources for any cached data has changed (see
>>>> +     * {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
>>>>      * <dt>ErrorFilter</dt>
>>>> -     * <dd>Catches request errors and lets the
>>>> -     * {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them</dd>
>>>> +     * <dd>Catches request errors and lets the {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them
>>>> +     * </dd>
>>>>      * <dt>StoreIntoGlobals</dt>
>>>> -     * <dd>Stores the request and response into the
>>>> -     * {@link org.apache.tapestry5.services.RequestGlobals} service (this is repeated at the end of
>>>> -     * the pipeline, in case any filter substitutes the request or response).
>>>> +     * <dd>Stores the request and response into the {@link org.apache.tapestry5.services.RequestGlobals} service (this
>>>> +     * is repeated at the end of the pipeline, in case any filter substitutes the request or response).
>>>>      * </dl>
>>>>      */
>>>>     public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration, Context context,
>>>> @@ -1028,7 +1124,6 @@ public final class TapestryModule
>>>>      * <li>String to {@link Renderable}
>>>>      * <li>{@link Renderable} to {@link Block}
>>>>      * <li>String to {@link DateFormat}
>>>> -     * <li>{@link PrimaryKeyEncoder} to {@link ValueEncoder}
>>>>      * <li>String to {@link Resource} (via {@link AssetSource#resourceForPath(String)})
>>>>      * <li>{@link Renderable} to {@link RenderCommand}</li>
>>>>      * <li>String to {@link LoopFormState}</li>
>>>> @@ -1173,9 +1268,6 @@ public final class TapestryModule
>>>>                     }
>>>>                 }));
>>>>
>>>> -        configuration.add(CoercionTuple.create(PrimaryKeyEncoder.class, ValueEncoder.class,
>>>> -                new PrimaryKeyEncoder2ValueEncoder(coercer)));
>>>> -
>>>>         configuration.add(CoercionTuple.create(Date.class, Calendar.class, new Coercion<Date, Calendar>()
>>>>         {
>>>>             public Calendar coerce(Date input)
>>>> @@ -1278,9 +1370,9 @@ public final class TapestryModule
>>>>      * the chain is responsible for ordinary
>>>>      * property names (and property paths).
>>>>      * <p/>
>>>> -     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See
>>>> -     * <a href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no
>>>> -     * longer any built-in contributions to the configuration.
>>>> +     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See <a
>>>> +     * href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no longer any built-in
>>>> +     * contributions to the configuration.
>>>>      *
>>>>      * @param configuration
>>>>      *            contributions of special factories for some constants, each
>>>> @@ -1348,8 +1440,7 @@ public final class TapestryModule
>>>>     }
>>>>
>>>>     /**
>>>> -     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's
>>>> -     * {@link Environment}.
>>>> +     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's {@link Environment}.
>>>>      *
>>>>      * @since 5.2.0
>>>>      */
>>>> @@ -1359,8 +1450,7 @@ public final class TapestryModule
>>>>     }
>>>>
>>>>     /**
>>>> -     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport}
>>>> -     * inside this
>>>> +     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport} inside this
>>>>      * thread's {@link org.apache.tapestry5.services.Environment}.
>>>>      *
>>>>      * @since 5.1.0.1
>>>> @@ -1418,8 +1508,7 @@ public final class TapestryModule
>>>>     }
>>>>
>>>>     /**
>>>> -     * Initializes the application, using a pipeline of
>>>> -     * {@link org.apache.tapestry5.services.ApplicationInitializer}s.
>>>> +     * Initializes the application, using a pipeline of {@link org.apache.tapestry5.services.ApplicationInitializer}s.
>>>>      */
>>>>     @Marker(Primary.class)
>>>>     public ApplicationInitializer buildApplicationInitializer(Logger logger,
>>>> @@ -1621,8 +1710,7 @@ public final class TapestryModule
>>>>
>>>>     /**
>>>>      * The MarkupRenderer service is used to render a full page as markup.
>>>> -     * Supports an ordered configuration of
>>>> -     * {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
>>>> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
>>>>      */
>>>>     public MarkupRenderer buildMarkupRenderer(Logger logger, @Autobuild
>>>>     MarkupRendererTerminator terminator, List<MarkupRendererFilter> configuration)
>>>> @@ -1634,11 +1722,10 @@ public final class TapestryModule
>>>>     /**
>>>>      * A wrapper around {@link org.apache.tapestry5.internal.services.PageRenderQueue} used for
>>>>      * partial page renders.
>>>> -     * Supports an ordered configuration of
>>>> -     * {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
>>>> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
>>>>      *
>>>> -     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration,
>>>> -     *      org.apache.tapestry5.Asset, org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
>>>> +     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration, org.apache.tapestry5.Asset,
>>>> +     *      org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
>>>>      */
>>>>     public PartialMarkupRenderer buildPartialMarkupRenderer(Logger logger,
>>>>             List<PartialMarkupRendererFilter> configuration, @Autobuild
>>>> @@ -1675,8 +1762,7 @@ public final class TapestryModule
>>>>     /**
>>>>      * Builds the action request handler for Ajax requests, based on a
>>>>      * {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder
>>>> -     * pipeline} around
>>>> -     * {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
>>>> +     * pipeline} around {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
>>>>      * the
>>>>      * request handler are supported here as well.
>>>>      */
>>>> @@ -1728,11 +1814,11 @@ public final class TapestryModule
>>>>      * <dt>String</dt>
>>>>      * <dd>Sends a page render redirect</dd>
>>>>      * <dt>Class</dt>
>>>> -     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is
>>>> -     * more refactoring safe than the page name)</dd>
>>>> +     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is more refactoring safe
>>>> +     * than the page name)</dd>
>>>>      * <dt>{@link Component}</dt>
>>>> -     * <dd>A page's root component (though a non-root component will work, but will generate a
>>>> -     * warning). A direct to the containing page is sent.</dd>
>>>> +     * <dd>A page's root component (though a non-root component will work, but will generate a warning). A direct to the
>>>> +     * containing page is sent.</dd>
>>>>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>>>>      * <dd>The stream response is sent as the actual reply.</dd>
>>>>      * <dt>URL</dt>
>>>> @@ -1788,16 +1874,13 @@ public final class TapestryModule
>>>>      * <dt>{@link RenderCommand}</dt>
>>>>      * <dd>Typically, a {@link org.apache.tapestry5.Block}</dd>
>>>>      * <dt>{@link org.apache.tapestry5.annotations.Component}</dt>
>>>> -     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON
>>>> -     * response is sent)</dd>
>>>> -     * <dt>{@link org.apache.tapestry5.json.JSONObject} or
>>>> -     * {@link org.apache.tapestry5.json.JSONArray}</dt>
>>>> +     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON response is sent)</dd>
>>>> +     * <dt>{@link org.apache.tapestry5.json.JSONObject} or {@link org.apache.tapestry5.json.JSONArray}</dt>
>>>>      * <dd>The JSONObject is returned as a text/javascript response</dd>
>>>>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>>>>      * <dd>The stream response is sent as the actual response</dd>
>>>>      * <dt>String</dt>
>>>> -     * <dd>Interprets the value as a logical page name and sends a client response to redirect to
>>>> -     * that page</dd>
>>>> +     * <dd>Interprets the value as a logical page name and sends a client response to redirect to that page</dd>
>>>>      * <dt>{@link org.apache.tapestry5.Link}</dt>
>>>>      * <dd>Sends a JSON response to redirect to the link</dd>
>>>>      * <dt>{@link Class}</dt>
>>>> @@ -1806,10 +1889,9 @@ public final class TapestryModule
>>>>      * <dd>Sends a single JSON response to update the content of multiple zones
>>>>      * </dl>
>>>>      * <p>
>>>> -     * In most cases, when you want to support a new type, you should convert it to one of the
>>>> -     * built-in supported types (such as {@link RenderCommand}. You can then inject the master
>>>> -     * AjaxComponentEventResultProcessor (use the {@link Ajax} marker annotation) and delegate to
>>>> -     * it.
>>>> +     * In most cases, when you want to support a new type, you should convert it to one of the built-in supported types
>>>> +     * (such as {@link RenderCommand}. You can then inject the master AjaxComponentEventResultProcessor (use the
>>>> +     * {@link Ajax} marker annotation) and delegate to it.
>>>>      */
>>>>     @Contribute(ComponentEventResultProcessor.class)
>>>>     @Ajax
>>>> @@ -1837,8 +1919,8 @@ public final class TapestryModule
>>>>      * <dt>Asset</dt>
>>>>      * <dd>Provides access to assets (context, classpath and virtual) via {@link AssetDispatcher}</dd>
>>>>      * <dt>PageRender</dt>
>>>> -     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and
>>>> -     * forwards onto {@link PageRenderRequestHandler}</dd>
>>>> +     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and forwards onto
>>>> +     * {@link PageRenderRequestHandler}</dd>
>>>>      * <dt>ComponentEvent</dt>
>>>>      * <dd>Identifies the {@link ComponentEventRequestParameters} and forwards onto the
>>>>      * {@link ComponentEventRequestHandler}</dd>
>>>> @@ -1869,9 +1951,9 @@ public final class TapestryModule
>>>>
>>>>     /**
>>>>      * Contributes a default object renderer for type Object, plus specialized
>>>> -     * renderers for {@link org.apache.tapestry5.services.Request},
>>>> -     * {@link org.apache.tapestry5.ioc.Location}, {@link org.apache.tapestry5.ComponentResources},
>>>> -     * {@link org.apache.tapestry5.EventContext}, {@link AvailableValues},
>>>> +     * renderers for {@link org.apache.tapestry5.services.Request}, {@link org.apache.tapestry5.ioc.Location},
>>>> +     * {@link org.apache.tapestry5.ComponentResources}, {@link org.apache.tapestry5.EventContext},
>>>> +     * {@link AvailableValues},
>>>>      * List, and Object[].
>>>>      */
>>>>     @SuppressWarnings("unchecked")
>>>> @@ -1908,8 +1990,8 @@ public final class TapestryModule
>>>>     }
>>>>
>>>>     /**
>>>> -     * Adds page render filters, each of which provides an
>>>> -     * {@link org.apache.tapestry5.annotations.Environmental} service. Filters
>>>> +     * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
>>>> +     * service. Filters
>>>>      * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
>>>>      * components as they render.
>>>>      * <dl>
>>>> @@ -2486,8 +2568,7 @@ public final class TapestryModule
>>>>     }
>>>>
>>>>     /**
>>>> -     * Adds a listener to the
>>>> -     * {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
>>>> +     * Adds a listener to the {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
>>>>      * {@link PropertyAccess} and {@link TypeCoercer} caches on
>>>>      * a class loader invalidation. In addition, forces the
>>>>      * realization of {@link ComponentClassResolver} at startup.
>>>> @@ -2538,12 +2619,11 @@ public final class TapestryModule
>>>>      * Contributes filters:
>>>>      * <dl>
>>>>      * <dt>Ajax</dt>
>>>> -     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so
>>>> -     * </dd>
>>>> +     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so</dd>
>>>>      * <dt>ImmediateRender</dt>
>>>>      * <dd>When {@linkplain SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
>>>> -     * immediate action response rendering} is enabled, generates the markup response (instead of a
>>>> -     * page redirect response, which is the normal behavior)</dd>
>>>> +     * immediate action response rendering} is enabled, generates the markup response (instead of a page redirect
>>>> +     * response, which is the normal behavior)</dd>
>>>>      * <dt>Secure</dt>
>>>>      * <dd>Sends a redirect if an non-secure request accesses a secure page</dd>
>>>>      * </dl>
>>>> @@ -2686,8 +2766,7 @@ public final class TapestryModule
>>>>      * Identifies String, Number and Boolean as immutable objects, a catch-all
>>>>      * handler for Object (that understands
>>>>      * the {@link org.apache.tapestry5.annotations.ImmutableSessionPersistedObject} annotation),
>>>> -     * and handlers for {@link org.apache.tapestry5.OptimizedSessionPersistedObject} and
>>>> -     * {@link org.apache.tapestry5.OptimizedApplicationStateObject}.
>>>> +     * and a handler for {@link org.apache.tapestry5.OptimizedSessionPersistedObject}.
>>>>      *
>>>>      * @since 5.1.0.0
>>>>      */
>>>> @@ -2709,7 +2788,6 @@ public final class TapestryModule
>>>>         configuration.add(Boolean.class, immutable);
>>>>
>>>>         configuration.add(OptimizedSessionPersistedObject.class, new OptimizedSessionPersistedObjectAnalyzer());
>>>> -        configuration.add(OptimizedApplicationStateObject.class, new OptimizedApplicationStateObjectAnalyzer());
>>>>     }
>>>>
>>>>     /**
>>>> @@ -2894,8 +2972,7 @@ public final class TapestryModule
>>>>     }
>>>>
>>>>     /**
>>>> -     * Contributes "AppCatalog" as the Resource defined by
>>>> -     * {@link SymbolConstants#APPLICATION_CATALOG}.
>>>> +     * Contributes "AppCatalog" as the Resource defined by {@link SymbolConstants#APPLICATION_CATALOG}.
>>>>      *
>>>>      * @since 5.2.0
>>>>      */
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,4 +1,4 @@
>>>> -// Copyright 2010 The Apache Software Foundation
>>>> +// Copyright 2010, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>> @@ -20,7 +20,6 @@ import org.apache.tapestry5.FieldFocusPr
>>>>  import org.apache.tapestry5.RenderSupport;
>>>>  import org.apache.tapestry5.SymbolConstants;
>>>>  import org.apache.tapestry5.annotations.Environmental;
>>>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>>>  import org.apache.tapestry5.json.JSONObject;
>>>>  import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
>>>>
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml Wed Feb  9 21:18:11 2011
>>>> @@ -1,20 +1,20 @@
>>>>  <html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>>>>
>>>> -    <h1>DateField in AjaxFormLoop</h1>
>>>> +  <h1>DateField in AjaxFormLoop</h1>
>>>>
>>>> -    <t:form>
>>>> +  <t:form>
>>>>
>>>> -        <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderConverter">
>>>> +    <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderEncoder">
>>>>
>>>> -            <t:datefield value="current.date"/>
>>>> -            <t:removerowlink>remove</t:removerowlink>
>>>> +      <t:datefield value="current.date"/>
>>>> +      <t:removerowlink>remove</t:removerowlink>
>>>>
>>>> -        </div>
>>>> +    </div>
>>>>
>>>> -        <p>
>>>> -            <input type="submit" value="Go"/>
>>>> -        </p>
>>>> -    </t:form>
>>>> +    <p>
>>>> +      <input type="submit" value="Go"/>
>>>> +    </p>
>>>> +  </t:form>
>>>>
>>>>
>>>>  </html>
>>>> \ No newline at end of file
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml Wed Feb  9 21:18:11 2011
>>>> @@ -1,36 +1,35 @@
>>>>  <html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>>>>
>>>> -    <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
>>>> +  <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
>>>>
>>>> -    <t:form>
>>>> +  <t:form>
>>>>
>>>> -        <ul>
>>>> -            <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="encoder"
>>>> -                context="demoContextValue">
>>>> -                <t:submitnotifier>
>>>> -                    <t:textfield t:id="value" value="item.value"/>
>>>> -                    <t:removerowlink>remove</t:removerowlink>
>>>> -                </t:submitnotifier>
>>>> -                <t:parameter name="addRow">
>>>> -                    <t:addrowlink>Add a row</t:addrowlink>
>>>> -                </t:parameter>
>>>> -            </li>
>>>> -        </ul>
>>>> -
>>>> -        <div class="t-beaneditor-row">
>>>> -            <input type="submit" value="Sum up the values"/>
>>>> -        </div>
>>>> -
>>>> -    </t:form>
>>>> -
>>>> -    <p>
>>>> -        Current sum:
>>>> -        <span id="sum">${sum}</span>
>>>> -    </p>
>>>> +    <ul>
>>>> +      <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="doubleItemEncoder" context="demoContextValue">
>>>> +        <t:submitnotifier>
>>>> +          <t:textfield t:id="value" value="item.value"/>
>>>> +          <t:removerowlink>remove</t:removerowlink>
>>>> +        </t:submitnotifier>
>>>> +        <t:parameter name="addRow">
>>>> +          <t:addrowlink>Add a row</t:addrowlink>
>>>> +        </t:parameter>
>>>> +      </li>
>>>> +    </ul>
>>>> +
>>>> +    <div class="t-beaneditor-row">
>>>> +      <input type="submit" value="Sum up the values"/>
>>>> +    </div>
>>>> +
>>>> +  </t:form>
>>>> +
>>>> +  <p>
>>>> +    Current sum:
>>>> +    <span id="sum">${sum}</span>
>>>> +  </p>
>>>>
>>>> -    <h2>Data</h2>
>>>> +  <h2>Data</h2>
>>>>
>>>> -    <t:grid source="doubleItems"/>
>>>> +  <t:grid source="doubleItems"/>
>>>>
>>>>
>>>>  </html>
>>>> \ No newline at end of file
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml Wed Feb  9 21:18:11 2011
>>>> @@ -11,7 +11,7 @@
>>>>                 <th> Title </th>
>>>>                 <th> Reorder </th>
>>>>             </tr>
>>>> -            <tr t:type="Loop" source="items" value="item" encoder="encoder">
>>>> +            <tr t:type="Loop" source="items" value="item" encoder="toDoItemEncoder">
>>>>                 <td>
>>>>                     <input t:type="TextField" t:id="title" value="item.title" size="30"
>>>>                         validate="required"/>
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2009 The Apache Software Foundation
>>>> +// Copyright 2009, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2007 The Apache Software Foundation
>>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,13 +14,13 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.base;
>>>>
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>>  import org.apache.tapestry5.annotations.Property;
>>>> +import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.integration.app1.data.IncidentData;
>>>>
>>>>  public class BaseComponent
>>>>  {
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     @Property
>>>>     private IncidentData incidentData;
>>>>  }
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java Wed Feb  9 21:18:11 2011
>>>> @@ -4,7 +4,7 @@
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,7 +14,7 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.components;
>>>>
>>>> -import org.apache.tapestry5.annotations.IncludeStylesheet;
>>>> +import org.apache.tapestry5.annotations.Import;
>>>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>>>  import org.apache.tapestry5.ioc.services.Builtin;
>>>>  import org.apache.tapestry5.ioc.services.ClassFactory;
>>>> @@ -22,10 +22,11 @@ import org.apache.tapestry5.services.Com
>>>>  import org.apache.tapestry5.services.Request;
>>>>
>>>>  /**
>>>> - * Here's a component with a template, including a t:body element.   Really should rename this to "Layout" as that's the
>>>> + * Here's a component with a template, including a t:body element. Really should rename this to "Layout" as that's the
>>>>  * T5 naming.
>>>>  */
>>>> -@IncludeStylesheet({ "context:layout/style.css", "context:css/app.css" })
>>>> +@Import(stylesheet =
>>>> +{ "context:layout/style.css", "context:css/app.css" })
>>>>  public class Border
>>>>  {
>>>>     @Inject
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2008 The Apache Software Foundation
>>>> +// Copyright 2008, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,8 +14,8 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>>  import org.apache.tapestry5.annotations.Component;
>>>> +import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.corelib.components.BeanEditor;
>>>>  import org.apache.tapestry5.corelib.components.Form;
>>>>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
>>>> @@ -25,13 +25,13 @@ public class BeanEditorBeanEditContext
>>>>     @Component
>>>>     private Form form;
>>>>
>>>> -    @Component(parameters = { "object=registrationData" })
>>>> +    @Component(parameters =
>>>> +    { "object=registrationData" })
>>>>     private BeanEditor editor;
>>>>
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     private RegistrationData data;
>>>>
>>>> -
>>>>     public RegistrationData getRegistrationData()
>>>>     {
>>>>         return data;
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,4 +1,4 @@
>>>> -// Copyright 2007, 2010 The Apache Software Foundation
>>>> +// Copyright 2007, 2010, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>> @@ -15,10 +15,10 @@
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>>  import org.apache.tapestry5.PersistenceConstants;
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>>  import org.apache.tapestry5.annotations.Component;
>>>>  import org.apache.tapestry5.annotations.Persist;
>>>>  import org.apache.tapestry5.annotations.Property;
>>>> +import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.beaneditor.Validate;
>>>>  import org.apache.tapestry5.corelib.ClientValidation;
>>>>  import org.apache.tapestry5.corelib.components.BeanEditForm;
>>>> @@ -33,7 +33,7 @@ public class BeanEditorDemo
>>>>     { "clientValidation=prop:clientValidation" })
>>>>     private BeanEditForm form;
>>>>
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     @Property
>>>>     private RegistrationData registrationData;
>>>>
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2008 The Apache Software Foundation
>>>> +// Copyright 2008, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,8 +14,8 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>>  import org.apache.tapestry5.annotations.Component;
>>>> +import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.corelib.components.BeanEditor;
>>>>  import org.apache.tapestry5.corelib.components.Form;
>>>>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
>>>> @@ -25,10 +25,11 @@ public class BeanEditorOverride
>>>>     @Component
>>>>     private Form form;
>>>>
>>>> -    @Component(parameters = { "object=registrationData" })
>>>> +    @Component(parameters =
>>>> +    { "object=registrationData" })
>>>>     private BeanEditor editor;
>>>>
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     private RegistrationData data;
>>>>
>>>>     public RegistrationData getRegistrationData()
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -//  Copyright 2008, 2009 The Apache Software Foundation
>>>> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,18 +14,18 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>>>> -import org.apache.tapestry5.annotations.Persist;
>>>> -import org.apache.tapestry5.annotations.Property;
>>>> -import org.apache.tapestry5.integration.app1.data.DateHolder;
>>>> -import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>>> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
>>>> -
>>>>  import java.util.Collections;
>>>>  import java.util.Comparator;
>>>>  import java.util.List;
>>>>  import java.util.Map;
>>>>
>>>> +import org.apache.tapestry5.ValueEncoder;
>>>> +import org.apache.tapestry5.annotations.Persist;
>>>> +import org.apache.tapestry5.annotations.Property;
>>>> +import org.apache.tapestry5.func.F;
>>>> +import org.apache.tapestry5.integration.app1.data.DateHolder;
>>>> +import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>>> +
>>>>  public class DateFieldAjaxFormLoop
>>>>  {
>>>>     @Persist
>>>> @@ -40,6 +40,24 @@ public class DateFieldAjaxFormLoop
>>>>             database = CollectionFactory.newMap();
>>>>     }
>>>>
>>>> +    public ValueEncoder<DateHolder> getDateHolderEncoder()
>>>> +    {
>>>> +        return new ValueEncoder<DateHolder>()
>>>> +        {
>>>> +            public String toClient(DateHolder value)
>>>> +            {
>>>> +                return String.valueOf(value.getId());
>>>> +            }
>>>> +
>>>> +            public DateHolder toValue(String clientValue)
>>>> +            {
>>>> +                Integer key = new Integer(clientValue);
>>>> +
>>>> +                return database.get(key);
>>>> +            }
>>>> +
>>>> +        };
>>>> +    }
>>>>
>>>>     public List<DateHolder> getDateHolders()
>>>>     {
>>>> @@ -56,19 +74,6 @@ public class DateFieldAjaxFormLoop
>>>>         return result;
>>>>     }
>>>>
>>>> -    public PrimaryKeyEncoder<Integer, DateHolder> getDateHolderConverter()
>>>> -    {
>>>> -        DefaultPrimaryKeyEncoder<Integer, DateHolder> result =
>>>> -                new DefaultPrimaryKeyEncoder<Integer, DateHolder>(Integer.class);
>>>> -
>>>> -        for (DateHolder dh : getDateHolders())
>>>> -        {
>>>> -            result.add(dh.getId(), dh);
>>>> -        }
>>>> -
>>>> -        return result;
>>>> -    }
>>>> -
>>>>     DateHolder onAddRowFromLoop()
>>>>     {
>>>>         DateHolder dh = new DateHolder();
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2008, 2009 The Apache Software Foundation
>>>> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,7 +14,13 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>>>> +import java.util.Collections;
>>>> +import java.util.Comparator;
>>>> +import java.util.List;
>>>> +import java.util.Map;
>>>> +import java.util.concurrent.atomic.AtomicLong;
>>>> +
>>>> +import org.apache.tapestry5.ValueEncoder;
>>>>  import org.apache.tapestry5.annotations.Log;
>>>>  import org.apache.tapestry5.annotations.Persist;
>>>>  import org.apache.tapestry5.annotations.Property;
>>>> @@ -22,12 +28,6 @@ import org.apache.tapestry5.integration.
>>>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>>>  import org.testng.Assert;
>>>>
>>>> -import java.util.Collections;
>>>> -import java.util.Comparator;
>>>> -import java.util.List;
>>>> -import java.util.Map;
>>>> -import java.util.concurrent.atomic.AtomicLong;
>>>> -
>>>>  public class FormInjectorDemo
>>>>  {
>>>>     private static final long DEMO_CONTEXT_VALUE = System.currentTimeMillis();
>>>> @@ -51,27 +51,21 @@ public class FormInjectorDemo
>>>>         }
>>>>     }
>>>>
>>>> -    public PrimaryKeyEncoder getEncoder()
>>>> +    public ValueEncoder<DoubleItem> getDoubleItemEncoder()
>>>>     {
>>>> -        return new PrimaryKeyEncoder<Long, DoubleItem>()
>>>> +        return new ValueEncoder<DoubleItem>()
>>>>         {
>>>> -            public Long toKey(DoubleItem value)
>>>> -            {
>>>> -                return value.getId();
>>>> -            }
>>>>
>>>> -            public void prepareForKeys(List<Long> keys)
>>>> +            public DoubleItem toValue(String clientValue)
>>>>             {
>>>> -            }
>>>> +                Long key = new Long(clientValue);
>>>>
>>>> -            public DoubleItem toValue(Long key)
>>>> -            {
>>>>                 return DB.get(key);
>>>>             }
>>>>
>>>> -            public Class<Long> getKeyType()
>>>> +            public String toClient(DoubleItem value)
>>>>             {
>>>> -                return Long.class;
>>>> +                return String.valueOf(value.getId());
>>>>             }
>>>>         };
>>>>     }
>>>> @@ -94,7 +88,7 @@ public class FormInjectorDemo
>>>>     Object onAddRow(long context)
>>>>     {
>>>>         Assert.assertEquals(context, DEMO_CONTEXT_VALUE,
>>>> -                            "Context value provided to AjaxFormLoop must be provided to the event handler method.");
>>>> +                "Context value provided to AjaxFormLoop must be provided to the event handler method.");
>>>>
>>>>         DoubleItem item = new DoubleItem();
>>>>         item.setId(ID_ALLOCATOR.incrementAndGet());
>>>> @@ -119,7 +113,6 @@ public class FormInjectorDemo
>>>>         sum += item.getValue();
>>>>     }
>>>>
>>>> -
>>>>     void onActionFromReset()
>>>>     {
>>>>         DB.clear();
>>>> @@ -133,6 +126,6 @@ public class FormInjectorDemo
>>>>     void onActivate(String context)
>>>>     {
>>>>         Assert.assertEquals(context, "FakePageActivationContextValue",
>>>> -                            "Page activation context was not passed through correctly.");
>>>> +                "Page activation context was not passed through correctly.");
>>>>     }
>>>>  }
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2007 The Apache Software Foundation
>>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,16 +14,16 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>> +import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.integration.app1.data.RolePath;
>>>>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>>>>
>>>>  public class MultiBeanDemoResult
>>>>  {
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     private UserCredentials credentials;
>>>>
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     private RolePath rolePath;
>>>>
>>>>     public UserCredentials getCredentials()
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2007 The Apache Software Foundation
>>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,19 +14,19 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>>  import org.apache.tapestry5.annotations.Component;
>>>>  import org.apache.tapestry5.annotations.InjectPage;
>>>> +import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.corelib.components.Form;
>>>>  import org.apache.tapestry5.integration.app1.data.RolePath;
>>>>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>>>>
>>>>  public class MultiBeanEditDemo
>>>>  {
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     private UserCredentials credentials;
>>>>
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     private RolePath rolePath;
>>>>
>>>>     @InjectPage
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java Wed Feb  9 21:18:11 2011
>>>> @@ -1,10 +1,10 @@
>>>> -// Copyright 2007 The Apache Software Foundation
>>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>>  //
>>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,12 +14,12 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>> +import org.apache.tapestry5.annotations.SessionState;
>>>>  import org.apache.tapestry5.integration.app1.data.BirthdayReminder;
>>>>
>>>>  public class ShowBirthdayReminder
>>>>  {
>>>> -    @ApplicationState
>>>> +    @SessionState
>>>>     private BirthdayReminder reminder;
>>>>
>>>>     public BirthdayReminder getReminder()
>>>>
>>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
>>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>>> ==============================================================================
>>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java (original)
>>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java Wed Feb  9 21:18:11 2011
>>>> @@ -4,7 +4,7 @@
>>>>  // you may not use this file except in compliance with the License.
>>>>  // You may obtain a copy of the License at
>>>>  //
>>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>>  //
>>>>  // Unless required by applicable law or agreed to in writing, software
>>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>> @@ -14,31 +14,58 @@
>>>>
>>>>  package org.apache.tapestry5.integration.app1.pages;
>>>>
>>>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>>>> +import java.util.List;
>>>> +
>>>> +import org.apache.tapestry5.ValueEncoder;
>>>>  import org.apache.tapestry5.annotations.Component;
>>>> +import org.apache.tapestry5.annotations.Property;
>>>>  import org.apache.tapestry5.corelib.components.Form;
>>>> +import org.apache.tapestry5.func.F;
>>>> +import org.apache.tapestry5.func.Predicate;
>>>>  import org.apache.tapestry5.integration.app1.data.ToDoItem;
>>>>  import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
>>>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>>> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
>>>> -
>>>> -import java.util.List;
>>>>
>>>>  public class ToDoList
>>>>  {
>>>> +    @Property
>>>>     @Inject
>>>>     private ToDoDatabase database;
>>>>
>>>> -    private ToDoItem item;
>>>> +    private List<ToDoItem> items;
>>>>
>>>> -    private DefaultPrimaryKeyEncoder<Long, ToDoItem> encoder;
>>>> +    private ToDoItem item;
>>>>
>>>>     @Component
>>>>     private Form form;
>>>>
>>>> +    public ValueEncoder<ToDoItem> getToDoItemEncoder()
>>>> +    {
>>>> +        return new ValueEncoder<ToDoItem>()
>>>> +        {
>>>> +            public ToDoItem toValue(String clientValue)
>>>> +            {
>>>> +                final long id = Long.parseLong(clientValue);
>>>> +
>>>> +                return F.flow(items).filter(new Predicate<ToDoItem>()
>>>> +                {
>>>> +                    public boolean accept(ToDoItem element)
>>>> +                    {
>>>> +                        return element.getId() == id;
>>>> +                    }
>>>> +                }).first();
>>>> +            }
>>>> +
>>>> +            public String toClient(ToDoItem value)
>>>> +            {
>>>> +                return String.valueOf(value.getId());
>>>> +            }
>>>> +        };
>>>> +    }
>>>> +
>>>>     public List<ToDoItem> getItems()
>>>>     {
>>>> -        return encoder.getValues();
>>>> +        return items;
>>>>     }
>>>>
>>>>     public ToDoItem getItem()
>>>> @@ -51,33 +78,16 @@ public class ToDoList
>>>>         this.item = item;
>>>>     }
>>>>
>>>> -    public ToDoDatabase getDatabase()
>>>> -    {
>>>> -        return database;
>>>> -    }
>>>> -
>>>> -    public PrimaryKeyEncoder getEncoder()
>>>> -    {
>>>> -        return encoder;
>>>> -    }
>>>> -
>>>>     void onPrepare()
>>>>     {
>>>> -        List<ToDoItem> items = database.findAll();
>>>> -
>>>> -        encoder = new DefaultPrimaryKeyEncoder<Long, ToDoItem>(long.class);
>>>> -
>>>> -        for (ToDoItem item : items)
>>>> -        {
>>>> -            encoder.add(item.getId(), item);
>>>> -        }
>>>> +        items = database.findAll();
>>>>     }
>>>>
>>>>     void onSuccess()
>>>>     {
>>>>         int order = 0;
>>>>
>>>> -        for (ToDoItem item : encoder.getValues())
>>>> +        for (ToDoItem item : items)
>>>>         {
>>>>             item.setOrder(order++);
>>>>             database.update(item);
>>>> @@ -90,7 +100,7 @@ public class ToDoList
>>>>         {
>>>>             ToDoItem item = new ToDoItem();
>>>>             item.setTitle("<New To Do>");
>>>> -            item.setOrder(encoder.getValues().size());
>>>> +            item.setOrder(items.size());
>>>>
>>>>             database.add(item);
>>>>         }
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>>> Tapestry PMC / Tacos developer
>>> Open Source / JEE Consulting
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: dev-help@tapestry.apache.org
>>>
>>>
>>
>>
>>
>> --
>> Howard M. Lewis Ship
>>
>> Creator of Apache Tapestry
>>
>> The source for Tapestry training, mentoring and support. Contact me to
>> learn how I can get you up and productive in Tapestry fast!
>>
>> (971) 678-5210
>> http://howardlewisship.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: dev-help@tapestry.apache.org
>>
>>
>
>
>
> --
> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> Tapestry PMC / Tacos developer
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: svn commit: r1069114 [1/2] - in /tapestry/tapestry5/trunk: ./ quickstart/src/main/resources/archetype-resources/src/main/java/services/ tapestry-annotations/ tapestry-core/ tapestry-core/src/main/java/org/apache/tapestry5/ tapestry-core/src/main/

Posted by Andreas Andreou <an...@di.uoa.gr>.
Well, I don't know - i guess if it's not easy to customize this per user,
then it can stay there for a while. On the other hand, i think we do deploy
snapshots to repository.apache.org after eash commit, so i thought i'd ask

On Thu, Feb 10, 2011 at 00:30, Howard Lewis Ship <hl...@gmail.com> wrote:
> At best, its only temporary. Is that a problem?
>
> On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
>> Should the reference to ftp://howardlewisship.com/snapshot-repository
>> exist in the commit?
>>
>> On Wed, Feb 9, 2011 at 23:18,  <hl...@apache.org> wrote:
>>> Author: hlship
>>> Date: Wed Feb  9 21:18:11 2011
>>> New Revision: 1069114
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1069114&view=rev
>>> Log:
>>> Merge branch 'local' into trunk
>>>
>>> Added:
>>>    tapestry/tapestry5/trunk/build.gradle
>>>    tapestry/tapestry5/trunk/settings.gradle
>>>    tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
>>>    tapestry/tapestry5/trunk/tapestry-core/build.gradle
>>>    tapestry/tapestry5/trunk/tapestry-func/build.gradle
>>>    tapestry/tapestry5/trunk/tapestry-ioc/build.gradle
>>>    tapestry/tapestry5/trunk/tapestry-json/build.gradle
>>>    tapestry/tapestry5/trunk/tapestry-test/build.gradle
>>> Removed:
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedApplicationStateObject.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/PrimaryKeyEncoder.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ApplicationState.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeStylesheet.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedApplicationStateObjectAnalyzer.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeJavaScriptLibraryWorker.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeStylesheetWorker.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoder.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoderTest.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoderTest.java
>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
>>> Modified:
>>>    tapestry/tapestry5/trunk/.gitignore
>>>    tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ViewRegistration.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ZoneDemo.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForASO.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentLocaleImplTest.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MaybeStateHolder.java
>>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/StateHolder.java
>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java
>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFabUtils.java
>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerthreadManager.java
>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/IOCTestCase.java
>>>    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImplTest.java
>>>
>>> Modified: tapestry/tapestry5/trunk/.gitignore
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/.gitignore?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/.gitignore (original)
>>> +++ tapestry/tapestry5/trunk/.gitignore Wed Feb  9 21:18:11 2011
>>> @@ -7,4 +7,8 @@
>>>  *.iws
>>>  target
>>>  test-output
>>> -temp-testng*.xml
>>> \ No newline at end of file
>>> +temp-testng*.xml
>>> +build/
>>> +.gradle
>>> +*~
>>> +\#*
>>> \ No newline at end of file
>>>
>>> Added: tapestry/tapestry5/trunk/build.gradle
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/build.gradle?rev=1069114&view=auto
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/build.gradle (added)
>>> +++ tapestry/tapestry5/trunk/build.gradle Wed Feb  9 21:18:11 2011
>>> @@ -0,0 +1,69 @@
>>> +description = "Apache Tapestry 5 Project"
>>> +
>>> +if (!project.hasProperty('deployUserName')) deployUserName = '*UNSET-USERNAME*'
>>> +if (!project.hasProperty('deployPassword')) deployPassword = '*UNSET-PASSWORD*'
>>> +
>>> +
>>> +jettyVersion = '7.0.0.v20091005'
>>> +tomcatVersion = '6.0.30'
>>> +testngVersion = '5.14.9'
>>> +easymockVersion = '3.0'
>>> +
>>> +subprojects {
>>> +    apply plugin: 'java'
>>> +    apply plugin: 'groovy' // mostly for testing
>>> +    apply plugin: 'eclipse'
>>> +    apply plugin: 'maven'
>>> +    apply plugin: 'project-report'
>>> +
>>> +    sourceCompatibility = '1.5'
>>> +    targetCompatibility = '1.5'
>>> +
>>> +    version = '5.3.0-SNAPSHOT'
>>> +
>>> +    group = 'org.apache.tapestry'
>>> +
>>> +    repositories {
>>> +        mavenCentral()
>>> +
>>> +        // All things JBoss/Javassist/Hibernate
>>> +        mavenRepo urls: "https://repository.jboss.org/nexus/content/repositories/releases/"
>>> +    }
>>> +
>>> +    configurations {
>>> +        deployerJars
>>> +    }
>>> +
>>> +    dependencies {
>>> +        groovy "org.codehaus.groovy:groovy-all:1.7.4"
>>> +
>>> +        deployerJars "org.apache.maven.wagon:wagon-ftp:1.0-beta-2"
>>> +    }
>>> +
>>> +    test {
>>> +        useTestNG()
>>> +
>>> +        options.suites("src/test/conf/testng.xml")
>>> +    }
>>> +
>>> +    task sourcesJar(type: Jar, dependsOn:classes) {
>>> +       classifier = 'sources'
>>> +       from sourceSets.main.allSource
>>> +    }
>>> +
>>> +    artifacts {
>>> +       archives sourcesJar
>>> +    }
>>> +
>>> +
>>> +    uploadArchives {
>>> +        repositories.mavenDeployer {
>>> +            configuration = configurations.deployerJars
>>> +            // deployUserName and deployPassword should be specified in ~/.gradle/gradle.properties
>>> +            snapshotRepository(url: "ftp://howardlewisship.com/snapshot-repository") {
>>> +              authentication(userName: deployUserName, password: deployPassword)
>>> +            }
>>> +
>>> +        }
>>> +    }
>>> +}
>>> \ No newline at end of file
>>>
>>> Modified: tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java (original)
>>> +++ tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java Wed Feb  9 21:18:11 2011
>>> @@ -51,6 +51,14 @@ public class AppModule
>>>         // header. If existing assets are changed, the version number should also
>>>         // change, to force the browser to download new versions.
>>>         configuration.add(SymbolConstants.APPLICATION_VERSION, "${version}");
>>> +
>>> +        // This is desirable in development, but again, is usually turned off
>>> +        // by the time the application gets to production. The Blackbird console
>>> +        // is very functionaly, but may be intimidating to users (who should not see
>>> +        // it unless there are Ajax-oriented programming bugs). Regardless, when disabled
>>> +        // a simple floating, fading message is displayed at the top of the page.
>>> +
>>> +        configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "true");
>>>     }
>>>
>>>
>>>
>>> Added: tapestry/tapestry5/trunk/settings.gradle
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/settings.gradle?rev=1069114&view=auto
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/settings.gradle (added)
>>> +++ tapestry/tapestry5/trunk/settings.gradle Wed Feb  9 21:18:11 2011
>>> @@ -0,0 +1,4 @@
>>> +include "tapestry-annotations", "tapestry-test", "tapestry-func", "tapestry-ioc", "tapestry-json", "tapestry-core"
>>> +// TODO: tapestry-hibernate-core, tapestry-hibernate, tapestry-jmx, tapestry-upload, tapestry-spring, tapestry-beanvalidator
>>> +// TODO (LATER): tapestry-component-report, quickstart
>>> +
>>>
>>> Added: tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-annotations/build.gradle?rev=1069114&view=auto
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-annotations/build.gradle (added)
>>> +++ tapestry/tapestry5/trunk/tapestry-annotations/build.gradle Wed Feb  9 21:18:11 2011
>>> @@ -0,0 +1,10 @@
>>> +description = "Annotations used with Tapestry applications"
>>> +
>>> +// To avoid conflict with the Tapestry 4 tapestry-annotations, so both may be used at the same time
>>> +baseName = 'tapestry5-annotations'
>>> +
>>> +configure(install.repositories.mavenInstaller) {
>>> +  pom.project {
>>> +    artifactId baseName
>>> +  }
>>> +}
>>> \ No newline at end of file
>>>
>>> Added: tapestry/tapestry5/trunk/tapestry-core/build.gradle
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/build.gradle?rev=1069114&view=auto
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/build.gradle (added)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/build.gradle Wed Feb  9 21:18:11 2011
>>> @@ -0,0 +1,14 @@
>>> +description="Central module for Tapestry, containing all core services and components"
>>> +
>>> +dependencies {
>>> +  compile project(':tapestry-ioc')
>>> +  compile project(':tapestry-json')
>>> +
>>> +  testCompile project(':tapestry-test')
>>> +
>>> +  compile "commons-codec:commons-codec:1.3"
>>> +  compile "javax.servlet:servlet-api:2.4"
>>> +
>>> +  compile "org.antlr:antlr-runtime:3.3", { transitive = false }
>>> +
>>> +}
>>> \ No newline at end of file
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java Wed Feb  9 21:18:11 2011
>>> @@ -1,4 +1,4 @@
>>> -// Copyright 2009, 2010 The Apache Software Foundation
>>> +// Copyright 2009, 2010, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>> @@ -27,7 +27,7 @@ import org.apache.tapestry5.TrackableCom
>>>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
>>>  import org.apache.tapestry5.annotations.Environmental;
>>>  import org.apache.tapestry5.annotations.Events;
>>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>> +import org.apache.tapestry5.annotations.Import;
>>>  import org.apache.tapestry5.annotations.Parameter;
>>>  import org.apache.tapestry5.annotations.SupportsInformalParameters;
>>>  import org.apache.tapestry5.dom.Element;
>>> @@ -53,7 +53,7 @@ import org.apache.tapestry5.services.jav
>>>  * @since 5.1.0.1
>>>  */
>>>  @SupportsInformalParameters
>>> -@IncludeJavaScriptLibrary("ProgressiveDisplay.js")
>>> +@Import(library = "ProgressiveDisplay.js")
>>>  @Events(EventConstants.PROGRESSIVE_DISPLAY)
>>>  @SuppressWarnings("all")
>>>  public class ProgressiveDisplay
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java Wed Feb  9 21:18:11 2011
>>> @@ -1,4 +1,4 @@
>>> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
>>> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>> @@ -17,11 +17,19 @@ package org.apache.tapestry5.corelib.mix
>>>  import java.util.Collections;
>>>  import java.util.List;
>>>
>>> -import org.apache.tapestry5.*;
>>> +import org.apache.tapestry5.Asset;
>>> +import org.apache.tapestry5.BindingConstants;
>>> +import org.apache.tapestry5.CSSClassConstants;
>>> +import org.apache.tapestry5.ComponentEventCallback;
>>> +import org.apache.tapestry5.ComponentResources;
>>> +import org.apache.tapestry5.ContentType;
>>> +import org.apache.tapestry5.EventConstants;
>>> +import org.apache.tapestry5.Field;
>>> +import org.apache.tapestry5.Link;
>>> +import org.apache.tapestry5.MarkupWriter;
>>>  import org.apache.tapestry5.annotations.Environmental;
>>>  import org.apache.tapestry5.annotations.Events;
>>>  import org.apache.tapestry5.annotations.Import;
>>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>>  import org.apache.tapestry5.annotations.InjectContainer;
>>>  import org.apache.tapestry5.annotations.Parameter;
>>>  import org.apache.tapestry5.annotations.Path;
>>> @@ -29,7 +37,6 @@ import org.apache.tapestry5.annotations.
>>>  import org.apache.tapestry5.internal.util.Holder;
>>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>>  import org.apache.tapestry5.ioc.services.TypeCoercer;
>>> -import org.apache.tapestry5.json.JSONArray;
>>>  import org.apache.tapestry5.json.JSONObject;
>>>  import org.apache.tapestry5.services.MarkupWriterFactory;
>>>  import org.apache.tapestry5.services.ResponseRenderer;
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java Wed Feb  9 21:18:11 2011
>>> @@ -1,4 +1,4 @@
>>> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
>>> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>> @@ -21,15 +21,16 @@ import org.apache.tapestry5.SymbolConsta
>>>  import org.apache.tapestry5.internal.TapestryInternalUtils;
>>>  import org.apache.tapestry5.ioc.annotations.Symbol;
>>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>>>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>>>  import org.apache.tapestry5.services.PersistentLocale;
>>>
>>>  public class PersistentLocaleImpl implements PersistentLocale
>>>  {
>>> -    private final PerthreadManager perThreadManager;
>>> -
>>>     private final String supportedLocales;
>>>
>>> +    private final PerThreadValue<Locale> localeValue;
>>> +
>>>     private final Set<String> localeNames = CollectionFactory.newSet();
>>>
>>>     public PersistentLocaleImpl(PerthreadManager perThreadManager,
>>> @@ -37,9 +38,10 @@ public class PersistentLocaleImpl implem
>>>     @Symbol(SymbolConstants.SUPPORTED_LOCALES)
>>>     String supportedLocales)
>>>     {
>>> -        this.perThreadManager = perThreadManager;
>>>         this.supportedLocales = supportedLocales;
>>>
>>> +        localeValue = perThreadManager.createValue();
>>> +
>>>         for (String name : TapestryInternalUtils.splitAtCommas(supportedLocales))
>>>         {
>>>             localeNames.add(name.toLowerCase());
>>> @@ -49,26 +51,26 @@ public class PersistentLocaleImpl implem
>>>     public void set(Locale locale)
>>>     {
>>>         assert locale != null;
>>> +
>>>         if (!localeNames.contains(locale.toString().toLowerCase()))
>>>         {
>>>             String message = String
>>> -                    .format(
>>> -                            "Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
>>> +                    .format("Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
>>>                             locale, supportedLocales, SymbolConstants.SUPPORTED_LOCALES);
>>>
>>>             throw new IllegalArgumentException(message);
>>>         }
>>>
>>> -        perThreadManager.put(this, locale);
>>> +        localeValue.set(locale);
>>>     }
>>>
>>>     public Locale get()
>>>     {
>>> -        return (Locale) perThreadManager.get(this);
>>> +        return localeValue.get();
>>>     }
>>>
>>>     public boolean isSet()
>>>     {
>>> -        return get() != null;
>>> +        return localeValue.exists();
>>>     }
>>>  }
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java Wed Feb  9 21:18:11 2011
>>> @@ -1,4 +1,4 @@
>>> -// Copyright 2007, 2008, 2010 The Apache Software Foundation
>>> +// Copyright 2007, 2008, 2010, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>> @@ -15,10 +15,7 @@
>>>  package org.apache.tapestry5.internal.transform;
>>>
>>>  import java.util.List;
>>> -import java.util.Map;
>>> -import java.util.TreeMap;
>>>
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>  import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.func.Predicate;
>>>  import org.apache.tapestry5.internal.services.ComponentClassCache;
>>> @@ -48,30 +45,14 @@ public class ApplicationStateWorker impl
>>>
>>>     public void transform(ClassTransformation transformation, MutableComponentModel model)
>>>     {
>>> -        Map<TransformField, Boolean> fields = new TreeMap<TransformField, Boolean>();
>>> -
>>> -        for (TransformField field : transformation.matchFieldsWithAnnotation(ApplicationState.class))
>>> -        {
>>> -            ApplicationState annotation = field.getAnnotation(ApplicationState.class);
>>> -
>>> -            fields.put(field, annotation.create());
>>> -
>>> -            field.claim(annotation);
>>> -        }
>>> -
>>>         for (TransformField field : transformation.matchFieldsWithAnnotation(SessionState.class))
>>>         {
>>>             SessionState annotation = field.getAnnotation(SessionState.class);
>>>
>>> -            fields.put(field, annotation.create());
>>> +            transform(transformation, field, annotation.create());
>>>
>>>             field.claim(annotation);
>>>         }
>>> -
>>> -        for (Map.Entry<TransformField, Boolean> e : fields.entrySet())
>>> -        {
>>> -            transform(transformation, e.getKey(), e.getValue());
>>> -        }
>>>     }
>>>
>>>     @SuppressWarnings("unchecked")
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java Wed Feb  9 21:18:11 2011
>>> @@ -1,4 +1,4 @@
>>> -// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
>>> +// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>> @@ -25,10 +25,24 @@ import org.apache.tapestry5.internal.bin
>>>  import org.apache.tapestry5.internal.services.ComponentClassCache;
>>>  import org.apache.tapestry5.ioc.internal.util.InternalUtils;
>>>  import org.apache.tapestry5.ioc.internal.util.TapestryException;
>>> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>>>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>>>  import org.apache.tapestry5.ioc.services.TypeCoercer;
>>>  import org.apache.tapestry5.model.MutableComponentModel;
>>> -import org.apache.tapestry5.services.*;
>>> +import org.apache.tapestry5.services.BindingSource;
>>> +import org.apache.tapestry5.services.ClassTransformation;
>>> +import org.apache.tapestry5.services.ComponentClassTransformWorker;
>>> +import org.apache.tapestry5.services.ComponentDefaultProvider;
>>> +import org.apache.tapestry5.services.ComponentMethodAdvice;
>>> +import org.apache.tapestry5.services.ComponentMethodInvocation;
>>> +import org.apache.tapestry5.services.ComponentValueProvider;
>>> +import org.apache.tapestry5.services.FieldAccess;
>>> +import org.apache.tapestry5.services.MethodAccess;
>>> +import org.apache.tapestry5.services.MethodInvocationResult;
>>> +import org.apache.tapestry5.services.TransformConstants;
>>> +import org.apache.tapestry5.services.TransformField;
>>> +import org.apache.tapestry5.services.TransformMethod;
>>> +import org.apache.tapestry5.services.TransformMethodSignature;
>>>  import org.slf4j.Logger;
>>>  import org.slf4j.LoggerFactory;
>>>
>>> @@ -230,10 +244,10 @@ public class ParameterWorker implements
>>>             {
>>>                 final InternalComponentResources icr = (InternalComponentResources) resources;
>>>
>>> -                final String key = String.format("ParameterWorker:%s/%s", resources.getCompleteId(), parameterName);
>>> -
>>>                 final Class fieldType = classCache.forName(fieldTypeName);
>>>
>>> +                final PerThreadValue<ParameterState> stateValue = perThreadManager.createValue();
>>> +
>>>                 // Rely on some code generation in the component to set the default binding from
>>>                 // the field, or from a default method.
>>>
>>> @@ -259,13 +273,13 @@ public class ParameterWorker implements
>>>
>>>                     private ParameterState getState()
>>>                     {
>>> -                        ParameterState state = (ParameterState) perThreadManager.get(key);
>>> +                        ParameterState state = stateValue.get();
>>>
>>>                         if (state == null)
>>>                         {
>>>                             state = new ParameterState();
>>>                             state.value = defaultValue;
>>> -                            perThreadManager.put(key, state);
>>> +                            stateValue.set(state);
>>>                         }
>>>
>>>                         return state;
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Wed Feb  9 21:18:11 2011
>>> @@ -35,10 +35,44 @@ import javax.servlet.ServletContext;
>>>  import javax.servlet.http.HttpServletRequest;
>>>  import javax.servlet.http.HttpServletResponse;
>>>
>>> -import org.apache.tapestry5.*;
>>> +import org.apache.tapestry5.Asset;
>>> +import org.apache.tapestry5.BindingConstants;
>>> +import org.apache.tapestry5.Block;
>>> +import org.apache.tapestry5.ComponentResources;
>>> +import org.apache.tapestry5.EventContext;
>>> +import org.apache.tapestry5.Field;
>>> +import org.apache.tapestry5.FieldValidationSupport;
>>> +import org.apache.tapestry5.FieldValidator;
>>> +import org.apache.tapestry5.Link;
>>> +import org.apache.tapestry5.MarkupWriter;
>>> +import org.apache.tapestry5.MetaDataConstants;
>>> +import org.apache.tapestry5.NullFieldStrategy;
>>> +import org.apache.tapestry5.OptimizedSessionPersistedObject;
>>> +import org.apache.tapestry5.PersistenceConstants;
>>> +import org.apache.tapestry5.PropertyOverrides;
>>> +import org.apache.tapestry5.RenderSupport;
>>> +import org.apache.tapestry5.Renderable;
>>> +import org.apache.tapestry5.SelectModel;
>>> +import org.apache.tapestry5.StreamResponse;
>>> +import org.apache.tapestry5.SymbolConstants;
>>> +import org.apache.tapestry5.TapestryConstants;
>>> +import org.apache.tapestry5.Translator;
>>> +import org.apache.tapestry5.ValidationDecorator;
>>> +import org.apache.tapestry5.Validator;
>>> +import org.apache.tapestry5.VersionUtils;
>>>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
>>> -import org.apache.tapestry5.annotations.*;
>>> +import org.apache.tapestry5.annotations.ActivationRequestParameter;
>>>  import org.apache.tapestry5.annotations.ContentType;
>>> +import org.apache.tapestry5.annotations.HeartbeatDeferred;
>>> +import org.apache.tapestry5.annotations.Import;
>>> +import org.apache.tapestry5.annotations.Meta;
>>> +import org.apache.tapestry5.annotations.PageAttached;
>>> +import org.apache.tapestry5.annotations.PageDetached;
>>> +import org.apache.tapestry5.annotations.PageLoaded;
>>> +import org.apache.tapestry5.annotations.PageReset;
>>> +import org.apache.tapestry5.annotations.Path;
>>> +import org.apache.tapestry5.annotations.Secure;
>>> +import org.apache.tapestry5.annotations.Service;
>>>  import org.apache.tapestry5.beaneditor.Validate;
>>>  import org.apache.tapestry5.corelib.ClientValidation;
>>>  import org.apache.tapestry5.corelib.LoopFormState;
>>> @@ -59,7 +93,18 @@ import org.apache.tapestry5.internal.bea
>>>  import org.apache.tapestry5.internal.beaneditor.MessagesConstraintGenerator;
>>>  import org.apache.tapestry5.internal.beaneditor.PrimitiveFieldConstraintGenerator;
>>>  import org.apache.tapestry5.internal.beaneditor.ValidateAnnotationConstraintGenerator;
>>> -import org.apache.tapestry5.internal.bindings.*;
>>> +import org.apache.tapestry5.internal.bindings.AssetBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.BlockBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.ComponentBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.ContextBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.LiteralBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.MessageBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.NullFieldStrategyBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.PropBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.RenderVariableBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.SymbolBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.TranslateBindingFactory;
>>> +import org.apache.tapestry5.internal.bindings.ValidateBindingFactory;
>>>  import org.apache.tapestry5.internal.grid.CollectionGridDataSource;
>>>  import org.apache.tapestry5.internal.grid.NullDataSource;
>>>  import org.apache.tapestry5.internal.gzip.GZipFilter;
>>> @@ -89,18 +134,85 @@ import org.apache.tapestry5.internal.ser
>>>  import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
>>>  import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
>>>  import org.apache.tapestry5.internal.services.templates.PageTemplateLocator;
>>> -import org.apache.tapestry5.internal.transform.*;
>>> +import org.apache.tapestry5.internal.transform.ActivationRequestParameterWorker;
>>> +import org.apache.tapestry5.internal.transform.ApplicationStateWorker;
>>> +import org.apache.tapestry5.internal.transform.BindParameterWorker;
>>> +import org.apache.tapestry5.internal.transform.CachedWorker;
>>> +import org.apache.tapestry5.internal.transform.ComponentWorker;
>>> +import org.apache.tapestry5.internal.transform.DiscardAfterWorker;
>>> +import org.apache.tapestry5.internal.transform.EnvironmentalWorker;
>>> +import org.apache.tapestry5.internal.transform.HeartbeatDeferredWorker;
>>> +import org.apache.tapestry5.internal.transform.ImportWorker;
>>> +import org.apache.tapestry5.internal.transform.InjectComponentWorker;
>>> +import org.apache.tapestry5.internal.transform.InjectContainerWorker;
>>> +import org.apache.tapestry5.internal.transform.InjectNamedWorker;
>>> +import org.apache.tapestry5.internal.transform.InjectPageWorker;
>>> +import org.apache.tapestry5.internal.transform.InjectServiceWorker;
>>> +import org.apache.tapestry5.internal.transform.InjectWorker;
>>> +import org.apache.tapestry5.internal.transform.InvokePostRenderCleanupOnResourcesWorker;
>>> +import org.apache.tapestry5.internal.transform.LogWorker;
>>> +import org.apache.tapestry5.internal.transform.MixinAfterWorker;
>>> +import org.apache.tapestry5.internal.transform.MixinWorker;
>>> +import org.apache.tapestry5.internal.transform.OnEventWorker;
>>> +import org.apache.tapestry5.internal.transform.PageActivationContextWorker;
>>> +import org.apache.tapestry5.internal.transform.PageLifecycleAnnotationWorker;
>>> +import org.apache.tapestry5.internal.transform.PageResetAnnotationWorker;
>>> +import org.apache.tapestry5.internal.transform.ParameterWorker;
>>> +import org.apache.tapestry5.internal.transform.PersistWorker;
>>> +import org.apache.tapestry5.internal.transform.PropertyWorker;
>>> +import org.apache.tapestry5.internal.transform.RenderCommandWorker;
>>> +import org.apache.tapestry5.internal.transform.RenderPhaseMethodWorker;
>>> +import org.apache.tapestry5.internal.transform.RetainWorker;
>>> +import org.apache.tapestry5.internal.transform.SessionAttributeWorker;
>>> +import org.apache.tapestry5.internal.transform.SupportsInformalParametersWorker;
>>> +import org.apache.tapestry5.internal.transform.UnclaimedFieldWorker;
>>>  import org.apache.tapestry5.internal.translator.NumericTranslator;
>>>  import org.apache.tapestry5.internal.translator.NumericTranslatorSupport;
>>>  import org.apache.tapestry5.internal.translator.StringTranslator;
>>> -import org.apache.tapestry5.internal.util.PrimaryKeyEncoder2ValueEncoder;
>>>  import org.apache.tapestry5.internal.util.RenderableAsBlock;
>>>  import org.apache.tapestry5.internal.util.StringRenderable;
>>>  import org.apache.tapestry5.internal.validator.ValidatorMacroImpl;
>>> -import org.apache.tapestry5.ioc.*;
>>> -import org.apache.tapestry5.ioc.annotations.*;
>>> +import org.apache.tapestry5.ioc.AnnotationProvider;
>>> +import org.apache.tapestry5.ioc.Configuration;
>>> +import org.apache.tapestry5.ioc.Location;
>>> +import org.apache.tapestry5.ioc.MappedConfiguration;
>>> +import org.apache.tapestry5.ioc.Messages;
>>> +import org.apache.tapestry5.ioc.MethodAdviceReceiver;
>>> +import org.apache.tapestry5.ioc.ObjectLocator;
>>> +import org.apache.tapestry5.ioc.ObjectProvider;
>>> +import org.apache.tapestry5.ioc.OrderedConfiguration;
>>> +import org.apache.tapestry5.ioc.Resource;
>>> +import org.apache.tapestry5.ioc.ScopeConstants;
>>> +import org.apache.tapestry5.ioc.ServiceBinder;
>>> +import org.apache.tapestry5.ioc.annotations.Autobuild;
>>> +import org.apache.tapestry5.ioc.annotations.Contribute;
>>> +import org.apache.tapestry5.ioc.annotations.Inject;
>>> +import org.apache.tapestry5.ioc.annotations.InjectService;
>>> +import org.apache.tapestry5.ioc.annotations.IntermediateType;
>>> +import org.apache.tapestry5.ioc.annotations.Local;
>>> +import org.apache.tapestry5.ioc.annotations.Marker;
>>> +import org.apache.tapestry5.ioc.annotations.Match;
>>> +import org.apache.tapestry5.ioc.annotations.Primary;
>>> +import org.apache.tapestry5.ioc.annotations.Scope;
>>> +import org.apache.tapestry5.ioc.annotations.SubModule;
>>> +import org.apache.tapestry5.ioc.annotations.Symbol;
>>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>> -import org.apache.tapestry5.ioc.services.*;
>>> +import org.apache.tapestry5.ioc.services.Builtin;
>>> +import org.apache.tapestry5.ioc.services.ChainBuilder;
>>> +import org.apache.tapestry5.ioc.services.ClassFactory;
>>> +import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
>>> +import org.apache.tapestry5.ioc.services.Coercion;
>>> +import org.apache.tapestry5.ioc.services.CoercionTuple;
>>> +import org.apache.tapestry5.ioc.services.LazyAdvisor;
>>> +import org.apache.tapestry5.ioc.services.MasterObjectProvider;
>>> +import org.apache.tapestry5.ioc.services.PerthreadManager;
>>> +import org.apache.tapestry5.ioc.services.PipelineBuilder;
>>> +import org.apache.tapestry5.ioc.services.PropertyAccess;
>>> +import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
>>> +import org.apache.tapestry5.ioc.services.StrategyBuilder;
>>> +import org.apache.tapestry5.ioc.services.SymbolSource;
>>> +import org.apache.tapestry5.ioc.services.ThreadLocale;
>>> +import org.apache.tapestry5.ioc.services.TypeCoercer;
>>>  import org.apache.tapestry5.ioc.util.AvailableValues;
>>>  import org.apache.tapestry5.ioc.util.IdAllocator;
>>>  import org.apache.tapestry5.ioc.util.StrategyRegistry;
>>> @@ -524,31 +636,22 @@ public final class TapestryModule
>>>      * <dt>Persist</dt>
>>>      * <dd>Allows fields to store their their value persistently between requests</dd>
>>>      * <dt>Parameter</dt>
>>> -     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter}
>>> -     * annotation</dd>
>>> +     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter} annotation</dd>
>>>      * <dt>Component</dt>
>>> -     * <dd>Defines embedded components based on the
>>> -     * {@link org.apache.tapestry5.annotations.Component} annotation</dd>
>>> +     * <dd>Defines embedded components based on the {@link org.apache.tapestry5.annotations.Component} annotation</dd>
>>>      * <dt>Mixin</dt>
>>>      * <dd>Adds a mixin as part of a component's implementation</dd>
>>>      * <dt>Environment</dt>
>>> -     * <dd>Allows fields to contain values extracted from the
>>> -     * {@link org.apache.tapestry5.services.Environment} service</dd>
>>> +     * <dd>Allows fields to contain values extracted from the {@link org.apache.tapestry5.services.Environment} service</dd>
>>>      * <dt>Inject</dt>
>>> -     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a
>>> -     * value is supplied</dd>
>>> +     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a value is supplied</dd>
>>>      * <dt>InjectService</dt>
>>>      * <dd>Handles the {@link org.apache.tapestry5.ioc.annotations.InjectService} annotation</dd>
>>>      * <dt>InjectPage</dt>
>>> -     * <dd>Adds code to allow access to other pages via the
>>> -     * {@link org.apache.tapestry5.annotations.InjectPage} field annotation</dd>
>>> +     * <dd>Adds code to allow access to other pages via the {@link org.apache.tapestry5.annotations.InjectPage} field
>>> +     * annotation</dd>
>>>      * <dt>InjectBlock</dt>
>>>      * <dd>Allows a block from the template to be injected into a field</dd>
>>> -     * <dt>IncludeStylesheet</dt>
>>> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeStylesheet} annotation</dd>
>>> -     * <dt>IncludeJavaScriptLibrary</dt>
>>> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeJavaScriptLibrary} annotation
>>> -     * </dd>
>>>      * <dt>Import</dt>
>>>      * <dd>Supports the {@link Import} annotation</dd>
>>>      * <dt>SupportsInformalParameters</dt>
>>> @@ -564,12 +667,10 @@ public final class TapestryModule
>>>      * <dt>RenderPhase</dt>
>>>      * <dd>Link in render phaes methods</dd>
>>>      * <dt>InvokePostRenderCleanupOnResources</dt>
>>> -     * <dd>Makes sure
>>> -     * {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is
>>> -     * invoked after a component finishes rendering</dd>
>>> +     * <dd>Makes sure {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is invoked
>>> +     * after a component finishes rendering</dd>
>>>      * <dt>GenerateAccessors</dt>
>>> -     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property}
>>> -     * annotation is present</dd>
>>> +     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property} annotation is present</dd>
>>>      * <dt>Cached</dt>
>>>      * <dd>Checks for the {@link org.apache.tapestry5.annotations.Cached} annotation</dd>
>>>      * <dt>Log</dt>
>>> @@ -637,9 +738,6 @@ public final class TapestryModule
>>>
>>>         configuration.addInstance("DiscardAfter", DiscardAfterWorker.class);
>>>
>>> -        configuration.addInstance("IncludeStylesheet", IncludeStylesheetWorker.class, "after:SetupRender");
>>> -        configuration
>>> -                .addInstance("IncludeJavaScriptLibrary", IncludeJavaScriptLibraryWorker.class, "after:SetupRender");
>>>         configuration.addInstance("Import", ImportWorker.class, "after:SetupRender");
>>>
>>>         configuration.add("InvokePostRenderCleanupOnResources", new InvokePostRenderCleanupOnResourcesWorker());
>>> @@ -794,11 +892,10 @@ public final class TapestryModule
>>>      * <dt>CommonResources</dt>
>>>      * <dd>access to properties of resources (log, messages, etc.)</dd>
>>>      * <dt>Asset</dt>
>>> -     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to
>>> -     * the component class</dd>
>>> +     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to the component class</dd>
>>>      * <dt>Service</dt>
>>> -     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type
>>> -     * against Tapestry IoC services</dd>
>>> +     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type against Tapestry IoC
>>> +     * services</dd>
>>>      * </dl>
>>>      */
>>>     public static void contributeInjectionProvider(OrderedConfiguration<InjectionProvider> configuration,
>>> @@ -861,11 +958,11 @@ public final class TapestryModule
>>>     /**
>>>      * <dl>
>>>      * <dt>StoreIntoGlobals</dt>
>>> -     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals}
>>> -     * at the start of the pipeline</dd>
>>> +     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals} at the start of the
>>> +     * pipeline</dd>
>>>      * <dt>IgnoredPaths</dt>
>>> -     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration)
>>> -     * to be mapped to other applications</dd>
>>> +     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration) to be mapped to other
>>> +     * applications</dd>
>>>      * <dt>GZip</dt>
>>>      * <dd>Handles GZIP compression of response streams (if supported by client)</dd>
>>>      */
>>> @@ -902,18 +999,17 @@ public final class TapestryModule
>>>      * Continues a number of filters into the RequestHandler service:
>>>      * <dl>
>>>      * <dt>StaticFiles</dt>
>>> -     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the
>>> -     * servlet container process the request</dd>
>>> +     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the servlet container process
>>> +     * the request</dd>
>>>      * <dt>CheckForUpdates</dt>
>>> -     * <dd>Periodically fires events that checks to see if the file system sources for any cached
>>> -     * data has changed (see {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
>>> +     * <dd>Periodically fires events that checks to see if the file system sources for any cached data has changed (see
>>> +     * {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
>>>      * <dt>ErrorFilter</dt>
>>> -     * <dd>Catches request errors and lets the
>>> -     * {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them</dd>
>>> +     * <dd>Catches request errors and lets the {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them
>>> +     * </dd>
>>>      * <dt>StoreIntoGlobals</dt>
>>> -     * <dd>Stores the request and response into the
>>> -     * {@link org.apache.tapestry5.services.RequestGlobals} service (this is repeated at the end of
>>> -     * the pipeline, in case any filter substitutes the request or response).
>>> +     * <dd>Stores the request and response into the {@link org.apache.tapestry5.services.RequestGlobals} service (this
>>> +     * is repeated at the end of the pipeline, in case any filter substitutes the request or response).
>>>      * </dl>
>>>      */
>>>     public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration, Context context,
>>> @@ -1028,7 +1124,6 @@ public final class TapestryModule
>>>      * <li>String to {@link Renderable}
>>>      * <li>{@link Renderable} to {@link Block}
>>>      * <li>String to {@link DateFormat}
>>> -     * <li>{@link PrimaryKeyEncoder} to {@link ValueEncoder}
>>>      * <li>String to {@link Resource} (via {@link AssetSource#resourceForPath(String)})
>>>      * <li>{@link Renderable} to {@link RenderCommand}</li>
>>>      * <li>String to {@link LoopFormState}</li>
>>> @@ -1173,9 +1268,6 @@ public final class TapestryModule
>>>                     }
>>>                 }));
>>>
>>> -        configuration.add(CoercionTuple.create(PrimaryKeyEncoder.class, ValueEncoder.class,
>>> -                new PrimaryKeyEncoder2ValueEncoder(coercer)));
>>> -
>>>         configuration.add(CoercionTuple.create(Date.class, Calendar.class, new Coercion<Date, Calendar>()
>>>         {
>>>             public Calendar coerce(Date input)
>>> @@ -1278,9 +1370,9 @@ public final class TapestryModule
>>>      * the chain is responsible for ordinary
>>>      * property names (and property paths).
>>>      * <p/>
>>> -     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See
>>> -     * <a href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no
>>> -     * longer any built-in contributions to the configuration.
>>> +     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See <a
>>> +     * href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no longer any built-in
>>> +     * contributions to the configuration.
>>>      *
>>>      * @param configuration
>>>      *            contributions of special factories for some constants, each
>>> @@ -1348,8 +1440,7 @@ public final class TapestryModule
>>>     }
>>>
>>>     /**
>>> -     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's
>>> -     * {@link Environment}.
>>> +     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's {@link Environment}.
>>>      *
>>>      * @since 5.2.0
>>>      */
>>> @@ -1359,8 +1450,7 @@ public final class TapestryModule
>>>     }
>>>
>>>     /**
>>> -     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport}
>>> -     * inside this
>>> +     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport} inside this
>>>      * thread's {@link org.apache.tapestry5.services.Environment}.
>>>      *
>>>      * @since 5.1.0.1
>>> @@ -1418,8 +1508,7 @@ public final class TapestryModule
>>>     }
>>>
>>>     /**
>>> -     * Initializes the application, using a pipeline of
>>> -     * {@link org.apache.tapestry5.services.ApplicationInitializer}s.
>>> +     * Initializes the application, using a pipeline of {@link org.apache.tapestry5.services.ApplicationInitializer}s.
>>>      */
>>>     @Marker(Primary.class)
>>>     public ApplicationInitializer buildApplicationInitializer(Logger logger,
>>> @@ -1621,8 +1710,7 @@ public final class TapestryModule
>>>
>>>     /**
>>>      * The MarkupRenderer service is used to render a full page as markup.
>>> -     * Supports an ordered configuration of
>>> -     * {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
>>> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
>>>      */
>>>     public MarkupRenderer buildMarkupRenderer(Logger logger, @Autobuild
>>>     MarkupRendererTerminator terminator, List<MarkupRendererFilter> configuration)
>>> @@ -1634,11 +1722,10 @@ public final class TapestryModule
>>>     /**
>>>      * A wrapper around {@link org.apache.tapestry5.internal.services.PageRenderQueue} used for
>>>      * partial page renders.
>>> -     * Supports an ordered configuration of
>>> -     * {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
>>> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
>>>      *
>>> -     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration,
>>> -     *      org.apache.tapestry5.Asset, org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
>>> +     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration, org.apache.tapestry5.Asset,
>>> +     *      org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
>>>      */
>>>     public PartialMarkupRenderer buildPartialMarkupRenderer(Logger logger,
>>>             List<PartialMarkupRendererFilter> configuration, @Autobuild
>>> @@ -1675,8 +1762,7 @@ public final class TapestryModule
>>>     /**
>>>      * Builds the action request handler for Ajax requests, based on a
>>>      * {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder
>>> -     * pipeline} around
>>> -     * {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
>>> +     * pipeline} around {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
>>>      * the
>>>      * request handler are supported here as well.
>>>      */
>>> @@ -1728,11 +1814,11 @@ public final class TapestryModule
>>>      * <dt>String</dt>
>>>      * <dd>Sends a page render redirect</dd>
>>>      * <dt>Class</dt>
>>> -     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is
>>> -     * more refactoring safe than the page name)</dd>
>>> +     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is more refactoring safe
>>> +     * than the page name)</dd>
>>>      * <dt>{@link Component}</dt>
>>> -     * <dd>A page's root component (though a non-root component will work, but will generate a
>>> -     * warning). A direct to the containing page is sent.</dd>
>>> +     * <dd>A page's root component (though a non-root component will work, but will generate a warning). A direct to the
>>> +     * containing page is sent.</dd>
>>>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>>>      * <dd>The stream response is sent as the actual reply.</dd>
>>>      * <dt>URL</dt>
>>> @@ -1788,16 +1874,13 @@ public final class TapestryModule
>>>      * <dt>{@link RenderCommand}</dt>
>>>      * <dd>Typically, a {@link org.apache.tapestry5.Block}</dd>
>>>      * <dt>{@link org.apache.tapestry5.annotations.Component}</dt>
>>> -     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON
>>> -     * response is sent)</dd>
>>> -     * <dt>{@link org.apache.tapestry5.json.JSONObject} or
>>> -     * {@link org.apache.tapestry5.json.JSONArray}</dt>
>>> +     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON response is sent)</dd>
>>> +     * <dt>{@link org.apache.tapestry5.json.JSONObject} or {@link org.apache.tapestry5.json.JSONArray}</dt>
>>>      * <dd>The JSONObject is returned as a text/javascript response</dd>
>>>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>>>      * <dd>The stream response is sent as the actual response</dd>
>>>      * <dt>String</dt>
>>> -     * <dd>Interprets the value as a logical page name and sends a client response to redirect to
>>> -     * that page</dd>
>>> +     * <dd>Interprets the value as a logical page name and sends a client response to redirect to that page</dd>
>>>      * <dt>{@link org.apache.tapestry5.Link}</dt>
>>>      * <dd>Sends a JSON response to redirect to the link</dd>
>>>      * <dt>{@link Class}</dt>
>>> @@ -1806,10 +1889,9 @@ public final class TapestryModule
>>>      * <dd>Sends a single JSON response to update the content of multiple zones
>>>      * </dl>
>>>      * <p>
>>> -     * In most cases, when you want to support a new type, you should convert it to one of the
>>> -     * built-in supported types (such as {@link RenderCommand}. You can then inject the master
>>> -     * AjaxComponentEventResultProcessor (use the {@link Ajax} marker annotation) and delegate to
>>> -     * it.
>>> +     * In most cases, when you want to support a new type, you should convert it to one of the built-in supported types
>>> +     * (such as {@link RenderCommand}. You can then inject the master AjaxComponentEventResultProcessor (use the
>>> +     * {@link Ajax} marker annotation) and delegate to it.
>>>      */
>>>     @Contribute(ComponentEventResultProcessor.class)
>>>     @Ajax
>>> @@ -1837,8 +1919,8 @@ public final class TapestryModule
>>>      * <dt>Asset</dt>
>>>      * <dd>Provides access to assets (context, classpath and virtual) via {@link AssetDispatcher}</dd>
>>>      * <dt>PageRender</dt>
>>> -     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and
>>> -     * forwards onto {@link PageRenderRequestHandler}</dd>
>>> +     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and forwards onto
>>> +     * {@link PageRenderRequestHandler}</dd>
>>>      * <dt>ComponentEvent</dt>
>>>      * <dd>Identifies the {@link ComponentEventRequestParameters} and forwards onto the
>>>      * {@link ComponentEventRequestHandler}</dd>
>>> @@ -1869,9 +1951,9 @@ public final class TapestryModule
>>>
>>>     /**
>>>      * Contributes a default object renderer for type Object, plus specialized
>>> -     * renderers for {@link org.apache.tapestry5.services.Request},
>>> -     * {@link org.apache.tapestry5.ioc.Location}, {@link org.apache.tapestry5.ComponentResources},
>>> -     * {@link org.apache.tapestry5.EventContext}, {@link AvailableValues},
>>> +     * renderers for {@link org.apache.tapestry5.services.Request}, {@link org.apache.tapestry5.ioc.Location},
>>> +     * {@link org.apache.tapestry5.ComponentResources}, {@link org.apache.tapestry5.EventContext},
>>> +     * {@link AvailableValues},
>>>      * List, and Object[].
>>>      */
>>>     @SuppressWarnings("unchecked")
>>> @@ -1908,8 +1990,8 @@ public final class TapestryModule
>>>     }
>>>
>>>     /**
>>> -     * Adds page render filters, each of which provides an
>>> -     * {@link org.apache.tapestry5.annotations.Environmental} service. Filters
>>> +     * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
>>> +     * service. Filters
>>>      * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
>>>      * components as they render.
>>>      * <dl>
>>> @@ -2486,8 +2568,7 @@ public final class TapestryModule
>>>     }
>>>
>>>     /**
>>> -     * Adds a listener to the
>>> -     * {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
>>> +     * Adds a listener to the {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
>>>      * {@link PropertyAccess} and {@link TypeCoercer} caches on
>>>      * a class loader invalidation. In addition, forces the
>>>      * realization of {@link ComponentClassResolver} at startup.
>>> @@ -2538,12 +2619,11 @@ public final class TapestryModule
>>>      * Contributes filters:
>>>      * <dl>
>>>      * <dt>Ajax</dt>
>>> -     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so
>>> -     * </dd>
>>> +     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so</dd>
>>>      * <dt>ImmediateRender</dt>
>>>      * <dd>When {@linkplain SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
>>> -     * immediate action response rendering} is enabled, generates the markup response (instead of a
>>> -     * page redirect response, which is the normal behavior)</dd>
>>> +     * immediate action response rendering} is enabled, generates the markup response (instead of a page redirect
>>> +     * response, which is the normal behavior)</dd>
>>>      * <dt>Secure</dt>
>>>      * <dd>Sends a redirect if an non-secure request accesses a secure page</dd>
>>>      * </dl>
>>> @@ -2686,8 +2766,7 @@ public final class TapestryModule
>>>      * Identifies String, Number and Boolean as immutable objects, a catch-all
>>>      * handler for Object (that understands
>>>      * the {@link org.apache.tapestry5.annotations.ImmutableSessionPersistedObject} annotation),
>>> -     * and handlers for {@link org.apache.tapestry5.OptimizedSessionPersistedObject} and
>>> -     * {@link org.apache.tapestry5.OptimizedApplicationStateObject}.
>>> +     * and a handler for {@link org.apache.tapestry5.OptimizedSessionPersistedObject}.
>>>      *
>>>      * @since 5.1.0.0
>>>      */
>>> @@ -2709,7 +2788,6 @@ public final class TapestryModule
>>>         configuration.add(Boolean.class, immutable);
>>>
>>>         configuration.add(OptimizedSessionPersistedObject.class, new OptimizedSessionPersistedObjectAnalyzer());
>>> -        configuration.add(OptimizedApplicationStateObject.class, new OptimizedApplicationStateObjectAnalyzer());
>>>     }
>>>
>>>     /**
>>> @@ -2894,8 +2972,7 @@ public final class TapestryModule
>>>     }
>>>
>>>     /**
>>> -     * Contributes "AppCatalog" as the Resource defined by
>>> -     * {@link SymbolConstants#APPLICATION_CATALOG}.
>>> +     * Contributes "AppCatalog" as the Resource defined by {@link SymbolConstants#APPLICATION_CATALOG}.
>>>      *
>>>      * @since 5.2.0
>>>      */
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java Wed Feb  9 21:18:11 2011
>>> @@ -1,4 +1,4 @@
>>> -// Copyright 2010 The Apache Software Foundation
>>> +// Copyright 2010, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>> @@ -20,7 +20,6 @@ import org.apache.tapestry5.FieldFocusPr
>>>  import org.apache.tapestry5.RenderSupport;
>>>  import org.apache.tapestry5.SymbolConstants;
>>>  import org.apache.tapestry5.annotations.Environmental;
>>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>>  import org.apache.tapestry5.json.JSONObject;
>>>  import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
>>>
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml Wed Feb  9 21:18:11 2011
>>> @@ -1,20 +1,20 @@
>>>  <html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>>>
>>> -    <h1>DateField in AjaxFormLoop</h1>
>>> +  <h1>DateField in AjaxFormLoop</h1>
>>>
>>> -    <t:form>
>>> +  <t:form>
>>>
>>> -        <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderConverter">
>>> +    <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderEncoder">
>>>
>>> -            <t:datefield value="current.date"/>
>>> -            <t:removerowlink>remove</t:removerowlink>
>>> +      <t:datefield value="current.date"/>
>>> +      <t:removerowlink>remove</t:removerowlink>
>>>
>>> -        </div>
>>> +    </div>
>>>
>>> -        <p>
>>> -            <input type="submit" value="Go"/>
>>> -        </p>
>>> -    </t:form>
>>> +    <p>
>>> +      <input type="submit" value="Go"/>
>>> +    </p>
>>> +  </t:form>
>>>
>>>
>>>  </html>
>>> \ No newline at end of file
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml Wed Feb  9 21:18:11 2011
>>> @@ -1,36 +1,35 @@
>>>  <html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>>>
>>> -    <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
>>> +  <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
>>>
>>> -    <t:form>
>>> +  <t:form>
>>>
>>> -        <ul>
>>> -            <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="encoder"
>>> -                context="demoContextValue">
>>> -                <t:submitnotifier>
>>> -                    <t:textfield t:id="value" value="item.value"/>
>>> -                    <t:removerowlink>remove</t:removerowlink>
>>> -                </t:submitnotifier>
>>> -                <t:parameter name="addRow">
>>> -                    <t:addrowlink>Add a row</t:addrowlink>
>>> -                </t:parameter>
>>> -            </li>
>>> -        </ul>
>>> -
>>> -        <div class="t-beaneditor-row">
>>> -            <input type="submit" value="Sum up the values"/>
>>> -        </div>
>>> -
>>> -    </t:form>
>>> -
>>> -    <p>
>>> -        Current sum:
>>> -        <span id="sum">${sum}</span>
>>> -    </p>
>>> +    <ul>
>>> +      <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="doubleItemEncoder" context="demoContextValue">
>>> +        <t:submitnotifier>
>>> +          <t:textfield t:id="value" value="item.value"/>
>>> +          <t:removerowlink>remove</t:removerowlink>
>>> +        </t:submitnotifier>
>>> +        <t:parameter name="addRow">
>>> +          <t:addrowlink>Add a row</t:addrowlink>
>>> +        </t:parameter>
>>> +      </li>
>>> +    </ul>
>>> +
>>> +    <div class="t-beaneditor-row">
>>> +      <input type="submit" value="Sum up the values"/>
>>> +    </div>
>>> +
>>> +  </t:form>
>>> +
>>> +  <p>
>>> +    Current sum:
>>> +    <span id="sum">${sum}</span>
>>> +  </p>
>>>
>>> -    <h2>Data</h2>
>>> +  <h2>Data</h2>
>>>
>>> -    <t:grid source="doubleItems"/>
>>> +  <t:grid source="doubleItems"/>
>>>
>>>
>>>  </html>
>>> \ No newline at end of file
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml Wed Feb  9 21:18:11 2011
>>> @@ -11,7 +11,7 @@
>>>                 <th> Title </th>
>>>                 <th> Reorder </th>
>>>             </tr>
>>> -            <tr t:type="Loop" source="items" value="item" encoder="encoder">
>>> +            <tr t:type="Loop" source="items" value="item" encoder="toDoItemEncoder">
>>>                 <td>
>>>                     <input t:type="TextField" t:id="title" value="item.title" size="30"
>>>                         validate="required"/>
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2009 The Apache Software Foundation
>>> +// Copyright 2009, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2007 The Apache Software Foundation
>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,13 +14,13 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.base;
>>>
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>  import org.apache.tapestry5.annotations.Property;
>>> +import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.integration.app1.data.IncidentData;
>>>
>>>  public class BaseComponent
>>>  {
>>> -    @ApplicationState
>>> +    @SessionState
>>>     @Property
>>>     private IncidentData incidentData;
>>>  }
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java Wed Feb  9 21:18:11 2011
>>> @@ -4,7 +4,7 @@
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,7 +14,7 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.components;
>>>
>>> -import org.apache.tapestry5.annotations.IncludeStylesheet;
>>> +import org.apache.tapestry5.annotations.Import;
>>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>>  import org.apache.tapestry5.ioc.services.Builtin;
>>>  import org.apache.tapestry5.ioc.services.ClassFactory;
>>> @@ -22,10 +22,11 @@ import org.apache.tapestry5.services.Com
>>>  import org.apache.tapestry5.services.Request;
>>>
>>>  /**
>>> - * Here's a component with a template, including a t:body element.   Really should rename this to "Layout" as that's the
>>> + * Here's a component with a template, including a t:body element. Really should rename this to "Layout" as that's the
>>>  * T5 naming.
>>>  */
>>> -@IncludeStylesheet({ "context:layout/style.css", "context:css/app.css" })
>>> +@Import(stylesheet =
>>> +{ "context:layout/style.css", "context:css/app.css" })
>>>  public class Border
>>>  {
>>>     @Inject
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2008 The Apache Software Foundation
>>> +// Copyright 2008, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,8 +14,8 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>  import org.apache.tapestry5.annotations.Component;
>>> +import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.corelib.components.BeanEditor;
>>>  import org.apache.tapestry5.corelib.components.Form;
>>>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
>>> @@ -25,13 +25,13 @@ public class BeanEditorBeanEditContext
>>>     @Component
>>>     private Form form;
>>>
>>> -    @Component(parameters = { "object=registrationData" })
>>> +    @Component(parameters =
>>> +    { "object=registrationData" })
>>>     private BeanEditor editor;
>>>
>>> -    @ApplicationState
>>> +    @SessionState
>>>     private RegistrationData data;
>>>
>>> -
>>>     public RegistrationData getRegistrationData()
>>>     {
>>>         return data;
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java Wed Feb  9 21:18:11 2011
>>> @@ -1,4 +1,4 @@
>>> -// Copyright 2007, 2010 The Apache Software Foundation
>>> +// Copyright 2007, 2010, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>> @@ -15,10 +15,10 @@
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>>  import org.apache.tapestry5.PersistenceConstants;
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>  import org.apache.tapestry5.annotations.Component;
>>>  import org.apache.tapestry5.annotations.Persist;
>>>  import org.apache.tapestry5.annotations.Property;
>>> +import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.beaneditor.Validate;
>>>  import org.apache.tapestry5.corelib.ClientValidation;
>>>  import org.apache.tapestry5.corelib.components.BeanEditForm;
>>> @@ -33,7 +33,7 @@ public class BeanEditorDemo
>>>     { "clientValidation=prop:clientValidation" })
>>>     private BeanEditForm form;
>>>
>>> -    @ApplicationState
>>> +    @SessionState
>>>     @Property
>>>     private RegistrationData registrationData;
>>>
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2008 The Apache Software Foundation
>>> +// Copyright 2008, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,8 +14,8 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>  import org.apache.tapestry5.annotations.Component;
>>> +import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.corelib.components.BeanEditor;
>>>  import org.apache.tapestry5.corelib.components.Form;
>>>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
>>> @@ -25,10 +25,11 @@ public class BeanEditorOverride
>>>     @Component
>>>     private Form form;
>>>
>>> -    @Component(parameters = { "object=registrationData" })
>>> +    @Component(parameters =
>>> +    { "object=registrationData" })
>>>     private BeanEditor editor;
>>>
>>> -    @ApplicationState
>>> +    @SessionState
>>>     private RegistrationData data;
>>>
>>>     public RegistrationData getRegistrationData()
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -//  Copyright 2008, 2009 The Apache Software Foundation
>>> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,18 +14,18 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>>> -import org.apache.tapestry5.annotations.Persist;
>>> -import org.apache.tapestry5.annotations.Property;
>>> -import org.apache.tapestry5.integration.app1.data.DateHolder;
>>> -import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
>>> -
>>>  import java.util.Collections;
>>>  import java.util.Comparator;
>>>  import java.util.List;
>>>  import java.util.Map;
>>>
>>> +import org.apache.tapestry5.ValueEncoder;
>>> +import org.apache.tapestry5.annotations.Persist;
>>> +import org.apache.tapestry5.annotations.Property;
>>> +import org.apache.tapestry5.func.F;
>>> +import org.apache.tapestry5.integration.app1.data.DateHolder;
>>> +import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>> +
>>>  public class DateFieldAjaxFormLoop
>>>  {
>>>     @Persist
>>> @@ -40,6 +40,24 @@ public class DateFieldAjaxFormLoop
>>>             database = CollectionFactory.newMap();
>>>     }
>>>
>>> +    public ValueEncoder<DateHolder> getDateHolderEncoder()
>>> +    {
>>> +        return new ValueEncoder<DateHolder>()
>>> +        {
>>> +            public String toClient(DateHolder value)
>>> +            {
>>> +                return String.valueOf(value.getId());
>>> +            }
>>> +
>>> +            public DateHolder toValue(String clientValue)
>>> +            {
>>> +                Integer key = new Integer(clientValue);
>>> +
>>> +                return database.get(key);
>>> +            }
>>> +
>>> +        };
>>> +    }
>>>
>>>     public List<DateHolder> getDateHolders()
>>>     {
>>> @@ -56,19 +74,6 @@ public class DateFieldAjaxFormLoop
>>>         return result;
>>>     }
>>>
>>> -    public PrimaryKeyEncoder<Integer, DateHolder> getDateHolderConverter()
>>> -    {
>>> -        DefaultPrimaryKeyEncoder<Integer, DateHolder> result =
>>> -                new DefaultPrimaryKeyEncoder<Integer, DateHolder>(Integer.class);
>>> -
>>> -        for (DateHolder dh : getDateHolders())
>>> -        {
>>> -            result.add(dh.getId(), dh);
>>> -        }
>>> -
>>> -        return result;
>>> -    }
>>> -
>>>     DateHolder onAddRowFromLoop()
>>>     {
>>>         DateHolder dh = new DateHolder();
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2008, 2009 The Apache Software Foundation
>>> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,7 +14,13 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>>> +import java.util.Collections;
>>> +import java.util.Comparator;
>>> +import java.util.List;
>>> +import java.util.Map;
>>> +import java.util.concurrent.atomic.AtomicLong;
>>> +
>>> +import org.apache.tapestry5.ValueEncoder;
>>>  import org.apache.tapestry5.annotations.Log;
>>>  import org.apache.tapestry5.annotations.Persist;
>>>  import org.apache.tapestry5.annotations.Property;
>>> @@ -22,12 +28,6 @@ import org.apache.tapestry5.integration.
>>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>>  import org.testng.Assert;
>>>
>>> -import java.util.Collections;
>>> -import java.util.Comparator;
>>> -import java.util.List;
>>> -import java.util.Map;
>>> -import java.util.concurrent.atomic.AtomicLong;
>>> -
>>>  public class FormInjectorDemo
>>>  {
>>>     private static final long DEMO_CONTEXT_VALUE = System.currentTimeMillis();
>>> @@ -51,27 +51,21 @@ public class FormInjectorDemo
>>>         }
>>>     }
>>>
>>> -    public PrimaryKeyEncoder getEncoder()
>>> +    public ValueEncoder<DoubleItem> getDoubleItemEncoder()
>>>     {
>>> -        return new PrimaryKeyEncoder<Long, DoubleItem>()
>>> +        return new ValueEncoder<DoubleItem>()
>>>         {
>>> -            public Long toKey(DoubleItem value)
>>> -            {
>>> -                return value.getId();
>>> -            }
>>>
>>> -            public void prepareForKeys(List<Long> keys)
>>> +            public DoubleItem toValue(String clientValue)
>>>             {
>>> -            }
>>> +                Long key = new Long(clientValue);
>>>
>>> -            public DoubleItem toValue(Long key)
>>> -            {
>>>                 return DB.get(key);
>>>             }
>>>
>>> -            public Class<Long> getKeyType()
>>> +            public String toClient(DoubleItem value)
>>>             {
>>> -                return Long.class;
>>> +                return String.valueOf(value.getId());
>>>             }
>>>         };
>>>     }
>>> @@ -94,7 +88,7 @@ public class FormInjectorDemo
>>>     Object onAddRow(long context)
>>>     {
>>>         Assert.assertEquals(context, DEMO_CONTEXT_VALUE,
>>> -                            "Context value provided to AjaxFormLoop must be provided to the event handler method.");
>>> +                "Context value provided to AjaxFormLoop must be provided to the event handler method.");
>>>
>>>         DoubleItem item = new DoubleItem();
>>>         item.setId(ID_ALLOCATOR.incrementAndGet());
>>> @@ -119,7 +113,6 @@ public class FormInjectorDemo
>>>         sum += item.getValue();
>>>     }
>>>
>>> -
>>>     void onActionFromReset()
>>>     {
>>>         DB.clear();
>>> @@ -133,6 +126,6 @@ public class FormInjectorDemo
>>>     void onActivate(String context)
>>>     {
>>>         Assert.assertEquals(context, "FakePageActivationContextValue",
>>> -                            "Page activation context was not passed through correctly.");
>>> +                "Page activation context was not passed through correctly.");
>>>     }
>>>  }
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2007 The Apache Software Foundation
>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,16 +14,16 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>> +import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.integration.app1.data.RolePath;
>>>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>>>
>>>  public class MultiBeanDemoResult
>>>  {
>>> -    @ApplicationState
>>> +    @SessionState
>>>     private UserCredentials credentials;
>>>
>>> -    @ApplicationState
>>> +    @SessionState
>>>     private RolePath rolePath;
>>>
>>>     public UserCredentials getCredentials()
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2007 The Apache Software Foundation
>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,19 +14,19 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>>  import org.apache.tapestry5.annotations.Component;
>>>  import org.apache.tapestry5.annotations.InjectPage;
>>> +import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.corelib.components.Form;
>>>  import org.apache.tapestry5.integration.app1.data.RolePath;
>>>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>>>
>>>  public class MultiBeanEditDemo
>>>  {
>>> -    @ApplicationState
>>> +    @SessionState
>>>     private UserCredentials credentials;
>>>
>>> -    @ApplicationState
>>> +    @SessionState
>>>     private RolePath rolePath;
>>>
>>>     @InjectPage
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java Wed Feb  9 21:18:11 2011
>>> @@ -1,10 +1,10 @@
>>> -// Copyright 2007 The Apache Software Foundation
>>> +// Copyright 2007, 2011 The Apache Software Foundation
>>>  //
>>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,12 +14,12 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.annotations.ApplicationState;
>>> +import org.apache.tapestry5.annotations.SessionState;
>>>  import org.apache.tapestry5.integration.app1.data.BirthdayReminder;
>>>
>>>  public class ShowBirthdayReminder
>>>  {
>>> -    @ApplicationState
>>> +    @SessionState
>>>     private BirthdayReminder reminder;
>>>
>>>     public BirthdayReminder getReminder()
>>>
>>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
>>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>>> ==============================================================================
>>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java (original)
>>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java Wed Feb  9 21:18:11 2011
>>> @@ -4,7 +4,7 @@
>>>  // you may not use this file except in compliance with the License.
>>>  // You may obtain a copy of the License at
>>>  //
>>> -//     http://www.apache.org/licenses/LICENSE-2.0
>>> +// http://www.apache.org/licenses/LICENSE-2.0
>>>  //
>>>  // Unless required by applicable law or agreed to in writing, software
>>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>> @@ -14,31 +14,58 @@
>>>
>>>  package org.apache.tapestry5.integration.app1.pages;
>>>
>>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>>> +import java.util.List;
>>> +
>>> +import org.apache.tapestry5.ValueEncoder;
>>>  import org.apache.tapestry5.annotations.Component;
>>> +import org.apache.tapestry5.annotations.Property;
>>>  import org.apache.tapestry5.corelib.components.Form;
>>> +import org.apache.tapestry5.func.F;
>>> +import org.apache.tapestry5.func.Predicate;
>>>  import org.apache.tapestry5.integration.app1.data.ToDoItem;
>>>  import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
>>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
>>> -
>>> -import java.util.List;
>>>
>>>  public class ToDoList
>>>  {
>>> +    @Property
>>>     @Inject
>>>     private ToDoDatabase database;
>>>
>>> -    private ToDoItem item;
>>> +    private List<ToDoItem> items;
>>>
>>> -    private DefaultPrimaryKeyEncoder<Long, ToDoItem> encoder;
>>> +    private ToDoItem item;
>>>
>>>     @Component
>>>     private Form form;
>>>
>>> +    public ValueEncoder<ToDoItem> getToDoItemEncoder()
>>> +    {
>>> +        return new ValueEncoder<ToDoItem>()
>>> +        {
>>> +            public ToDoItem toValue(String clientValue)
>>> +            {
>>> +                final long id = Long.parseLong(clientValue);
>>> +
>>> +                return F.flow(items).filter(new Predicate<ToDoItem>()
>>> +                {
>>> +                    public boolean accept(ToDoItem element)
>>> +                    {
>>> +                        return element.getId() == id;
>>> +                    }
>>> +                }).first();
>>> +            }
>>> +
>>> +            public String toClient(ToDoItem value)
>>> +            {
>>> +                return String.valueOf(value.getId());
>>> +            }
>>> +        };
>>> +    }
>>> +
>>>     public List<ToDoItem> getItems()
>>>     {
>>> -        return encoder.getValues();
>>> +        return items;
>>>     }
>>>
>>>     public ToDoItem getItem()
>>> @@ -51,33 +78,16 @@ public class ToDoList
>>>         this.item = item;
>>>     }
>>>
>>> -    public ToDoDatabase getDatabase()
>>> -    {
>>> -        return database;
>>> -    }
>>> -
>>> -    public PrimaryKeyEncoder getEncoder()
>>> -    {
>>> -        return encoder;
>>> -    }
>>> -
>>>     void onPrepare()
>>>     {
>>> -        List<ToDoItem> items = database.findAll();
>>> -
>>> -        encoder = new DefaultPrimaryKeyEncoder<Long, ToDoItem>(long.class);
>>> -
>>> -        for (ToDoItem item : items)
>>> -        {
>>> -            encoder.add(item.getId(), item);
>>> -        }
>>> +        items = database.findAll();
>>>     }
>>>
>>>     void onSuccess()
>>>     {
>>>         int order = 0;
>>>
>>> -        for (ToDoItem item : encoder.getValues())
>>> +        for (ToDoItem item : items)
>>>         {
>>>             item.setOrder(order++);
>>>             database.update(item);
>>> @@ -90,7 +100,7 @@ public class ToDoList
>>>         {
>>>             ToDoItem item = new ToDoItem();
>>>             item.setTitle("<New To Do>");
>>> -            item.setOrder(encoder.getValues().size());
>>> +            item.setOrder(items.size());
>>>
>>>             database.add(item);
>>>         }
>>>
>>>
>>>
>>
>>
>>
>> --
>> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
>> Tapestry PMC / Tacos developer
>> Open Source / JEE Consulting
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: dev-help@tapestry.apache.org
>>
>>
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>



-- 
Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
Tapestry PMC / Tacos developer
Open Source / JEE Consulting

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: svn commit: r1069114 [1/2] - in /tapestry/tapestry5/trunk: ./ quickstart/src/main/resources/archetype-resources/src/main/java/services/ tapestry-annotations/ tapestry-core/ tapestry-core/src/main/java/org/apache/tapestry5/ tapestry-core/src/main/

Posted by Howard Lewis Ship <hl...@gmail.com>.
At best, its only temporary. Is that a problem?

On Wed, Feb 9, 2011 at 1:49 PM, Andreas Andreou <an...@di.uoa.gr> wrote:
> Should the reference to ftp://howardlewisship.com/snapshot-repository
> exist in the commit?
>
> On Wed, Feb 9, 2011 at 23:18,  <hl...@apache.org> wrote:
>> Author: hlship
>> Date: Wed Feb  9 21:18:11 2011
>> New Revision: 1069114
>>
>> URL: http://svn.apache.org/viewvc?rev=1069114&view=rev
>> Log:
>> Merge branch 'local' into trunk
>>
>> Added:
>>    tapestry/tapestry5/trunk/build.gradle
>>    tapestry/tapestry5/trunk/settings.gradle
>>    tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
>>    tapestry/tapestry5/trunk/tapestry-core/build.gradle
>>    tapestry/tapestry5/trunk/tapestry-func/build.gradle
>>    tapestry/tapestry5/trunk/tapestry-ioc/build.gradle
>>    tapestry/tapestry5/trunk/tapestry-json/build.gradle
>>    tapestry/tapestry5/trunk/tapestry-test/build.gradle
>> Removed:
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedApplicationStateObject.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/PrimaryKeyEncoder.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ApplicationState.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeStylesheet.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedApplicationStateObjectAnalyzer.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeJavaScriptLibraryWorker.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeStylesheetWorker.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoder.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoderTest.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoderTest.java
>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
>> Modified:
>>    tapestry/tapestry5/trunk/.gitignore
>>    tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ViewRegistration.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ZoneDemo.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForASO.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentLocaleImplTest.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MaybeStateHolder.java
>>    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/StateHolder.java
>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java
>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFabUtils.java
>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerthreadManager.java
>>    tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/IOCTestCase.java
>>    tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImplTest.java
>>
>> Modified: tapestry/tapestry5/trunk/.gitignore
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/.gitignore?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/.gitignore (original)
>> +++ tapestry/tapestry5/trunk/.gitignore Wed Feb  9 21:18:11 2011
>> @@ -7,4 +7,8 @@
>>  *.iws
>>  target
>>  test-output
>> -temp-testng*.xml
>> \ No newline at end of file
>> +temp-testng*.xml
>> +build/
>> +.gradle
>> +*~
>> +\#*
>> \ No newline at end of file
>>
>> Added: tapestry/tapestry5/trunk/build.gradle
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/build.gradle?rev=1069114&view=auto
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/build.gradle (added)
>> +++ tapestry/tapestry5/trunk/build.gradle Wed Feb  9 21:18:11 2011
>> @@ -0,0 +1,69 @@
>> +description = "Apache Tapestry 5 Project"
>> +
>> +if (!project.hasProperty('deployUserName')) deployUserName = '*UNSET-USERNAME*'
>> +if (!project.hasProperty('deployPassword')) deployPassword = '*UNSET-PASSWORD*'
>> +
>> +
>> +jettyVersion = '7.0.0.v20091005'
>> +tomcatVersion = '6.0.30'
>> +testngVersion = '5.14.9'
>> +easymockVersion = '3.0'
>> +
>> +subprojects {
>> +    apply plugin: 'java'
>> +    apply plugin: 'groovy' // mostly for testing
>> +    apply plugin: 'eclipse'
>> +    apply plugin: 'maven'
>> +    apply plugin: 'project-report'
>> +
>> +    sourceCompatibility = '1.5'
>> +    targetCompatibility = '1.5'
>> +
>> +    version = '5.3.0-SNAPSHOT'
>> +
>> +    group = 'org.apache.tapestry'
>> +
>> +    repositories {
>> +        mavenCentral()
>> +
>> +        // All things JBoss/Javassist/Hibernate
>> +        mavenRepo urls: "https://repository.jboss.org/nexus/content/repositories/releases/"
>> +    }
>> +
>> +    configurations {
>> +        deployerJars
>> +    }
>> +
>> +    dependencies {
>> +        groovy "org.codehaus.groovy:groovy-all:1.7.4"
>> +
>> +        deployerJars "org.apache.maven.wagon:wagon-ftp:1.0-beta-2"
>> +    }
>> +
>> +    test {
>> +        useTestNG()
>> +
>> +        options.suites("src/test/conf/testng.xml")
>> +    }
>> +
>> +    task sourcesJar(type: Jar, dependsOn:classes) {
>> +       classifier = 'sources'
>> +       from sourceSets.main.allSource
>> +    }
>> +
>> +    artifacts {
>> +       archives sourcesJar
>> +    }
>> +
>> +
>> +    uploadArchives {
>> +        repositories.mavenDeployer {
>> +            configuration = configurations.deployerJars
>> +            // deployUserName and deployPassword should be specified in ~/.gradle/gradle.properties
>> +            snapshotRepository(url: "ftp://howardlewisship.com/snapshot-repository") {
>> +              authentication(userName: deployUserName, password: deployPassword)
>> +            }
>> +
>> +        }
>> +    }
>> +}
>> \ No newline at end of file
>>
>> Modified: tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java (original)
>> +++ tapestry/tapestry5/trunk/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java Wed Feb  9 21:18:11 2011
>> @@ -51,6 +51,14 @@ public class AppModule
>>         // header. If existing assets are changed, the version number should also
>>         // change, to force the browser to download new versions.
>>         configuration.add(SymbolConstants.APPLICATION_VERSION, "${version}");
>> +
>> +        // This is desirable in development, but again, is usually turned off
>> +        // by the time the application gets to production. The Blackbird console
>> +        // is very functionaly, but may be intimidating to users (who should not see
>> +        // it unless there are Ajax-oriented programming bugs). Regardless, when disabled
>> +        // a simple floating, fading message is displayed at the top of the page.
>> +
>> +        configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "true");
>>     }
>>
>>
>>
>> Added: tapestry/tapestry5/trunk/settings.gradle
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/settings.gradle?rev=1069114&view=auto
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/settings.gradle (added)
>> +++ tapestry/tapestry5/trunk/settings.gradle Wed Feb  9 21:18:11 2011
>> @@ -0,0 +1,4 @@
>> +include "tapestry-annotations", "tapestry-test", "tapestry-func", "tapestry-ioc", "tapestry-json", "tapestry-core"
>> +// TODO: tapestry-hibernate-core, tapestry-hibernate, tapestry-jmx, tapestry-upload, tapestry-spring, tapestry-beanvalidator
>> +// TODO (LATER): tapestry-component-report, quickstart
>> +
>>
>> Added: tapestry/tapestry5/trunk/tapestry-annotations/build.gradle
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-annotations/build.gradle?rev=1069114&view=auto
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-annotations/build.gradle (added)
>> +++ tapestry/tapestry5/trunk/tapestry-annotations/build.gradle Wed Feb  9 21:18:11 2011
>> @@ -0,0 +1,10 @@
>> +description = "Annotations used with Tapestry applications"
>> +
>> +// To avoid conflict with the Tapestry 4 tapestry-annotations, so both may be used at the same time
>> +baseName = 'tapestry5-annotations'
>> +
>> +configure(install.repositories.mavenInstaller) {
>> +  pom.project {
>> +    artifactId baseName
>> +  }
>> +}
>> \ No newline at end of file
>>
>> Added: tapestry/tapestry5/trunk/tapestry-core/build.gradle
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/build.gradle?rev=1069114&view=auto
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/build.gradle (added)
>> +++ tapestry/tapestry5/trunk/tapestry-core/build.gradle Wed Feb  9 21:18:11 2011
>> @@ -0,0 +1,14 @@
>> +description="Central module for Tapestry, containing all core services and components"
>> +
>> +dependencies {
>> +  compile project(':tapestry-ioc')
>> +  compile project(':tapestry-json')
>> +
>> +  testCompile project(':tapestry-test')
>> +
>> +  compile "commons-codec:commons-codec:1.3"
>> +  compile "javax.servlet:servlet-api:2.4"
>> +
>> +  compile "org.antlr:antlr-runtime:3.3", { transitive = false }
>> +
>> +}
>> \ No newline at end of file
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java Wed Feb  9 21:18:11 2011
>> @@ -1,4 +1,4 @@
>> -// Copyright 2009, 2010 The Apache Software Foundation
>> +// Copyright 2009, 2010, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>> @@ -27,7 +27,7 @@ import org.apache.tapestry5.TrackableCom
>>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
>>  import org.apache.tapestry5.annotations.Environmental;
>>  import org.apache.tapestry5.annotations.Events;
>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>> +import org.apache.tapestry5.annotations.Import;
>>  import org.apache.tapestry5.annotations.Parameter;
>>  import org.apache.tapestry5.annotations.SupportsInformalParameters;
>>  import org.apache.tapestry5.dom.Element;
>> @@ -53,7 +53,7 @@ import org.apache.tapestry5.services.jav
>>  * @since 5.1.0.1
>>  */
>>  @SupportsInformalParameters
>> -@IncludeJavaScriptLibrary("ProgressiveDisplay.js")
>> +@Import(library = "ProgressiveDisplay.js")
>>  @Events(EventConstants.PROGRESSIVE_DISPLAY)
>>  @SuppressWarnings("all")
>>  public class ProgressiveDisplay
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java Wed Feb  9 21:18:11 2011
>> @@ -1,4 +1,4 @@
>> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
>> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>> @@ -17,11 +17,19 @@ package org.apache.tapestry5.corelib.mix
>>  import java.util.Collections;
>>  import java.util.List;
>>
>> -import org.apache.tapestry5.*;
>> +import org.apache.tapestry5.Asset;
>> +import org.apache.tapestry5.BindingConstants;
>> +import org.apache.tapestry5.CSSClassConstants;
>> +import org.apache.tapestry5.ComponentEventCallback;
>> +import org.apache.tapestry5.ComponentResources;
>> +import org.apache.tapestry5.ContentType;
>> +import org.apache.tapestry5.EventConstants;
>> +import org.apache.tapestry5.Field;
>> +import org.apache.tapestry5.Link;
>> +import org.apache.tapestry5.MarkupWriter;
>>  import org.apache.tapestry5.annotations.Environmental;
>>  import org.apache.tapestry5.annotations.Events;
>>  import org.apache.tapestry5.annotations.Import;
>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>  import org.apache.tapestry5.annotations.InjectContainer;
>>  import org.apache.tapestry5.annotations.Parameter;
>>  import org.apache.tapestry5.annotations.Path;
>> @@ -29,7 +37,6 @@ import org.apache.tapestry5.annotations.
>>  import org.apache.tapestry5.internal.util.Holder;
>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>  import org.apache.tapestry5.ioc.services.TypeCoercer;
>> -import org.apache.tapestry5.json.JSONArray;
>>  import org.apache.tapestry5.json.JSONObject;
>>  import org.apache.tapestry5.services.MarkupWriterFactory;
>>  import org.apache.tapestry5.services.ResponseRenderer;
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java Wed Feb  9 21:18:11 2011
>> @@ -1,4 +1,4 @@
>> -// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
>> +// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>> @@ -21,15 +21,16 @@ import org.apache.tapestry5.SymbolConsta
>>  import org.apache.tapestry5.internal.TapestryInternalUtils;
>>  import org.apache.tapestry5.ioc.annotations.Symbol;
>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>>  import org.apache.tapestry5.services.PersistentLocale;
>>
>>  public class PersistentLocaleImpl implements PersistentLocale
>>  {
>> -    private final PerthreadManager perThreadManager;
>> -
>>     private final String supportedLocales;
>>
>> +    private final PerThreadValue<Locale> localeValue;
>> +
>>     private final Set<String> localeNames = CollectionFactory.newSet();
>>
>>     public PersistentLocaleImpl(PerthreadManager perThreadManager,
>> @@ -37,9 +38,10 @@ public class PersistentLocaleImpl implem
>>     @Symbol(SymbolConstants.SUPPORTED_LOCALES)
>>     String supportedLocales)
>>     {
>> -        this.perThreadManager = perThreadManager;
>>         this.supportedLocales = supportedLocales;
>>
>> +        localeValue = perThreadManager.createValue();
>> +
>>         for (String name : TapestryInternalUtils.splitAtCommas(supportedLocales))
>>         {
>>             localeNames.add(name.toLowerCase());
>> @@ -49,26 +51,26 @@ public class PersistentLocaleImpl implem
>>     public void set(Locale locale)
>>     {
>>         assert locale != null;
>> +
>>         if (!localeNames.contains(locale.toString().toLowerCase()))
>>         {
>>             String message = String
>> -                    .format(
>> -                            "Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
>> +                    .format("Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
>>                             locale, supportedLocales, SymbolConstants.SUPPORTED_LOCALES);
>>
>>             throw new IllegalArgumentException(message);
>>         }
>>
>> -        perThreadManager.put(this, locale);
>> +        localeValue.set(locale);
>>     }
>>
>>     public Locale get()
>>     {
>> -        return (Locale) perThreadManager.get(this);
>> +        return localeValue.get();
>>     }
>>
>>     public boolean isSet()
>>     {
>> -        return get() != null;
>> +        return localeValue.exists();
>>     }
>>  }
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java Wed Feb  9 21:18:11 2011
>> @@ -1,4 +1,4 @@
>> -// Copyright 2007, 2008, 2010 The Apache Software Foundation
>> +// Copyright 2007, 2008, 2010, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>> @@ -15,10 +15,7 @@
>>  package org.apache.tapestry5.internal.transform;
>>
>>  import java.util.List;
>> -import java.util.Map;
>> -import java.util.TreeMap;
>>
>> -import org.apache.tapestry5.annotations.ApplicationState;
>>  import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.func.Predicate;
>>  import org.apache.tapestry5.internal.services.ComponentClassCache;
>> @@ -48,30 +45,14 @@ public class ApplicationStateWorker impl
>>
>>     public void transform(ClassTransformation transformation, MutableComponentModel model)
>>     {
>> -        Map<TransformField, Boolean> fields = new TreeMap<TransformField, Boolean>();
>> -
>> -        for (TransformField field : transformation.matchFieldsWithAnnotation(ApplicationState.class))
>> -        {
>> -            ApplicationState annotation = field.getAnnotation(ApplicationState.class);
>> -
>> -            fields.put(field, annotation.create());
>> -
>> -            field.claim(annotation);
>> -        }
>> -
>>         for (TransformField field : transformation.matchFieldsWithAnnotation(SessionState.class))
>>         {
>>             SessionState annotation = field.getAnnotation(SessionState.class);
>>
>> -            fields.put(field, annotation.create());
>> +            transform(transformation, field, annotation.create());
>>
>>             field.claim(annotation);
>>         }
>> -
>> -        for (Map.Entry<TransformField, Boolean> e : fields.entrySet())
>> -        {
>> -            transform(transformation, e.getKey(), e.getValue());
>> -        }
>>     }
>>
>>     @SuppressWarnings("unchecked")
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java Wed Feb  9 21:18:11 2011
>> @@ -1,4 +1,4 @@
>> -// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
>> +// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>> @@ -25,10 +25,24 @@ import org.apache.tapestry5.internal.bin
>>  import org.apache.tapestry5.internal.services.ComponentClassCache;
>>  import org.apache.tapestry5.ioc.internal.util.InternalUtils;
>>  import org.apache.tapestry5.ioc.internal.util.TapestryException;
>> +import org.apache.tapestry5.ioc.services.PerThreadValue;
>>  import org.apache.tapestry5.ioc.services.PerthreadManager;
>>  import org.apache.tapestry5.ioc.services.TypeCoercer;
>>  import org.apache.tapestry5.model.MutableComponentModel;
>> -import org.apache.tapestry5.services.*;
>> +import org.apache.tapestry5.services.BindingSource;
>> +import org.apache.tapestry5.services.ClassTransformation;
>> +import org.apache.tapestry5.services.ComponentClassTransformWorker;
>> +import org.apache.tapestry5.services.ComponentDefaultProvider;
>> +import org.apache.tapestry5.services.ComponentMethodAdvice;
>> +import org.apache.tapestry5.services.ComponentMethodInvocation;
>> +import org.apache.tapestry5.services.ComponentValueProvider;
>> +import org.apache.tapestry5.services.FieldAccess;
>> +import org.apache.tapestry5.services.MethodAccess;
>> +import org.apache.tapestry5.services.MethodInvocationResult;
>> +import org.apache.tapestry5.services.TransformConstants;
>> +import org.apache.tapestry5.services.TransformField;
>> +import org.apache.tapestry5.services.TransformMethod;
>> +import org.apache.tapestry5.services.TransformMethodSignature;
>>  import org.slf4j.Logger;
>>  import org.slf4j.LoggerFactory;
>>
>> @@ -230,10 +244,10 @@ public class ParameterWorker implements
>>             {
>>                 final InternalComponentResources icr = (InternalComponentResources) resources;
>>
>> -                final String key = String.format("ParameterWorker:%s/%s", resources.getCompleteId(), parameterName);
>> -
>>                 final Class fieldType = classCache.forName(fieldTypeName);
>>
>> +                final PerThreadValue<ParameterState> stateValue = perThreadManager.createValue();
>> +
>>                 // Rely on some code generation in the component to set the default binding from
>>                 // the field, or from a default method.
>>
>> @@ -259,13 +273,13 @@ public class ParameterWorker implements
>>
>>                     private ParameterState getState()
>>                     {
>> -                        ParameterState state = (ParameterState) perThreadManager.get(key);
>> +                        ParameterState state = stateValue.get();
>>
>>                         if (state == null)
>>                         {
>>                             state = new ParameterState();
>>                             state.value = defaultValue;
>> -                            perThreadManager.put(key, state);
>> +                            stateValue.set(state);
>>                         }
>>
>>                         return state;
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Wed Feb  9 21:18:11 2011
>> @@ -35,10 +35,44 @@ import javax.servlet.ServletContext;
>>  import javax.servlet.http.HttpServletRequest;
>>  import javax.servlet.http.HttpServletResponse;
>>
>> -import org.apache.tapestry5.*;
>> +import org.apache.tapestry5.Asset;
>> +import org.apache.tapestry5.BindingConstants;
>> +import org.apache.tapestry5.Block;
>> +import org.apache.tapestry5.ComponentResources;
>> +import org.apache.tapestry5.EventContext;
>> +import org.apache.tapestry5.Field;
>> +import org.apache.tapestry5.FieldValidationSupport;
>> +import org.apache.tapestry5.FieldValidator;
>> +import org.apache.tapestry5.Link;
>> +import org.apache.tapestry5.MarkupWriter;
>> +import org.apache.tapestry5.MetaDataConstants;
>> +import org.apache.tapestry5.NullFieldStrategy;
>> +import org.apache.tapestry5.OptimizedSessionPersistedObject;
>> +import org.apache.tapestry5.PersistenceConstants;
>> +import org.apache.tapestry5.PropertyOverrides;
>> +import org.apache.tapestry5.RenderSupport;
>> +import org.apache.tapestry5.Renderable;
>> +import org.apache.tapestry5.SelectModel;
>> +import org.apache.tapestry5.StreamResponse;
>> +import org.apache.tapestry5.SymbolConstants;
>> +import org.apache.tapestry5.TapestryConstants;
>> +import org.apache.tapestry5.Translator;
>> +import org.apache.tapestry5.ValidationDecorator;
>> +import org.apache.tapestry5.Validator;
>> +import org.apache.tapestry5.VersionUtils;
>>  import org.apache.tapestry5.ajax.MultiZoneUpdate;
>> -import org.apache.tapestry5.annotations.*;
>> +import org.apache.tapestry5.annotations.ActivationRequestParameter;
>>  import org.apache.tapestry5.annotations.ContentType;
>> +import org.apache.tapestry5.annotations.HeartbeatDeferred;
>> +import org.apache.tapestry5.annotations.Import;
>> +import org.apache.tapestry5.annotations.Meta;
>> +import org.apache.tapestry5.annotations.PageAttached;
>> +import org.apache.tapestry5.annotations.PageDetached;
>> +import org.apache.tapestry5.annotations.PageLoaded;
>> +import org.apache.tapestry5.annotations.PageReset;
>> +import org.apache.tapestry5.annotations.Path;
>> +import org.apache.tapestry5.annotations.Secure;
>> +import org.apache.tapestry5.annotations.Service;
>>  import org.apache.tapestry5.beaneditor.Validate;
>>  import org.apache.tapestry5.corelib.ClientValidation;
>>  import org.apache.tapestry5.corelib.LoopFormState;
>> @@ -59,7 +93,18 @@ import org.apache.tapestry5.internal.bea
>>  import org.apache.tapestry5.internal.beaneditor.MessagesConstraintGenerator;
>>  import org.apache.tapestry5.internal.beaneditor.PrimitiveFieldConstraintGenerator;
>>  import org.apache.tapestry5.internal.beaneditor.ValidateAnnotationConstraintGenerator;
>> -import org.apache.tapestry5.internal.bindings.*;
>> +import org.apache.tapestry5.internal.bindings.AssetBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.BlockBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.ComponentBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.ContextBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.LiteralBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.MessageBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.NullFieldStrategyBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.PropBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.RenderVariableBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.SymbolBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.TranslateBindingFactory;
>> +import org.apache.tapestry5.internal.bindings.ValidateBindingFactory;
>>  import org.apache.tapestry5.internal.grid.CollectionGridDataSource;
>>  import org.apache.tapestry5.internal.grid.NullDataSource;
>>  import org.apache.tapestry5.internal.gzip.GZipFilter;
>> @@ -89,18 +134,85 @@ import org.apache.tapestry5.internal.ser
>>  import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
>>  import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
>>  import org.apache.tapestry5.internal.services.templates.PageTemplateLocator;
>> -import org.apache.tapestry5.internal.transform.*;
>> +import org.apache.tapestry5.internal.transform.ActivationRequestParameterWorker;
>> +import org.apache.tapestry5.internal.transform.ApplicationStateWorker;
>> +import org.apache.tapestry5.internal.transform.BindParameterWorker;
>> +import org.apache.tapestry5.internal.transform.CachedWorker;
>> +import org.apache.tapestry5.internal.transform.ComponentWorker;
>> +import org.apache.tapestry5.internal.transform.DiscardAfterWorker;
>> +import org.apache.tapestry5.internal.transform.EnvironmentalWorker;
>> +import org.apache.tapestry5.internal.transform.HeartbeatDeferredWorker;
>> +import org.apache.tapestry5.internal.transform.ImportWorker;
>> +import org.apache.tapestry5.internal.transform.InjectComponentWorker;
>> +import org.apache.tapestry5.internal.transform.InjectContainerWorker;
>> +import org.apache.tapestry5.internal.transform.InjectNamedWorker;
>> +import org.apache.tapestry5.internal.transform.InjectPageWorker;
>> +import org.apache.tapestry5.internal.transform.InjectServiceWorker;
>> +import org.apache.tapestry5.internal.transform.InjectWorker;
>> +import org.apache.tapestry5.internal.transform.InvokePostRenderCleanupOnResourcesWorker;
>> +import org.apache.tapestry5.internal.transform.LogWorker;
>> +import org.apache.tapestry5.internal.transform.MixinAfterWorker;
>> +import org.apache.tapestry5.internal.transform.MixinWorker;
>> +import org.apache.tapestry5.internal.transform.OnEventWorker;
>> +import org.apache.tapestry5.internal.transform.PageActivationContextWorker;
>> +import org.apache.tapestry5.internal.transform.PageLifecycleAnnotationWorker;
>> +import org.apache.tapestry5.internal.transform.PageResetAnnotationWorker;
>> +import org.apache.tapestry5.internal.transform.ParameterWorker;
>> +import org.apache.tapestry5.internal.transform.PersistWorker;
>> +import org.apache.tapestry5.internal.transform.PropertyWorker;
>> +import org.apache.tapestry5.internal.transform.RenderCommandWorker;
>> +import org.apache.tapestry5.internal.transform.RenderPhaseMethodWorker;
>> +import org.apache.tapestry5.internal.transform.RetainWorker;
>> +import org.apache.tapestry5.internal.transform.SessionAttributeWorker;
>> +import org.apache.tapestry5.internal.transform.SupportsInformalParametersWorker;
>> +import org.apache.tapestry5.internal.transform.UnclaimedFieldWorker;
>>  import org.apache.tapestry5.internal.translator.NumericTranslator;
>>  import org.apache.tapestry5.internal.translator.NumericTranslatorSupport;
>>  import org.apache.tapestry5.internal.translator.StringTranslator;
>> -import org.apache.tapestry5.internal.util.PrimaryKeyEncoder2ValueEncoder;
>>  import org.apache.tapestry5.internal.util.RenderableAsBlock;
>>  import org.apache.tapestry5.internal.util.StringRenderable;
>>  import org.apache.tapestry5.internal.validator.ValidatorMacroImpl;
>> -import org.apache.tapestry5.ioc.*;
>> -import org.apache.tapestry5.ioc.annotations.*;
>> +import org.apache.tapestry5.ioc.AnnotationProvider;
>> +import org.apache.tapestry5.ioc.Configuration;
>> +import org.apache.tapestry5.ioc.Location;
>> +import org.apache.tapestry5.ioc.MappedConfiguration;
>> +import org.apache.tapestry5.ioc.Messages;
>> +import org.apache.tapestry5.ioc.MethodAdviceReceiver;
>> +import org.apache.tapestry5.ioc.ObjectLocator;
>> +import org.apache.tapestry5.ioc.ObjectProvider;
>> +import org.apache.tapestry5.ioc.OrderedConfiguration;
>> +import org.apache.tapestry5.ioc.Resource;
>> +import org.apache.tapestry5.ioc.ScopeConstants;
>> +import org.apache.tapestry5.ioc.ServiceBinder;
>> +import org.apache.tapestry5.ioc.annotations.Autobuild;
>> +import org.apache.tapestry5.ioc.annotations.Contribute;
>> +import org.apache.tapestry5.ioc.annotations.Inject;
>> +import org.apache.tapestry5.ioc.annotations.InjectService;
>> +import org.apache.tapestry5.ioc.annotations.IntermediateType;
>> +import org.apache.tapestry5.ioc.annotations.Local;
>> +import org.apache.tapestry5.ioc.annotations.Marker;
>> +import org.apache.tapestry5.ioc.annotations.Match;
>> +import org.apache.tapestry5.ioc.annotations.Primary;
>> +import org.apache.tapestry5.ioc.annotations.Scope;
>> +import org.apache.tapestry5.ioc.annotations.SubModule;
>> +import org.apache.tapestry5.ioc.annotations.Symbol;
>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>> -import org.apache.tapestry5.ioc.services.*;
>> +import org.apache.tapestry5.ioc.services.Builtin;
>> +import org.apache.tapestry5.ioc.services.ChainBuilder;
>> +import org.apache.tapestry5.ioc.services.ClassFactory;
>> +import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
>> +import org.apache.tapestry5.ioc.services.Coercion;
>> +import org.apache.tapestry5.ioc.services.CoercionTuple;
>> +import org.apache.tapestry5.ioc.services.LazyAdvisor;
>> +import org.apache.tapestry5.ioc.services.MasterObjectProvider;
>> +import org.apache.tapestry5.ioc.services.PerthreadManager;
>> +import org.apache.tapestry5.ioc.services.PipelineBuilder;
>> +import org.apache.tapestry5.ioc.services.PropertyAccess;
>> +import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
>> +import org.apache.tapestry5.ioc.services.StrategyBuilder;
>> +import org.apache.tapestry5.ioc.services.SymbolSource;
>> +import org.apache.tapestry5.ioc.services.ThreadLocale;
>> +import org.apache.tapestry5.ioc.services.TypeCoercer;
>>  import org.apache.tapestry5.ioc.util.AvailableValues;
>>  import org.apache.tapestry5.ioc.util.IdAllocator;
>>  import org.apache.tapestry5.ioc.util.StrategyRegistry;
>> @@ -524,31 +636,22 @@ public final class TapestryModule
>>      * <dt>Persist</dt>
>>      * <dd>Allows fields to store their their value persistently between requests</dd>
>>      * <dt>Parameter</dt>
>> -     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter}
>> -     * annotation</dd>
>> +     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter} annotation</dd>
>>      * <dt>Component</dt>
>> -     * <dd>Defines embedded components based on the
>> -     * {@link org.apache.tapestry5.annotations.Component} annotation</dd>
>> +     * <dd>Defines embedded components based on the {@link org.apache.tapestry5.annotations.Component} annotation</dd>
>>      * <dt>Mixin</dt>
>>      * <dd>Adds a mixin as part of a component's implementation</dd>
>>      * <dt>Environment</dt>
>> -     * <dd>Allows fields to contain values extracted from the
>> -     * {@link org.apache.tapestry5.services.Environment} service</dd>
>> +     * <dd>Allows fields to contain values extracted from the {@link org.apache.tapestry5.services.Environment} service</dd>
>>      * <dt>Inject</dt>
>> -     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a
>> -     * value is supplied</dd>
>> +     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a value is supplied</dd>
>>      * <dt>InjectService</dt>
>>      * <dd>Handles the {@link org.apache.tapestry5.ioc.annotations.InjectService} annotation</dd>
>>      * <dt>InjectPage</dt>
>> -     * <dd>Adds code to allow access to other pages via the
>> -     * {@link org.apache.tapestry5.annotations.InjectPage} field annotation</dd>
>> +     * <dd>Adds code to allow access to other pages via the {@link org.apache.tapestry5.annotations.InjectPage} field
>> +     * annotation</dd>
>>      * <dt>InjectBlock</dt>
>>      * <dd>Allows a block from the template to be injected into a field</dd>
>> -     * <dt>IncludeStylesheet</dt>
>> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeStylesheet} annotation</dd>
>> -     * <dt>IncludeJavaScriptLibrary</dt>
>> -     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeJavaScriptLibrary} annotation
>> -     * </dd>
>>      * <dt>Import</dt>
>>      * <dd>Supports the {@link Import} annotation</dd>
>>      * <dt>SupportsInformalParameters</dt>
>> @@ -564,12 +667,10 @@ public final class TapestryModule
>>      * <dt>RenderPhase</dt>
>>      * <dd>Link in render phaes methods</dd>
>>      * <dt>InvokePostRenderCleanupOnResources</dt>
>> -     * <dd>Makes sure
>> -     * {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is
>> -     * invoked after a component finishes rendering</dd>
>> +     * <dd>Makes sure {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is invoked
>> +     * after a component finishes rendering</dd>
>>      * <dt>GenerateAccessors</dt>
>> -     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property}
>> -     * annotation is present</dd>
>> +     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property} annotation is present</dd>
>>      * <dt>Cached</dt>
>>      * <dd>Checks for the {@link org.apache.tapestry5.annotations.Cached} annotation</dd>
>>      * <dt>Log</dt>
>> @@ -637,9 +738,6 @@ public final class TapestryModule
>>
>>         configuration.addInstance("DiscardAfter", DiscardAfterWorker.class);
>>
>> -        configuration.addInstance("IncludeStylesheet", IncludeStylesheetWorker.class, "after:SetupRender");
>> -        configuration
>> -                .addInstance("IncludeJavaScriptLibrary", IncludeJavaScriptLibraryWorker.class, "after:SetupRender");
>>         configuration.addInstance("Import", ImportWorker.class, "after:SetupRender");
>>
>>         configuration.add("InvokePostRenderCleanupOnResources", new InvokePostRenderCleanupOnResourcesWorker());
>> @@ -794,11 +892,10 @@ public final class TapestryModule
>>      * <dt>CommonResources</dt>
>>      * <dd>access to properties of resources (log, messages, etc.)</dd>
>>      * <dt>Asset</dt>
>> -     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to
>> -     * the component class</dd>
>> +     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to the component class</dd>
>>      * <dt>Service</dt>
>> -     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type
>> -     * against Tapestry IoC services</dd>
>> +     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type against Tapestry IoC
>> +     * services</dd>
>>      * </dl>
>>      */
>>     public static void contributeInjectionProvider(OrderedConfiguration<InjectionProvider> configuration,
>> @@ -861,11 +958,11 @@ public final class TapestryModule
>>     /**
>>      * <dl>
>>      * <dt>StoreIntoGlobals</dt>
>> -     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals}
>> -     * at the start of the pipeline</dd>
>> +     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals} at the start of the
>> +     * pipeline</dd>
>>      * <dt>IgnoredPaths</dt>
>> -     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration)
>> -     * to be mapped to other applications</dd>
>> +     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration) to be mapped to other
>> +     * applications</dd>
>>      * <dt>GZip</dt>
>>      * <dd>Handles GZIP compression of response streams (if supported by client)</dd>
>>      */
>> @@ -902,18 +999,17 @@ public final class TapestryModule
>>      * Continues a number of filters into the RequestHandler service:
>>      * <dl>
>>      * <dt>StaticFiles</dt>
>> -     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the
>> -     * servlet container process the request</dd>
>> +     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the servlet container process
>> +     * the request</dd>
>>      * <dt>CheckForUpdates</dt>
>> -     * <dd>Periodically fires events that checks to see if the file system sources for any cached
>> -     * data has changed (see {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
>> +     * <dd>Periodically fires events that checks to see if the file system sources for any cached data has changed (see
>> +     * {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
>>      * <dt>ErrorFilter</dt>
>> -     * <dd>Catches request errors and lets the
>> -     * {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them</dd>
>> +     * <dd>Catches request errors and lets the {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them
>> +     * </dd>
>>      * <dt>StoreIntoGlobals</dt>
>> -     * <dd>Stores the request and response into the
>> -     * {@link org.apache.tapestry5.services.RequestGlobals} service (this is repeated at the end of
>> -     * the pipeline, in case any filter substitutes the request or response).
>> +     * <dd>Stores the request and response into the {@link org.apache.tapestry5.services.RequestGlobals} service (this
>> +     * is repeated at the end of the pipeline, in case any filter substitutes the request or response).
>>      * </dl>
>>      */
>>     public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration, Context context,
>> @@ -1028,7 +1124,6 @@ public final class TapestryModule
>>      * <li>String to {@link Renderable}
>>      * <li>{@link Renderable} to {@link Block}
>>      * <li>String to {@link DateFormat}
>> -     * <li>{@link PrimaryKeyEncoder} to {@link ValueEncoder}
>>      * <li>String to {@link Resource} (via {@link AssetSource#resourceForPath(String)})
>>      * <li>{@link Renderable} to {@link RenderCommand}</li>
>>      * <li>String to {@link LoopFormState}</li>
>> @@ -1173,9 +1268,6 @@ public final class TapestryModule
>>                     }
>>                 }));
>>
>> -        configuration.add(CoercionTuple.create(PrimaryKeyEncoder.class, ValueEncoder.class,
>> -                new PrimaryKeyEncoder2ValueEncoder(coercer)));
>> -
>>         configuration.add(CoercionTuple.create(Date.class, Calendar.class, new Coercion<Date, Calendar>()
>>         {
>>             public Calendar coerce(Date input)
>> @@ -1278,9 +1370,9 @@ public final class TapestryModule
>>      * the chain is responsible for ordinary
>>      * property names (and property paths).
>>      * <p/>
>> -     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See
>> -     * <a href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no
>> -     * longer any built-in contributions to the configuration.
>> +     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See <a
>> +     * href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no longer any built-in
>> +     * contributions to the configuration.
>>      *
>>      * @param configuration
>>      *            contributions of special factories for some constants, each
>> @@ -1348,8 +1440,7 @@ public final class TapestryModule
>>     }
>>
>>     /**
>> -     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's
>> -     * {@link Environment}.
>> +     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's {@link Environment}.
>>      *
>>      * @since 5.2.0
>>      */
>> @@ -1359,8 +1450,7 @@ public final class TapestryModule
>>     }
>>
>>     /**
>> -     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport}
>> -     * inside this
>> +     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport} inside this
>>      * thread's {@link org.apache.tapestry5.services.Environment}.
>>      *
>>      * @since 5.1.0.1
>> @@ -1418,8 +1508,7 @@ public final class TapestryModule
>>     }
>>
>>     /**
>> -     * Initializes the application, using a pipeline of
>> -     * {@link org.apache.tapestry5.services.ApplicationInitializer}s.
>> +     * Initializes the application, using a pipeline of {@link org.apache.tapestry5.services.ApplicationInitializer}s.
>>      */
>>     @Marker(Primary.class)
>>     public ApplicationInitializer buildApplicationInitializer(Logger logger,
>> @@ -1621,8 +1710,7 @@ public final class TapestryModule
>>
>>     /**
>>      * The MarkupRenderer service is used to render a full page as markup.
>> -     * Supports an ordered configuration of
>> -     * {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
>> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
>>      */
>>     public MarkupRenderer buildMarkupRenderer(Logger logger, @Autobuild
>>     MarkupRendererTerminator terminator, List<MarkupRendererFilter> configuration)
>> @@ -1634,11 +1722,10 @@ public final class TapestryModule
>>     /**
>>      * A wrapper around {@link org.apache.tapestry5.internal.services.PageRenderQueue} used for
>>      * partial page renders.
>> -     * Supports an ordered configuration of
>> -     * {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
>> +     * Supports an ordered configuration of {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
>>      *
>> -     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration,
>> -     *      org.apache.tapestry5.Asset, org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
>> +     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration, org.apache.tapestry5.Asset,
>> +     *      org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
>>      */
>>     public PartialMarkupRenderer buildPartialMarkupRenderer(Logger logger,
>>             List<PartialMarkupRendererFilter> configuration, @Autobuild
>> @@ -1675,8 +1762,7 @@ public final class TapestryModule
>>     /**
>>      * Builds the action request handler for Ajax requests, based on a
>>      * {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder
>> -     * pipeline} around
>> -     * {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
>> +     * pipeline} around {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
>>      * the
>>      * request handler are supported here as well.
>>      */
>> @@ -1728,11 +1814,11 @@ public final class TapestryModule
>>      * <dt>String</dt>
>>      * <dd>Sends a page render redirect</dd>
>>      * <dt>Class</dt>
>> -     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is
>> -     * more refactoring safe than the page name)</dd>
>> +     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is more refactoring safe
>> +     * than the page name)</dd>
>>      * <dt>{@link Component}</dt>
>> -     * <dd>A page's root component (though a non-root component will work, but will generate a
>> -     * warning). A direct to the containing page is sent.</dd>
>> +     * <dd>A page's root component (though a non-root component will work, but will generate a warning). A direct to the
>> +     * containing page is sent.</dd>
>>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>>      * <dd>The stream response is sent as the actual reply.</dd>
>>      * <dt>URL</dt>
>> @@ -1788,16 +1874,13 @@ public final class TapestryModule
>>      * <dt>{@link RenderCommand}</dt>
>>      * <dd>Typically, a {@link org.apache.tapestry5.Block}</dd>
>>      * <dt>{@link org.apache.tapestry5.annotations.Component}</dt>
>> -     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON
>> -     * response is sent)</dd>
>> -     * <dt>{@link org.apache.tapestry5.json.JSONObject} or
>> -     * {@link org.apache.tapestry5.json.JSONArray}</dt>
>> +     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON response is sent)</dd>
>> +     * <dt>{@link org.apache.tapestry5.json.JSONObject} or {@link org.apache.tapestry5.json.JSONArray}</dt>
>>      * <dd>The JSONObject is returned as a text/javascript response</dd>
>>      * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
>>      * <dd>The stream response is sent as the actual response</dd>
>>      * <dt>String</dt>
>> -     * <dd>Interprets the value as a logical page name and sends a client response to redirect to
>> -     * that page</dd>
>> +     * <dd>Interprets the value as a logical page name and sends a client response to redirect to that page</dd>
>>      * <dt>{@link org.apache.tapestry5.Link}</dt>
>>      * <dd>Sends a JSON response to redirect to the link</dd>
>>      * <dt>{@link Class}</dt>
>> @@ -1806,10 +1889,9 @@ public final class TapestryModule
>>      * <dd>Sends a single JSON response to update the content of multiple zones
>>      * </dl>
>>      * <p>
>> -     * In most cases, when you want to support a new type, you should convert it to one of the
>> -     * built-in supported types (such as {@link RenderCommand}. You can then inject the master
>> -     * AjaxComponentEventResultProcessor (use the {@link Ajax} marker annotation) and delegate to
>> -     * it.
>> +     * In most cases, when you want to support a new type, you should convert it to one of the built-in supported types
>> +     * (such as {@link RenderCommand}. You can then inject the master AjaxComponentEventResultProcessor (use the
>> +     * {@link Ajax} marker annotation) and delegate to it.
>>      */
>>     @Contribute(ComponentEventResultProcessor.class)
>>     @Ajax
>> @@ -1837,8 +1919,8 @@ public final class TapestryModule
>>      * <dt>Asset</dt>
>>      * <dd>Provides access to assets (context, classpath and virtual) via {@link AssetDispatcher}</dd>
>>      * <dt>PageRender</dt>
>> -     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and
>> -     * forwards onto {@link PageRenderRequestHandler}</dd>
>> +     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and forwards onto
>> +     * {@link PageRenderRequestHandler}</dd>
>>      * <dt>ComponentEvent</dt>
>>      * <dd>Identifies the {@link ComponentEventRequestParameters} and forwards onto the
>>      * {@link ComponentEventRequestHandler}</dd>
>> @@ -1869,9 +1951,9 @@ public final class TapestryModule
>>
>>     /**
>>      * Contributes a default object renderer for type Object, plus specialized
>> -     * renderers for {@link org.apache.tapestry5.services.Request},
>> -     * {@link org.apache.tapestry5.ioc.Location}, {@link org.apache.tapestry5.ComponentResources},
>> -     * {@link org.apache.tapestry5.EventContext}, {@link AvailableValues},
>> +     * renderers for {@link org.apache.tapestry5.services.Request}, {@link org.apache.tapestry5.ioc.Location},
>> +     * {@link org.apache.tapestry5.ComponentResources}, {@link org.apache.tapestry5.EventContext},
>> +     * {@link AvailableValues},
>>      * List, and Object[].
>>      */
>>     @SuppressWarnings("unchecked")
>> @@ -1908,8 +1990,8 @@ public final class TapestryModule
>>     }
>>
>>     /**
>> -     * Adds page render filters, each of which provides an
>> -     * {@link org.apache.tapestry5.annotations.Environmental} service. Filters
>> +     * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
>> +     * service. Filters
>>      * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
>>      * components as they render.
>>      * <dl>
>> @@ -2486,8 +2568,7 @@ public final class TapestryModule
>>     }
>>
>>     /**
>> -     * Adds a listener to the
>> -     * {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
>> +     * Adds a listener to the {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
>>      * {@link PropertyAccess} and {@link TypeCoercer} caches on
>>      * a class loader invalidation. In addition, forces the
>>      * realization of {@link ComponentClassResolver} at startup.
>> @@ -2538,12 +2619,11 @@ public final class TapestryModule
>>      * Contributes filters:
>>      * <dl>
>>      * <dt>Ajax</dt>
>> -     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so
>> -     * </dd>
>> +     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so</dd>
>>      * <dt>ImmediateRender</dt>
>>      * <dd>When {@linkplain SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
>> -     * immediate action response rendering} is enabled, generates the markup response (instead of a
>> -     * page redirect response, which is the normal behavior)</dd>
>> +     * immediate action response rendering} is enabled, generates the markup response (instead of a page redirect
>> +     * response, which is the normal behavior)</dd>
>>      * <dt>Secure</dt>
>>      * <dd>Sends a redirect if an non-secure request accesses a secure page</dd>
>>      * </dl>
>> @@ -2686,8 +2766,7 @@ public final class TapestryModule
>>      * Identifies String, Number and Boolean as immutable objects, a catch-all
>>      * handler for Object (that understands
>>      * the {@link org.apache.tapestry5.annotations.ImmutableSessionPersistedObject} annotation),
>> -     * and handlers for {@link org.apache.tapestry5.OptimizedSessionPersistedObject} and
>> -     * {@link org.apache.tapestry5.OptimizedApplicationStateObject}.
>> +     * and a handler for {@link org.apache.tapestry5.OptimizedSessionPersistedObject}.
>>      *
>>      * @since 5.1.0.0
>>      */
>> @@ -2709,7 +2788,6 @@ public final class TapestryModule
>>         configuration.add(Boolean.class, immutable);
>>
>>         configuration.add(OptimizedSessionPersistedObject.class, new OptimizedSessionPersistedObjectAnalyzer());
>> -        configuration.add(OptimizedApplicationStateObject.class, new OptimizedApplicationStateObjectAnalyzer());
>>     }
>>
>>     /**
>> @@ -2894,8 +2972,7 @@ public final class TapestryModule
>>     }
>>
>>     /**
>> -     * Contributes "AppCatalog" as the Resource defined by
>> -     * {@link SymbolConstants#APPLICATION_CATALOG}.
>> +     * Contributes "AppCatalog" as the Resource defined by {@link SymbolConstants#APPLICATION_CATALOG}.
>>      *
>>      * @since 5.2.0
>>      */
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java Wed Feb  9 21:18:11 2011
>> @@ -1,4 +1,4 @@
>> -// Copyright 2010 The Apache Software Foundation
>> +// Copyright 2010, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>> @@ -20,7 +20,6 @@ import org.apache.tapestry5.FieldFocusPr
>>  import org.apache.tapestry5.RenderSupport;
>>  import org.apache.tapestry5.SymbolConstants;
>>  import org.apache.tapestry5.annotations.Environmental;
>> -import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
>>  import org.apache.tapestry5.json.JSONObject;
>>  import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
>>
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml Wed Feb  9 21:18:11 2011
>> @@ -1,20 +1,20 @@
>>  <html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>>
>> -    <h1>DateField in AjaxFormLoop</h1>
>> +  <h1>DateField in AjaxFormLoop</h1>
>>
>> -    <t:form>
>> +  <t:form>
>>
>> -        <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderConverter">
>> +    <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderEncoder">
>>
>> -            <t:datefield value="current.date"/>
>> -            <t:removerowlink>remove</t:removerowlink>
>> +      <t:datefield value="current.date"/>
>> +      <t:removerowlink>remove</t:removerowlink>
>>
>> -        </div>
>> +    </div>
>>
>> -        <p>
>> -            <input type="submit" value="Go"/>
>> -        </p>
>> -    </t:form>
>> +    <p>
>> +      <input type="submit" value="Go"/>
>> +    </p>
>> +  </t:form>
>>
>>
>>  </html>
>> \ No newline at end of file
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/FormInjectorDemo.tml Wed Feb  9 21:18:11 2011
>> @@ -1,36 +1,35 @@
>>  <html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>>
>> -    <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
>> +  <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
>>
>> -    <t:form>
>> +  <t:form>
>>
>> -        <ul>
>> -            <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="encoder"
>> -                context="demoContextValue">
>> -                <t:submitnotifier>
>> -                    <t:textfield t:id="value" value="item.value"/>
>> -                    <t:removerowlink>remove</t:removerowlink>
>> -                </t:submitnotifier>
>> -                <t:parameter name="addRow">
>> -                    <t:addrowlink>Add a row</t:addrowlink>
>> -                </t:parameter>
>> -            </li>
>> -        </ul>
>> -
>> -        <div class="t-beaneditor-row">
>> -            <input type="submit" value="Sum up the values"/>
>> -        </div>
>> -
>> -    </t:form>
>> -
>> -    <p>
>> -        Current sum:
>> -        <span id="sum">${sum}</span>
>> -    </p>
>> +    <ul>
>> +      <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="doubleItemEncoder" context="demoContextValue">
>> +        <t:submitnotifier>
>> +          <t:textfield t:id="value" value="item.value"/>
>> +          <t:removerowlink>remove</t:removerowlink>
>> +        </t:submitnotifier>
>> +        <t:parameter name="addRow">
>> +          <t:addrowlink>Add a row</t:addrowlink>
>> +        </t:parameter>
>> +      </li>
>> +    </ul>
>> +
>> +    <div class="t-beaneditor-row">
>> +      <input type="submit" value="Sum up the values"/>
>> +    </div>
>> +
>> +  </t:form>
>> +
>> +  <p>
>> +    Current sum:
>> +    <span id="sum">${sum}</span>
>> +  </p>
>>
>> -    <h2>Data</h2>
>> +  <h2>Data</h2>
>>
>> -    <t:grid source="doubleItems"/>
>> +  <t:grid source="doubleItems"/>
>>
>>
>>  </html>
>> \ No newline at end of file
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/ToDoList.tml Wed Feb  9 21:18:11 2011
>> @@ -11,7 +11,7 @@
>>                 <th> Title </th>
>>                 <th> Reorder </th>
>>             </tr>
>> -            <tr t:type="Loop" source="items" value="item" encoder="encoder">
>> +            <tr t:type="Loop" source="items" value="item" encoder="toDoItemEncoder">
>>                 <td>
>>                     <input t:type="TextField" t:id="title" value="item.title" size="30"
>>                         validate="required"/>
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2009 The Apache Software Foundation
>> +// Copyright 2009, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2007 The Apache Software Foundation
>> +// Copyright 2007, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,13 +14,13 @@
>>
>>  package org.apache.tapestry5.integration.app1.base;
>>
>> -import org.apache.tapestry5.annotations.ApplicationState;
>>  import org.apache.tapestry5.annotations.Property;
>> +import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.integration.app1.data.IncidentData;
>>
>>  public class BaseComponent
>>  {
>> -    @ApplicationState
>> +    @SessionState
>>     @Property
>>     private IncidentData incidentData;
>>  }
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java Wed Feb  9 21:18:11 2011
>> @@ -4,7 +4,7 @@
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,7 +14,7 @@
>>
>>  package org.apache.tapestry5.integration.app1.components;
>>
>> -import org.apache.tapestry5.annotations.IncludeStylesheet;
>> +import org.apache.tapestry5.annotations.Import;
>>  import org.apache.tapestry5.ioc.annotations.Inject;
>>  import org.apache.tapestry5.ioc.services.Builtin;
>>  import org.apache.tapestry5.ioc.services.ClassFactory;
>> @@ -22,10 +22,11 @@ import org.apache.tapestry5.services.Com
>>  import org.apache.tapestry5.services.Request;
>>
>>  /**
>> - * Here's a component with a template, including a t:body element.   Really should rename this to "Layout" as that's the
>> + * Here's a component with a template, including a t:body element. Really should rename this to "Layout" as that's the
>>  * T5 naming.
>>  */
>> -@IncludeStylesheet({ "context:layout/style.css", "context:css/app.css" })
>> +@Import(stylesheet =
>> +{ "context:layout/style.css", "context:css/app.css" })
>>  public class Border
>>  {
>>     @Inject
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2008 The Apache Software Foundation
>> +// Copyright 2008, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,8 +14,8 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.annotations.ApplicationState;
>>  import org.apache.tapestry5.annotations.Component;
>> +import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.corelib.components.BeanEditor;
>>  import org.apache.tapestry5.corelib.components.Form;
>>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
>> @@ -25,13 +25,13 @@ public class BeanEditorBeanEditContext
>>     @Component
>>     private Form form;
>>
>> -    @Component(parameters = { "object=registrationData" })
>> +    @Component(parameters =
>> +    { "object=registrationData" })
>>     private BeanEditor editor;
>>
>> -    @ApplicationState
>> +    @SessionState
>>     private RegistrationData data;
>>
>> -
>>     public RegistrationData getRegistrationData()
>>     {
>>         return data;
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java Wed Feb  9 21:18:11 2011
>> @@ -1,4 +1,4 @@
>> -// Copyright 2007, 2010 The Apache Software Foundation
>> +// Copyright 2007, 2010, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>> @@ -15,10 +15,10 @@
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>>  import org.apache.tapestry5.PersistenceConstants;
>> -import org.apache.tapestry5.annotations.ApplicationState;
>>  import org.apache.tapestry5.annotations.Component;
>>  import org.apache.tapestry5.annotations.Persist;
>>  import org.apache.tapestry5.annotations.Property;
>> +import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.beaneditor.Validate;
>>  import org.apache.tapestry5.corelib.ClientValidation;
>>  import org.apache.tapestry5.corelib.components.BeanEditForm;
>> @@ -33,7 +33,7 @@ public class BeanEditorDemo
>>     { "clientValidation=prop:clientValidation" })
>>     private BeanEditForm form;
>>
>> -    @ApplicationState
>> +    @SessionState
>>     @Property
>>     private RegistrationData registrationData;
>>
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2008 The Apache Software Foundation
>> +// Copyright 2008, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,8 +14,8 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.annotations.ApplicationState;
>>  import org.apache.tapestry5.annotations.Component;
>> +import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.corelib.components.BeanEditor;
>>  import org.apache.tapestry5.corelib.components.Form;
>>  import org.apache.tapestry5.integration.app1.data.RegistrationData;
>> @@ -25,10 +25,11 @@ public class BeanEditorOverride
>>     @Component
>>     private Form form;
>>
>> -    @Component(parameters = { "object=registrationData" })
>> +    @Component(parameters =
>> +    { "object=registrationData" })
>>     private BeanEditor editor;
>>
>> -    @ApplicationState
>> +    @SessionState
>>     private RegistrationData data;
>>
>>     public RegistrationData getRegistrationData()
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -//  Copyright 2008, 2009 The Apache Software Foundation
>> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,18 +14,18 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>> -import org.apache.tapestry5.annotations.Persist;
>> -import org.apache.tapestry5.annotations.Property;
>> -import org.apache.tapestry5.integration.app1.data.DateHolder;
>> -import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
>> -
>>  import java.util.Collections;
>>  import java.util.Comparator;
>>  import java.util.List;
>>  import java.util.Map;
>>
>> +import org.apache.tapestry5.ValueEncoder;
>> +import org.apache.tapestry5.annotations.Persist;
>> +import org.apache.tapestry5.annotations.Property;
>> +import org.apache.tapestry5.func.F;
>> +import org.apache.tapestry5.integration.app1.data.DateHolder;
>> +import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>> +
>>  public class DateFieldAjaxFormLoop
>>  {
>>     @Persist
>> @@ -40,6 +40,24 @@ public class DateFieldAjaxFormLoop
>>             database = CollectionFactory.newMap();
>>     }
>>
>> +    public ValueEncoder<DateHolder> getDateHolderEncoder()
>> +    {
>> +        return new ValueEncoder<DateHolder>()
>> +        {
>> +            public String toClient(DateHolder value)
>> +            {
>> +                return String.valueOf(value.getId());
>> +            }
>> +
>> +            public DateHolder toValue(String clientValue)
>> +            {
>> +                Integer key = new Integer(clientValue);
>> +
>> +                return database.get(key);
>> +            }
>> +
>> +        };
>> +    }
>>
>>     public List<DateHolder> getDateHolders()
>>     {
>> @@ -56,19 +74,6 @@ public class DateFieldAjaxFormLoop
>>         return result;
>>     }
>>
>> -    public PrimaryKeyEncoder<Integer, DateHolder> getDateHolderConverter()
>> -    {
>> -        DefaultPrimaryKeyEncoder<Integer, DateHolder> result =
>> -                new DefaultPrimaryKeyEncoder<Integer, DateHolder>(Integer.class);
>> -
>> -        for (DateHolder dh : getDateHolders())
>> -        {
>> -            result.add(dh.getId(), dh);
>> -        }
>> -
>> -        return result;
>> -    }
>> -
>>     DateHolder onAddRowFromLoop()
>>     {
>>         DateHolder dh = new DateHolder();
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2008, 2009 The Apache Software Foundation
>> +// Copyright 2008, 2009, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,7 +14,13 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>> +import java.util.Collections;
>> +import java.util.Comparator;
>> +import java.util.List;
>> +import java.util.Map;
>> +import java.util.concurrent.atomic.AtomicLong;
>> +
>> +import org.apache.tapestry5.ValueEncoder;
>>  import org.apache.tapestry5.annotations.Log;
>>  import org.apache.tapestry5.annotations.Persist;
>>  import org.apache.tapestry5.annotations.Property;
>> @@ -22,12 +28,6 @@ import org.apache.tapestry5.integration.
>>  import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
>>  import org.testng.Assert;
>>
>> -import java.util.Collections;
>> -import java.util.Comparator;
>> -import java.util.List;
>> -import java.util.Map;
>> -import java.util.concurrent.atomic.AtomicLong;
>> -
>>  public class FormInjectorDemo
>>  {
>>     private static final long DEMO_CONTEXT_VALUE = System.currentTimeMillis();
>> @@ -51,27 +51,21 @@ public class FormInjectorDemo
>>         }
>>     }
>>
>> -    public PrimaryKeyEncoder getEncoder()
>> +    public ValueEncoder<DoubleItem> getDoubleItemEncoder()
>>     {
>> -        return new PrimaryKeyEncoder<Long, DoubleItem>()
>> +        return new ValueEncoder<DoubleItem>()
>>         {
>> -            public Long toKey(DoubleItem value)
>> -            {
>> -                return value.getId();
>> -            }
>>
>> -            public void prepareForKeys(List<Long> keys)
>> +            public DoubleItem toValue(String clientValue)
>>             {
>> -            }
>> +                Long key = new Long(clientValue);
>>
>> -            public DoubleItem toValue(Long key)
>> -            {
>>                 return DB.get(key);
>>             }
>>
>> -            public Class<Long> getKeyType()
>> +            public String toClient(DoubleItem value)
>>             {
>> -                return Long.class;
>> +                return String.valueOf(value.getId());
>>             }
>>         };
>>     }
>> @@ -94,7 +88,7 @@ public class FormInjectorDemo
>>     Object onAddRow(long context)
>>     {
>>         Assert.assertEquals(context, DEMO_CONTEXT_VALUE,
>> -                            "Context value provided to AjaxFormLoop must be provided to the event handler method.");
>> +                "Context value provided to AjaxFormLoop must be provided to the event handler method.");
>>
>>         DoubleItem item = new DoubleItem();
>>         item.setId(ID_ALLOCATOR.incrementAndGet());
>> @@ -119,7 +113,6 @@ public class FormInjectorDemo
>>         sum += item.getValue();
>>     }
>>
>> -
>>     void onActionFromReset()
>>     {
>>         DB.clear();
>> @@ -133,6 +126,6 @@ public class FormInjectorDemo
>>     void onActivate(String context)
>>     {
>>         Assert.assertEquals(context, "FakePageActivationContextValue",
>> -                            "Page activation context was not passed through correctly.");
>> +                "Page activation context was not passed through correctly.");
>>     }
>>  }
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2007 The Apache Software Foundation
>> +// Copyright 2007, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,16 +14,16 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.annotations.ApplicationState;
>> +import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.integration.app1.data.RolePath;
>>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>>
>>  public class MultiBeanDemoResult
>>  {
>> -    @ApplicationState
>> +    @SessionState
>>     private UserCredentials credentials;
>>
>> -    @ApplicationState
>> +    @SessionState
>>     private RolePath rolePath;
>>
>>     public UserCredentials getCredentials()
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2007 The Apache Software Foundation
>> +// Copyright 2007, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,19 +14,19 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.annotations.ApplicationState;
>>  import org.apache.tapestry5.annotations.Component;
>>  import org.apache.tapestry5.annotations.InjectPage;
>> +import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.corelib.components.Form;
>>  import org.apache.tapestry5.integration.app1.data.RolePath;
>>  import org.apache.tapestry5.integration.app1.data.UserCredentials;
>>
>>  public class MultiBeanEditDemo
>>  {
>> -    @ApplicationState
>> +    @SessionState
>>     private UserCredentials credentials;
>>
>> -    @ApplicationState
>> +    @SessionState
>>     private RolePath rolePath;
>>
>>     @InjectPage
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java Wed Feb  9 21:18:11 2011
>> @@ -1,10 +1,10 @@
>> -// Copyright 2007 The Apache Software Foundation
>> +// Copyright 2007, 2011 The Apache Software Foundation
>>  //
>>  // Licensed under the Apache License, Version 2.0 (the "License");
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,12 +14,12 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.annotations.ApplicationState;
>> +import org.apache.tapestry5.annotations.SessionState;
>>  import org.apache.tapestry5.integration.app1.data.BirthdayReminder;
>>
>>  public class ShowBirthdayReminder
>>  {
>> -    @ApplicationState
>> +    @SessionState
>>     private BirthdayReminder reminder;
>>
>>     public BirthdayReminder getReminder()
>>
>> Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
>> URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java?rev=1069114&r1=1069113&r2=1069114&view=diff
>> ==============================================================================
>> --- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java (original)
>> +++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java Wed Feb  9 21:18:11 2011
>> @@ -4,7 +4,7 @@
>>  // you may not use this file except in compliance with the License.
>>  // You may obtain a copy of the License at
>>  //
>> -//     http://www.apache.org/licenses/LICENSE-2.0
>> +// http://www.apache.org/licenses/LICENSE-2.0
>>  //
>>  // Unless required by applicable law or agreed to in writing, software
>>  // distributed under the License is distributed on an "AS IS" BASIS,
>> @@ -14,31 +14,58 @@
>>
>>  package org.apache.tapestry5.integration.app1.pages;
>>
>> -import org.apache.tapestry5.PrimaryKeyEncoder;
>> +import java.util.List;
>> +
>> +import org.apache.tapestry5.ValueEncoder;
>>  import org.apache.tapestry5.annotations.Component;
>> +import org.apache.tapestry5.annotations.Property;
>>  import org.apache.tapestry5.corelib.components.Form;
>> +import org.apache.tapestry5.func.F;
>> +import org.apache.tapestry5.func.Predicate;
>>  import org.apache.tapestry5.integration.app1.data.ToDoItem;
>>  import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
>>  import org.apache.tapestry5.ioc.annotations.Inject;
>> -import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
>> -
>> -import java.util.List;
>>
>>  public class ToDoList
>>  {
>> +    @Property
>>     @Inject
>>     private ToDoDatabase database;
>>
>> -    private ToDoItem item;
>> +    private List<ToDoItem> items;
>>
>> -    private DefaultPrimaryKeyEncoder<Long, ToDoItem> encoder;
>> +    private ToDoItem item;
>>
>>     @Component
>>     private Form form;
>>
>> +    public ValueEncoder<ToDoItem> getToDoItemEncoder()
>> +    {
>> +        return new ValueEncoder<ToDoItem>()
>> +        {
>> +            public ToDoItem toValue(String clientValue)
>> +            {
>> +                final long id = Long.parseLong(clientValue);
>> +
>> +                return F.flow(items).filter(new Predicate<ToDoItem>()
>> +                {
>> +                    public boolean accept(ToDoItem element)
>> +                    {
>> +                        return element.getId() == id;
>> +                    }
>> +                }).first();
>> +            }
>> +
>> +            public String toClient(ToDoItem value)
>> +            {
>> +                return String.valueOf(value.getId());
>> +            }
>> +        };
>> +    }
>> +
>>     public List<ToDoItem> getItems()
>>     {
>> -        return encoder.getValues();
>> +        return items;
>>     }
>>
>>     public ToDoItem getItem()
>> @@ -51,33 +78,16 @@ public class ToDoList
>>         this.item = item;
>>     }
>>
>> -    public ToDoDatabase getDatabase()
>> -    {
>> -        return database;
>> -    }
>> -
>> -    public PrimaryKeyEncoder getEncoder()
>> -    {
>> -        return encoder;
>> -    }
>> -
>>     void onPrepare()
>>     {
>> -        List<ToDoItem> items = database.findAll();
>> -
>> -        encoder = new DefaultPrimaryKeyEncoder<Long, ToDoItem>(long.class);
>> -
>> -        for (ToDoItem item : items)
>> -        {
>> -            encoder.add(item.getId(), item);
>> -        }
>> +        items = database.findAll();
>>     }
>>
>>     void onSuccess()
>>     {
>>         int order = 0;
>>
>> -        for (ToDoItem item : encoder.getValues())
>> +        for (ToDoItem item : items)
>>         {
>>             item.setOrder(order++);
>>             database.update(item);
>> @@ -90,7 +100,7 @@ public class ToDoList
>>         {
>>             ToDoItem item = new ToDoItem();
>>             item.setTitle("<New To Do>");
>> -            item.setOrder(encoder.getValues().size());
>> +            item.setOrder(items.size());
>>
>>             database.add(item);
>>         }
>>
>>
>>
>
>
>
> --
> Andreas Andreou - andyhot@apache.org - http://blog.andyhot.gr
> Tapestry PMC / Tacos developer
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: dev-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org