db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rajesh Kartha <kar...@Source-Zone.Org>
Subject Re: [PATCH] creating Derby plug-in for Eclipse
Date Fri, 17 Dec 2004 23:41:46 GMT

This is my first submission hence was wondering what will be the next 
step for the  patches to be available in the codeline.
Do we need to do a voting, please advice.

Also was thinking, since Derby has a branch for 10.0, can this patch be 
added to that, so there can be  a corresponding Eclipse plug-in release
for the officially released Derby 10.0.2.1 currently available at:

http://incubator.apache.org/derby/derby_downloads.html

instead of waiting for the next official release.

What do you guys suggest ?

-Rajesh


Rajesh Kartha wrote:

> 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/ReadMsg?listName=derby-dev@db.apache.org&msgNo=73

>>>
>>> http://nagoya.apache.org/eyebrowse/ReadMsg?listName=derby-dev@db.apache.org&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();
>
>	}
>}
>  
>


Mime
View raw message