Notes on the MyFaces Core 2.0.1 Release

Release manager: Leonardo Uribe

Timeline

  • Proposed release date: 2010-06-16

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.1 snapshots:

        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>2.0.1-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 ==
<<Anchor(diary)>>

1.1 Preparing test 1.0.0-beta-4

    * Trying to prepare SUCCESS!.
{{{
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/test/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=1_0_0_beta_4 -DdryRun=true
  • Release it! FAIL.
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/test/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=1_0_0_beta_4 -Dresume=false
  • mvn install, mvn release:rollback and try again SUCCESS!
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/test/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=1_0_0_beta_4 -Dresume=false

1.2 Preparing shared 4.0.2

  • Trying to prepare SUCCESS!.
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=4_0_2 -DdryRun=true
  • Release it! FAIL.
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=4_0_2 -Dresume=false
  • mvn install, mvn release:rollback and try again SUCCESS!
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=4_0_2 -Dresume=false

2. Preparing core 2.0.1

  • copied trunk to temporary work branch core/branches/2_0_1prepare
  • Set all dependencies to org.apache.myfaces.shared artifacts to version "4.0.2" instead 4.0.2-SNAPSHOT
  • -DdryRun=true SUCCESS!
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=2_0_1 -DdryRun=true
  • Do it! -Dresume=false FAIL!
mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/branches -Dusername=lu4242 -Dscm.password=??? -Dtag=2_0_1 -Dresume=false
  • mvn install, mvn release:rollback and again SUCCESS!
  • Checkout 2_0_1 branch mvn install -DperformRelease=true

3. Deploy on local repo

  • shared 4.0.2 and myfaces-test 1.0.0-beta-4
mvn clean deploy -DperformRelease=true -DaltDeploymentRepository=myfaces-local-staging::default::scp://localhost/home/lu4242/stage/repo201 -Psign-artifacts -Dpassphrase=??? 
  • core 2.0.1
mvn clean deploy -DperformRelease=true -DaltDeploymentRepository=myfaces-local-staging::default::scp://localhost/home/lu4242/stage/repo201 -Psign-artifacts -Dpassphrase=??? -Pgenerate-assembly 

*copy manually using scp to the account on people.apache.org. Due to a bug on linux [WWW] http://jira.codehaus.org/browse/MDEPLOY-62 deploy not work on linux. SUCCESS

   cd home/lu4242/stage/repo201
   scp -p -r org lu4242@people.apache.org:/home/lu4242/public_html/myfaces201

4. JIRA Release Management

  • Create 2.0.1 and 2.0.2-SNAPSHOT versions
  • Find resolved issues and close them
  • Unresolved issues moved to 2.0.2-SNAPSHOT
  • Issues fixed on both 2.0.1, 1.2.9, 1.1.8 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.0.1-bin.tar.gz and zip,
cd 2_0_1
mvn install -Pgenerate-assembly
cd assembly
mvn package

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

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

  • Copy to private account on people.apache.org
scp -p -r myfaces-core-2.0.1-bin* lu4242@people.apache.org:/home/lu4242/public_html/myfaces201binsrc/binaries
scp -p -r myfaces-core-2.0.1-src* lu4242@people.apache.org:/home/lu4242/public_html/myfaces201binsrc/sources

7. VOTE

Hi,

I was running the needed tasks to get the 2.0.1 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.2  [1]
 2. Maven artifact group "org.apache.myfaces.core" v2.0.1  [1]
 3. Maven artifact group "org.apache.myfaces.test" v1.0.0-beta-4 [1]

The artifacts are deployed to my private Apache account ([1] and [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.1" 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] http://people.apache.org/~lu4242/myfaces201
[2] http://www.apache.org/foundation/voting.html#ReleaseVotes
[3] http://people.apache.org/~lu4242/myfaces201binsrc
[4] http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10600&styleName=Html&version=12315117

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

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.0.1 Release

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

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.1 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.1
Bug

    * [MYFACES-2463] - CLONE -<f:param> violates the JSF spec
    * [MYFACES-2569] - setResourceHandler, setViewHandler and setStateManager must throw illegalStateException if called after at least one request has been processed by the Lifecycle instance
    * [MYFACES-2640] - (JSF.js) Ajax Render component problem, replace with whole fragment not one element.
    * [MYFACES-2647] - MyFacesContainerInitializer doesn't check for null class name
    * [MYFACES-2662] - setViewHandler(...) called from RESTORE_VIEW phase listener throws illegalStateException
    * [MYFACES-2663] - NPE in UIParameter when value resolves to null
    * [MYFACES-2664] - need to attach a UIViewRoot to FacesContext during startup/shutdown
    * [MYFACES-2665] - Legacy ViewHandler doesn't work in back compatibility mode for JSP pages
    * [MYFACES-2666] - Getting a full-page-refresh when running JSF's Ajax on the Trinidad 2 (trunk)
    * [MYFACES-2667] - var values cause problems with ui:debug when creating the debug component tree
    * [MYFACES-2668] - Rendering HTML elements inside a script section confuses HtmlResponseWriterImpl
    * [MYFACES-2669] - UIData.invokeOnComponent does not use UINamingContainer.getSeparatorChar
    * [MYFACES-2670] - Components on facets are not removed programatically by PSS algorithm
    * [MYFACES-2671] - MYFACES-2633 regresses the ezcomp spinner example
    * [MYFACES-2673] - Problems running with Java2 security on 2.0.0
    * [MYFACES-2675] - BeanValidation does not work with composite components
    * [MYFACES-2678] - Problems with navigation case ordering
    * [MYFACES-2681] - Duplicate ResourceHandler register on DigesterFacesConfigUnmarshallerImpl
    * [MYFACES-2682] - ResourceHandlerImpl.handleResourceRequest should call createResource getting the top ResourceHandler
    * [MYFACES-2683] - Event processing should be enabled when bindings are set with pss enabled
    * [MYFACES-2684] - UIComponentBase.saveAttachedState save transient elements as null values on List case
    * [MYFACES-2685] - Cannot call invokeOnComponent on UIColumn without rowIndex
    * [MYFACES-2686] - javax.faces.FacesException: java.lang.NumberFormatException while initializing if MANIFEST.MF version exceeds int value
    * [MYFACES-2692] - Hidden field "javax.faces.encodedURL" should be rendered at begin of h:form
    * [MYFACES-2695] - Save and restore scope values and current count when temporarily changing the current index of UIRepeat
    * [MYFACES-2697] - BeanValidation class is annotated with @FacesValidator tag
    * [MYFACES-2699] - UIComponent.broadcast should propagate events to all Behavior instances, not only to ClientBehavior
    * [MYFACES-2700] - ajax usecase fails
    * [MYFACES-2701] - jsf.getViewState(formElement) fails if it is called outside of jsf.request
    * [MYFACES-2704] - <f:param> in <h:commandButton> not rendered properly
    * [MYFACES-2705] - ClassCastException in HtmlAjaxBehaviorRenderer
    * [MYFACES-2706] - Webkit auto eval issued one request too late
    * [MYFACES-2707] - PPR auto eval fails on certain ie/dom structure combinations
    * [MYFACES-2708] - setAttributes body broken
    * [MYFACES-2710] - Cannot call UIComponent.getCurrentComponent() from UIComponent.restoreState() or UIComponent.saveState()
    * [MYFACES-2711] - Application.createComponent(FacesContext,Resource) register listeners twice and call createComponent(String) directly
    * [MYFACES-2717] - c:if and c:forEach cause jsf.js not beeing rendered when navigating to another view
    * [MYFACES-2718] - h:commandButton does not take into account params when type="button"
    * [MYFACES-2719] - faces-redirect=true lost the url parameters
    * [MYFACES-2722] - can get class not found from BeanValidator
    * [MYFACES-2724] - OutcomeTarget button and link should always add navigation case parameters
    * [MYFACES-2725] - OutcomeTarget button and link do not render fragment
    * [MYFACES-2726] - CommandLink renderer do not escape \ characters in generated javascript
    * [MYFACES-2727] - h:outputScript / h:outputStylesheet bad relocation when pss is used and there is a refresh transient build
    * [MYFACES-2728] - StateManagementStrategy should lookup ViewDeclarationLanguage on restoreView (does not assume possible wrapping)
    * [MYFACES-2730] - FacesContext not available on application startup
    * [MYFACES-2734] - Character encoding not set correctly before Restore View
    * [MYFACES-2740] - MethodExpression wrapping of vdl.retargetMethodExpression does not take into account #{cc} resolution
    * [MYFACES-2741] - h:link with bad outcome render value twice and does not end correctly
    * [MYFACES-2742] - javax.faces.behavior.event = undefined
    * [MYFACES-2744] - UIData.getClientId() should not append rowIndex, instead use UIData.getContainerClientId()
    * [MYFACES-2745] - Cannot set property "_mfProto" of null to "null" error with new javascript
    * [MYFACES-2747] - Auto attachment of debug version of jsf.js crashes the loading of a page under ie6
    * [MYFACES-2748] - NPE in htmlunit when testing ajax rendering
    * [MYFACES-2749] - Encrypted View State does not include Message Authentication Code (MAC)
    * [MYFACES-2750] - Simplify PostRestoreStateEvent delivery requirements
    * [MYFACES-2752] - Missing checkstyle-rules-2-SNAPSHOT is preventing the build of the current myfaces trunk
    * [MYFACES-2754] - MyFaces can attempt to create a new session after the response has been committed
    * [MYFACES-2755] - this.id is undefined in jsf.ajax.request (regression from 2.0.0)
    * [MYFACES-2758] - DebugPhaseListener tries to get value from unrendered component where value is unavailable
    * [MYFACES-2760] - f:viewParam jsp tag and f:selectItem jsp tag does not implement new properties
    * [MYFACES-2761] - PartialViewContextImpl does not respect isRenderAll()
    * [MYFACES-2762] - Handling mutiple h:form and AJAX is broken
    * [MYFACES-2763] - Example from MyFaces 2762 causes a white result page in ie6 and ie7 quirks mode
    * [MYFACES-2765] - Dom findById fails on firefox with javax.faces.ViewState
    * [MYFACES-2767] - _AjaxRequest.js adds an extra ampersand in request
    * [MYFACES-2768] - jsf.js internal myfaces parameters do not work anymore
    * [MYFACES-2771] - Javascript: Unit test for _Dom.findByStyleClass fails on IE8
    * [MYFACES-2775] - StackOverflowError when adding componentResource with id=null
    * [MYFACES-2776] - ViewState is not updated with ajax
    * [MYFACES-2779] - PartialResponse bogus response on render all because of falsely positioned development stage script tag
    * [MYFACES-2781] - Facelets double commenting embedded javascripts
    * [MYFACES-2784] - NPE when I forget to add an interface to a composite component
    * [MYFACES-2788] - setRowIndex still uses getClientId instead of getContainerClientId for saving and restoring row states
    * [MYFACES-2791] - render view params not working for EL expressions
    * [MYFACES-2792] - Redirect with include-view-params in faces-config.xml
    * [MYFACES-2793] - jsf.ajax.request source should accept form element
    * [MYFACES-2800] - navigation-case/redirect/include-view-params is not picked up and has a wrong default value
    * [MYFACES-2801] - HtmlResponseWriterImpl needs to deal with <script> and <style> tags properly on both html and xhtml
    * [MYFACES-2806] - possible bug in shared ClassLoader scenarios
    * [MYFACES-2808] - jsf.js <error> tagged response causes hanging queue
    * [MYFACES-2809] - Bug in navigation + ppr
    * [MYFACES-2810] - jsf.js npe in user reported case
    * [MYFACES-2819] - jsf.js race condition on webkit
    * [MYFACES-2820] - jsf.js new auto eval detection does not entirely work out
    * [MYFACES-2821] - jsf.js ajaxrequest encodes form values too early
    * [MYFACES-2822] - Cannot get factory when tomcat is shutdown

Improvement

    * [MYFACES-2679] - Use a constant to identify FacesCompositeELResolver.Scope value
    * [MYFACES-2680] - Cache renderKit used
    * [MYFACES-2689] - Add @JSFComponent "composite" and @JSFProperty "partialStateHolder" attributes
    * [MYFACES-2690] - Do not create the view for a debug request
    * [MYFACES-2691] - Enhance MessageUtils adding methods when custom library bundle should be scanned
    * [MYFACES-2698] - Update myfaces-builder-plugin to deal with Behaviors and fix jsf 2.0 doc issues
    * [MYFACES-2712] - Copy codehaus javascript plugin code and incorporate into myfaces-javascript-plugin
    * [MYFACES-2714] - Include uncompressed jsf.js file and use it when development mode is used
    * [MYFACES-2716] - Refactoring of the Javascript Codebase
    * [MYFACES-2721] - Second part of the Javascript Refactoring
    * [MYFACES-2723] - ee6 container initializer enhancements
    * [MYFACES-2729] - Refactoring of the Javascript Codebase: Part 3. size improvement due to code optimizations
    * [MYFACES-2737] - Cache FacesContext on UIComponentBase instances
    * [MYFACES-2738] - Use isInstance() instead of iterating through the enum constants in EnumConverter
    * [MYFACES-2739] - Pass through String values in EnumConverter.getAsString()
    * [MYFACES-2743] - Organize renderBehaviorizedXXX method parameters and add new ones
    * [MYFACES-2746] - Subdivide methods of HtmlTextRendererBase, HtmlTextareaRendererBase and HtmlSecretRendererBase into extendable parts
    * [MYFACES-2757] - Provide a FacesContext instance during startup
    * [MYFACES-2764] - Disable facelets reloading for PROJECT_STAGE=Production
    * [MYFACES-2769] - Resource should expire immediately in javax.faces.PROJECT_STAGE=Development
    * [MYFACES-2770] - Improve <ui:debug> with information about the saved state
    * [MYFACES-2772] - Javascript: Improve the unit testing and logging facilities
    * [MYFACES-2773] - (JSF.js) Performance fixes
    * [MYFACES-2777] - Remove VISITED_FACET_COUNT from component attributes map
    * [MYFACES-2780] - MyFaces performance improvements for production
    * [MYFACES-2786] - Fix foundation work for jsf 2.1 in the areas of pps, timeout, delay, queue control
    * [MYFACES-2789] - add ASL headers to our poms
    * [MYFACES-2794] - jsf.js: Replace some direct comparisons with equalsIgnoreCase
    * [MYFACES-2795] - jsf.js:browser independend auto eval detection
    * [MYFACES-2797] - jsf.js Performance of raw updates could need improvement compared to mojarra
    * [MYFACES-2802] - Remove CompositeComponentResourceTagHandler.ATTACHED_OBJECT_HADLERS_KEY from Attributes Map
    * [MYFACES-2804] - LifecycleImpl _firstRequestProcessed should be marked as volatile
    * [MYFACES-2805] - Use synchronized blocks for ApplicationImpl _defaultValidatorsIds
    * [MYFACES-2807] - Use specific Instruction for <body> end element
    * [MYFACES-2814] - Implement "hidden" attribute for composite tags (spec rev A)
    * [MYFACES-2816] - h:button must support the disabled attribute (spec rev A)
    * [MYFACES-2818] - Add constructor to MyfacesConfig that assign all default values for testing

New Feature

    * [MYFACES-2735] - Javascript: Adding delegation as primary pattern for _Runtime.js moving the logging out from _Lang. into a debugging Lang.js
    * [MYFACES-2766] - Check StartupFacesContextImpl in ApplicationImpl

Task

    * [MYFACES-2334] - get ifnavigation sample working
    * [MYFACES-2350] - All renderers of components that implements ClientBehaviorHolder should encode javascript attributes
    * [MYFACES-2374] - UIViewRoot.getBeforePhaseListener() and UIViewRoot.getAfterPhaseListener() could be called on PhaseId.RESTORE_VIEW
    * [MYFACES-2672] - Don't create more wrappers for _behaviorsMap than necessary
    * [MYFACES-2677] - Adapt CompositeComponentAttributesMapWrapper to changes from MYFACES-2633
    * [MYFACES-2687] - Make sure jsf.js is included if client behaviors are rendered
    * [MYFACES-2693] - UIRepeat has to override visitTree() and invokeOnComponent()
    * [MYFACES-2694] - FaceletTestCase should install MockVisitContextFactory
    * [MYFACES-2702] - Implement composite:clientBehavior
    * [MYFACES-2713] - UIRepeat.broadcast() has to push the component of the IndexedEvent target to the stack
    * [MYFACES-2731] - <f:validateBean disabled="true" /> should only disable adding the validator as a default-validator
    * [MYFACES-2732] - ValidatorTagHandlerDelegate should ignore binding, disabled and for on its MetaRuleset
    * [MYFACES-2736] - Do not render CDATA section on UIDebug's JavaScript for partial requests
    * [MYFACES-2759] - Clean up FacesContextImpl
    * [MYFACES-2783] - Do not install DebugPhaseListener in AbstractFacesInitializer
    * [MYFACES-2785] - Clean up initialization code and add tests for StartupServletContextListener and MyFacesServlet
    * [MYFACES-2813] - Change Value to Length in LengthValidator message (spec rev A)
    * [MYFACES-2815] - includeViewParams=true can also be faces-include-view-params=true (spec rev A)
    * [MYFACES-2817] - name attribute of h:outputScript and h:outputStylesheet should be documented as required (spec rev A)

Test

    * [MYFACES-2733] - Provide tests for <f:validateBean />

Wish

    * [MYFACES-1353] - HtmlResponseWriterImpl - Prematurely Closes HTML Elements

regards

Leonardo Uribe

  • No labels