Hello,
I have
- updated the comments in the .java file
- changed the version entry in plugin.xml to be consistent with the Derby builds: example - 10.1.0.0 (111546M)
Following is the svn diff and also please find attached the modified DerbyEclipsePlugin.java file. Let me know, if there any further
changes are needed, else please update the codeline.
CHANGES: ------------------ svn diff: ----------- Index: build.xml =================================================================== --- build.xml (revision 111546) +++ build.xml (working copy) @@ -591,6 +591,45 @@ </target>
<!-- =================================================================== -->
+<!-- Eclipse Plugin -->
+<!-- =================================================================== -->
+ <target name="plugin" depends= "buildjars">
+ <echo message="Begining Derby Eclipse plugin build"/>
+ <property name="plugin.tmp.dir" value ="plugintmp"/>
+ <mkdir dir="${derby.jar.dir}/${plugin.tmp.dir}"/>
+
+ <java classname="org.apache.derbyBuild.eclipse.DerbyEclipsePlugin">
+ <arg value="${derby.jar.dir}/${plugin.tmp.dir}"/>
+ <classpath>
+ <pathelement path="${out.dir}"/>
+ </classpath>
+ </java>
+
+ <property file="${derby.jar.dir}/${plugin.tmp.dir}/plugintmp.properties"/>
+ <echo message="Derby Eclipse plugin build: ${plugin.derby.version.build.number}"/>
+
+ <property name="plugin.dir" value ="plugins"/>
+ <property name="plugin.core.dir" value ="${plugin.derby.core}_${plugin.derby.version}"/>
+
+ <mkdir dir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}"/>
+
+ <copy todir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}">
+ <fileset dir="${derby.jar.dir}" includes="derby*.jar" excludes="derbyLocale*.jar"/>
+ </copy>
+ <copy todir="${derby.jar.dir}/${plugin.tmp.dir}/${plugin.dir}/${plugin.core.dir}">
+ <fileset dir="${derby.jar.dir}/${plugin.tmp.dir}" includes="plugin*.xml"/>
+ </copy>
+
+ <delete file="${derby.jar.dir}/${plugin.tmp.dir}/plugintmp.properties"/>
+ <delete file="${derby.jar.dir}/${plugin.tmp.dir}/plugin.xml"/>
+
+ <!-- ZIP to create the final Derby plug-in -->
+
+ <zip zipfile="${derby.jar.dir}/${plugin.derby.core.zipfile}_${plugin.derby.version}.zip" compress="true" basedir="${d
erby.jar.dir}/${plugin.tmp.dir}"/>
+ <delete dir="${derby.jar.dir}/${plugin.tmp.dir}"/>
+ </target>
+
+<!-- =================================================================== -->
<!-- Jar targets -->
<!-- =================================================================== -->
Regards, Rajesh
=======================================End of mail==========================================================
Rajesh Kartha wrote:
Hello,
Comments:
1) I agree to adding the comments to the Javadoc comment section of the DerbyEclipsePlugin, so they can be referred later.
2) Yes, the <maint> is the 'interim', which Andrew referred to - the third element. The full build version is included in the plugin.xml file,
which the users can quote while communicating. It will show up in Help - About Eclipse Platform - Plug-in Details of Eclipse.
3) The version of 10.1.0.0_v<build number> was based on the plugin versioning scheme used by Eclipse. You can read more about it at:
http://dev.eclipse.org/viewcvs/index.cgi/platform-core-home/documents/plugin-versioning.html?rev=HEAD
Eitherway, I tried using the normal Derby versioning (example: 10.1.0.0 (111298M) ) in the plugin.xml, which worked fine. So we can go
with the Derby versioning if everyone feels that is the right approach.
4) I would also like to propose the name 'Apache Derby Core Plug-in for Eclipse' instead of just 'Apache Derby Core Plug-in' for this plugin.
Please do let me know and I will update the DerbyEclipsePlugin.java file accordingly to reflect the above and send it to the list for review.
Regards, Rajesh
Daniel John Debrunner wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Rajesh Kartha wrote:
- the package name for the Derby plug-in will be:
org.apache.derby.core_<major>.<minor>.<maint> (example:
org.apache.derby.core_10.1.0).
This is based on the naming convention used normally for Eclipse
plug-ins.
- the plugin.xml file will show the correct version of the Derby build
present in the package with the appropriate build number
(shows up under Help - About Eclipse Platform - Plug-in Details)
example: 10.1.0.0_v111184
- the zip file created for the DerbyEclipse will have the name:
derby_core_plugin_<major>.<minor>.<maint>.zip (example:
derby_core_plugin_10.1.0.zip)
- the current packaging includes derby.jar, derbynet.jar and
derbytools.jar. The locale jars for Derby are not included yet, any
suggestions ?
I hate to be a pain, but the comments above would be very useful in the class Javadoc comment of DerbyEclipsePlugin, rather than just in the list archive.
Questions
org.apache.derby.core_<major>.<minor>.<maint>
By <maint> do you mean that it will match the third element of the four part Derby version, which I called 'fixpack' and Andrew called 'interim' in these e-mails.
http://nagoya.apache.org/eyebrowse/[EMAIL PROTECTED]&msgNo=73
http://nagoya.apache.org/eyebrowse/[EMAIL PROTECTED]&msgNo=603
example: 10.1.0.0_v111184
May be picky, but that version string doesn't match the format of the Derby version string, why add the 'v'?
Dan. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFBtxSdIv0S4qsbfuQRAtBNAJ9GLz7jHJKhpe+cBy4J9KzE+vaoegCfXKgN kU/IrUc0WwoAVRexpv5z5cM= =Ht71 -----END PGP SIGNATURE-----
/*
Derby - Class org.apache.derbyBuild.eclipse.DerbyEclipsePlugin
Copyright 2002, 2004 The Apache Software Foundation or its licensors, as
applicable.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package org.apache.derbyBuild.eclipse;
import java.util.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import org.apache.derby.iapi.services.info.ProductGenusNames;
import org.apache.derby.iapi.services.info.PropertyNames;
/**
* This class provides the functionality to create the build related
* related properties, which are used for creating the Derby plug-in
* for Eclipse by the ANT script.
*
* - The Eclipse plugin will be called 'Apache Derby Core Plug-in for Eclipse'
*
* - The plugin can be build from the main build.xml using 'ant' with the
'plugin'
* argument.
*
* - The package name for the Derby plug-in will
* be: org.apache.derby.core_<major>.<minor>.<interim> (example:
org.apache.derby.core_10.1.0).
*
* - The plugin.xml in the Derby plug-in will show the actual version of the
* the Derby build (example: 10.1.0.0 (111545M) ). This can be viewed from
* Help - About Eclipse Platform - Plug-in Details of Eclipse of the Eclipse
IDE
*
* - The zip file created for the DerbyEclipse under the jars directory will
have the name:
* derby_core_plugin_<major>.<minor>.<interim>.zip
(example:derby_core_plugin_10.1.0.zip)
*
* - The current packaging includes derby.jar, derbynet.jar and
* derbytools.jar. The locale jars for Derby are not included yet.
*
* @author Rajesh Kartha
*/
public class DerbyEclipsePlugin{
/*
* Derby plug-in package property and name
*/
private static String PLUGIN_PKG="plugin.derby.core";
private static String PLUGIN_PKG_NAME="org.apache.derby.core";
/*
* Derby plug-in zip file property and name
*/
private static String PLUGIN_ZIP_FILE="plugin.derby.core.zipfile";
private static String PLUGIN_ZIP_FILE_NAME="derby_core_plugin";
/*
* Derby plug-in build properties and name
*/
private static String PLUGIN_VERSION="plugin.derby.version";
private static String
PLUGIN_VERSION_BUILD_NUMBER="plugin.derby.version.build.number";
private static int MAINT_DIV=1000000;
/*
* plugin.xml file information, split into three parts
*/
private static String part_1="<?xml version=\"1.0\"
encoding=\"UTF-8\"?>\n"+
"<?eclipse version=\"3.0\"?> \n"+
"<plugin \n" +
"\t id=\"org.apache.derby.core\" \n" +
"\t name=\"Apache Derby Core Plug-in for
Eclipse\" \n" +
"\t version=\"";
private static String part_2="\n\t provider-name=\"";
private static String part_3="\n\t <runtime> \n" +
"\t\t <library name=\"derby.jar\"> \n" +
"\t\t\t <export name=\"*\"/> \n" +
"\t\t </library> \n" +
"\t\t <library name=\"derbytools.jar\">
\n"+
"\t\t\t <export name=\"*\"/> \n"+
"\t\t </library> \n"+
"\t\t <library name=\"derbynet.jar\"> \n"+
"\t\t\t <export name=\"*\"/> \n"+
"\t\t </library> \n"+
"\t </runtime> \n"+
"\t <requires> \n"+
"\t </requires> \n"+
"</plugin>";
private String version="";
private String tmpPropFile="plugintmp.properties";
private static File tmpFileLocation=null;
private static Properties tmpProp=new Properties();
private String pluginXMLFile="plugin.xml";
/*
* The public main() method to test the working of this class. A valid
destination
* String is all that is needed as an argument for running this class.
* <p>
* example: java DerbyEclipsePlugin <destination>
* <p>
*/
public static void main(String [] args){
if(args.length<=0){
System.out.println("Incorrect number of arguments.");
return;
}
try{
tmpFileLocation=new File(args[0]);
DerbyEclipsePlugin dep = new DerbyEclipsePlugin();
dep.getProps();
dep.createTmpFiles();
}catch(Exception e)
{
e.printStackTrace();
}
}
/*
* For internal use only.
* getProps() generates the required Properties from the
DBMS.properties file.
*
* @exception Exception if there is an error
*/
private void getProps() throws Exception{
InputStream versionStream =
getClass().getResourceAsStream(ProductGenusNames.DBMS_INFO);
Properties prop=new Properties();
prop.load(versionStream);
//create the tmp Prop file
tmpProp.put(PLUGIN_PKG,PLUGIN_PKG_NAME);
//package name
tmpProp.put(PLUGIN_ZIP_FILE,PLUGIN_ZIP_FILE_NAME); //zip
file name
tmpProp.put(PropertyNames.PRODUCT_VENDOR_NAME,prop.getProperty(PropertyNames.PRODUCT_VENDOR_NAME));
int
maint=Integer.parseInt(prop.getProperty(PropertyNames.PRODUCT_MAINT_VERSION));
version=prop.getProperty(PropertyNames.PRODUCT_MAJOR_VERSION)+"."+prop.getProperty(PropertyNames.PRODUCT_MINOR_VERSION)+"."+maint/MAINT_DIV;
tmpProp.put(PLUGIN_VERSION,version);
//initially thought of using
//version+="."+maint%MAINT_DIV+"_v"+prop.getProperty(PropertyNames.PRODUCT_BUILD_NUMBER);
version+="."+maint%MAINT_DIV+"
("+prop.getProperty(PropertyNames.PRODUCT_BUILD_NUMBER)+")";
tmpProp.put(PLUGIN_VERSION_BUILD_NUMBER,version);
//add info to plugin.xml strings
part_1+=version+"\"";
part_2+=tmpProp.getProperty(PropertyNames.PRODUCT_VENDOR_NAME)+"\">\n";
}
/*
* For internal use only.
* createTmpFiles() create the temporary files with the build
properties at the specified location.
*
* @exception Exception if there is an error
*/
private void createTmpFiles() throws Exception{
File file=new
File(tmpFileLocation.getAbsolutePath()+File.separator+tmpPropFile);
FileOutputStream fo=new FileOutputStream(file);
tmpProp.store(fo,null);
fo.close();
file=new
File(tmpFileLocation.getAbsolutePath()+File.separator+pluginXMLFile);
FileWriter fw=new FileWriter(file);
fw.write(part_1+part_2+part_3);
fw.close();
}
}
