Below are some useful java snippets and their explanations that I created. I will try to take the time later to add them to the wiki:
Snippet result: Create a class in java with auto-generated package name, author, date, class name. Usage: For the autogeneration of the package you should create your class file in its proper location, e.g., org.foo.bar.Batz.java would be created in the directory bar which is a subdirectory of foo and org directories. The autogeneration of package name and classname also assumes that your class package directory structure has as its parent directory a directory named 'src'. You can of course change that in the third call to sed for both the package name and the class name. Trigger: jcl (or whatever you want to trigger it with) Snippet:
${1:package `echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*src.//' | sed 's/.[A-Za-z]*.java//g'`};
/** * ${2:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*src.//' | sed 's/.*.([A-Za-z]*).java/\1/g'`} * * @author ${9:`niutil -readprop / /users/$USER realname`} * @since `date +%D` */ public class ${2:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*src.//' | sed 's/.*.([A-Za-z]*).java/\1/g'`} ${3:extends} $4 ${5:implements} $6${7:,}$8 {
$0
}
Snippet result: Create a private scoped variable. Not that useful, but heh, it is here if you want it. Usage: No explanation necessary. Trigger: jpv
private ${1:String} $2;
$0
Snippet result: Create a public scoped method Usage: No special comments. Pretty straight forward. Trigger: jpum Snippet:
/** * $2 * * @param $4 $5 * ${6:@return} $7 */ public ${1:void} $2(${3:String} $4) {
$0
}
Snippet result: Create an if statement with guard comment Usage: Trigger: jif Snippet:
if ($1) { // $2 $0 }
Snippet result: Create a privately scoped method. Usage: Trigger: jpm Snippet:
/** * $2 * * @param $4 $5 * ${6:@return} $7 */ private ${1:void} $2(${3:String} $4) {
$0
}
Snippet result: Create a while statement with guard comment Usage: Trigger: jwh Snippet:
while ($1) { // $2
$0
}
Snippet result: Create a try/catch/finally block Usage: Trigger: jtc Snippet:
try {
$2
} catch ($1 e) {
$3
} finally {
$0
}
Snippet result: Create a class variable/constant. Usage: Trigger: jps Snippet:
private static final ${1:String} $2 = "$0";
Snippet result: Create an if/else statement with guard comments Usage: Trigger: jelse Snippet:
if ($1) { // $2
$0
} else { // $3
}
Snippet result: Create the package imports and instantiation code for using jakarta commons logging package. Usage: I would suggest executing the snippet in the import area of you class definition and then cut/pasting the instantiation code to the private member variable declaration area. Trigger: jlog Snippet:
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;
/** Logger for this class and subclasses */ protected final Log logger = LogFactory.getLog(getClass());
Snippet result: Create a JUnit TestCase subclass for unit testing. Auto-generates the package name and the proper imports for the class that will be tested. Usage: Assumes JUnit unit test class naming convention is followed whereby if a class named UserDao is being unit tested, the unit test class would be named UserDaoTests.java and would be located in a parallel directory structure analogous to its package name. Also assumes, as is standard convention, that unit test packages have as their parent directory 'test' and the classes which they test have the parent directory of 'src'. For example, UserDao.java would be located, let's say, in src/org/foo/bar/dao/ and its unit test class, UserDaoTests.java, would be in test/org/foo/bar/dao/. Of course, if you don't work that way, you can message the regular expressions to suite your environment. Trigger: jtest Snippet:
package `echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/.[A-Za-z]*.java//g'`;
import junit.framework.TestCase; import `echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//'`;
/** * ${2:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/.*.([A-Za-z]*).java/\1/g'`} * * @author ${4:`niutil -readprop / /users/$USER realname`} * @since `date +%D` */ public class ${2:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/.*.([A-Za-z]*).java/\1/g'`} extends TestCase {
private ${5:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/'`} ${6:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/' | perl -e 'print lcfirst(<>)'`};
public ${5:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/'`} get${5:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/'`}() { return this.${6:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/' | perl -e 'print lcfirst(<>)'`}; } public void set${5:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/'`}(${5:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/'`} ${6:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/' | perl -e 'print lcfirst(<>)'`}) { this.${6:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/' | perl -e 'print lcfirst(<>)'`} = ${6:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*test.//' | sed 's/Tests.java//' | sed 's/.*.([A-Za-z]*)$/\1/' | perl -e 'print lcfirst(<>)'`}; }
public void test$8() { $0 } }
Snippet result: Create public getter/setter pair for a private instance variable. This really comes in handy if you do a lot of dependency injection style development, for bean properties. Usage: Trigger: jprops Snippet:
public $1 get$2() { return this.$3; } public void set$2($1 $3) { this.$3 = $3; }
Snippet result: Create a JSTL output statement for jsp code. Usage: Trigger: jcout Snippet:
<c:out value="${$1}"/>$0
Snippet result: Create an interface definition with autogenerated package name, interface name, author name, and date. Usage: Same as the usage for the java class snippet. Trigger: jid Snippet:
${1:package `echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*src.//' | sed 's/.[A-Za-z]*.java//g'`};
/** * ${2:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*src.//' | sed 's/.*.([A-Za-z]*).java/\1/g'`} * * @author ${3:`niutil -readprop / /users/$USER realname`} * @since `date +%D` */ public interface ${4:`echo $TM_FILEPATH | sed 's///./g' | sed 's/^.//' | sed 's/.*src.//' | sed 's/.*.([A-Za-z]*).java/\1/g'`} {
$0
}
Hope it helps someone, it sure has saved me a ton of typing.
Regards,
Lang Riley