Notes on the MyFaces Core 2.1.4 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.1.4 snapshots:

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

Note: Maven 2.1.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.1.2

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.1.4

mvn clean install
mvn install -Pgenerate-assembly -Papache-release
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

mvn install -Pgenerate-assembly
cd assembly
mvn package

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

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

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

cd /home/lu4242/public_html/myfaces214binsrc/binaries

wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.tar.gz
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.tar.gz.asc
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.tar.gz.md5
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.tar.gz.sha1
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.zip
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.zip.asc
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.zip.md5
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-bin.zip.sha1

cd /home/lu4242/public_html/myfaces214binsrc/sources

wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.tar.gz
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.tar.gz.asc
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.tar.gz.md5
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.tar.gz.sha1
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.zip
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.zip.asc
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.zip.md5
wget --no-check-certificate https://repository.apache.org/content/repositories/orgapachemyfaces-200/org/apache/myfaces/core/myfaces-core-assembly/2.1.4/myfaces-core-assembly-2.1.4-src.zip.sha1

7. VOTE

Hi,

I was running the needed tasks to get the 2.1.4 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.1.2  [1]
 2. Maven artifact group "org.apache.myfaces.core" v2.1.4  [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.1.4" 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-200/org/apache/myfaces/
[2] http://www.apache.org/foundation/voting.html#ReleaseVotes
[3] http://people.apache.org/~lu4242/myfaces214binsrc
[4] https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10600&version=12317868

8. Clirr report to check binary incompatibilities success

9. Vote closed, starting distribution

cd /home/lu4242/public_html/myfaces214binsrc/sources
cp * /www/www.apache.org/dist/myfaces/source
cd /home/lu4242/public_html/myfaces214binsrc/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.1.4 Release

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

MyFaces Core is a JavaServer(tm) Faces 2.1 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.1.4 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.1.4 

New Feature

    Now jsf.js has been refactored to provide a modular include system [MYFACES-3361]. See this blog for details:
    http://www.irian.at/en/blog/-/blogs/introducing-apache-myfaces-modular-includes

Sub-task

    [MYFACES-3330] - Generate small generated unique ids for components without explicit ids
    [MYFACES-3331] - Identifier stored on MARK_CREATED should be unique per component on the same

Bug

    [MYFACES-2552] - TagValueExpression.getType() returns null if the property in the managed bean is null and the expression points to a facelets composite component attribute
    [MYFACES-3106] - Resources not loaded when using a dynamic ui:inlclude and rendered via ajax
    [MYFACES-3259] - Custom Validator tag attributes are not configured when used with default tag handler in wrapping mode
    [MYFACES-3268] - UIComponentBase.findComponent does not allow use the same id for a child component.
    [MYFACES-3300] - Ajax behavior change from 2.1.1 to 2.1.2
    [MYFACES-3304] - NullPointerException using h:selectOneRadio with an enum
    [MYFACES-3309] - Throw correct exception while using FactoryFinderProvider SPI
    [MYFACES-3310] - javax.faces.validator.BeanValidator.createValidatorFactory should store the factory instance on the application map of the externalContext instead of casting to a servletcontext.
    [MYFACES-3312] - Compare viewId after PreRenderView does not detect navigation to the same page
    [MYFACES-3313] - Calculation of redirect URL does not preserve the extension used in Faces Servlet mapping
    [MYFACES-3315] - @FacesValidator.isDefault() not processed
    [MYFACES-3318] - Documentation for insert ajax command does not match with spec xsd
    [MYFACES-3321] - jsf.js: Script fragments evaluated after an ajax operation encode '&' character into '&amp;'
    [MYFACES-3323] - UIInput._createFieldDebugInfo should check for Object[] before call Arrays.deepToString(...)
    [MYFACES-3324] - Conditional navigation match has priority over same case without conditional navigation
    [MYFACES-3325] - h:column should use HtmlColumn instead UIColumn
    [MYFACES-3332] - Fix condition to call ComponentSupport.markComponentToRestoreFully on 2.1.x branch
    [MYFACES-3336] - Request with only prefix mapping throws exception, but it should return http 404 (not found) response
    [MYFACES-3337] - param defined with f:param inside h:button or h:link has precedence over the same param defined in a faces-config navigation rule
    [MYFACES-3338] - jsf.js: getViewState is not called
    [MYFACES-3339] - Ajax embedded CDATA Sequence lost on the server once an ajax refresh is triggered
    [MYFACES-3340] - h:commandButton with f:ajax behavior and f:param renders submit script
    [MYFACES-3341] - Call to getClientId() on UIInput._createFieldDebugInfo on jsp cause invalid client to be assigned on development project stage
    [MYFACES-3342] - UISelectMany child components could receive non array or collection instances as selected values
    [MYFACES-3343] - f:convertNumber in jsp only accept Locale instance into its locale attribute
    [MYFACES-3349] - Plugin snapshot repository missing in MyFaces core pom.xml
    [MYFACES-3353] - jsf.js: Runtime.js inheritance method callsuper ignores the resturn value
    [MYFACES-3354] - NullPointerException on jetty 6.1.5 with faces-redirect=true action result
    [MYFACES-3356] - MyFaces assumes that the WAR is exploded and XHTML pages are accessible in filesystem
    [MYFACES-3360] - DefaultFaceletsStateManagementStrategy.PostAddPreRemoveFromViewListener can now register changes on the view when refreshing occur
    [MYFACES-3364] - UIComponent.findComponent ignored overridden method findComponent of a NamingContainer
    [MYFACES-3366] - FacesContext should use FacesContext.getCurrentInstance() instead of 'this'
    [MYFACES-3372] - Multiple Lifecycle instances are not taken into account when setup phase listeners
    [MYFACES-3373] - UIForm.createUniqueId should take into account prependId logic
    [MYFACES-3375] - MyFaces can incorrectly determine that Portlets are not supported
    [MYFACES-3377] - unsynchronized lazy initialization could create concurrency errors
    [MYFACES-3378] - UIComponent.setParent does not propagate setInView() call when processingEvents is false
    [MYFACES-3379] - PostAddToViewEvent should be propagated to UIViewRoot
    [MYFACES-3380] - system-event-listener source-class should be optional but is not
    [MYFACES-3385] - Entered values for input fields conatined in a Composite Component are lost, if the CC is used in a datatable
    [MYFACES-3390] - jsf.js: Error alert in development mode is shown despite local listeners
    [MYFACES-3391] - jsf.js: Lifecycle, success should not be called if an error is raised

Improvement

    [MYFACES-3262] - [perf] [concurrency] Cache read and write method in _ComponentAttributesMap
    [MYFACES-3305] - jsf.js: major code cleanup and refactoring
    [MYFACES-3308] - Allow localized composite components
    [MYFACES-3319] - Make create AjaxBehavior accessible in AjaxHandler
    [MYFACES-3322] - h:outputScript "name" attribute can receive query params
    [MYFACES-3327] - Spaces between markup and component are trimmed by facelets algorithm
    [MYFACES-3328] - [perf] FlashELResolver should get FacesContext instance when it is necessary
    [MYFACES-3329] - Fix PSS algorithm to ensure c:if and ui:include src="#{...}" related use cases will work without rely on org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE
    [MYFACES-3345] - Quotes in Messages.properties
    [MYFACES-3346] - Chinese Translation for Messages.properties
    [MYFACES-3347] - Improve web config param logging and enhance @JSFWebConfigParam
    [MYFACES-3348] - Length Validator Message in Messages.properties
    [MYFACES-3352] - Chinese Translation for Messages.js
    [MYFACES-3355] - Allow relocation of library name / resource name using a Resource wrapper
    [MYFACES-3357] - jsf.js: readability and performance improvements
    [MYFACES-3361] - jsf.js: code restructuration for size and speed improvlements
    [MYFACES-3363] - Enable checkstyle checks by default in our myfaces-parent pom
    [MYFACES-3367] - Detect when to wpdate head or body target when content has been updated dynamically
    [MYFACES-3376] - Create abstract test classes that runs MyFaces Core as in a container

Task

    [MYFACES-3374] - Compatibility with Servlet API 2.4

regards,

Leonardo Uribe