Skip to content

Instantly share code, notes, and snippets.

View gakuzzzz's full-sized avatar

Manabu Nakamura gakuzzzz

View GitHub Profile
@gakuzzzz
gakuzzzz / 1_AbstractDomain.java
Created December 11, 2012 08:49
Doma の Domain定義の共通化
import java.io.Serializable;
import static com.google.common.base.Preconditions.checkNotNull;
public class AbstractDomain<T extends Comparable<T>, REPR extends AbstractDomain<T, REPR>> implements Serializable, Comparable<REPR> {
private static final long serialVersionUID = 1L;
private final T value;
public AbstractDomain(final T value) {
public class OnesFunction {
private static LoadingCache<Integer, Integer> cache = CacheBuilder
.newBuilder().maximumSize(1000)
.expireAfterAccess(10, TimeUnit.MINUTES)
.build(new CacheLoader<Integer, Integer>() {
@Override
public Integer load(final Integer i) throws ExecutionException {
return countOnes(i);
}
@gakuzzzz
gakuzzzz / form.scala
Created December 17, 2012 10:29
数値with必須チェック
import play.api.data.Form
import play.api.data.Forms._
import play.api.data.validation.Constraints._
val taskForm = Form(
single(
"hoge" -> nonEmptyText.verifying(pattern("""-?\d+""".r, error = "number")).transform[Int](_.toInt, _.toString)
)
)
@gakuzzzz
gakuzzzz / 1_LogicalDeletable.java
Last active December 10, 2015 03:08
汎用的なDelegateのリフレクション使わない版
import org.joda.time.DateTime;
import org.seasar.doma.Column;
import org.seasar.doma.Entity;
@Entity
public abstract class LogicalDeletable {
@Column
protected DateTime deletedTime;
@gakuzzzz
gakuzzzz / error.html
Created December 27, 2012 08:54
Play1.2.5+Doma Error
<!DOCTYPE html>
<html><head>
<title>Application error</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<style type="text/css">
html, body {
margin: 0;
@gakuzzzz
gakuzzzz / Application.scala
Last active December 11, 2015 18:28
Scala勉強会
def index = authorizedAction(models.NormalUser) { user => request =>
Ok(html.index(user.fullname))
}
def authenticate = Action { implicit request =>
loginForm.bindFromRequest.fold(
formWithErrors => BadRequest(html.login(formWithErrors)),
{
case (email, password) =>
models.User.authenticate(email, password)
@gakuzzzz
gakuzzzz / AccumulableIterationCallback.java
Last active December 11, 2015 22:39
Doma の Iteration Callback がこんなインターフェイスだったら嬉しい
public interface AccumulableIterationCallback<ACCUM, RECORD> {
ACCUM initialValue();
ACCUM iterate(ACCUM accumulator, RECORD record, IterationContext context);
}
@gakuzzzz
gakuzzzz / AccumulableIterationCallback.java
Last active December 12, 2015 03:09
副作用持ちだけどAccumulableIterationCallback作れる。
import javax.annotation.Nonnull;
import org.seasar.doma.jdbc.IterationContext;
import org.seasar.doma.jdbc.PostIterationCallback;
import com.google.common.base.Optional;
// ThreadUnsafe
// 同一インスタンスの再利用不可
public abstract class AccumulableIterationCallback<ACCUM, RECORD> implements PostIterationCallback<ACCUM, RECORD> {
@gakuzzzz
gakuzzzz / gist:4705703
Created February 4, 2013 08:53
Ant + Doma
[javac] org.seasar.doma.internal.apt.AptIllegalStateException: domainMirror
[javac] at org.seasar.doma.internal.apt.meta.DomainMetaFactory.createTypeElementMeta(DomainMetaFactory.java:57)
[javac] at org.seasar.doma.internal.apt.meta.DomainMetaFactory.createTypeElementMeta(DomainMetaFactory.java:43)
[javac] at org.seasar.doma.internal.apt.AbstractGeneratingProcessor$1.handle(AbstractGeneratingProcessor.java:52)
[javac] at org.seasar.doma.internal.apt.AbstractProcessor.handleTypeElement(AbstractProcessor.java:40)
[javac] at org.seasar.doma.internal.apt.AbstractGeneratingProcessor.process(AbstractGeneratingProcessor.java:60)
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793)
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722)
[javac] at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700
@gakuzzzz
gakuzzzz / 1.md
Last active December 12, 2015 04:09
Ant Build で Doma の apt がこけるパターンの再現。

Ant Build で Doma の apt がこけるパターンの再現。

内容

doma-jpetstore-1.28.0 をベース

  • src/main/java/demo/smart/dao/OrderLineItemDao.java に以下のようにメソッド追加
  • src/main/resources/META-INF/demo/smart/dao/OrderLineItemDao/ に 以下の findByAmount.sql 追加

補足