2022-10-01から1ヶ月間の記事一覧

JSON シリアライズ時のソート

Java Jackson を使用した時のシリアライズのソートの話である。 @JsonPropertyOrder を使わないで、ObjectMapper の設定として指定する方法Java Object プロパティ順(フィールド宣言順) Jackson version >= 2.6.1 ObjectMapper mapper = new ObjectMapper(…

Jackson シリアライズで、null オブジェクトを出力させない

一律に全て、null オブジェクトを出力させない import com.fasterxml.jackson.annotation.JsonInclude.Include; Include.NON_NULL を設定する。 ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_NULL);

Jackson JSONシリアライズ実行で、null を空文字にする

汎用的にシリアライザを設定するのが賢い com.fasterxml.jackson.databind.JsonSerializer 実装を com.fasterxml.jackson.databind.ser.DefaultSerializerProvider で、約束して ObjectMapper に登録する。DefaultSerializerProvider が抱える public final …

JUnit 用のログ設定を行う

リリース用のログ設定ファイル、 logback 使用の場合 → logback.xml log4j2 使用の場合 → log4j2.xml これを src/main/resources に配置するが、Junitテスト用のログ設定を別に用意したい時、、、 import org.junit.BeforeClass; システムプロパティで、設定…

@ImplementedBy VS TypeLiteral

Google guice のインジェクションバインド定義で、 com.google.inject.TypeLiteral は、良くこのように使用される。 Injector injector = Guice.createInjector(new AbstractModule(){ @Override protected void configure(){ binder().bind(new TypeLiteral<List<String></list<string>…

Javaで、JSONキーによるシリアライズ時のソート

このようなクラスオブジェクトが存在したとします。 import java.io.Serializable; import lombok.Data; @Data public class Person implements Serializable{ private static final long serialVersionUID = 1L; private String name; private String alias…

MockWebServer POST に対応する

HttpClient 実行を含むJUnit で、Mockwebserver を使う - Oboe吹きプログラマの黙示録okhttp の Mockwebserver で、複数リクエストに対応する - Oboe吹きプログラマの黙示録ここまでくると、次はPOST送信された内容に対するレスポンスの設定である。 okhttp3…

okhttp の Mockwebserver で、複数リクエストに対応する

okhhtp3 の Mockwebserver の使い方の問題ですが、 Mockwebserver 1回の enqueue(MockResponse response) メソッドの設定だけでは、 2回リクエストを実行すると2回目は応答しなくなる。 解決方法は2通り。 enqueue レスポンス設定をリクエストの回数分実…

HttpClient 実行を含むJUnit で、Mockwebserver を使う

Square社が開発した Apache License2.0 の OkHttp を使う <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>mockwebserver</artifactId> <version>4.0.1</version> <scope>test</scope> </dependency> Java11 HttpClient を使ったテスト対象プログラム(省略して書いてます) @Inject @Named("BASEURL") private String baseURL; URL path の …

HttpClient.Redirect.SAME_PROTOCOL → NORMAL

もうだいぶ年月がたってしまった、Java9 で HttpClient インキュベーター Java11 で HttpClient 正式リリース 昔書いた、Java9 の HttpClient を試す - Oboe吹きプログラマの黙示録 この中で HttpClient.Redirect.SAME_PROTOCOL「同じプロトコルのみにリダイ…

HttpClient のモックを書くとしたら、、

Java11 の HttpClient のモックを書くとしたら、 だいたいこんな感じかな。。。 @Test public void case1() { try{ HttpResponse<Object> resp = Mockito.mock(HttpResponse.class); HttpClient client = Mockito.mock(HttpClient.class); Mockito.when(resp.body())</object>…

Git 急に Fetch やPull ができなくなったら。。

こんなエラーが出るようになったら、 error: cannot lock ref ‘refs/remotes/origin/xxx’: ‘refs/remotes/origin/xxx’リモート上の削除されたブランチをローカルで追跡できなくなっているのである。 そういう時は、クリーンする処置が必要で、prune というの…

厳格な日付読み取りで良い方法は。。

存在しない日付の読み取り String strdate = "20230931"; LocalDate dt = LocalDate.parse(strdate, DateTimeFormatter.ofPattern("yyyyMMdd")); 2023-09-30まあ、これは想定される好ましくない方法 DateTimeFormatter に、ResolverStyle.LENIENT を指定する…

JUnit の mockito thenAnswer を lambda で

先日書いた、 JUnit mockito の return を遅らせたい(時間を掛けたい) - Oboe吹きプログラマの黙示録よく考えたら thenAnswer は、lambda で書けましたね。。 Mockito.when(foo.getAgent(Mockito.contains("a"))).thenAnswer(new Answer<String>() { @Override pub</string>…