Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,7 @@
import com.kobylynskyi.graphql.codegen.GraphQLCodegen;
import com.kobylynskyi.graphql.codegen.java.JavaGraphQLCodegen;
import com.kobylynskyi.graphql.codegen.kotlin.KotlinGraphQLCodegen;
import com.kobylynskyi.graphql.codegen.model.ApiInterfaceStrategy;
import com.kobylynskyi.graphql.codegen.model.ApiNamePrefixStrategy;
import com.kobylynskyi.graphql.codegen.model.ApiRootInterfaceStrategy;
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage;
import com.kobylynskyi.graphql.codegen.model.GraphQLCodegenConfiguration;
import com.kobylynskyi.graphql.codegen.model.MappingConfig;
import com.kobylynskyi.graphql.codegen.model.MappingConfigConstants;
import com.kobylynskyi.graphql.codegen.model.*;
import com.kobylynskyi.graphql.codegen.model.exception.LanguageNotSupportedException;
import com.kobylynskyi.graphql.codegen.scala.ScalaGraphQLCodegen;
import com.kobylynskyi.graphql.codegen.supplier.JsonMappingConfigSupplier;
Expand All @@ -18,26 +12,15 @@
import org.gradle.api.Action;
import org.gradle.api.DefaultTask;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.Nested;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.*;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.function.Supplier;

/**
* Gradle task for GraphQL code generation
Expand Down Expand Up @@ -163,15 +146,17 @@ public void generate() throws Exception {
}

private GraphQLCodegen instantiateCodegen(MappingConfig mappingConfig) throws IOException {
switch (generatedLanguage) {
java.util.Optional<MappingConfigSupplier> mappingConfigSupplier = buildJsonSupplier();
GeneratedLanguage language = mappingConfigSupplier.map(Supplier::get).map(MappingConfig::getGeneratedLanguage).orElse(generatedLanguage);
switch (language) {
case JAVA:
return new JavaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier());
return new JavaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
case SCALA:
return new ScalaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier());
return new ScalaGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
case KOTLIN:
return new KotlinGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier());
return new KotlinGraphQLCodegen(getActualSchemaPaths(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
default:
throw new LanguageNotSupportedException(generatedLanguage);
throw new LanguageNotSupportedException(language);
}
}

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

private MappingConfigSupplier buildJsonSupplier() {
private java.util.Optional<MappingConfigSupplier> buildJsonSupplier() {
if (jsonConfigurationFile != null && !jsonConfigurationFile.isEmpty()) {
return new JsonMappingConfigSupplier(jsonConfigurationFile);
return java.util.Optional.of(new JsonMappingConfigSupplier(jsonConfigurationFile));
}
return null;
return java.util.Optional.empty();
}

@InputFiles
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,7 @@
import com.kobylynskyi.graphql.codegen.GraphQLCodegen;
import com.kobylynskyi.graphql.codegen.java.JavaGraphQLCodegen;
import com.kobylynskyi.graphql.codegen.kotlin.KotlinGraphQLCodegen;
import com.kobylynskyi.graphql.codegen.model.ApiInterfaceStrategy;
import com.kobylynskyi.graphql.codegen.model.ApiNamePrefixStrategy;
import com.kobylynskyi.graphql.codegen.model.ApiRootInterfaceStrategy;
import com.kobylynskyi.graphql.codegen.model.GeneratedLanguage;
import com.kobylynskyi.graphql.codegen.model.GraphQLCodegenConfiguration;
import com.kobylynskyi.graphql.codegen.model.MappingConfig;
import com.kobylynskyi.graphql.codegen.model.MappingConfigConstants;
import com.kobylynskyi.graphql.codegen.model.RelayConfig;
import com.kobylynskyi.graphql.codegen.model.*;
import com.kobylynskyi.graphql.codegen.model.exception.LanguageNotSupportedException;
import com.kobylynskyi.graphql.codegen.scala.ScalaGraphQLCodegen;
import com.kobylynskyi.graphql.codegen.supplier.JsonMappingConfigSupplier;
Expand All @@ -28,17 +21,8 @@
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.Set;
import java.util.*;
import java.util.function.Supplier;

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

private GraphQLCodegen instantiateCodegen(MappingConfig mappingConfig) throws IOException {
switch (generatedLanguage) {
java.util.Optional<MappingConfigSupplier> mappingConfigSupplier = buildJsonSupplier(jsonConfigurationFile);
GeneratedLanguage language = mappingConfigSupplier.map(Supplier::get).map(MappingConfig::getGeneratedLanguage).orElse(generatedLanguage);
switch (language) {
case JAVA:
return new JavaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier(jsonConfigurationFile));
return new JavaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
case SCALA:
return new ScalaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier(jsonConfigurationFile));
return new ScalaGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
case KOTLIN:
return new KotlinGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, buildJsonSupplier(jsonConfigurationFile));
return new KotlinGraphQLCodegen(getSchemas(), graphqlQueryIntrospectionResultPath, outputDir, mappingConfig, mappingConfigSupplier.orElse(null));
default:
throw new LanguageNotSupportedException(generatedLanguage);
throw new LanguageNotSupportedException(language);
}
}

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

private MappingConfigSupplier buildJsonSupplier(String jsonConfigurationFile) {
private java.util.Optional<MappingConfigSupplier> buildJsonSupplier(String jsonConfigurationFile) {
if (jsonConfigurationFile != null && !jsonConfigurationFile.isEmpty()) {
return new JsonMappingConfigSupplier(jsonConfigurationFile);
return java.util.Optional.of(new JsonMappingConfigSupplier(jsonConfigurationFile));
}
return null;
return java.util.Optional.empty();
}

private void addCompileSourceRootIfConfigured() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,18 +202,19 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co
}, graphqlCodegen := {
sLog.value.info(s"Generating files: ${BuildInfo.toString}")
val mappingConfigSupplier = buildJsonSupplier(jsonConfigurationFile.value.orNull)
val language = mappingConfigSupplier.map(_.get()).map(_.getGeneratedLanguage).getOrElse(generatedLanguage.value)
var result = Seq.empty[File]
try {
val _outputDir = outputDir.value
val _introspectionResult = graphqlQueryIntrospectionResultPath.value.orNull
lazy val instantiateCodegen = (mappingConfig: MappingConfig) => {
generatedLanguage.value match {
language match {
case JAVA =>
new JavaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier)
new JavaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier.orNull)
case SCALA =>
new ScalaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier)
new ScalaGraphQLCodegen(getSchemas(), _introspectionResult, _outputDir, mappingConfig, mappingConfigSupplier.orNull)
case _ =>
throw new LanguageNotSupportedException(generatedLanguage.value)
throw new LanguageNotSupportedException(language)
}
}
result = instantiateCodegen(getMappingConfig().value).generate.asScala
Expand Down Expand Up @@ -274,9 +275,9 @@ class GraphQLCodegenPlugin(configuration: Configuration, private[codegen] val co
) ++ watchSourcesSetting ++ Seq(cleanFiles += generateCodegenTargetPath.value)
}

protected def buildJsonSupplier(jsonConfigurationFile: String): JsonMappingConfigSupplier = {
protected def buildJsonSupplier(jsonConfigurationFile: String): Option[JsonMappingConfigSupplier] = {
if (jsonConfigurationFile != null && jsonConfigurationFile.nonEmpty)
new JsonMappingConfigSupplier(jsonConfigurationFile) else null
Some(new JsonMappingConfigSupplier(jsonConfigurationFile)) else None
}

}