Notes on the MyFaces Core 1.1.5 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 1.1.5 snapshots:

        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>1.1.5-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>1.1.5-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.)

JIRA

Deployment

To deploy the api and impl jars, including -sources and -javadocs, to http://people.apache.org/repo/m2-snapshot-repository:

   cd /path/to/SHARED_2_0_5
   mvn install
   cd /path/to/CORE_1_1_5
   mvn deploy -Pgenerate-assembly

To build and publish the -src and -bin assemblies to people.apache.org:

   cd /path/to/SHARED_2_0_5
   mvn install
   cd /path/to/CORE_1_1_5
   mvn install -Pgenerate-assembly
   cd assembly
   mvn assembly:assembly
   scp target/assembly/out/* people.apache.org:/www/people.apache.org/builds/myfaces/core-1.1.x

Proposed Release Announcement

Subject: [ANNOUNCE] MyFaces Core v1.1.5 Release

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

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

MyFaces Core 1.1.5 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 1.1.5
 ** Fixed Bugs
    * [MYFACES-437] - <f:attribute> does not work  with  <x:dataTable>
    * [MYFACES-660] - (Patch provided) "request scoping" from Portlet Action- to RenderRequest should not occur via Attribute Request Map
    * [MYFACES-689] - PropertyResolverImpl.getType(Object base, int index) return null if base instanceof Object[]
    * [MYFACES-731] - selectManyListbox calls converter getAsString passing in string value during form post
    * [MYFACES-828] - HtmlCheckboxRenderer ignores readonly
    * [MYFACES-968] - LifecycleImpl's restoreView throws NPE when viewId is null in a portlet context
    * [MYFACES-1025] - panelGrid does always render a border-attribute
    * [MYFACES-1029] - Duplicate sibling ids allowed
    * [MYFACES-1304] - DigesterFacesConfigDispenserImpl shuld respect order of registered renderkits
    * [MYFACES-1328] - UISelectOne and UISelectMany fail with custom converter that returns java.lang.String from getAsObject() method.
    * [MYFACES-1368] - Fix case sensitivity for context params
    * [MYFACES-1384] - After switch from myfaces-impl-1.1.3 (release) to myfaces-1.1.5-SNAPSHOT, javascript throw error 'Object expected'
    * [MYFACES-1386] - PropertyResolverImpl.setProperty lacks usefull error mesage if write method not found
    * [MYFACES-1393] - MyFaces state information is rendered by MyFaces Form
    * [MYFACES-1397] - getValidJavascriptNameAsInRI throws java.lang.IllegalArgumentException: Illegal group reference
    * [MYFACES-1406] - Core and Shared project has dependency on myfaces:myfaces-api version 1.1.1
    * [MYFACES-1407] - JS oamSubmitForm() params order incorrect
    * [MYFACES-1410] - CLONE -PropertyResolverImpl.getType(Object base, int index) return null if base instanceof Object[]
    * [MYFACES-1412] - Restore view phase does not conforms specification
    * [MYFACES-1413] - JS error in function oamSubmitForm(...)
    * [MYFACES-1415] - WebXmlParser needs to be aware of changes in web.xml in version 2.4 of the Servlet spec
    * [MYFACES-1420] - Null Pointer Exception in SelectItemsIterator.next() if binding is null
    * [MYFACES-1421] - MyFaces not working with Struts Faces Form
    * [MYFACES-1425] - wrong text for link in getting started
    * [MYFACES-1427] - Error restoring view
    * [MYFACES-1428] - Application cannot be started with Snapshot 1.1.5 of 27th Sept./1st Oct.
    * [MYFACES-1430] - selectOneMenu looses values after clicking immediate link (since 1.1.4)
    * [MYFACES-1479] - SerialFactory breaks Portlet bridge
    * [MYFACES-1481] - MyFacesGenericPortlet does not work in a cluster
    * [MYFACES-1486] - Error Handling in Property-Resolver-Impl
    * [MYFACES-1489] - ExternalContext Maps
    * [MYFACES-1490] - DateTimeConverter exception on parsing time
    * [MYFACES-1495] - client side state saving bug
    * [MYFACES-1500] - Default values in standard-faces-config.xml
    * [MYFACES-1510] - h:form does not render accept-charset
 ** Improvements
    * [MYFACES-652] - Findbugs ant-tasks
    * [MYFACES-1032] - use a javascript method in commondLink for lesser html size
    * [MYFACES-1366] - Error in javascript function
    * [MYFACES-1373] - Add exception to logger for output exception stack trace
    * [MYFACES-1385] - Remove all of the unused code, variables, and import statements identified by Eclipse 3.1.2
    * [MYFACES-1405] - Interoperability with Facelets
    * [MYFACES-1411] - Lifecycle phase executions repetitions
    * [MYFACES-1418] - javax.faces.validator - DoubleRangeValidator, LengthValidator, LongRangeValidator are very similar, refactor common behaviour
    * [MYFACES-1419] - javax.faces.convert - refactor common behaviour + DateTimeConverter changes
    * [MYFACES-1422] - findNestingForm() tests only against component family and against instanceof UIForm
    * [MYFACES-1423] - Log jar-files on startup
    * [MYFACES-1469] - State-saving now uses the parameter javax.faces.ViewState - as proposed by the 1.2 spec
    * [MYFACES-1488] - ASF Source Header and Copyright Notice Policy
 ** Completed Tasks
    * [MYFACES-1361] - The listing in Apache's project catalog is out of date and need to be updated.
 ** Satisfied Wishes
    * [MYFACES-1360] - HtmlMessagesRendererBase - change two method modifiers to protected

Enjoy!

Diary

  1. Preparing shared 2.0.5:
    • First try doing a mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/branches  -Dusername=manolito -Dscm.password=??? -Dtag=2_0_5 -DdryRun=true failed, because no svn command line version on my machine :-(

    • Installed subversion 1.4.3
    • Second try: "Cannot prepare the release because you have local modifications" :-( Reason: some *.ipr and *.iws files from my IDE

    • mvn idea:clean

    • Third try: "Can't release project due to non released dependencies:
      • org.apache.myfaces.maven:build-tools:jar:1.0.5-SNAPSHOT:runtime org.apache.myfaces.maven:myfaces-master:pom:1.0.5-SNAPSHOT ..." :-(

    • Meditated a little bit ;-)

  2. Ok, let's prepare subproject "maven" 1.0.5 first
    • mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/maven/branches -Dusername=manolito -Dscm.password=??? -Dtag=1_0_5 -DdryRun=true - Success! (on second try after mvn idea:clean ;-) )

    • The real run:
      • mvn clean

      • mvn idea:clean

      • mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/maven/branches -Dusername=manolito -Dscm.password=??? -Dtag=1_0_5 - failed: "Failed to resolve artifact. Missing: org.apache.myfaces.maven:build-tools:jar:1.0.5"

    • Analysis: Perhaps the order of the modules in the maven/pom.xml is bad:
      •   <modules>
            <module>master-pom</module>
            <module>build-tools</module>
            <module>wagon-maven-plugin</module>
          </modules>
        Master-pom depends on build-tools but is built first. Hmm, thought that maven resolves this automatically...
    • Well, for now a manual mvn install of the build-tools and resuming the mvn release:prepare ... did it: Success!

    • Last prepare step for the "maven-project" artifact: In all other myfaces projects I fixed the dependency versions for build-tools and myfaces-master to 1.0.6-SNAPSHOT
    • Did a mvn clean deploy for build-tools so that the nightly build won't fail

    • We just had a discussion on the dev list: Vote should not be for a certain svn revision, but for uploaded artifacts on http://people.apache.org/builds/myfaces/m2-staging-repository/

    • Did a mvn clean deploy for the branched "maven-project" artifact. Success. Files are now on http://people.apache.org/builds/myfaces/m2-staging-repository/

    • Discussion on dev list: Matze mentioned, that NOTICE.txt, LICENSE.txt are missing in all JARs and that they are not signed.
    • Added support for automatical gpg signing and added the missing legal files.
    • One more mvn clean deploy -Psign-artifacts -Dpassphrase=??? does the magic: jars are now signed and each contains a NOTICE.txt and a LICENSE.txt

    • fixed the file permissions for m2-staging-repository to 0775
    • everything should be fine now, but instead of starting a new vote I will prepare the "shared" artifact now
  3. Prepare subproject "shared" 2.0.5:
    • changed the dependency to "myfaces-master" in shared/pom.xml back to "1.0.5"
    • mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/branches -Dusername=manolito -Dscm.password=??? -Dtag=2_0_5 -DdryRun=true - success

    • mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/shared/branches -Dusername=manolito -Dscm.password=??? -Dtag=2_0_5 -Dresume=false - failed:

      • [INFO]



  1. Prepare "core" 1.1.5:
    • copied trunk to temporary work branch https://svn.apache.org/repos/asf/myfaces/core/branches/1_1_5_prepare

    • Set all dependencies to org.apache.myfaces.maven artifacts to version "1.0.5" (instead of 1.0.6-SNAPSHOT)
    • Set all dependencies to org.apache.myfaces.shared artifacts to version "2.0.5" (instead of 2.0.6-SNAPSHOT)
    • mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/branches -Dusername=manolito -Dscm.password=??? -Dtag=1_1_5 -DdryRun=true - success

    • mvn release:prepare -DtagBase=https://svn.apache.org/repos/asf/myfaces/core/branches -Dusername=manolito -Dscm.password=??? -Dtag=1_1_5 -Dresume=false - success

    • Merged the release change down to the trunk
    • Had to manually fix some additional dependencies in the assembly artifact that the release:prepare run did forget (?)
    • Changed all MyFaces dependencies on the trunk to core 1.1.6-SNAPSHOT

    • On the core 1.1.5 branch: mvn clean deploy -Psign-artifacts -Dpassphrase=??? - success

  2. JIRA release management (1.1.6-SNAPSHOT)
    • Add a new version 1.1.6-SNAPSHOT to the core project
  3. Next step is running the TCK tests
    • TCK tests passed (confirmed by Thomas Spiegl)
  4. Build assembly
    • Just realized that the javadoc and sources jars are missing!
    • By doing some more maven studying I learned that a -DperformRelease=true during deploy automatically generates the javadoc and sources things (Hint: The magic is in the Maven Super-POM!).

    • Did some pom optimization so that the sign-artifacts is also executed on -DperformRelease=true

    • Did a mvn deploy -DperformRelease=true for all three artifacts (maven, shared, core)

    • Did some fixes in the assembly pom
    • mvn clean assembly:assembly (within assembly dir)

    • signed all 4 assembly files
    • uploaded them to /x1/www/people.apache.org/builds/myfaces/core-1.1.5
  5. JIRA release management (1.1.5-SNAPSHOT --> 1.1.5)

    • Add a new version 1.1.5 to the core project
    • Do a bulk change for all resolved issues with version fixed as 1.1.5-SNAPSHOT and change to 1.1.5
    • Do a bulk change for all resolved (but not closed) in 1.1.5 and close them
    • Archive the 1.1.5-SNAPSHOT version
  6. Proposed Release Announcement
    • see above
  7. Ready to vote
    • vote mail on dev list:
      • Hi all,
        This is the official vote for MyFaces Core 1.1.5.
        
        All TCK tests passed.
        
        Please note that this vote concerns all of the following parts:
         1. Maven artifact group "org.apache.myfaces.maven" v1.0.5  [1]
         2. Maven artifact group "org.apache.myfaces.shared" v2.0.5  [1]
         3. Maven artifact group "org.apache.myfaces.core" v1.1.5  [1]
         4. MyFaces Core Assembly  [2]
         5. Proposed Release Announcement  [3]
        
        [1] http://people.apache.org/builds/myfaces/m2-staging-repository/
        [2] http://people.apache.org/builds/myfaces/core-1.1.5/
        [3] http://wiki.apache.org/myfaces/CoreRelease115#releasenotes
  8. Vote closed, starting distribution
    • created MD5 hash files for assembly files in /x1/www/people.apache.org/builds/myfaces/core-1.1.5 with my brandnew hashsums.sh script:
      • for i in $(ls); do
           openssl md5 $i >$i.md5
           openssl sha1 $i >$i.sha1
        done
    • copied the assembly files to /x1/www/www.apache.org/dist/myfaces/binaries/ and /x1/www/www.apache.org/dist/myfaces/source/
      • cp /x1/www/people.apache.org/builds/myfaces/core-1.1.5/*-bin.* /x1/www/www.apache.org/dist/myfaces/binaries/
        cp /x1/www/people.apache.org/builds/myfaces/core-1.1.5/*-src.* /x1/www/www.apache.org/dist/myfaces/source/
    • Website index and download pages updated for Core 1.1.5
    • Manually copied the staged maven artifacts from /www/people.apache.org/builds/myfaces/m2-staging-repository/org/apache/myfaces/ to /www/people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/myfaces/
      • Note: This destroyed the maven-metadata.xml in the m2-ibiblio-rsync-repository which is ok according to out maven gurus. This already happend before, so the metadata is not clean anyway. Nevertheless, for the next release we should check if the maven repo-tools repo-copy utility is ready to use.
    • Created the SVN Tags for all three artifacts:
  9. Announcements

CoreRelease115 (last edited 2009-09-20 23:01:38 by localhost)