From ba51989b8f3fb725a77f2266be1fb3678fc3db52 Mon Sep 17 00:00:00 2001 From: KV Date: Wed, 1 Apr 2020 11:40:13 -0400 Subject: [PATCH] Add version to the schema Other changes: - Bump up the JDK version for CI to pass - Bump up the bundler version for CI to pass --- .travis.yml | 4 ++-- README.md | 2 ++ Rakefile | 2 ++ codegen/lib/graphql_java_gen.rb | 10 ++++++++-- .../lib/graphql_java_gen/templates/APISchema.java.erb | 2 ++ codegen/lib/graphql_java_gen/templates/Schema.java.erb | 7 +++++++ codegen/test/graphql_java_gen_test.rb | 6 +++--- graphql_java_gen.gemspec | 2 +- .../java/com/shopify/graphql/support/Generated.java | 2 ++ .../com/shopify/graphql/support/GeneratedMinimal.java | 2 ++ 10 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 codegen/lib/graphql_java_gen/templates/Schema.java.erb diff --git a/.travis.yml b/.travis.yml index 38ba69e..18e5be3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,10 @@ sudo: false language: ruby -before_install: gem install bundler -v 1.14.3 +before_install: gem install bundler -v 2.1.2 rvm: - 2.3.3 jdk: - - oraclejdk8 + - oraclejdk9 # https://docs.travis-ci.com/user/languages/java/#Caching # recommends adding this for the gradle cache diff --git a/README.md b/README.md index 16926ca..bf1b800 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ schema = GraphQLSchema.new(JSON.parse(introspection_result)) GraphQLJavaGen.new(schema, package_name: "com.example.MyApp", nest_under: 'ExampleSchema', + version: '2020-01', custom_scalars: [ GraphQLJavaGen::Scalar.new( type_name: 'Decimal', @@ -76,6 +77,7 @@ schema = GraphQLSchema.new(JSON.parse(introspection_result)) GraphQLJavaGen.new(schema, package_name: "com.example.MyApp", nest_under: 'ExampleSchema', + version: '2020-01', custom_scalars: [ GraphQLJavaGen::Scalar.new( type_name: 'Decimal', diff --git a/Rakefile b/Rakefile index a9b8b28..3460b6d 100644 --- a/Rakefile +++ b/Rakefile @@ -18,6 +18,7 @@ task :generate do GraphQLSchema.new(Support::Schema.introspection_result), package_name: 'com.shopify.graphql.support', nest_under: 'Generated', + version: '2020-01', custom_scalars: [ GraphQLJavaGen::Scalar.new( type_name: 'Time', @@ -38,6 +39,7 @@ task :generate do GraphQLSchema.new(Support::Schema.introspection_result(Support::Schema::MinimalSchema)), package_name: 'com.shopify.graphql.support', nest_under: 'GeneratedMinimal', + version: '2020-01' ).save('support/src/test/java/com/shopify/graphql/support/GeneratedMinimal.java') end diff --git a/codegen/lib/graphql_java_gen.rb b/codegen/lib/graphql_java_gen.rb index 98fe545..887abc1 100644 --- a/codegen/lib/graphql_java_gen.rb +++ b/codegen/lib/graphql_java_gen.rb @@ -7,11 +7,11 @@ require 'set' class GraphQLJavaGen - attr_reader :schema, :package_name, :scalars, :imports, :script_name, :schema_name, :include_deprecated + attr_reader :schema, :package_name, :scalars, :imports, :script_name, :schema_name, :include_deprecated, :version def initialize(schema, package_name:, nest_under:, script_name: 'graphql_java_gen gem', - custom_scalars: [], custom_annotations: [], include_deprecated: false + custom_scalars: [], custom_annotations: [], include_deprecated: false, version: '' ) @schema = schema @schema_name = nest_under @@ -22,6 +22,7 @@ def initialize(schema, @annotations = custom_annotations @imports = (@scalars.values.map(&:imports) + @annotations.map(&:imports)).flatten.sort.uniq @include_deprecated = include_deprecated + @version = version end def save(path) @@ -29,6 +30,7 @@ def save(path) end def save_granular(path) + write_schema(path) write_static_methods(path) write_response(path, :query, schema.query_root_name) write_response(path, :mutation, schema.mutation_root_name) @@ -66,6 +68,10 @@ def generate_entity(template, type) reformat(erb_template.result(binding)) end + def write_schema(path) + File.write(path + "/Schema.java", reformat(erb_for_entity("Schema.java").result(binding))) + end + def write_static_methods(path) File.write(path + "/Operations.java", reformat(erb_for_entity("Operations.java").result(binding))) end diff --git a/codegen/lib/graphql_java_gen/templates/APISchema.java.erb b/codegen/lib/graphql_java_gen/templates/APISchema.java.erb index ced892e..ef2c59a 100644 --- a/codegen/lib/graphql_java_gen/templates/APISchema.java.erb +++ b/codegen/lib/graphql_java_gen/templates/APISchema.java.erb @@ -23,6 +23,8 @@ import java.util.List; import java.util.Map; public class <%= schema_name %> { + public static final String API_VERSION = "<%= version %>"; + <% [[:query, schema.query_root_name], [:mutation, schema.mutation_root_name]].each do |operation_type, root_name| %> <% next unless root_name %> public static <%= root_name %>Query <%= operation_type %>(<%= root_name %>QueryDefinition queryDef) { diff --git a/codegen/lib/graphql_java_gen/templates/Schema.java.erb b/codegen/lib/graphql_java_gen/templates/Schema.java.erb new file mode 100644 index 0000000..cd51f0b --- /dev/null +++ b/codegen/lib/graphql_java_gen/templates/Schema.java.erb @@ -0,0 +1,7 @@ +// Generated from <%= script_name %> + +package <%= package_name %>; + +public class Schema { + public static String VERSION = "<%= version %>"; +} \ No newline at end of file diff --git a/codegen/test/graphql_java_gen_test.rb b/codegen/test/graphql_java_gen_test.rb index bb26abc..1c99e45 100644 --- a/codegen/test/graphql_java_gen_test.rb +++ b/codegen/test/graphql_java_gen_test.rb @@ -6,17 +6,17 @@ def test_that_it_has_a_version_number end def test_default_script_name - output = GraphQLJavaGen.new(MINIMAL_SCHEMA, **required_args).generate + output = GraphQLJavaGen.new(MINIMAL_SCHEMA, version: '2020-01', **required_args).generate assert_match %r{\A// Generated from graphql_java_gen gem$}, output end def test_script_name_option - output = GraphQLJavaGen.new(MINIMAL_SCHEMA, script_name: 'script/update_schema', **required_args).generate + output = GraphQLJavaGen.new(MINIMAL_SCHEMA, script_name: 'script/update_schema', version: '2020-01', **required_args).generate assert_match %r{\A// Generated from script/update_schema$}, output end def test_generate - refute_empty GraphQLJavaGen.new(LARGER_SCHEMA, **required_args).generate + refute_empty GraphQLJavaGen.new(LARGER_SCHEMA, version: '2020-01', **required_args).generate end private diff --git a/graphql_java_gen.gemspec b/graphql_java_gen.gemspec index 4e9323c..bd72687 100644 --- a/graphql_java_gen.gemspec +++ b/graphql_java_gen.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |spec| spec.add_dependency "graphql_schema", "~> 0.1.1" - spec.add_development_dependency "bundler", "~> 1.14" + spec.add_development_dependency "bundler", "~> 2.1" spec.add_development_dependency "rake", "~> 12.0" spec.add_development_dependency "minitest", "~> 5.10" spec.add_development_dependency "graphql", "~> 1.3" diff --git a/support/src/test/java/com/shopify/graphql/support/Generated.java b/support/src/test/java/com/shopify/graphql/support/Generated.java index c556d5b..95f79ef 100644 --- a/support/src/test/java/com/shopify/graphql/support/Generated.java +++ b/support/src/test/java/com/shopify/graphql/support/Generated.java @@ -26,6 +26,8 @@ import java.util.Map; public class Generated { + public static final String API_VERSION = "2020-01"; + public static QueryRootQuery query(QueryRootQueryDefinition queryDef) { StringBuilder queryString = new StringBuilder("{"); QueryRootQuery query = new QueryRootQuery(queryString); diff --git a/support/src/test/java/com/shopify/graphql/support/GeneratedMinimal.java b/support/src/test/java/com/shopify/graphql/support/GeneratedMinimal.java index 6e61b5a..db2a4e7 100644 --- a/support/src/test/java/com/shopify/graphql/support/GeneratedMinimal.java +++ b/support/src/test/java/com/shopify/graphql/support/GeneratedMinimal.java @@ -22,6 +22,8 @@ import java.util.Map; public class GeneratedMinimal { + public static final String API_VERSION = "2020-01"; + public static QueryRootQuery query(QueryRootQueryDefinition queryDef) { StringBuilder queryString = new StringBuilder("{"); QueryRootQuery query = new QueryRootQuery(queryString);