persistence@glassfish.java.net

Re: Please review: changes to push new versions to maven repository

From: Wonseok Kim <guruwons_at_gmail.com>
Date: Mon, 12 Feb 2007 22:37:52 +0900

Hi Lance and all team members,

As I said, what I worry is that there are two confusing version schemes -
9.1-b35 and 2.0-b35.

How about using one version scheme "2.0" from now? I think TopLink
Essentials(TLE) don't need to follow the SJSAS version because it can be
used as standalone.

If all agree to this, we need to change MANIFEST.mf and Version.java also.
I did some job for this. Please see below diff and the attached file.

Summary of fix:
* Modify release.version to 2.0 in build.properties
* The version field of Class Version is replaced with ${release.version}
like buildNumber field.
* MANIFEST.MF "Implementation-Version" field now has the new version scheme
${release.version}-${build.id} - e.g.) 2.0-b35
* If ${build.id} is not given, SNAPSHOT-yyyyMMdd is used. Full version will
be 2.0-SNAPSHOT-20070212 for example.
* Arranged toplink-essentials.mf and toplink-essentials-agent.mf files to be
same as the generated MANIFEST.MF inside jars.
* The version element of POM is replaced with the full version - 2.0-b35

Index: build.xml
===================================================================
RCS file: /cvs/glassfish/entity-persistence/build.xml,v
retrieving revision 1.17
diff -c -w -r1.17 build.xml
*** build.xml 4 Oct 2006 17:16:54 -0000 1.17
--- build.xml 12 Feb 2007 13:10:27 -0000
***************
*** 49,62 ****
      &commonBuild;

      <tstamp>
! <format property="build_date" pattern="MM/dd/yyyy"/>
      </tstamp>
      <condition property="build_string" value="${build_id}">
          <not>
              <equals arg1="${build_id}" arg2="" trim="true"/>
          </not>
      </condition>
! <property name="build_string" value="non promoted: ${build_date}"/>

      <!-- all -->
      <target name="all" depends="compile, assemble"
--- 49,66 ----
      &commonBuild;

      <tstamp>
! <format property="build_date" pattern="yyyyMMdd"/>
      </tstamp>
      <condition property="build_string" value="${build_id}">
          <not>
+ <or>
                  <equals arg1="${build_id}" arg2="" trim="true"/>
+ <equals arg1="${build_id}" arg2="local" trim="true"/>
+ </or>
          </not>
      </condition>
! <property name="build_string" value="SNAPSHOT-${build_date}"/>
! <property name="full_version" value="${release.version
}-${build_string}"/>

      <!-- all -->
      <target name="all" depends="compile, assemble"
***************
*** 83,89 ****
              description="Compile TopLink Essentials sources">
           <copy file="${src.dir}/oracle/toplink/essentials/Version.java"
                tofile="${component.classes.dir
}/oracle/toplink/essentials/Version.java"/>
! <replace
file="${component.classes.dir}/oracle/toplink/essentials/Version.java"
token="ESSENTIALS_BUILD_NUMBER" value="${build_string}"/>
          <javac srcdir="${component.classes.dir}"
                 destdir="${component.classes.dir}"
                 includes="oracle/toplink/essentials/Version.java"
--- 87,96 ----
              description="Compile TopLink Essentials sources">
           <copy file="${src.dir}/oracle/toplink/essentials/Version.java"
                tofile="${component.classes.dir
}/oracle/toplink/essentials/Version.java"/>
! <replace file="${component.classes.dir
}/oracle/toplink/essentials/Version.java">
! <replacefilter token="@VERSION@" value="${release.version}"/>
! <replacefilter token="@BUILD_NUMBER@"
value="${build_string}"/>
! </replace>
          <javac srcdir="${component.classes.dir}"
                 destdir="${component.classes.dir}"
                 includes="oracle/toplink/essentials/Version.java"
***************
*** 140,146 ****
                  <attribute name="Specification-Version" value="1.0"/>
                  <attribute name="Implementation-Title" value="TopLink
Essentials"/>
                  <attribute name="Implementation-Vendor" value="Sun
Microsystems, Inc., Oracle Corp."/>
! <attribute name="Implementation-Version" value="9.1 build:
${build_string}"/>
              </manifest>
              <fileset dir="${component.classes.dir}">
                  <include name="javax/persistence/**/*.class"/>
--- 147,153 ----
                  <attribute name="Specification-Version" value="1.0"/>
                  <attribute name="Implementation-Title" value="TopLink
Essentials"/>
                  <attribute name="Implementation-Vendor" value="Sun
Microsystems, Inc., Oracle Corp."/>
! <attribute name="Implementation-Version"
value="${full_version}"/>
              </manifest>
              <fileset dir="${component.classes.dir}">
                  <include name="javax/persistence/**/*.class"/>
***************
*** 168,174 ****
                  <attribute name="Specification-Version" value="1.0"/>
                  <attribute name="Implementation-Title" value="TopLink
Essentials "/>
                  <attribute name="Implementation-Vendor" value="Sun
Microsystems, Inc., Oracle Corp."/>
! <attribute name="Implementation-Version" value="9.1 build:
${build_string}"/>
              </manifest>
              <fileset dir="${component.classes.dir}">
                  <include
name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
--- 175,181 ----
                  <attribute name="Specification-Version" value="1.0"/>
                  <attribute name="Implementation-Title" value="TopLink
Essentials "/>
                  <attribute name="Implementation-Vendor" value="Sun
Microsystems, Inc., Oracle Corp."/>
! <attribute name="Implementation-Version"
value="${full_version}"/>
              </manifest>
              <fileset dir="${component.classes.dir}">
                  <include
name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
***************
*** 235,241 ****
          <copy todir="${release.dir}/manifest">
              <fileset dir="." includes="*.mf" />
              <filterset>
! <filter token="VERSION" value="${release.version}"/>
              </filterset>
          </copy>
      </target>
--- 242,248 ----
          <copy todir="${release.dir}/manifest">
              <fileset dir="." includes="*.mf" />
              <filterset>
! <filter token="VERSION" value="${full_version}"/>
              </filterset>
          </copy>
      </target>
***************
*** 320,326 ****
      <target name="push-to-maven-prepare" depends="-push-to-maven-init,
jar"
          description="creates an image for the 'push-to-maven' goal">
          <delete dir="build/maven-repo" /><!-- clean it -->
! <maven-repository-importer destdir="build/maven-repo" version="${
release.version}">
              <artifact jar="${release.dir}/toplink-essentials.jar" pom="
toplink-essentials.pom" srczip="${release.dir}/toplink-essentials.src.zip"
/>
              <artifact jar="${release.dir}/toplink-essentials-agent.jar"
pom="toplink-essentials-agent.pom" srczip="${release.dir}/toplink-
essentials-agent.src.zip" />
          </maven-repository-importer>
--- 327,333 ----
      <target name="push-to-maven-prepare" depends="-push-to-maven-init,
jar"
          description="creates an image for the 'push-to-maven' goal">
          <delete dir="build/maven-repo" /><!-- clean it -->
! <maven-repository-importer destdir="build/maven-repo"
version="${full_version}">
              <artifact jar="${release.dir}/toplink-essentials.jar" pom="
toplink-essentials.pom" srczip="${release.dir}/toplink-essentials.src.zip"
/>
              <artifact jar="${release.dir}/toplink-essentials-agent.jar"
pom="toplink-essentials-agent.pom" srczip="${release.dir}/toplink-
essentials-agent.src.zip" />
          </maven-repository-importer>
Index: build.properties
===================================================================
RCS file: /cvs/glassfish/entity-persistence/build.properties,v
retrieving revision 1.2
diff -c -w -r1.2 build.properties
*** build.properties 13 May 2006 01:34:16 -0000 1.2
--- build.properties 12 Feb 2007 13:10:27 -0000
***************
*** 26,32 ****

  ### Additonal Component Properties for standalone release ###
  release.dir=build/release
! release.version=1.0
  release.toplink-essentials.jar=${release.dir}/toplink-essentials.jar

release.toplink-essentials-agent.jar=${release.dir}/toplink-essentials-agent.jar

--- 26,32 ----

  ### Additonal Component Properties for standalone release ###
  release.dir=build/release
! release.version=2.0
  release.toplink-essentials.jar=${release.dir}/toplink-essentials.jar

release.toplink-essentials-agent.jar=${release.dir}/toplink-essentials-agent.jar

Index: src/java/oracle/toplink/essentials/Version.java
===================================================================
RCS file:
/cvs/glassfish/entity-persistence/src/java/oracle/toplink/essentials/Version.java,v
retrieving revision 1.47
diff -c -w -r1.47 Version.java
*** src/java/oracle/toplink/essentials/Version.java 4 Jan 2007 14:30:28
-0000 1.47
--- src/java/oracle/toplink/essentials/Version.java 12 Feb 2007 13:10:27
-0000
***************
*** 36,43 ****
      // The current version of TopLink.
      // This will be used by all product components and included in
exceptions.
      private static String product = "Oracle TopLink Essentials";
! private static final String version = "9.1";
! private static final String buildNumber = "ESSENTIALS_BUILD_NUMBER";

      /** Keep track of JDK version in order to make some decisions about
datastructures. **/
      public static final int JDK_VERSION_NOT_SET = 0;
--- 36,43 ----
      // The current version of TopLink.
      // This will be used by all product components and included in
exceptions.
      private static String product = "Oracle TopLink Essentials";
! private static final String version = "@VERSION@";
! private static final String buildNumber = "@BUILD_NUMBER@";

      /** Keep track of JDK version in order to make some decisions about
datastructures. **/
      public static final int JDK_VERSION_NOT_SET = 0;


On 2/10/07, Lance J. Andersen <Lance.Andersen_at_sun.com> wrote:
>
> Hi Wonseok,
>
> Great question and this is something Marina and i discussed yesterday.
> The issue is that the jars in the maven repository are from june 2006. One
> of the issues is that signatures had some errors which have since been
> addressed. Where the 1.0b version came from is this is the version of
> the JPA TCK which has recorded the corrected signatures per the
> specification.
>
> For Toplink Essentials, the versioning aligns with the Glassfish build
> that the jar originated from.
>
> If you(or anyone else) has a better suggestion WRT versioning, let us
> know.
>
> We just need to release a new set of jars to the maven repository ASAP.
>
> Regards
> Lance
>
> Wonseok Kim wrote:
>
> Hi Marina,
> I'm curious about the version policy, indeed.
>
> persistence-api:
> What does it mean by "1.0b"? does "b" mean a patch version?
>
> toplink-essentials:
> Does TopLink Essentials have unique version policy ( 2.0?) other than
> SJSAS version (9.1)?
> Manifest has version like "9.1 build: b35". Also I don't think trunk build
> has 2.0 changes (if 9.0 build is 1.0). Then should it be 1.1? I'm not
> sure.
>
> I believe that version policy is important because ugly version scheme
> could confuse users/developers and it would not be easy to change it later.
>
> Also I have following questions in my mind.
> - Could TopLink Essentials be independent project (separation from
> GlassFish like Grizzly) in the future?
> - Does TopLink Essentials require unique version policy than SJSAS
> version( 9.0, 9.1)?
> - If not, should the SJSAS version be used for maven repository?
>
> Regards,
> -Wonseok
>
> On 2/9/07, Marina Vatkina < Marina.Vatkina_at_sun.com> wrote:
> >
> > I made the following changes to create jars with a new version:
> >
> > 1. Changed version of the persistence-api related files to 1.0b in
> > persistence-api:
> > Index: build.properties
> > ===================================================================
> > RCS file: /cvs/glassfish/persistence-api/build.properties,v
> > retrieving revision 1.4
> > diff -r1.4 build.properties
> > 29c29
> > < release.version=1.0
> > ---
> > > release.version=1.0b
> >
> > 2. Changed version of the toplink related files to 2.0-35 and the
> > dependency on
> > the p-api to 1.0b in entity-persistence:
> >
> > Index: build.properties
> > ===================================================================
> > RCS file: /cvs/glassfish/entity-persistence/build.properties,v
> > retrieving revision 1.2
> > diff -r1.2 build.properties
> > 29c29
> > < release.version=1.0
> > ---
> > > release.version=2.0-35
> > Index: toplink-essentials.pom
> > ===================================================================
> > RCS file: /cvs/glassfish/entity-persistence/toplink- essentials.pom,v
> > retrieving revision 1.1
> > diff -r1.1 toplink-essentials.pom
> > 10c10
> > < <version>1.0</version>
> > ---
> > > <version>1.0b</version>
> >
> > I tested by creating the files without pushing them to the repository.
> > Their
> > names look correct:
> >
> > persistence-api/build/maven-repo/javax.persistence/jars/persistence-
> > api-1.0b.jar
> > persistence-api/build/maven-repo/javax.persistence/jars/persistence-
> > api-1.0b.jar.md5
> > persistence-api/build/maven-repo/javax.persistence/poms/persistence-
> > api-1.0b.pom
> > persistence-api/build/maven-repo/javax.persistence/poms/persistence-
> > api-1.0b.pom.md5
> >
> > persistence-api/build/maven-repo/javax.persistence/java-sources/persistence-
> > api-1.0b-sources.jar
> > persistence-api/build/maven-repo/javax.persistence/java-sources/persistence-
> > api-1.0b-sources.jar.md5
> >
> > entity-persistence/build/maven-repo/javax.persistence/jars/toplink-
> > essentials-2.0-35.jar
> > entity-persistence/build/maven-repo/javax.persistence/jars/toplink-
> > essentials-2.0-35.jar.md5
> > entity-persistence/build/maven-repo/javax.persistence/poms/toplink-
> > essentials-2.0-35.pom
> > entity-persistence/build/maven-repo/javax.persistence/poms/toplink-
> > essentials-2.0-35.pom.md5
> >
> > entity-persistence/build/maven-repo/javax.persistence/java-sources/toplink-
> > essentials-2.0-35-sources.jar
> >
> > entity-persistence/build/maven-repo/javax.persistence/java-sources/toplink-
> > essentials-2.0-35-sources.jar.md5
> >
> > entity-persistence/build/maven-repo/oracle.toplink.essentials.agent/jars/toplink-
> > essentials-agent-2.0-35.jar
> >
> > entity-persistence/build/maven-repo/oracle.toplink.essentials.agent/jars/toplink-
> > essentials-agent-2.0-35.jar.md5
> >
> > entity-persistence/build/maven-repo/oracle.toplink.essentials.agent/poms/toplink-
> > essentials-agent-2.0-35.pom
> >
> > entity-persistence/build/maven-repo/oracle.toplink.essentials.agent/poms/toplink-
> > essentials-agent-2.0-35.pom.md5
> >
> > entity-persistence/build/maven-repo/oracle.toplink.essentials.agent/java-sources/toplink-
> > essentials-agent-2.0-35-sources.jar
> >
> > entity-persistence/build/maven-repo/oracle.toplink.essentials.agent/java-sources/toplink-
> > essentials-agent-2.0-35-sources.jar.md5
> >
> >
> > thanks,
> > -marina
> >
> >
>