Skip to content

Instantly share code, notes, and snippets.

@elucash
elucash / Document.java
Created May 21, 2017 05:33
byte[] base64 encoder for Gson (showcase)
package sample;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.Base64;
import org.immutables.gson.Gson;
import org.immutables.value.Value;
@elucash
elucash / OverrideMongoMappingContext.java
Created October 9, 2016 22:09
Resolves public constructors in spring data. But hard to plug this into configuration
package springhack;
import java.lang.annotation.Annotation;
import java.util.List;
import org.springframework.data.mapping.PersistentEntity;
import org.springframework.data.mapping.PreferredConstructor.Parameter;
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
@elucash
elucash / ImmutableZone.java
Created May 21, 2016 01:41
Jackson works with 2.2
package gasdf;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import java.util.List;
@elucash
elucash / SerializeInterceptor.java
Created February 22, 2016 05:24
Creating intercepting wrappers for type adapters
package abc;
import com.google.common.base.Function;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
package bbbb;
import org.immutables.value.Value;
@Value.Immutable
public interface Complex {
@Value.Parameter double re();
@Value.Parameter double im();
}
@elucash
elucash / Sample.java
Created October 22, 2015 22:47
Showcase of Immutables and Guice for typed id generation
package abc;
import com.google.inject.Injector;
import com.google.inject.Guice;
import javax.inject.Inject;
import javax.inject.Provider;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import org.immutables.value.Value;
import org.immutables.value.Value.Style.ImplementationVisibility;
import com.google.common.collect.ImmutableList;
import com.google.common.base.Optional;
import org.immutables.value.Value;
interface Step {}
@Value.Immutable
interface StepsExtends {
ImmutableList<Step> steps();
@elucash
elucash / User.java
Last active November 8, 2015 06:21
how to get Include.NON_NULL working with Optionals
package com.hotwire.containers;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
import com.google.common.base.Optional;
@elucash
elucash / Ser.java
Last active June 20, 2016 00:11
Using Immutables with cryo
package org.immutables.samples.json.immutables;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import com.esotericsoftware.kryo.serializers.JavaSerializer;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
@elucash
elucash / gist:8542f28198ca571dd666
Created February 12, 2015 04:53
Thinking of ADT-like support for Immutables. Case matching using Java8
interface Q {}
@Value.Immutable
interface A extends Q{}
@Value.Immutable
interface B extends Q{}
@Value.Immutable