Skip to content

Commit de7335a

Browse files
Fix generatedLanguage switch in all plugins #572 (#577)
* #572 * add default * optimize code
1 parent 8cdb023 commit de7335a

File tree

3 files changed

+34
-62
lines changed

3 files changed

+34
-62
lines changed

Diff for: plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

+14-29
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@
33
import com.kobylynskyi.graphql.codegen.GraphQLCodegen;
44
import com.kobylynskyi.graphql.codegen.java.JavaGraphQLCodegen;
55
import com.kobylynskyi.graphql.codegen.kotlin.KotlinGraphQLCodegen;
6-
import com.kobylynskyi.graphql.codegen.model.ApiInterfaceStrategy;
7-
import com.kobylynskyi.graphql.codegen.model.ApiNamePrefixStrategy;
8-
import com.kobylynskyi.graphql.codegen.model.ApiRootInterfaceStrategy;
9-
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage;
10-
import com.kobylynskyi.graphql.codegen.model.GraphQLCodegenConfiguration;
11-
import com.kobylynskyi.graphql.codegen.model.MappingConfig;
12-
import com.kobylynskyi.graphql.codegen.model.MappingConfigConstants;
6+
import com.kobylynskyi.graphql.codegen.model.*;
137
import com.kobylynskyi.graphql.codegen.model.exception.LanguageNotSupportedException;
148
import com.kobylynskyi.graphql.codegen.scala.ScalaGraphQLCodegen;
159
import com.kobylynskyi.graphql.codegen.supplier.JsonMappingConfigSupplier;
@@ -18,26 +12,15 @@
1812
import org.gradle.api.Action;
1913
import org.gradle.api.DefaultTask;
2014
import org.gradle.api.plugins.JavaPluginConvention;
21-
import org.gradle.api.tasks.Input;
22-
import org.gradle.api.tasks.InputFile;
23-
import org.gradle.api.tasks.InputFiles;
24-
import org.gradle.api.tasks.Internal;
25-
import org.gradle.api.tasks.Nested;
2615
import org.gradle.api.tasks.Optional;
27-
import org.gradle.api.tasks.OutputDirectory;
28-
import org.gradle.api.tasks.SourceSet;
29-
import org.gradle.api.tasks.TaskAction;
16+
import org.gradle.api.tasks.*;
3017

3118
import java.io.File;
3219
import java.io.IOException;
3320
import java.nio.file.Path;
3421
import java.nio.file.Paths;
35-
import java.util.Collections;
36-
import java.util.HashMap;
37-
import java.util.HashSet;
38-
import java.util.List;
39-
import java.util.Map;
40-
import java.util.Set;
22+
import java.util.*;
23+
import java.util.function.Supplier;
4124

4225
/**
4326
* Gradle task for GraphQL code generation
@@ -163,15 +146,17 @@ public void generate() throws Exception {
163146
}
164147

165148
private GraphQLCodegen instantiateCodegen(MappingConfig mappingConfig) throws IOException {
166-
switch (generatedLanguage) {
149+
java.util.Optional<MappingConfigSupplier> mappingConfigSupplier = buildJsonSupplier();
150+
GeneratedLanguage language = mappingConfigSupplier.map(Supplier::get).map(MappingConfig::getGeneratedLanguage).orElse(generatedLanguage);
151+
switch (language) {
167152
case JAVA:
168-
return new JavaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier());
153+
return new JavaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
169154
case SCALA:
170-
return new ScalaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier());
155+
return new ScalaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
171156
case KOTLIN:
172-
return new KotlinGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier());
157+
return new KotlinGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
173158
default:
174-
throw new LanguageNotSupportedException(generatedLanguage);
159+
throw new LanguageNotSupportedException(language);
175160
}
176161
}
177162

@@ -216,11 +201,11 @@ private java.util.Optional<Path> findDefaultResourcesDir() {
216201
.map(File::toPath);
217202
}
218203

219-
private MappingConfigSupplier buildJsonSupplier() {
204+
private java.util.Optional<MappingConfigSupplier> buildJsonSupplier() {
220205
if (jsonConfigurationFile != null && !jsonConfigurationFile.isEmpty()) {
221-
return new JsonMappingConfigSupplier(jsonConfigurationFile);
206+
return java.util.Optional.of(new JsonMappingConfigSupplier(jsonConfigurationFile));
222207
}
223-
return null;
208+
return java.util.Optional.empty();
224209
}
225210

226211
@InputFiles

Diff for: plugins/maven/graphql-java-codegen-maven-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/GraphQLCodegenMojo.java

+13-27
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,7 @@
33
import com.kobylynskyi.graphql.codegen.GraphQLCodegen;
44
import com.kobylynskyi.graphql.codegen.java.JavaGraphQLCodegen;
55
import com.kobylynskyi.graphql.codegen.kotlin.KotlinGraphQLCodegen;
6-
import com.kobylynskyi.graphql.codegen.model.ApiInterfaceStrategy;
7-
import com.kobylynskyi.graphql.codegen.model.ApiNamePrefixStrategy;
8-
import com.kobylynskyi.graphql.codegen.model.ApiRootInterfaceStrategy;
9-
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage;
10-
import com.kobylynskyi.graphql.codegen.model.GraphQLCodegenConfiguration;
11-
import com.kobylynskyi.graphql.codegen.model.MappingConfig;
12-
import com.kobylynskyi.graphql.codegen.model.MappingConfigConstants;
13-
import com.kobylynskyi.graphql.codegen.model.RelayConfig;
6+
import com.kobylynskyi.graphql.codegen.model.*;
147
import com.kobylynskyi.graphql.codegen.model.exception.LanguageNotSupportedException;
158
import com.kobylynskyi.graphql.codegen.scala.ScalaGraphQLCodegen;
169
import com.kobylynskyi.graphql.codegen.supplier.JsonMappingConfigSupplier;
@@ -28,17 +21,8 @@
2821
import java.io.IOException;
2922
import java.nio.file.Path;
3023
import java.nio.file.Paths;
31-
import java.util.ArrayList;
32-
import java.util.Arrays;
33-
import java.util.Collection;
34-
import java.util.Collections;
35-
import java.util.HashMap;
36-
import java.util.HashSet;
37-
import java.util.List;
38-
import java.util.Map;
39-
import java.util.Optional;
40-
import java.util.Properties;
41-
import java.util.Set;
24+
import java.util.*;
25+
import java.util.function.Supplier;
4226

4327
@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true)
4428
public class GraphQLCodegenMojo extends AbstractMojo implements GraphQLCodegenConfiguration {
@@ -261,15 +245,17 @@ public void execute() throws MojoExecutionException {
261245
}
262246

263247
private GraphQLCodegen instantiateCodegen(MappingConfig mappingConfig) throws IOException {
264-
switch (generatedLanguage) {
248+
java.util.Optional<MappingConfigSupplier> mappingConfigSupplier = buildJsonSupplier(jsonConfigurationFile);
249+
GeneratedLanguage language = mappingConfigSupplier.map(Supplier::get).map(MappingConfig::getGeneratedLanguage).orElse(generatedLanguage);
250+
switch (language) {
265251
case JAVA:
266-
return new JavaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier(jsonConfigurationFile));
252+
return new JavaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
267253
case SCALA:
268-
return new ScalaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier(jsonConfigurationFile));
254+
return new ScalaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
269255
case KOTLIN:
270-
return new KotlinGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier(jsonConfigurationFile));
256+
return new KotlinGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
271257
default:
272-
throw new LanguageNotSupportedException(generatedLanguage);
258+
throw new LanguageNotSupportedException(language);
273259
}
274260
}
275261

@@ -301,11 +287,11 @@ private Optional<Path> getDefaultResourcesDirectory() {
301287
return project.getResources().stream().findFirst().map(Resource::getDirectory).map(Paths::get);
302288
}
303289

304-
private MappingConfigSupplier buildJsonSupplier(String jsonConfigurationFile) {
290+
private java.util.Optional<MappingConfigSupplier> buildJsonSupplier(String jsonConfigurationFile) {
305291
if (jsonConfigurationFile != null && !jsonConfigurationFile.isEmpty()) {
306-
return new JsonMappingConfigSupplier(jsonConfigurationFile);
292+
return java.util.Optional.of(new JsonMappingConfigSupplier(jsonConfigurationFile));
307293
}
308-
return null;
294+
return java.util.Optional.empty();
309295
}
310296

311297
private void addCompileSourceRootIfConfigured() {

Diff for: plugins/sbt/graphql-java-codegen-sbt-plugin/src/main/scala/io/github/dreamylost/graphql/codegen/GraphQLCodegenPlugin.scala

+7-6
Original file line numberDiff line numberDiff line change
@@ -202,18 +202,19 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co
202202
}, graphqlCodegen := {
203203
sLog.value.info(s"Generating files: ${BuildInfo.toString}")
204204
val mappingConfigSupplier = buildJsonSupplier(jsonConfigurationFile.value.orNull)
205+
val language = mappingConfigSupplier.map(_.get()).map(_.getGeneratedLanguage).getOrElse(generatedLanguage.value)
205206
var result = Seq.empty[File]
206207
try {
207208
val _outputDir = outputDir.value
208209
val _introspectionResult = graphqlQueryIntrospectionResultPath.value.orNull
209210
lazy val instantiateCodegen = (mappingConfig: MappingConfig) => {
210-
generatedLanguage.value match {
211+
language match {
211212
case JAVA =>
212-
new JavaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier)
213+
new JavaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier.orNull)
213214
case SCALA =>
214-
new ScalaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier)
215+
new ScalaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier.orNull)
215216
case _ =>
216-
throw new LanguageNotSupportedException(generatedLanguage.value)
217+
throw new LanguageNotSupportedException(language)
217218
}
218219
}
219220
result = instantiateCodegen(getMappingConfig().value).generate.asScala
@@ -274,9 +275,9 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co
274275
) ++ watchSourcesSetting ++ Seq(cleanFiles += generateCodegenTargetPath.value)
275276
}
276277

277-
protected def buildJsonSupplier(jsonConfigurationFile: String): JsonMappingConfigSupplier = {
278+
protected def buildJsonSupplier(jsonConfigurationFile: String): Option[JsonMappingConfigSupplier] = {
278279
if (jsonConfigurationFile != null && jsonConfigurationFile.nonEmpty)
279-
new JsonMappingConfigSupplier(jsonConfigurationFile) else null
280+
Some(new JsonMappingConfigSupplier(jsonConfigurationFile)) else None
280281
}
281282

282283
}

0 commit comments

Comments
 (0)