Skip to content

Instantly share code, notes, and snippets.

@mroger
mroger / MagicMatcherElse.java
Last active June 2, 2016 23:10
MagicMatcherElse
public class MagicMatcher <T> implements InvocationHandler {
//...
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if () {
//...
@mroger
mroger / MagicMatcher.java
Last active June 2, 2016 00:47
Hamcrest custom matcher using dynamic proxy
public class MagicMatcher <T> implements InvocationHandler {
//...
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if ("matches".equals(method.getName())) {
for (Entry<String, Object> entry : methodMap.entrySet()) {
String field = entry.getKey().substring(entry.getKey().indexOf("with") + 4);
Object objectValue = extractObjectValue((T) args[0], entry.getKey());
@mroger
mroger / PersonMatcher.java
Created June 1, 2016 01:11
Proxied interface
public interface PersonMatcher extends Matcher<Person> {
PersonMatcher withName(String expected);
PersonMatcher withName(Matcher<? super String> matching);
PersonMatcher withAge(int expected);
PersonMatcher withAge(Matcher<Integer> matching);
PersonMatcher withOptions(List<String> options);
}
@mroger
mroger / PersonTest.java
Last active June 1, 2016 00:56
Test class using custom matcher
public class PersonTest {
private Person person;
@Before
public void setUp() {
person = new Person();
}
@Test
@mroger
mroger / Person.java
Last active May 31, 2016 01:05
Person entity for proxy matcher
package br.org.roger.model;
import java.util.List;
public class Person {
private String name;
private int age;
private List<String> options;
@mroger
mroger / MyHandlerResolver.java
Last active May 29, 2016 21:39
Adding a handler to client messages
public static void main(String[] args) {
SimpleWebServiceService wsClient = new SimpleWebServiceService();
wsClient.setHandlerResolver(new MyHandlerResolver());
final SimpleWebService simpleWebServicePort = wsClient.getSimpleWebServicePort();
System.out.println(simpleWebServicePort.sayHello("Guest"));
}
public static class MyHandlerResolver implements HandlerResolver {
public List<Handler> getHandlerChain(PortInfo portInfo) {
List<Handler> handlers = new ArrayList<Handler>();
@mroger
mroger / logback.xml
Last active October 23, 2015 01:59
Appenders to log JDBC data
<configuration>
<property name="SERVER_LOG_PATH" value="${server.logging.path:-/var/log/fitnesstracker}"/>
...
<appender name="SQLONLY_SERVER_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${SERVER_LOG_PATH}/sqlonly.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${SERVER_LOG_PATH}/sqlonly-%d{yyyy-MM-dd}.log</fileNamePattern>
@mroger
mroger / jpaContext.xml
Last active October 23, 2015 02:05
Reference to a new datasource
...
<bean id="dataSourceSpied"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/fitnessTracker?autoReconnect=true" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
@mroger
mroger / log4jdbc.log4j2.properties
Created October 23, 2015 00:50
Configure the option log4jdbc.spylogdelegator.name to the value net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
@mroger
mroger / pom.xml
Last active October 23, 2015 02:06
Adding dependencies to JDBC wrapper driver
...
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>