Converting existing function classes without Eclipse
You can convert functions that were written for HCL OneTest™ API 4 to work with 5 or later, without Eclipse.
About this task
C:\Program Files\HCL\HCLProducts\API\
, that the Installation Manager shared
resources directory is installed in C:\Program Files\HCL®\HCL®IMShared\
, and that you are using a Windows™ Command Prompt. However, running the commands
from a Linux™ Terminal is also supported and
the Installation Manager shared resources directory is installed on Linux™ systems in /opt/HCL®/HCL®IMShared/
.Procedure
- Create a folder in which to develop your custom function. For example, c:\customFunction.
- Create folders for the source and the build output. For example, c:\customFunction\src and c:\customFunction\build.
-
Copy the plugin.xml file and the
META-INF directory from
C:\Program Files\HCL\HCLProducts\API\examples\FunctionsSamplePlugin
into the build directory. Both the plugin.xml file and the META-INF directory must be copied to the same target directory (C:\customFunction\build). -
Create the required directory structure under src to
contain your custom function code. If you have existing code, copy the root
package and all sub packages under the src folder. For
example:
C:\customFunction\src\com\samples\functions\FormatDate.java.
An example directory structure follows:
Except in the src folder, if you compile your own function, you have your own Java™ classes in a similar folder hierarchy. For example:
-
Remove the
register()
method. - Change the visibility of the default constructor to be public. No other visibility (for example, protected) can be used, otherwise an exception is generated when you try to execute the function.
-
Remove the
super(String, String, int, int)
call in the default constructor.This super constructor does not exist anymore, so any calls to it produce an error. This call is replaced by the information that is contained in the extension definition.
-
Remove the method
getSyntax()
. This information is now contained in the extension definition. -
In your command prompt or terminal, from the
C:\customFunction\src folder compile the custom
function into the build directory, such as by running the
following command:
Note: Run the
javac
executable from the Java™ Development Kit (JDK). If the commands shown do not find that executable, add the full path to the location of the executable to the beginning of each command.javac -d ../build -classpath .;"C:/Program Files/HCL®/HCL®IMShared/plugins/*" com/samples/functions/FormatDate.java
Note: If the source contains multiple Java™ files, you must specify each file in the command. For example, if you use the second directory structure above, the command is:javac -d ../build -classpath .;"C:/Program Files/HCL®/HCL®IMShared/plugins/*" com/mycompany/myfunction/MyFunction.java com/mycompany/myfunction/MyUtilities.java
or
javac -d ../build -classpath .;"C:/Program Files/HCL®/HCL®IMShared/plugins/*" com/mycompany/myfunction/*.java
On a Linux™ systems, the command is:javac -d ../build -classpath .:"/opt/HCL®/HCL®IMShared/plugins/*" **/*.java
-
Edit MANIFEST.MF, which is in the
META-INF directory under the build
directory, for example, META-INF/MANIFEST.MF and change the
following values:
Value Change to... Bundle-Name Enter a descriptive name for the plug-in. For example, Format Date Function. Bundle-SymbolicName Enter a unique ID that describes your plug-in. This ID must be different from any other plug-in, as two plug-ins with the same ID cannot be loaded at one time. Do not change the singleton:=true attribute. Bundle-Vendor Enter the name of your company or name of any other provider. An example of a manifest file follows:Manifest-Version: 1.0 Ant-Version: Apache Ant 1.7.0 Created-By: 10.0-b19 (Sun Microsystems Inc.) Bundle-ManifestVersion: 2 Bundle-Name: The Function That Does Exactly What I Need Bundle-SymbolicName: com.mycompany.myfunction;singleton:=true Bundle-Version: 1.0.0 Bundle-Vendor: My Company Import-Package: com.ghc.ghTester.expressions
Replace the values for
Bundle_Name
,Bundle-SymbolicName
, andBundle-Vendor
with values your own. TheBundle-SymbolicName
value does not have to match the Java™ package name in which the function Java™ classes are located. - Open plug-in.xml that is in your build directory, in a text editor and update the values.
-
In a command prompt or terminal, from the
c:\customFunction\build directory, create a JAR file
that contains your custom function classes, MANIFEST.MF,
and plug-in.xml.
For example, you can use the following command:
Note: Run thejar
executable from the Java™ Development Kit (JDK). If the commands shown do not find that executable, add the full path to the location of the executable to the beginning of each command.jar cvfm custom-function-plug-in_1.0.0.jar META-INF\MANIFEST.MF com plugin.xml
Note: You can choose any name for your JAR file, but you must follow a convention that prevents conflicting names. -
Copy the new JAR file into the Functions folder of your
project.
Note: An example of how the plug-in looks can be found under
C:\Program Files\HCL\HCLProducts\API\examples\FunctionsSamplePlugin
.