Notes on the MyFaces Core 2.0.3 Release

Timeline

Issues

Testing

Here's how you can help us test the distribution.

Download a nightly build of the distribution assemblies:

Configure a <repository> for Maven 2:

        <repository>
           <id>apache.snapshots</id>
           <name>Apache Snapshot Repository</name>
           <url>http://people.apache.org/repo/m2-snapshot-repository</url>
        </repository>

And declare a dependency on the 2.0.3 snapshots:

        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>2.0.3-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>2.0.3-SNAPSHOT</version>
        </dependency>

Note: Maven 2.0.4 will not download a new version if one is already present in your local repository. You will need to delete $M2_REPO/org/apache/myfaces/core to force Maven to download the new version. (Usually, $M2_REPO is <your home directory>/.m2/repository .)

Test your application, then, let us know the results (good or bad!) on dev -at- myfaces.apache.org. (You must be subscribed to post. See: http://myfaces.apache.org/mail-lists.html.)

Tasks

Proposed Release Announcement

Diary

1. Preparing shared 4.0.4

mvn release:prepare -DdryRun=true

mvn release:prepare -Dresume=false
mvn install
mvn release:rollback
mvn release:prepare -Dresume=false

mvn release:prepare

mvn release:perform

2. Preparing core 2.0.3

mvn clean install
mvn install -Pgenerate-assembly
mvn release:prepare -DprepareRelease=true -DdryRun=true

mvn release:prepare -DprepareRelease=true -Dresume=false
mvn install
mvn install -Pgenerate-assembly -Papache-release
mvn release:rollback -DprepareRelease=true 
mvn release:prepare -DprepareRelease=true -Dresume=false

mvn release:prepare -DprepareRelease=true

mvn release:perform -DperformRelease=true

4. JIRA Release Management

5. Next step is the TCK

6. Generate assembly

cd 2_0_2
mvn install -Pgenerate-assembly
cd assembly
mvn package

openssl md5 myfaces-core-2.0.3-src.tar.gz > myfaces-core-2.0.3-src.tar.gz.md5
openssl md5 myfaces-core-2.0.3-src.zip > myfaces-core-2.0.3-src.zip.md5
openssl sha1 myfaces-core-2.0.3-src.tar.gz > myfaces-core-2.0.3-src.tar.gz.sha1
openssl sha1 myfaces-core-2.0.3-src.zip > myfaces-core-2.0.3-src.zip.sha1
gpg --armor --output myfaces-core-2.0.3-src.tar.gz.asc --detach-sig myfaces-core-2.0.3-src.tar.gz
gpg --armor --output myfaces-core-2.0.3-src.zip.asc --detach-sig myfaces-core-2.0.3-src.zip

openssl md5 myfaces-core-2.0.3-bin.tar.gz > myfaces-core-2.0.3-bin.tar.gz.md5
openssl md5 myfaces-core-2.0.3-bin.zip > myfaces-core-2.0.3-bin.zip.md5
openssl sha1 myfaces-core-2.0.3-bin.tar.gz > myfaces-core-2.0.3-bin.tar.gz.sha1
openssl sha1 myfaces-core-2.0.3-bin.zip > myfaces-core-2.0.3-bin.zip.sha1
gpg --armor --output myfaces-core-2.0.3-bin.tar.gz.asc --detach-sig myfaces-core-2.0.3-bin.tar.gz
gpg --armor --output myfaces-core-2.0.3-bin.zip.asc --detach-sig myfaces-core-2.0.3-bin.zip

scp -p -r myfaces-core-2.0.3-bin* lu4242@people.apache.org:/home/lu4242/public_html/myfaces203binsrc/binaries
scp -p -r myfaces-core-2.0.3-src* lu4242@people.apache.org:/home/lu4242/public_html/myfaces203binsrc/sources

cd /home/lu4242/public_html/myfaces203binsrc/binaries

wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.tar.gz
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.tar.gz.asc
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.tar.gz.md5
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.tar.gz.sha1
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.zip
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.zip.asc
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.zip.md5
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-bin.zip.sha1

cd /home/lu4242/public_html/myfaces203binsrc/sources

wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.tar.gz
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.tar.gz.asc
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.tar.gz.md5
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.tar.gz.sha1
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.zip
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.zip.asc
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.zip.md5
wget https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/myfaces-core-assembly/2.0.3/myfaces-core-assembly-2.0.3-src.zip.sha1

7. VOTE

Hi,

I was running the needed tasks to get the 2.0.3 release of Apache
MyFaces core out.

The artifacts passed all TCK tests.

Please note that this vote concerns all of the following parts:
 1. Maven artifact group "org.apache.myfaces.shared" v4.0.4  [1]
 2. Maven artifact group "org.apache.myfaces.core" v2.0.3  [1]

The artifacts were deployed on nexus repo [1] and to my private 
Apache account [3] for binary and source packages.

The release notes could be found at [4].

Also the clirr test does not show binary incompatibilities with myfaces-api.

Please take a look at the "2.0.3" artifacts and vote!

Please note: This vote is "majority approval" with a minimum of three
+1 votes (see [3]).

------------------------------------------------
[ ] +1 for community members who have reviewed the bits
[ ] +0
[ ] -1 for fatal flaws that should cause these bits not to be released,
 and why..............
------------------------------------------------

Thanks,
Leonardo Uribe

[1] https://repository.apache.org/content/repositories/orgapachemyfaces-012/org/apache/myfaces/core/
    https://repository.apache.org/content/repositories/orgapachemyfaces-011/org/apache/myfaces/shared/
[2] http://www.apache.org/foundation/voting.html#ReleaseVotes
[3] http://people.apache.org/~lu4242/myfaces203binsrc
[4] https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10600&styleName=Html&version=12315976

8. Clirr report to check binary incompatibilities success

9. Vote closed, starting distribution

cd /home/lu4242/public_html/myfaces203binsrc/sources
cp * /www/www.apache.org/dist/myfaces/source
cd /home/lu4242/public_html/myfaces203binsrc/binaries
cp * /www/www.apache.org/dist/myfaces/binaries

Alternative for manual copy:

mvn clean deploy -DaltDeploymentRepository=myfaces-staging::default::scpexe://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository -Psign-artifacts -DperformRelease=true -Dpassphrase=???

Alternative for manual copy:

mvn clean deploy -DaltDeploymentRepository=myfaces-staging::default::scpexe://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository -Psign-artifacts -DperformRelease=true -Dpassphrase=??? -Pgenerate-assembly 

10. Announce

Subject: [ANNOUNCE] MyFaces Core v2.0.3 Release

The Apache MyFaces team is pleased to announce the release of MyFaces Core 2.0.3.

MyFaces Core is a JavaServer(tm) Faces 2.0 implementation as specified by JSR-314. MyFaces Core has passed Sun's JSR-314 TCK and is 100% compliant with the JSR-314 specification. 

MyFaces Core 2.0.3 is available in both binary and source distributions.

    * http://myfaces.apache.org/download.html

MyFaces Core is also available in the central Maven repository under Group ID "org.apache.myfaces.core".

Release Notes - MyFaces Core - Version 2.0.3 

Sub-task

    * [MYFACES-2867] - Migrate to Velocity 1.6
    * [MYFACES-2974] - Use FacesConfig interfaces to load configuration using annotations
    * [MYFACES-2975] - NamedEventManager should be configured per web application, and do not use a static instance
    * [MYFACES-2977] - Factories loaded through META-INF/services/[factory name] should use FacesConfig object

Bug

    * [MYFACES-1890] - Numberconverter has issue with bigdecimal
    * [MYFACES-2606] - javax.crypto.BadPaddingException on Google App Engine
    * [MYFACES-2882] - 3.4.2.6 Event Broadcasting: processing events during the current lifecycle phase doesn't process additional events
    * [MYFACES-2920] - UISelectOne/UISelectMany validateValue: Before comparing each option, coerce the option value type to the type of component's value
    * [MYFACES-2927] - Invalid handling of null values in listboxes and menus
    * [MYFACES-2928] - FacesConfigurator cast for ApplicationImpl directly to load converter configuration, instead use RuntimeConfig object
    * [MYFACES-2930] - ClassByteCodeAnnotationFilter doesn't read the constants pool correctly
    * [MYFACES-2934] - Side-channel timing attack in StateUtils class may still allow padding oracle attack
    * [MYFACES-2935] - SystemEvent Acid Test
    * [MYFACES-2939] - f:event type=postValidate does not work
    * [MYFACES-2941] - Facelets classpath does not always properly decode filesystem paths
    * [MYFACES-2942] - Memory Leak in MyFaces 2.0.1 probably as well in 2.0.2
    * [MYFACES-2946] - composite:attribute "targets" property does not match with ViewDeclarationLanguage.retargetMethodExpressions
    * [MYFACES-2947] - application configuration resources located in lib/*.jar can not be accessed in OSGi enviroment
    * [MYFACES-2948] - invokeOnComponent does not call pushComponentToEL / popComponentFromEL like visitTree does
    * [MYFACES-2950] - ActionSourceRule does not take into account "action" MethodExpression could return Object or Enum
    * [MYFACES-2954] - ExternalContext.encodeRedirectURL() fails if 'baseUrl' contains empty parameters
    * [MYFACES-2960] - Setting prependId="false" (on h:form) makes <f:ajax/> not working with any ActionSource
    * [MYFACES-2964] - Incorect osgi Import-Package in impl
    * [MYFACES-2965] - MyFaces 2.0.2 AJAX crashes Safari on iPad
    * [MYFACES-2969] - Example number used by f:convertNumber messages are not formatted taking into account locale and parameters.
    * [MYFACES-2970] - f:convertNumber conversion is not symmetric when currencyCode and currencySymbol are used
    * [MYFACES-2971] - jsf.js: Slightly incorrect http get handling code
    * [MYFACES-2973] - UIComponent.unsubscribeFromEvent calls getApplication().unsubscribeFromEvent() instead of modifying _systemEventListenerClassMap
    * [MYFACES-2978] - DefaultFaceletFactory fails to create a facelet if the facelet-path contains regex control characters
    * [MYFACES-2980] - f:ajax wrapped around component(s) does not work as expected
    * [MYFACES-2982] - Update localized javax.faces.Messages.properties
    * [MYFACES-2983] - Consider using myfaces class's classloader when loading resources
    * [MYFACES-2984] - Myfaces should return a proper contentType if ResourceWrapper doesn't return one.
    * [MYFACES-2985] - Viewscoped bean does not get destroyed when navigating with faces-redirect to a non-jsf-page
    * [MYFACES-2990] - JDTCompiler wants access to more classes in osgi
    * [MYFACES-2991] - NPE from rendering button with missing resource URL
    * [MYFACES-2992] - Metadata is not created for views created by a navigation
    * [MYFACES-2993] - state saving and dynamic pages
    * [MYFACES-2994] - faces-config.xml referenced in webAppConfig <absolute-ordering> could not be on the classpath
    * [MYFACES-2996] - ServiceProviderFinder from init param is never cached on ApplicationMap
    * [MYFACES-3000] - Viewstate occasionally not restored

Improvement

    * [MYFACES-2224] - Misleading hint in error message for NFE in BigDecimalConverter
    * [MYFACES-2862] - [PERF] Improve efficiency of Application.createComponent(FacesContext,Resource) in production
    * [MYFACES-2922] - [PERF] Improvements for @ResourceDependency handling
    * [MYFACES-2936] - Add new utility class for init parameters WebConfigParamUtils
    * [MYFACES-2937] - Change getApplicationObject function name to buildApplicationObject and move it to shared ClassUtils
    * [MYFACES-2938] - Allow @JSFValidator and @JSFConverter to define custom tagHandler class
    * [MYFACES-2940] - Use VisitContext information for prevent scan a component subtree on NamingContainer instances
    * [MYFACES-2944] - Make those add*** methods public in WebXml
    * [MYFACES-2945] - Make a way to get the FacesConfig from a provider
    * [MYFACES-2951] - [PERF] enhance scanning for #{cc} expressions
    * [MYFACES-2952] - Improve Atmosphere Meteor support of MyFaces
    * [MYFACES-2955] - Allow projects using myfaces builder plugin to be open on Netbeans IDE 6.8
    * [MYFACES-2957] - Use maven shade plugin to handle myfaces-impl-ee6 module
    * [MYFACES-2958] - Improve handling of AJAX response if source element is deleted
    * [MYFACES-2963] - Set default templates automatically when jsfVersion is 20 or 2.0 with myfaces-builder-plugin
    * [MYFACES-2966] - jsf.js impl request function refactoring
    * [MYFACES-2967] - jsf.js i18n of internal error messages
    * [MYFACES-2976] - Support hiding myfaces impl classes in osgi, and provide a single osgi bundle for api + impl
    * [MYFACES-2986] - Provide an interface to override how to find spi interfaces

Task

    * [MYFACES-2943] - DefaultLifecycleProviderFactory does not log LifecycleProvider Class correctly
    * [MYFACES-2997] - Clean up SpiUtils

regards,

Leonardo Uribe