Skip to content

Instantly share code, notes, and snippets.

View volgar1x's full-sized avatar

Antoine Chauvin volgar1x

View GitHub Profile
type Transaction = mutable.Builder[Any, _]
def transaction[R](fn: Transaction => R): Future[NetworkSession] = {
val buf = List.newBuilder[Any]
fn(buf)
@tailrec
def rec(fut: Future[NetworkSession], buf: List[Any]): Future[NetworkSession] = buf match {
case head :: tail => rec(fut.flatMap(_.write(head)), tail)
case Nil => fut
18:37:21.052 [nioEventLoopGroup-3-1] DEBUG o.p.l.NetworkComponentImpl$NetworkLoggerImpl - connect /127.0.0.1:35522
18:37:21.064 [nioEventLoopGroup-3-1] DEBUG o.p.l.NetworkComponentImpl$NetworkLoggerImpl - send HelloConnectMessage(tsnsvgwldrmawdntiatcfqkoibdfoaui) to /127.0.0.1:35522
18:37:21.077 [nioEventLoopGroup-3-1] DEBUG o.p.l.NetworkComponentImpl$NetworkLoggerImpl - receive VersionMessage(1.29.1) from /127.0.0.1:35522
18:37:21.089 [nioEventLoopGroup-3-1] DEBUG o.p.l.NetworkComponentImpl$NetworkLoggerImpl - receive AuthenticationMessage(test,66500554) from /127.0.0.1:35522
18:37:27.291 [nioEventLoopGroup-3-1] DEBUG o.p.l.NetworkComponentImpl$NetworkLoggerImpl - send SetNicknameMessage(test) to /127.0.0.1:35522
package org.photon.login
import com.twitter.util.Future
import org.photon.common.Async
import java.sql.{PreparedStatement, Timestamp, ResultSet}
import org.joda.time.Instant
trait UserRepositoryComponentImpl extends UserRepositoryComponent { self: DatabaseComponent with ExecutorComponent =>
implicit def timestamp2instant(t: java.sql.Timestamp) = new Instant(t.getTime)
implicit def instant2timestamp(i: org.joda.time.Instant) = new Timestamp(i.getMillis)
class UserRepositoryImpl extends BaseRepository[User] with UserRepository {
val executor = self.executor
val tableName = "users"
val columns = Seq("id", "name", "password", "nickname", "secret_question", "secret_answer", "community_id", "subscription_end")
protected def create(rset: ResultSet) = User(
rset.getLong("id"),
rset.getString("name"),
rset.getString("password"),
package org.photon.common
import scala.collection.mutable
import java.util.concurrent.locks.ReentrantReadWriteLock
import java.util.concurrent.{Executors, Executor}
object Observable {
type Listener = Any => Any
}
package org.photon;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.io.IOException;
import java.util.*;
public class Main {
{
"parents" : [ {
"id" : 1,
"name" : "DADDY",
"children" : [ 1, 2 ]
} ],
"children" : [ {
"id" : 1,
"name" : "JUNIOR",
"parent" : 1
package org.photon;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.AnnotationIntrospector;
import com.fasterxml.jackson.databind.introspect.Annotated;
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
public class FlatJsonIntrospector extends AnnotationIntrospector {
@Override
public Version version() {
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Parent.class)
public static class Parent {
private long id;
private String name;
@OneToMany
private List<Child> children = new ArrayList<>();
public long getId() {
return id;
}
package org.photon;
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.deser.impl.PropertyBasedObjectIdGenerator;