Skip to content

Instantly share code, notes, and snippets.

@jskierbi
jskierbi / jacksonPolymorphism.kt
Created August 2, 2019 08:49
JSON with polimorphism using Jackson
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type" // Field where type information is stored
)
@JsonSubTypes(
JsonSubTypes.Type(TextItem::class, name = Item.TYPE_TEXT),
JsonSubTypes.Type(PhotoItem::class, name = Item.TYPE_PHOTO),
JsonSubTypes.Type(VideoItem::class, name = Item.TYPE_VIDEO)
)
@jskierbi
jskierbi / gist:b62c8a135e56ee929c5c9ea96dbd599e
Created October 13, 2018 15:33
Ubuntu TLP bluetooth autosuspend
# TLP with newer kernel (4.16+) tends to autosuspend USB bluetooth devices.
# To work this around, teak tlp settings (set USB_BLACKLIST_BTUSB=1)
$ nano /etc/default/tlp
(...)
# Bluetooth devices are excluded from USB autosuspend:
# 0=do not exclude, 1=exclude.
USB_BLACKLIST_BTUSB=1
(...)
@jskierbi
jskierbi / ContentScaleView.kt
Created January 15, 2018 15:36
ViewGroup that scales only contents of a view - actual measured dimensions stay the same
package de.jskierbi.commons.ui
import android.content.Context
import android.util.AttributeSet
import android.view.ViewGroup
import de.neofonie.meinwerder.R
/**
* Created by jakub on 10.10.17.
*/
@jskierbi
jskierbi / datamodel.kt
Last active August 30, 2018 11:59
Jackson polymorphism #json #spring #android
// For Jackson polymorphism see:
// https://stackoverflow.com/questions/30362446/deserialize-json-with-jackson-into-polymorphic-types-a-complete-example-is-giv
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type" // Field where type information is stored
)
@JsonSubTypes(
JsonSubTypes.Type(TextItem::class, name = Item.TYPE_TEXT),
JsonSubTypes.Type(PhotoItem::class, name = Item.TYPE_PHOTO),
@jskierbi
jskierbi / AutoDisposable.kt
Last active August 8, 2017 19:38
Neat Kotlin component for RxJava2/Android making use of Lifecycle from Android Architecture Components - a delegate with auto dispose
package com.jskierbi.autodisposable
import android.arch.lifecycle.Lifecycle
import android.arch.lifecycle.Lifecycle.Event.*
import android.arch.lifecycle.LifecycleObserver
import android.arch.lifecycle.LifecycleOwner
import android.arch.lifecycle.OnLifecycleEvent
import io.reactivex.disposables.Disposable
import io.reactivex.disposables.Disposables
import kotlin.properties.ReadWriteProperty
@jskierbi
jskierbi / EventBus.kt
Last active June 1, 2017 13:52
EventBus implementation using RxRelay
import com.jakewharton.rxrelay2.PublishRelay
import io.reactivex.Observable
/**
* EventBus implementation (pub-sub pattern). Enables posting and subscribing to any events.
* http://blog.kaush.co/2014/12/24/implementing-an-event-bus-with-rxjava-rxbus/
*
* [post] method is shorthand for posting events to a bus
* [subscribe] method is shorthand for listening for specific type of events on main thread
* [observable] property exposes raw observable with events to enable custom operator usage
@jskierbi
jskierbi / 01Variance.kt
Last active May 30, 2017 15:19
Kotlin Generics and variance
// https://kotlinlang.org/docs/reference/generics.html
// The Existential Transformation: Consumer in, Producer out! :-)
// Covariance (producer)
val covariantList: List<out Animal> = listOf<Lion>() // In Java: List<? extends Animal>
val animal: Animal = covariantList.get(0) // Ok
covariantList.put(Animal()) // Compilation error - compiler doesn't know exact
// type of covariantList and is not sure if
// it can store Animal (not all animals are lions)
@jskierbi
jskierbi / MainActivity.java
Created November 8, 2016 16:27
Subscription model for asynchronous operations (ReactiveX)
package com.jskierbi.simplerx;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
@jskierbi
jskierbi / CustomShare.java
Last active May 20, 2016 11:10
Android share custom contents to different applications
/**
* http://stackoverflow.com/questions/9730243/how-to-filter-specific-apps-for-action-send-intent-and-set-a-different-text-for?answertab=votes#tab-top
*/
public void onShareClick() {
Resources resources = getResources();
PackageManager pm = getPackageManager();
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
List<ResolveInfo> resInfo = pm.queryIntentActivities(sendIntent, 0);
package net.slideshare.mobile.test.util;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.support.test.espresso.UiController;
import android.support.test.espresso.ViewAction;
import android.support.test.internal.runner.lifecycle.ActivityLifecycleMonitorRegistry;
import android.support.test.runner.lifecycle.Stage;
import android.view.View;