Skip to content

Instantly share code, notes, and snippets.

@jeffsheets
jeffsheets / protractorFieldSelectionTest.spec.js
Created April 8, 2015 18:13
Protractor spec showing how to test for text selection inside a form input field
/**
* Initially written as a test for IE/Chrome for a bug in ui-mask.
* https://github.com/angular-ui/ui-utils/issues/302
*
* The test verifies that all of the text is selected in an input field when the field is tabbed into
*/
describe('field selection test', function () {
beforeEach (function () {
getRoute('#/app/events');
});
@jeffsheets
jeffsheets / SpringLog4jConfig.java
Created April 2, 2015 20:17
Super Simple Spring Log4j Configuration using different files per environment
@Configuration
public class SpringLog4jConfig {
/**
* Just a property from the normal Spring property sources, like:
* log4j.properties.location=log4j-dev.properties
*/
@Value("${log4j.properties.location}")
String log4jLocation;
@jeffsheets
jeffsheets / RestResponseEntityExceptionHandler.java
Last active October 31, 2020 11:44
Handle REST Exceptions in Spring
/**
* REST exception handlers defined at a global level for the application
*/
@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(RestResponseEntityExceptionHandler.class);
/**
* Catch all for any other exceptions...
*/
@jeffsheets
jeffsheets / ProfilePropertiesInitializer.java
Last active August 29, 2015 14:07
Spring Profile specific properties files, similar to Spring Boot (or Grails) properties. This registers application-*.properties for all Active (or Default) spring profiles.
/**
* Register this with the DispatcherServlet in a ServletInitializer class like:
* dispatcherServlet.setContextInitializers(new PropertiesInitializer());
*/
public class PropertiesInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
private static final Logger log = LoggerFactory.getLogger(PropertiesInitializer.class);
/**
* Runs as appInitializer so properties are wired before spring beans
*/
@jeffsheets
jeffsheets / SpringPropertiesConfig.java
Created August 14, 2014 21:21
Spring 4 Properties Java Configuration with Database-backed Properties along with File properties too
/**
* Example of Spring 4 Properties Java Configuration,
* with a Database Properties table to store most values
* and a small application.properties file too.
* The Database table will take precedence over the properties file with this setup
*/
@Configuration
@PropertySource(value = { "classpath:application.properties" }, ignoreResourceNotFound=true)
public class SpringPropertiesConfig {
private static final Logger log = LoggerFactory.getLogger(SpringPropertiesConfig.class);
@jeffsheets
jeffsheets / SqlServerTimestampType.java
Created August 1, 2014 17:38
Hibernate Custom Type to use @Version optimistic locking for SQLServer datetime fields that are limited by 1/300th of a second precision
public class SqlServerTimestampType extends TimestampType {
private static final int SQLSERVER_PRECISION = 10;
public SqlServerTimestampType() {
super();
}
/**
* SQLServer datetime fields are accurate to 1/300th of a second.
* We floor to the nearest 1/100th of a second for simplicity.
@jeffsheets
jeffsheets / AccountControllerTest.groovy
Created June 20, 2014 20:18
Spock test with Mocks of Spring MVC Rest Controller using standaloneSetup and mockMvc
import groovy.json.JsonSlurper
import org.springframework.test.web.servlet.MockMvc
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.http.HttpStatus.*
import spock.lang.Specification
/**
* A Spock Spring MVC Rest unit test that doesn't require a full spring context
*/
@jeffsheets
jeffsheets / APoolHelper.groovy
Last active June 15, 2016 16:29
Grails setup for using Apache Commons Pool to pool JAX-WS Port Proxy WS Stub objects because creating the connections can be an expensive operation
import org.apache.commons.pool2.ObjectPool
import org.apache.log4j.Logger
class PoolHelper {
static Logger log = Logger.getLogger(PoolHelper)
/**
* Executes a closure using the object from the passed
* in Commons Pool, invalidating the object if an error is returned,
* and always returning it to the pool. Similar to how Groovy Sql methods work.
*/
@jeffsheets
jeffsheets / AjaxlayoutController.groovy
Last active August 29, 2015 13:56
Grails Controller Unit Test to verify layout and template specified in render call
/* action that renders a template back to browser,
* and uses custom simple 'ajax' layout */
def ajaxResults() {
def results = workService.querySomeWork()
render (template: "ajaxResults", model:[results:results as JSON], layout:'ajax')
}
@jeffsheets
jeffsheets / GroovySqlWithOutputsAndResultSetRows.groovy
Last active June 5, 2019 15:35
Extend Groovy Sql with callWithRows method to call a Stored Procedure and process both Output Parameters and Rows from the ResultSet in the closure handler.Could be replaced if http://jira.codehaus.org/browse/GROOVY-3048 is ever completed
SqlHelper sql = new SqlHelper(dataSource)
List results = sql.callWithRows("{call ABC.FINDBYLAST($lastName, ${Sql.INTEGER}, ${Sql.VARCHAR})}") {
List<GroovyRowResult> rows, int status, String errorMessage ->
if (status != 0) {
throw new RuntimeException("Error received from stored proc $status : $errorMessage")
}
return rows
}