Notes on the MyFaces Core 2.2.0-beta Release

Release manager: Leonardo Uribe

Timeline

  • Proposed release date: 2013-10-30

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.2.0-beta snapshots:

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

Note: Maven 2.2.0-beta 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 ==
<<Anchor(diary)>>

      Follow the guide on http://www.apache.org/dev/publishing-maven-artifacts.html

1. Preparing shared 4.2.0

  * Change shared/core/pom.xml variable to mirror updated shared copy from core and run from shared root path
{{{
mvn clean install -Dsynch-shared=true
  • Try -DdryRun=true SUCCESS
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags -DdryRun=true
  • Release it! FAIL
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags -Dresume=false
mvn install
mvn release:rollback
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags -Dresume=false

Note: Preparing the release will create the new tag in SVN, automatically checking in on your behalf.

Note: If you're located in Europe then release:prepare may fail with 'Unable to tag SCM' and 'svn: No such revision X'. Wait 10 seconds and run mvn release:prepare again.

mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags
  • Stage the release for a vote
mvn release:perform -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags

2. Preparing core 2.2.0-beta

  • Try -DdryRun=true SUCCESS
mvn clean install
mvn install -Pgenerate-assembly -Papache-release
mvn release:prepare -DprepareRelease=true -DdryRun=true
  • Release it! FAIL
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

Note: Preparing the release will create the new tag in SVN, automatically checking in on your behalf.

Note: If you're located in Europe then release:prepare may fail with 'Unable to tag SCM' and 'svn: No such revision X'. Wait 10 seconds and run mvn release:prepare again.

mvn release:prepare -DprepareRelease=true
  • Stage the release for a vote
mvn release:perform -DperformRelease=true
  • Checkout generated tag mvn install -DperformRelease=true

4. JIRA Release Management

  • Create 2.1.1 and 2.1.1-SNAPSHOT versions
  • Find resolved issues and close them
  • Unresolved issues moved to 2.1.1-SNAPSHOT
  • Issues fixed on both 2.1.1, 2.0.6 should be saved on a text file to add it later.

5. Next step is the TCK
TCK passed confirmed by Leonardo Uribe

6. Generate assembly

  • Try to do it automatically javadoc and other stuff SUCCESS. It generate myfaces-core-2.2.0-beta-bin.tar.gz and zip,
mvn install -Pgenerate-assembly
cd assembly
mvn package

  • Create myfaces-core-2.2.0-beta-src.tar.gz and zip manually and create .asc .md5 .sha1 for bin and src
openssl md5 myfaces-core-2.2.0-beta-src.tar.gz > myfaces-core-2.2.0-beta-src.tar.gz.md5
openssl md5 myfaces-core-2.2.0-beta-src.zip > myfaces-core-2.2.0-beta-src.zip.md5
openssl sha1 myfaces-core-2.2.0-beta-src.tar.gz > myfaces-core-2.2.0-beta-src.tar.gz.sha1
openssl sha1 myfaces-core-2.2.0-beta-src.zip > myfaces-core-2.2.0-beta-src.zip.sha1
gpg --armor --output myfaces-core-2.2.0-beta-src.tar.gz.asc --detach-sig myfaces-core-2.2.0-beta-src.tar.gz
gpg --armor --output myfaces-core-2.2.0-beta-src.zip.asc --detach-sig myfaces-core-2.2.0-beta-src.zip

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

  • Copy to private account on people.apache.org
scp -p -r myfaces-core-2.2.0-beta-bin* lu4242@people.apache.org:/home/lu4242/public_html/myfaces220betabinsrc/binaries
scp -p -r myfaces-core-2.2.0-beta-src* lu4242@people.apache.org:/home/lu4242/public_html/myfaces220betabinsrc/sources
  • ALTERNATIVE: get it from nexus maven repository:
cd /home/lu4242/public_html/myfaces220betabinsrc/binaries

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

cd /home/lu4242/public_html/myfaces220betabinsrc/sources

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

7. VOTE

Hi,

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

8. Clirr report to check binary incompatibilities success

9. Vote closed, starting distribution

  • copy on /www/www.apache.org/dist/myfaces/source and /www/www.apache.org/dist/myfaces/binaries
cd /home/lu4242/public_html/myfaces220betabinsrc/sources
cp * /www/www.apache.org/dist/myfaces/source
cd /home/lu4242/public_html/myfaces220betabinsrc/binaries
cp * /www/www.apache.org/dist/myfaces/binaries
  • copy shared on /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/myfaces/shared and test SUCCESS
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=???

  • copy core on /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/myfaces/core SUCCESS
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 

  • Site deploy for shared and core (mvn site:site and mvn site:deploy)

10. Announce

  • Sent announcement mail
    • To: announce@apache.org, announce@myfaces.apache.org
    • Cc: dev@myfaces.apache.org, users@myfaces.apache.org
  • Sent announcement to jcp-open@apache.org (Necessary for TCK certified releases)
Subject: [ANNOUNCE] MyFaces Core v2.2.0-beta Release

The Apache MyFaces team is pleased to announce the release of MyFaces Core 2.2.0-beta.

MyFaces Core is a JavaServer(tm) Faces 2.2 implementation as specified by JSR-334.

MyFaces Core 2.2.0-beta 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".

Sub-task

    [MYFACES-3654] - implement small threadsafe Random algorithm
    [MYFACES-3741] - Implement CDI Flow Scope
    [MYFACES-3742] - Implement @FlowDefinition annotation
    [MYFACES-3764] - Implement FlowHandler.getLastDisplayedViewId(FacesContext context) logic
    [MYFACES-3765] - Implement FlowHandler.clientWindowTransition(FacesContext context)
    [MYFACES-3788] - Improve log message in RendererUtils.getClientId with component location

Bug

    [MYFACES-2799] - JSF 2.1: jsf.js viewstate handling does not entirely work out (bug filed on the spec tracker
    [MYFACES-3648] - some jsf files contain illegal UTF characters
    [MYFACES-3649] - myfaces-shaded-impl always unpacks myfaces-2.1.1
    [MYFACES-3650] - myfaces-2.2.x poms not properly set up
    [MYFACES-3657] - 2.2 branch: checkstyle violation prevents compile
    [MYFACES-3671] - jsf-uncompressed.js contains 'import' of not existing file '_FinalizeableObj.js'
    [MYFACES-3697] - Error while parsing Facelet-Lib hides the real reason when logging
    [MYFACES-3698] - h:body onload and onunload attributes rendered twice if optimization enabled
    [MYFACES-3739] - @ResourceDependency annotation + JSF 1.2 state saving + c:if (dynamic section) creates components on each click (UIViewRoot grows)
    [MYFACES-3758] - Check for responseComplete or renderResponse only if a phase listeners is used
    [MYFACES-3773] - ui:repeat with offset and size does not behave as expected
    [MYFACES-3781] - f:view tag must be processed when view metadata is created
    [MYFACES-3802] - CDI FlowBuilderFactoryBean declares javax.faces.bean.ApplicationScoped (JSF managed bean annotation)

Improvement

    [MYFACES-3768] - FacesMessage Severity ordinal values are not consistent with Mojarra RI
    [MYFACES-3774] - [perf] use facetName as a hint when try to find a component on refresh view algorithm
    [MYFACES-3775] - [perf] optional early flush
    [MYFACES-3776] - [perf] cache FacesContext at ClientBehaviorBase level
    [MYFACES-3777] - [perf] minimize FacesContext.getCurrentInstance() in some new points
    [MYFACES-3778] - [perf] cache url and request path for default Resource implementations
    [MYFACES-3787] - Make WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG=false default

New Feature

    [MYFACES-3588] - window-id support
    [MYFACES-3706] - jsf.js jsf22, implement resetValues on the JS side of things
    [MYFACES-3723] - JSF 2.2: Support parameter javax.faces.SERIALIZE_SERVER_STATE
    [MYFACES-3725] - JSF 2.2: Custom webapp resources dir with javax.faces.WEBAPP_RESOURCES_DIRECTORY
    [MYFACES-3797] - cdi support for converters and validators

Task

    [MYFACES-3674] - Implement f:viewAction
    [MYFACES-3676] - Implement FlashFactory and related events
    [MYFACES-3677] - Implement 'javax.faces.WEBAPP_RESOURCES_DIRECTORY'
    [MYFACES-3678] - Add ActionListenerWrapper class
    [MYFACES-3679] - Implement javax.faces.application.ApplicationConfigurationPopulator
    [MYFACES-3681] - Implement CollectionDataModel
    [MYFACES-3682] - Implement Client Side Request Forgery protection
    [MYFACES-3683] - Implement AjaxBehavior resetValues and delay
    [MYFACES-3684] - UIViewParameter.getSubmittedValue() return value can be Object in JSF 2.2 spec
    [MYFACES-3685] - Implement f:attributes facelet tag
    [MYFACES-3686] - Implement f:passThroughAttribute and f:passThroughAttributes
    [MYFACES-3688] - Implement ExternalContext.getSessionId()
    [MYFACES-3691] - Implement Faces Flows
    [MYFACES-3692] - Implement jsf:element tag and default TagDecorator
    [MYFACES-3693] - Implement ExternalContext.getApplicationContextPath()
    [MYFACES-3694] - Add httpOnly to ExternalContext.addResponseCookie(...)
    [MYFACES-3701] - Restoring view scope before view is build
    [MYFACES-3714] - Implement stateless mode using f:view "transient" attribute
    [MYFACES-3716] - Implement h:inputFile
    [MYFACES-3717] - Implement "role" attribute in related components and renderers
    [MYFACES-3718] - Replace http://java.sun.com/jsf with http://xmlns.jcp.org/jsf
    [MYFACES-3729] - Implement resource library contracts specification
    [MYFACES-3730] - Implement ViewDeclarationLanguageWrapper
    [MYFACES-3733] - Implement vdl.createComponent(...)
    [MYFACES-3734] - Implement @FacesComponent createTag, namespace and tagName attributes
    [MYFACES-3738] - Add media attribute to h:outputStylesheet
    [MYFACES-3740] - ResourceResolver "this" identifier applies for contracts too in JSF 2.2
    [MYFACES-3747] - Implement new JSF 2.2 ViewScope specification
    [MYFACES-3750] - Allow to reference composite components directly from facelets taglib file using <resource-id>
    [MYFACES-3753] - CompositeComponentELResolver map containsKey() should take into account default values
    [MYFACES-3754] - Update PartialViewContext and PartialResponseWriter to new spec
    [MYFACES-3755] - Show detail message on title of tooltip when showDetail is set or is available for h:message or h:messages
    [MYFACES-3756] - @FacesComponent and @FacesValidator value are now optional
    [MYFACES-3757] - Implement passthrough attributes using p:<attributeName>
    [MYFACES-3759] - Implement @FaceletsResourceResolver annotation
    [MYFACES-3761] - Implement html5 doctype on facelets compiler
    [MYFACES-3770] - Implement <f:resetValues> tag and <f:ajax resetValues=true ... >
    [MYFACES-3771] - h:commandButton renderer now can have children
    [MYFACES-3783] - Use tree visiting to pss algorithm in 2.2.x
    [MYFACES-3784] - Add EL 3 ELResolvers when they are available
    [MYFACES-3785] - RendererWrapper logic (@ListenerFor and @ResourceDependency)
    [MYFACES-3786] - Web Container injection support should be provided for additional lifecycle artifacts (not just managed beans)
    [MYFACES-3801] - Passthrough attributes does not require URI encoding like in writeURIAttribute

regards,

Leonardo Uribe

  • No labels