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

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

Note: Maven 2.0.8 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.9

mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags -DdryRun=true

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

mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags

mvn release:perform -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/tags

2. Preparing core 2.0.8

mvn clean install
mvn install -Pgenerate-assembly -Papache-release
mvn release:prepare -DprepareRelease=true -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/tags  -DdryRun=true

mvn release:prepare -DprepareRelease=true -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/tags  -Dresume=false
mvn install
mvn install -Pgenerate-assembly -Papache-release
mvn release:rollback -DprepareRelease=true 
mvn release:prepare -DprepareRelease=true -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/tags  -Dresume=false

mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/tags -DprepareRelease=true

mvn release:perform -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/tags -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.0.8-src.tar.gz > myfaces-core-2.0.8-src.tar.gz.md5
openssl md5 myfaces-core-2.0.8-src.zip > myfaces-core-2.0.8-src.zip.md5
openssl sha1 myfaces-core-2.0.8-src.tar.gz > myfaces-core-2.0.8-src.tar.gz.sha1
openssl sha1 myfaces-core-2.0.8-src.zip > myfaces-core-2.0.8-src.zip.sha1
gpg --armor --output myfaces-core-2.0.8-src.tar.gz.asc --detach-sig myfaces-core-2.0.8-src.tar.gz
gpg --armor --output myfaces-core-2.0.8-src.zip.asc --detach-sig myfaces-core-2.0.8-src.zip

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

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

cd /home/lu4242/public_html/myfaces208binsrc/binaries

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

cd /home/lu4242/public_html/myfaces208binsrc/sources

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

7. VOTE

Hi,

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

8. Clirr report to check binary incompatibilities success

9. Vote closed, starting distribution

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

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

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

Sub-task

    [MYFACES-3192] - exception from render response phase is logged 2x
    [MYFACES-3193] - Unwrap exception in ErrorPageWriter.handleThrowable
    [MYFACES-3197] - exception from UIInput.updateModel is logged 2x
    [MYFACES-3202] - Improve EL Exceptions wrapping
    [MYFACES-3207] - ErrorPageWriter: provide info about component(s) that triggered the problem
    [MYFACES-3214] - Remove exception wrapping with FacesException and with getPathToComponent
    [MYFACES-3241] - RendererUtils.getPathToComponent : output Location in view
    [MYFACES-3243] - Improve warnings in HtmlImageRendererBase

Bug

    [MYFACES-2355] - ExceptionHandler not redirecting to error page for exceptions thrown during listeners attached to render response phase
    [MYFACES-2395] - Cant' run two JSF portlets on the same portal page
    [MYFACES-3034] - ui:repeat offset and size performs incorrect validation
    [MYFACES-3105] - Navigation with redirect after ViewExpiredExpcetion throws NPE
    [MYFACES-3126] - RendererUtils.renderChild prevents rendered="" expression based on "#{component.parent}"
    [MYFACES-3157] - Fix order of isRendered and pushComponentToEL invocations
    [MYFACES-3166] - org.apache.myfaces.el.VariableResolverImpl throws java.lang.IllegalStateException when it unsets the scope as null
    [MYFACES-3169] - ui:param and c:set implementations does not work as expected
    [MYFACES-3171] - jsf.js: wrong api call in _ListenerQueue.remove
    [MYFACES-3173] - #{cc} inside f:event is not resolved correctly
    [MYFACES-3175] - Both child and facet list should be checked while moving an existing child
    [MYFACES-3176] - javax.faces.SEPARATOR_CHAR not working together with AJAX
    [MYFACES-3178] - jsf.js: Calling jsf.getViewState() with a direct reference to a form element throws an exception
    [MYFACES-3179] - Inconsistent behaviour implementing and registering SystemEventListeners for PostAddToViewEvents
    [MYFACES-3180] - h:commandButton with image breaks ajax
    [MYFACES-3182] - Composite component default value are not resolved when access without use EL expression
    [MYFACES-3184] - h:selectOneRadio cannot support f:ajax if @id not set
    [MYFACES-3186] - ui:repeat can lose dynamically added grandchild components
    [MYFACES-3188] - NPE in org.apache.myfaces.lifecycle.RenderResponseExecutor.execute
    [MYFACES-3189] - NavigationHandler: navigation to nonexistent view after ViewExpired throws NPE
    [MYFACES-3200] - All values of self-defined composite-component attributes disappear unexpected.
    [MYFACES-3206] - ui:repeat loses varStatus during save/restore state
    [MYFACES-3208] - When searching tag handler names space is not checked in case of composite library, incorrect detection on repeated tag name on different name spaces
    [MYFACES-3209] - Implement f:setPropertyActionListener according specification
    [MYFACES-3216] - check concurrency problems over static maps holding class metadata information (_ComponentAttributesMap and MetaRulesetImpl)
    [MYFACES-3219] - EL inline expressions does not resolve cc as expected
    [MYFACES-3229] - ServletExternalContextImpl.encodeRedirectURL() doesn't handle existing query parameters correctly
    [MYFACES-3234] - FacesContextImpl.getPartialViewContext() does not use wrapped context but only (this)
    [MYFACES-3246] - java.lang.IndexOutOfBoundsException when CACHE_EL=always
    [MYFACES-3248] - UIComponentBase.getFacets() should support all Map methods
    [MYFACES-3249] - [2.1 Spec Review] Pre/PostValidateEvent publishing conditions
    [MYFACES-3255] - UICommand.queueEvent description changed since 2.0
    [MYFACES-3256] - CommonPropertyUtils assumes all its managed HTML attributes hold string values
    [MYFACES-3260] - DataModel.setWrappedData should publish row change events even when it changes from one instance to other one
    [MYFACES-3261] - jsf.js: window.execScript handling call bug
    [MYFACES-3267] - UIComponentBase.saveAttachedState now handles collections instead only lists
    [MYFACES-3268] - UIComponentBase.findComponent does not allow use the same id for a child component.
    [MYFACES-3269] - UIViewRoot.getLocale only convert some common locales passed as string
    [MYFACES-3270] - DataModel.iterator cannot assume getRowCount will be always set
    [MYFACES-3274] - CompositeComponentELResolver.CompositeComponentAttributesMapWrapper breaks compatibility with tmp el-resolvers
    [MYFACES-3277] - @NamedEvent annotation not parsed correctly
    [MYFACES-3278] - ResourceHandler implementation should take into account UIViewRoot locale to load a resource
    [MYFACES-3279] - composite component default values for method expressions cannot be evaluated on attribute map
    [MYFACES-3280] - facelets.VIEWMAPPINGS should be renamed as facelets.VIEW_MAPPINGS
    [MYFACES-3281] - cc:attribute "targets" and cc attached object "targets" should follow strictly the spec
    [MYFACES-3284] - honor cc:insertFacet "required" attribute and check other "required" attributes
    [MYFACES-3286] - ExceptionHandler implementation should set response status codes before throw exception or show error page
    [MYFACES-3287] - h:outputStylesheet and h:outputScript with inner markup and references to #{cc} cannot found the parent component.
    [MYFACES-3288] - UIComponent.encodeAll isRendered should be evaluated inside pushComponentToEL block
    [MYFACES-3289] - Allow f:event listener="#{cc.preRenderViewCallback}" work

Improvement

    [MYFACES-1618] - Redundant method call to String.intern
    [MYFACES-2873] - Provide a way to change the order of ELResolvers
    [MYFACES-2889] - [PERF] Remove String.intern() calls in FlashELResolver and ImplicitObjectResolver
    [MYFACES-3153] - s/ServiceLoaderFinder/ServiceProviderFinder/g in ServiceProviderFinderFactory javadoc
    [MYFACES-3160] - [PERF] TagAttributeImpl part II: object allocations (cache ELExpressions)
    [MYFACES-3177] - Add secure flag for cookies if the page is accessed over a secure protocol
    [MYFACES-3187] - DebugPhaseListener shouldn't be active by default
    [MYFACES-3190] - Annoying SEVERE: View State cannot be reconstructed + stacktrace with ViewExpiredException
    [MYFACES-3194] - trivial improvements to procedural commentary in FacesServlet.service()
    [MYFACES-3215] - Add a warning message when undefined tags are used on dev time
    [MYFACES-3218] - UILeaf memory improvements
    [MYFACES-3220] - reduce number of PhaseEvent instances created
    [MYFACES-3236] - UIData performance improvements
    [MYFACES-3237] - [PERF] Renderers for components like h:outputText and others do many unecessary getAttributes().get() calls
    [MYFACES-3238] - [PERF] Improve Application.createConverter(Class<?> forClass) method
    [MYFACES-3251] - composite component attributes with @method-signature declared should carry through as MethodExpressions, but do not
    [MYFACES-3254] - UIComponent.popComponentFromEL should only pop when the right component is passed
    [MYFACES-3257] - Clarify partial state save/restore traversal requirements

Task

    [MYFACES-3210] - Change groupId of internal modules to org.apache.myfaces.core.internal
    [MYFACES-3247] - Move shared core module to myfaces core directory and rename package from shared-impl to shared

Wish

    [MYFACES-3225] - myfaces 2.1.1 AjaxHandler$AjaxBehaviorListenerImpl
    [MYFACES-3227] - myfaces _DeltaList does not call clearInitialState when retainAll(Collection<?>) method is called

regards,

Leonardo Uribe