Skip to content

Instantly share code, notes, and snippets.

@mnuessler
Created October 20, 2012 21:42
Show Gist options
  • Save mnuessler/3924920 to your computer and use it in GitHub Desktop.
Save mnuessler/3924920 to your computer and use it in GitHub Desktop.
Templates for the Eclipse IDE
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="tear down after test" enabled="true" name="after">@${afterType:newType(org.junit.After)}
public void tearDown() throws Exception {
${cursor}
}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="tear down after test class" enabled="true" name="afterclass">@${afterType:newType(org.junit.AfterClass)}
public void tearDownAfterClass() throws Exception {
${cursor}
}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="assert that" enabled="true" name="assert">${matchersImport:importStatic('org.hamcrest.Matchers.*')}${assertThatImport:importStatic('org.junit.Assert.assertThat')}assertThat(${word_selection}${}, ${matcher:newType(org.hamcrest.Matchers)}.${cursor});</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="set up before test" enabled="true" name="before">@${beforeType:newType(org.junit.Before)}
public void setUp() throws Exception {
${cursor}
}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="set up before test class" enabled="true" name="beforeclass">@${beforeType:newType(org.junit.BeforeClass)}
public void setUpBeforeClass() throws Exception {
${cursor}
}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="generate equals, hashCode and toString with builder by reflection" enabled="true" name="builder equals hashcode reflection">${importEqualsBuilder:import(org.apache.commons.lang3.builder.EqualsBuilder)}@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
${importHashCodeBuilder:import(org.apache.commons.lang3.builder.HashCodeBuilder)}@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(${17}, ${37}, this);
}
${importToStringBuilder:import(org.apache.commons.lang3.builder.ToStringBuilder, org.apache.commons.lang3.builder.ToStringStyle)}@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.${DEFAULT_STYLE});
}
${cursor}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="generate equals, hashCode and toString with builder" enabled="true" name="builder equals hashcode">${importEqualsBuilder:import(org.apache.commons.lang3.builder.EqualsBuilder)}@Override
public boolean equals(Object obj) {
if (obj == null) { return false; }
if (obj == this) { return true; }
if (obj.getClass() != getClass()) { return false; }
${type:enclosing_type} rhs = (${type}) obj;
return new EqualsBuilder()
.appendSuper(super.equals(obj))
.append(this.${field1:field}, rhs.${field1})
.append(this.${field2:field}, rhs.${field2})
.append(this.${field3:field}, rhs.${field3})${cursor}
.isEquals();
}
${importHashCodeBuilder:import(org.apache.commons.lang3.builder.HashCodeBuilder)}@Override
public int hashCode() {
return new HashCodeBuilder(${17}, ${37})
.append(${field1})
.append(${field2})
.append(${field3})
.toHashCode();
}
${importToStringBuilder:import(org.apache.commons.lang3.builder.ToStringBuilder)}${importToStringStyle:import(org.apache.commons.lang3.builder.ToStringStyle)}@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.${DEFAULT_STYLE})
.append("${field1}", ${field1})
.append("${field2}", ${field2})
.append("${field3}", ${field3})
.toString();
}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="iterate over map" enabled="true" name="for">for (${iteratorType:newType(java.util.Map)}.Entry&lt;${argType0:argType(map, 0)}, ${argType1:argType(map, 1)}&gt; ${entry} : ${map:localVar(java.util.Map)}.entrySet()) {
${argType0} key = ${entry}.getKey();
${argType1} value = ${entry}.getValue();
${cursor}
}
</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="if local var != null block" enabled="true" name="ifnotnull">if (${localVar} != null) {
${cursor}
}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="if local var == null block" enabled="true" name="ifnull">if (${localVar} == null) {
${cursor}
}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="log debug message" enabled="true" name="logd">${log:field(org.slf4j.Logger)}.debug("${msg}"${});
${cursor}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="log error message" enabled="true" name="loge">${log:field(org.slf4j.Logger)}.error("${msg}"${});
${cursor}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="log info message" enabled="true" name="logi">${log:field(org.slf4j.Logger)}.info("${msg}"${});
${cursor}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="log message" enabled="true" name="log">${log:field(org.slf4j.Logger)}.${level:link(debug, info, warn, error)}("${msg}"${});
${cursor}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-statements" deleted="false" description="log warning message" enabled="true" name="logw">${log:field(org.slf4j.Logger)}.warn("${msg}"${});
${cursor}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="slf4j logger" enabled="true" name="logger">private static final Logger LOG = LoggerFactory.getLogger(${enclosing_type}.class);${:import(org.slf4j.Logger, org.slf4j.LoggerFactory)}${cursor}</template></templates>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="test method (JUnit 4)" enabled="true" id="org.eclipse.jdt.ui.templates.test_junit4" name="test">@${testType:newType(org.junit.Test)}
public void ${testName}() throws Exception {
${assertImport:importStatic('org.junit.Assert.*')}${matchersImport:importStatic('org.hamcrest.Matchers.*')}${mockImport:importStatic('org.easymock.EasyMock.*')}${cursor}
}</template></templates>
@mnuessler
Copy link
Author

Eclipse Templates

Eclipse comes with a bunch of code templates that can save you a lot
of typing. Most notably the templates sysout (expands to
System.out.println()) and for / foreach to easily iterate over a
collection or an array.

It is also easy to add custom templates. This repository contains some
of the templates I created and which might be useful for others too.

Java Templates

Category: Logging

Create SLF4J Logger

Name: logger

Description: Creates an SLF4J logger instance with the name of the enclosing class.

Example:

This code

public class Foo {
    logger<CTRL-SPC>
}

expands to

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Foo {
    private static final Logger LOG = LoggerFactory.getLogger(Foo.class);
}

Log message

Name: log

Description: Creates a log statement. Lets you select the level from a
list of choices.

Example:

This code

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Foo {
    private static final Logger LOG = LoggerFactory.getLogger(Foo.class);

    public void bar() {
        log<CTRL-SPC>
    }
}

expands to

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Foo {
    private static final Logger LOG = LoggerFactory.getLogger(Foo.class);

    public void bar() {
        LOG.debug("");
    }
}

Log debug message

Name: logd

Description: Same as log but with fixed DEBUG level.

Log info message

Name: logi

Description: Same as log but with fixed INFO level.

Log warning message

Name: logw

Description: Same as log but with fixed WARN level.

Log error message

Name: loge

Description: Same as log but with fixed ERROR level.

Category: JUnit Tests

Test method

Name: test

Description: Creates a JUnit test method body annotated with @Test
and prompts you for the test method name.

This templates is an enhancement of the standard template Test
shipped with Eclipse. Additional to the standard template, the
following static imports are added:

  • org.junit.Assert.*
  • org.hamcrest.Matchers.*
  • org.easymock.EasyMock.*

Example:

This code

public class FooTest {
}

expands to

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;
import static org.easymock.Easymock.*;

public class FooTest {

    @Test
    public void testX() throws Exception {
    }

}

Test Assertion

Name: assert

Description: Creates a JUnit assertion body. Adds useful static imports.

Example:

This code

public class FooTest {

    @Test
    public void testBar() throws Exception {
        assert<CTRL-SPC>
    }

}

expands to

import static org.junit.Assert.assertThat;
import static org.hamcrest.Matchers.*;

public class FooTest {

    @Test
    public void testBar() throws Exception {
        assertThat( , Matchers. );
    }

}

Test Setup

Name: before

Description: Creates a test setup method body.

Example:

This code

public class FooTest {

before<CTRL-SPC>

}

expands to

import org.junit.Before;

public class FooTest {

    @Before
    public void setUp() throws Exception {

    }

}

Test Teardown

Name: after

Description: Creates a test teardown method body.

Example:

This code

public class FooTest {

after<CTRL-SPC>

}

expands to

import org.junit.After;

public class FooTest {

    @After
    public void tearDown() throws Exception {

    }

}

Test Setup Before Class

Name: beforeclass

Description: Creates a test setup-before-class method body.

Example:

This code

public class FooTest {

beforeclass<CTRL-SPC>

}

expands to

import org.junit.BeforeClass;

public class FooTest {

    @BeforeClass
    public void setUpBeforeClass() throws Exception {

    }

}

Test Teardown After Class

Name: afterclass

Description: Creates a test teardown-after-class method body.

Example:

This code

public class FooTest {

afterclass<CTRL-SPC>

}

expands to

import org.junit.AfterClass;

public class FooTest {

    @AfterClass
    public void tearDownAfterClass() throws Exception {

    }

}

Category: Misc

Iterate over Map

Name: formap

Description: Iterates over the entries of a java.util.Map with a
foreach loop.

Example:

This code

Map<String, String> myMap = new HashMap<String, String>();

formap<CTRL-SPC>>

expands to

Map<String, String> myMap = new HashMap<String, String>();

for (Map.Entry< , > entry : myMap.entrySet()) {

}

Check for null

Name: ifnull

Description: Creates a block to execute when a local variable is
null.

Example:

This code

Integer i = null;

ifnull<CTRL-SPC>>

expands to

Integer i = null;

if (i == null) {

}

Check for not-null

Name: ifnotnull

Description: Creates a block to execute when a local variable is
not null.

Example:

This code

Integer i = null;

ifnotnull<CTRL-SPC>>

expands to

Integer i = null;

if (i != null) {

}

Equals- / HashCode- / ToStringBuilder

Name: builder

Description: Creates equals(), hashCode() and toString() methods
which make use of the builder classes from commons-lang. When
typing field names (up to 3), those are inserted accordingly in each
of the 3 methods.

Example:

This code

public class Foo {

builder<CTRL-SPC>

}

expands to

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

public class Foo {

    @Override
    public boolean equals(Object obj) {
        if (obj == null) { return false; }
        if (obj == this) { return true; }
        if (obj.getClass() != getClass()) { return false; }
        Foo rhs = (Foo) obj;
        return new EqualsBuilder()
        .appendSuper(super.equals(obj))
        .append(this.field1, rhs.field1)
        .append(this.field2, rhs.field2)
        .append(this.field3, rhs.field3)
        .isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder(17, 37)
        .append(field1)
        .append(field2)
        .append(field3)
        .toHashCode();
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE)
        .append("field1", field1)
        .append("field2", field2)
        .append("field3", field3)
        .toString();
    }

}

Equals- / HashCode- / ToStringBuilder with Reflection

Name: builder equals hashcode reflection

Description: Creates equals(), hashCode() and toString() methods
which make use of the builder classes from commons-lang using
their reflection-based methods.

Example:

This code

public class Foo {

builder<CTRL-SPC>

}

expands to

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;

public class Foo {

    @Override
    public boolean equals(Object obj) {
        return EqualsBuilder.reflectionEquals(this, obj);
    }

    @Override
    public int hashCode() {
        return HashCodeBuilder.reflectionHashCode(17, 37, this);
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
    }

}

Installation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment