persistence@glassfish.java.net

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

From: Tom Ware <tom.ware_at_oracle.com>
Date: Tue, 13 Feb 2007 11:43:00 -0500

Hi Wonseok,

  We would like to make TopLink Essentials a top-level open source
project and I believe the changes you are suggesting would be best
implemented as part of that change.

  Currently, since TopLink Essentials is a component of the whole
GlassFish project, I think we need to keep the version numbers matched.

  I think it would be confusing to suddenly change the version number
reported to customers without the announcements and documentation that
would be associated with TopLink Essentials becoming a top-level
open-source project.

-Tom
 

Wonseok Kim wrote:

> Hi Craig,
>
> To compromise the issue, I fixed more things to my previous patch.
> * The full version will be like 2.0-b35 or 2.0-SNAPSHOT which does not
> include datestamp. This is used in POM.
> * The "Implementation-Version" entry of MANIFEST.MF will have the full
> version and a build datestamp like "2.0-b35 (02/12/2007) or
> 2.0-SNAPSHOT (02/12/2007)" for more information.
> * The version string of the runtime which is printed in logs will also
> include the date timestamp like below.
> [TopLink Info]: 2007.02.13 01:50:01.198--ServerSession
> (25062038)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build
> b35 (02/12/2007))
>
> * One more thing is done to consolidate the agent class into
> toplink-essentials.jar. Which can be used as an java agent instead of
> toplink-essentials-agent.jar file. It still generates the agent jar
> file for existing users. I think we can remove it later(GFv3?) after
> some campaign.
>
> Team members, Please review the diff and the attached file.
> Thanks,
> -Wonseok
>
> 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 13 Feb 2007 04:59:46 -0000
> ***************
> *** 48,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"
> --- 48,70 ----
>
> &commonBuild;
>
> + <!-- versioning -->
> + <!-- ${build_id} will be given by the build system. Manual build
> is SNAPSHOT -->
> <tstamp>
> <format property="build_date" pattern="MM/dd/yyyy"/>
> </tstamp>
> ! <condition property="build_number" 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_number" value="SNAPSHOT"/>
> ! <property name="build_number_string" value="${build_number}
> (${build_date})"/>
> ! <property name="full_version"
> value="${release.version}-${build_number}"/>
> ! <property name="full_version_string" value="${full_version}
> (${build_date})"/>
>
> <!-- 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"
> --- 91,100 ----
> 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_number_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"/>
> --- 151,158 ----
> <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_string}"/>
> ! <attribute name="Premain-Class"
> value="oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent"
> />
> </manifest>
> <fileset dir="${ component.classes.dir}">
> <include name="javax/persistence/**/*.class"/>
> ***************
> *** 149,155 ****
> <include name="orm*.xsd"/>
> <include name="persistence*.xsd"/>
> <include name="persistence/antlr/**/*.class"/>
> - <exclude
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
>
> </fileset>
> <fileset dir="${component.classes.dir}">
> <include name="${platform.mapping.file}"/>
> --- 161,166 ----
> ***************
> *** 159,164 ****
> --- 170,177 ----
> </fileset>
> </jar>
>
> + <!-- The agent jar is deprecated, but is generated for old
> version users.
> + ${entity-persistence.jar } now has the agent facility. -->
> <jar jarfile="${entity-persistence-agent.jar}">
> <manifest>
> <attribute name="Class-Path" value="
> toplink-essentials.jar" />
> ***************
> *** 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"/>
>
> --- 181,187 ----
> <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_string}"/>
> </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>
> --- 248,254 ----
> <copy todir="${ release.dir}/manifest">
> <fileset dir="." includes="*.mf" />
> <filterset>
> ! <filter token="VERSION"
> value="${full_version_string}"/>
> </filterset>
> </copy>
> </target>
> ***************
> *** 268,274 ****
> <include name="oracle/toplink/essentials/**/*.class"/>
> <include name="oracle/toplink/libraries/**/*.class"/>
> <include name="persistence/antlr/**/*.class"/>
> - <exclude
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.class"/>
>
> </fileset>
> <fileset dir="${release.dir}">
> <include name="javax/persistence/**/*.class"/>
> --- 281,286 ----
> ***************
> *** 299,305 ****
> <include name="oracle/toplink/essentials/**/*.java"/>
> <include name="oracle/toplink/libraries/**/*.java"/>
> <include name="persistence/antlr/**/*.java"/>
> - <exclude
> name="oracle/toplink/essentials/internal/ejb/cmp3/JavaSECMPInitializerAgent.java"/>
> </fileset>
> <fileset dir="${basedir}/../persistence-api/src/java">
> <include name="javax/persistence/**/*.java"/>
> --- 311,316 ----
> ***************
> *** 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>
> --- 331,337 ----
> <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 13 Feb 2007 04:59:46 -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: toplink-essentials.mf
> ===================================================================
> RCS file: /cvs/glassfish/entity-persistence/toplink- essentials.mf,v
> retrieving revision 1.1
> diff -c -w -r1.1 toplink-essentials.mf
> *** toplink-essentials.mf 13 May 2006 01:34:15 -0000 1.1
> --- toplink-essentials.mf 13 Feb 2007 04:59:46 -0000
> ***************
> *** 1,8 ****
> Extension-Name: javax.persistence
> ! Specification-Title: Java Platform, Persistence Specification
> ! Specification-Version: @VERSION@
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Version: @VERSION@
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink.essentials
> ! Implementation-Title: Sun Java System Application Server
> --- 1,9 ----
> Extension-Name: javax.persistence
> ! Specification-Title: Java Persistence API
> ! Specification-Version: 1.0
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Title: TopLink Essentials
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink.essentials
> ! Implementation-Version: @VERSION@
> ! Premain-Class:
> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent
> Index: toplink-essentials-agent.mf
> ===================================================================
> RCS file: /cvs/glassfish/entity-persistence/toplink-essentials-agent.mf,v
> retrieving revision 1.2
> diff -c -w - r1.2 toplink-essentials-agent.mf
> *** toplink-essentials-agent.mf 16 May 2006 01:01:27 -0000 1.2
> --- toplink-essentials-agent.mf 13 Feb 2007 04:59:46 -0000
> ***************
> *** 1,9 ****
> Extension-Name: oracle.toplink.essentials.agent
> ! Specification-Title: Java Platform, Persistence Specification
> ! Specification-Version: @VERSION@
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Version: @VERSION@
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink
> ! Implementation-Title: Sun Java System Application Server
> Premain-Class:
> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent
> --- 1,9 ----
> Extension-Name: oracle.toplink.essentials.agent
> ! Specification-Title: Java Persistence API
> ! Specification-Version: 1.0
> Specification-Vendor: Sun Microsystems, Inc., Oracle Corp.
> ! Implementation-Title: TopLink Essentials
> Implementation-Vendor: Sun Microsystems, Inc., Oracle Corp.
> Implementation-Vendor-Id: oracle.toplink
> ! Implementation-Version: @VERSION@
> Premain-Class:
> oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializerAgent
> 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 13 Feb 2007
> 04:59:46 -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/13/07, *Craig L Russell* <Craig.Russell_at_sun.com
> <mailto:Craig.Russell_at_sun.com>> wrote:
>
> As I understand the way maven works, having both SNAPSHOT and a
> date stamp is wrong.
>
> In fact, having both a build number and SNAPSHOT is wrong.
>
> What SNAPSHOT does on the maven client side is to ask maven to
> download a new version of the software each time it's invoked
> without the -o (offline) option. So it makes sense to create a
> 2.0-SNAPSHOT.jar to represent all of the working versions of the
> 2.0-in-process jars that you build. But if you publish a
> 2.0-b56-SNAPSHOT, and the next version is 2.0-b57-SNAPSHOT, the
> user will have to declare a dependency on the specific version.
> That is, either 2.0-b56-SNAPSHOT or 2.0-b57-SNAPSHOT. And there is
> no point in declaring a dependency on a specific build number as a
> SNAPSHOT since it will never be refreshed.
>
> To effectively use SNAPSHOT, it should simply be 2.0-SNAPSHOT.
> When you refresh the repository, you typically publish both
> 2.0-b57 and 2.0-SNAPSHOT, which are the identical file. When you
> then publish 2.0-b58 and 2.0-SNAPSHOT, folks who depend on the
> 2.0-SNAPSHOT will get the new file, folks who want specifically
> 2.0-b57 will never see the new download, and if folks want the new
> stuff but nothing beyond it, they ask for 2.0-b58.
>
> Craig
>
> On Feb 12, 2007, at 5:37 PM, Wonseok Kim wrote:
>
>> That is what is being discussed. Until then, it's a manual
>> process. Also,
>> SNAPSHOT is not an automated push unless every nightly build
>> pushes the update out.
>>
>> So may be we should use 2 versions of the full-version - one
>> with the date, and
>> one without. What do you think?
>>
>>
>> I hope that it become part of automated process soon.
>> We have an option to use date both for the two versions like
>> 2.0-b35-20070212 and 2.0-SNAPSHOT-20070212. I'm not sure this is
>> required. If anyone have better idea, please tell ASAP.
>>
>> Thanks,
>> -Wonseok
>>
>
> Craig Russell
>
> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
>
> 408 276-5638 mailto:Craig.Russell_at_sun.com
>
> P.S. A good JDO? O, Gasp!
>
>
>
>