アンインストール方法に迷ったのでメモ。 環境はmacOS FInder → 移動 → ユーティリティ → Adobe Installers → Uninstall Adobe Creative Cloud
Golangで文字列数値をカンマ区切りにするメモ。 カンマ区切りにするために dustin/go-humanize を使用する。 s := "10000" i, _ := strconv.Atoi(s) // 文字列を数値にする c := humanize.Comma(int64(i)) // int64に変換して、カンマ区切りにする fmt.Print…
Kotlin Spring Boot 2.0.4 Thymeleaf Spring Bootで、Imgタグに表示する画像をByte配列を返すには、ResponseEntityを使用する。 Controllerの実装 @GetMapping("image") fun image(): ResponseEntity<ByteArray> { val bytes = .. // 画像のByte配列を取得 return Respo</bytearray>…
KotlinでJacksonを使用して、JSONからリストを作成するのにハマったのでメモ。 import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue class Foo { fun bar() { val mapper = jacksonObjec…
Welcom画面で Create New Project を選択する。 左ペインから Spring Initilaizr を選択して、Nextボタンを押す。 各種プロジェクト情報を入力する。 Dependenciesを設定する。 プロジェクト名を入力して、完了。
Spring Bootのユニットテストでセッションスコープのテストをしたいときに MockHttpSession を使用することでモックデータを作成ができる。 MockHttpSession session = new MockHttpSession(); session.setAttribute("key", "value"); MockHttpServletReques…
BeforeMappingとAfterMappingでマッピング前後の処理を追加できる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapperの作成 @Mapper public abstract class PersonMapper { @BeforeMapping protected void before(PersonEntity …
Decoratorを使うことでマッピングをカスタマイズすることができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapperの作成 @DecoratedWith にDecoratorクラスを指定する。 @Mapper @DecoratedWith(PersonMapperDecorator.class…
@MappingConfig でMapperの共通設定をするConfigクラスを作成できる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Configクラスの作成 @MapperConfig(unmappedTargetPolicy = ReportingPolicy.IGNORE , nullValueMappingStrategy …
@InheritConfiguration または @InheritInverseConfiguration を使うことでマッピングを継承することができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapperの作成 @Mapper public interface PersonMapper { PersonMapper M…
Expressionを使うことで、任意のJavaコードをマッピングの際に実行できる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapperの作成 expression に実行したいJavaコードを記述する。その際、 java() で囲む。 @Mapper public int…
マッピングする値がnullの場合のデフォルト値と定数の設定ができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapperの作成 デフォルト値は defaultValu, 定数は constant に指定する。 @Mapper public interface DefaultConst…
Object Factoryを使って、マッピングするオブジェクトを生成することができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Object Factoryの作成 public class StudentFactory { public Student createStudent() { Student stude…
Enumを違う型のEnumに変換することができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapperの作成 @ValueMapping でマッピングする識別子を指定する。 @Mapper public interface SizeMapper { SizeMapper MAPPER = Mappers.g…
@Qualifier を使うことでアノテーションで独自の変換処理を追加することができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 変換するクラスを用意する public class Characters { public String upperCase(String string) { re…
@Context パラメータを使用して、独自のカスタムメソッドを使用することができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapper @Mapper public interface ContextMapper { ContextMapper MAPPER = Mappers.getMapper(Conte…
独自にマッピングロジックを指定したいときに、独自のMapperを用意して使うことができる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 LocalDate <-> String 変換を行うMapper public class DateMapper { public String asString(…
ネストされた参照型クラスのマッピングメソッドがある場合は、自動的にネストしているクラスのマッピングでそのマッピングが使用される。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 Mapper StudentにネストされているPersonのマ…
Spring Test DBUnitで @DatabaseSetup を使用してテストデータを投入する際に、対象のテーブルにJSONカラムが存在すると失敗するが、PostgresqlDataTypeFactoryを拡張することで投入できるようになる。 環境 Spring Boot 1.4.1 Spring Boot Test Starter Spr…
今回は暗黙的な型変換についてまとめる。 異なる型のフィールドにマッピングする際に暗黙的な型変換が行われる。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 使用するBean public class Dto { private int intValue; private long…
Mapperのコンポーネントモデルを指定することができる。 今回はSpring FrameworkでDIできるようにする。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 @Mapper のcomponentModel属性を使う @Mapper のcomponentModel属性に spring …
基本編。 環境 MapStruct : 1.2.0.Final Java : 9 JUnit : 4.12 AssertJ : 3.9.1 使用するBean public class Person { private String name; private int age; // constructor/getter/setter } public class PersonEntity { private String name; private in…
定義 Haskellのリストは要素をカンマ区切りで並べ大括弧で囲む。 同じ型の要素しか格納できない。 haskell> [1, 2, 3] [1,2,3] ネスト リストの中にリストを定義することができる。 haskell> [[1, 2], [3]] [[1,2],[3]] 次元は揃える必要がある。エラーとな…
環境はmacOS (10.13.3) インストール Homebrewを使用して、Haskell-Platformをインストールする。 $ brew cask install haskell-platform Hello world インストールが終わったら、ターミナルで ghci とタイプしGHC*1の対話モードを起動する。 $ ghci GHCi, v…
以下のバージョンを使用 PowerMock:1.7.3 Mockito:2.8.9 // モック化するクラス public class StaticFoo { public static String staticMethod() { return "bar"; } } // テストケース @RunWith(PowerMockRunner.class) // 1 @PrepareForTest(StaticFoo.clas…
Java9でinterfaceクラスにprivateメソッドを定義できるようになった。 interface Foo { private String bar() { return "bar"; } // オーバーロードもOK private String bar(String baz) { return baz; } // staticメソッドもOK private static void qux() {…
Java9ではtry-with-resource文で、try句でのリソースの変数を宣言しなくてもよくなった。 FileInputStream is = new FileInputStream("foo"); try (is) { // omit } catch (Exception e) { } // Java8 try (FileInputStream is = new FileInputStream("foo")…
Java9からアンダースコア1つを識別子として使えなくなった。 // NG String _ = "Foo"; // 2つならOK String __ = "Foo"; Java18から引数が1つのラムダ式のみで使えるようにするためらしい。 _ -> foo()
Java9で匿名クラスにダイヤモンド演算子が使えるようになった。 List<String> list = new ArrayList<>() {}; // Java8だとパラメータの型を明示的に指定する必要がある List<String> list = new ArrayList<String>() {};</string></string></string>
Java9の新機能を試す。今回はStream APIの追加メソッド。 takeWhile(Predicate predicate) predicateのtestメソッドがtrueを返すまで要素を取得する。 // 1, 2を出力 List.of(1, 2, 3, 4, 5).stream() .takeWhile(i -> i != 3).forEach(System.out::println)…