package Ġcom . rame sh kp . json 2 java . gradle Ċ Ċ import Ġorg . gradle . api . Named Domain Object Container Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . file . Source Directory Set Ċ import Ġorg . gradle . api . plugins . Java Base Plugin Ċ import Ġorg . gradle . api . tasks . Source Set Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġorg . gradle . kotlin . dsl . get Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ", Ġ" Un stable Api Usage ", Ġ" unused ") Ċ open Ġclass ĠJson 2 Java Gradle Plugin : ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema Source Set Ġ= Ġconfigure Json Source Set ( project ) ĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġthe Ġextension Ġand Ġthe Ġtask ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġproject . extensions . create (" json 2 Java ", ĠJson 2 Java Gradle Extension :: class . java , Ġproject . objects ) ĊĠĠĠĠĠĠĠ Ġval Ġjson 2 Java Task Ġ= Ġproject . tasks . register (" json 2 Java ", ĠJson 2 Java Converter Task :: class . java , Ġextension , Ġschema Source Set ) ĊĠĠĠĠĠĠĠ Ġconfigure Outputs ( project , Ġextension , Ġjson 2 Java Task ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Json Source Set ( project : ĠProject ): ĠSource Directory Set Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . plugin Manager . apply ( Java Base Plugin :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Set Container Ġ= Ġproject . extensions [" source Sets "] Ġas ĠNamed Domain Object Container < Source Set > ĊĠĠĠĠĠĠĠ Ġval Ġmain Json 2 Java Source Set Ġ= Ġsource Set Container . create (" json 2 java ") ĊĠĠĠĠĠĠĠ Ġval Ġschema Source Directory Set Ġ= Ġproject . objects . source Directory Set (" schema ", Ġ" json 2 java Ġschema Ġsources ") ĊĠĠĠĠĠĠĠ Ġmain Json 2 Java Source Set . extensions . add (" schema ", Ġschema Source Directory Set ) ĊĊĠĠĠĠĠĠĠ Ġschema Source Directory Set . src Dir (" src / json 2 java / schema ") ĊĠĠĠĠĠĠĠ Ġmain Json 2 Java Source Set . all Java . set Src Dirs ( schema Source Directory Set . src Dirs ) ĊĠĠĠĠĠĠĠ Ġmain Json 2 Java Source Set . all Source . set Src Dirs ( schema Source Directory Set . src Dirs ) ĊĠĠĠĠĠĠĠ Ġmain Json 2 Java Source Set . all Source . source ( schema Source Directory Set ) ĊĠĠĠĠĠĠĠ Ġmain Json 2 Java Source Set . all Java . source ( schema Source Directory Set ) ĊĠĠĠĠĠĠĠ Ġreturn Ġschema Source Directory Set ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Outputs ( project : ĠProject , Ġextension : ĠJson 2 Java Gradle Extension , Ġjson 2 Java Converter Task : ĠTask Provider < Json 2 Java Converter Task >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Set Container Ġ= Ġproject . extensions [" source Sets "] Ġas ĠNamed Domain Object Container < Source Set > ĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġthe Ġoutput ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! extension . output Dir . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension . output Dir . set ( file ("${ project . build Dir }/ generated - sources / json 2 java ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( project . plugin Manager . has Plugin (" java ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Set Container [" main "]. java . src Dir ( extension . output Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtasks . named (" compile Java ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( json 2 Java Converter Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }