Since the latest update to SLAMD broke backward compatibility with previous versions, then anyone who has written their own custom jobs will need to update them to work with the latest release. Here’s what you need to do in order to achieve that:
- The overall package structure has changed from “
com.sun.slamd.*
” to be “com.slamd.*
“. For example, if you had previously imported “com.sun.slamd.parameter.ParameterList
“, then you will now need to import “com.slamd.parameter.ParameterList
“. - The former “
com.sun.slamd.example
” package, which holds most of the jobs provided with SLAMD, has been renamed to “com.slamd.jobs
“. - The code has been updated to use generics, so any collections used within SLAMD have been generified. In order to avoid build warnings, you should use generics in your code as well.
- All cases in the code in which the
StringBuffer
class was previously used have been replaced with the newStringBuilder
class. TheStringBuilder
class can help improve performance because it doesn’t perform any synchronization the way thatStringBuffer
does. - Previously, the
JobClass
class, which is the base class for all SLAMD jobs, had a singlegetJobDescription()
method which could be used to obtain the description for the job. That has now been replaced with the following two methods:public abstract String getShortDescription()
— This should return a short (preferably a single sentence) overview of the purpose for the job. It will be used in a few places in the administrative interface, including as a pop-up hint when hovering over the name of the job on the page listing the jobs available to be scheduled. This method must be provided.public String[] getLongDescription()
— This may be used to return a more detailed description of the sentence. It should return a string array, and each element of the array will be treated as a separate paragraph in the administrative interface. If this method is not provided, then the short description will be used.
- The
JobClass
class formerly provided adestroy()
method that allowed you to provide code that would be used in an attempt to forcefully kill a job. Because theJobClass
class extendedThread
, it overrode the deprecatedThread.destroy()
method, which could generate build warnings. I have renamed theJobClass.destroy()
method to bedestroyThread()
to eliminate this conflict. I also madeJobClass.destroy()
final so that you can no longer override it in job classes. - The former
com.sun.slamd.example.Base64Encoder
class has been removed. The ability to perform base64 encoding and decoding is now provided by thecom.unboundid.util.Base64
class in the UnboundID LDAP SDK for Java. - The former
com.sun.slamd.example.ValuePattern
class has been removed. This capability is now provided by thecom.unboundid.util.ValuePattern
class in the UnboundID LDAP SD for Java. Thecom.sun.slamd.example.NumericRange
class, which had been used by the oldValuePattern
implementation has also been removed.