Skip to content

Instantly share code, notes, and snippets.

View raphw's full-sized avatar

Rafael Winterhalter raphw

View GitHub Profile
@raphw
raphw / NullChainSensitiveBeanComparator.java
Created December 6, 2013 14:08
A sortable data provider for memory-stored beans for Wicket.
import org.apache.commons.beanutils.BeanComparator;
import org.apache.wicket.util.lang.PropertyResolver;
import java.util.Comparator;
public class NullChainSensitiveBeanComparator extends BeanComparator {
public NullChainSensitiveBeanComparator() {
}
@raphw
raphw / AjaxTwitterBootstrapNavigationToolbar.java
Created December 6, 2013 14:11
Ajax-enhanced navigator with Twitter bootstrap styles for Wicket
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxNavigationToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
public class AjaxTwitterBootstrapNavigationToolbar extends AjaxNavigationToolbar {
public AjaxTwitterBootstrapNavigationToolbar(DataTable<?, ?> table) {
super(table);
}
@raphw
raphw / AjaxTwitterBootstrapTabbedPanel.html
Created December 6, 2013 14:13
Ajax-enhanced tabbed panel in Twitter bootstrap style for Wicket.
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<div class="tabbable tabs-left" style="margin-right: 0; border-right: 0;">
<ul class="nav nav-tabs" style="margin-right: 0; border-right: 0;" wicket:id="tabs-container">
<li wicket:id="tabs">
<a data-toggle="tab" href="#" wicket:id="link"><span wicket:id="title">[tab title]</span></a>
</li>
</ul>
<div class="tab-content" style="min-height: 100%; padding-left: 20px; border-left: 1px solid #ddd;">
<div wicket:id="panel" class="tab-pane active">[tab]</div>
@raphw
raphw / UnsafeTest.java
Last active January 10, 2023 20:12
A demonstration of sun.misc.Unsafe
import org.junit.Before;
import org.junit.Test;
import sun.misc.Unsafe;
import sun.reflect.ReflectionFactory;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import static org.junit.Assert.assertEquals;
@raphw
raphw / MethodDescriptor.java
Last active January 1, 2016 04:59
ASM visitor pattern implementation for method arguments.
public class MethodDescriptor {
public static final char OBJECT_REFERENCE_SYMBOL = 'L';
public static final char ARRAY_REFERENCE_SYMBOL = '[';
public static final char DOUBLE_SYMBOL = 'D';
public static final char LONG_SYMBOL = 'J';
public static final char BOOLEAN_SYMBOL = 'Z';
public static final char BYTE_SYMBOL = 'B';
public static final char SHORT_SYMBOL = 'S';
public static final char CHAR_SYMBOL = 'C';
@raphw
raphw / Pyramid.java
Last active August 29, 2015 13:57
Solution to Reaktor's pyramid challenge: http://reaktor.fi/careers/fast_track/
import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@raphw
raphw / Java8Rule.java
Created June 4, 2014 12:27
This rule allows to write tests that are only executed if the running JVM supports Java 8 byte code.
public class Java8Rule implements MethodRule {
private final boolean java8OrHigher;
public Java8Rule() {
java8OrHigher = currentByteCodeLevel() >= (0 << 16 | 52);
}
@Override
public Statement apply(Statement base, FrameworkMethod method, Object target) {
@raphw
raphw / HashCodeEqualsTester.java
Created September 15, 2014 09:25
An automatic tester for the hashCode and equals method using Mockito.
import org.objectweb.asm.Opcodes;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.List;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
@raphw
raphw / TypeSafeJPA.java
Created September 26, 2014 13:41
A concept for making JPA queries type-safe using code generation.
public class TypeSafeJPA {
class MyBean {
private String foo;
private int bar;
public String getFoo() {
return foo;
@raphw
raphw / FieldBenchmark.java
Last active March 4, 2024 00:14
Java MethodHandle and reflection benchmark
package benchmark;
import org.openjdk.jmh.annotations.*;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.TimeUnit;