Skip to content

Instantly share code, notes, and snippets.

/**
* A thread-safe lazy object reference that will only initialize its value when get() is called.
*/
public abstract class Lazy<T> {
private volatile T object;
private volatile boolean initialized;
@JsonValue
public T get() {
T result = object;
import org.apache.log4j.*;
public class LogClass {
private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
public static void main(String[] args) {
log.setLevel(Level.WARN);
log.trace("Trace Message!");
log.debug("Debug Message!");
@jonas-grgt
jonas-grgt / build.gradle
Created September 28, 2018 08:22
Gradle script - Semantic version bumping
class Version {
Integer major;
Integer minor;
Integer patch;
Version(major, minor, patch) {
this.major = major
this.minor = minor
this.patch = patch
}
@jonas-grgt
jonas-grgt / Scenario.java
Last active November 21, 2019 13:37
Lightweight BDD based structurizer for Unit Tests
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
@SuppressWarnings("unused")
public class Scenario<T> {
private State state;
private final String description;
private final Supplier<T> contextSupplier;
@jonas-grgt
jonas-grgt / RetroObservable.java
Last active June 13, 2017 08:05
Abstraction above Observable to make it more functional
import android.support.annotation.NonNull;
import com.annimon.stream.function.Consumer;
import rx.Observable;
import rx.Scheduler;
import rx.Subscriber;
import rx.Subscription;
public class RetroObservable<T> {
@jonas-grgt
jonas-grgt / Format.java
Created June 2, 2017 11:15
Pimped version of Java's String.format()
public class Format {
public static String format(String source, String ... args) {
return String.format(source.replaceAll("\\$\\w+", "%s"), (Object[]) args);
}
}
public static <T> Optional<T> resolve(Supplier<T> resolver) {
try {
T result = resolver.get();
return Optional.ofNullable(result);
} catch (NullPointerException e) {
return Optional.empty();
}
}
@jonas-grgt
jonas-grgt / RegexUtils.java
Last active August 29, 2015 14:21
Extract Regexp named group candidates
public static Set<String> getNamedGroupCandidates(String regex) {
Set<String> namedGroups = new TreeSet<>();
Matcher m = Pattern.compile("\\(\\?<([a-zA-Z0-9]*)>").matcher(regex);
while (m.find()) {
namedGroups.add(m.group(1));
}
return namedGroups;
}

Moving from jQuery

Events

// jQuery
$(document).ready(function() {
  // code
})
@jonas-grgt
jonas-grgt / raw.py
Created January 1, 2013 15:38
raw blocks preseve everything! No template tag rendering wil take place.
from django import template
register = template.Library()
@register.tag(name="raw")
def raw(parser, token):
# Whatever is between {% raw %} and {% endraw %} will be preserved as
# raw, unrendered template code.
text = []