diff --git a/apm-protocol/apm-ui-protocol/README.md b/apm-protocol/apm-ui-protocol/README.md deleted file mode 100644 index f58f1ea6d..000000000 --- a/apm-protocol/apm-ui-protocol/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Using graphiql - -Graphiql */ˈɡrafək(ə)l/* is interactive in-browser GraphQL IDE which can be used by following steps. - - 1. Run `org.apache.skywalking.apm.ui.protocol.GraphQLInitializer#main` - 1. Access [http://localhost:8080/graphiql](http://localhost:8080/graphiql) diff --git a/apm-protocol/apm-ui-protocol/pom.xml b/apm-protocol/apm-ui-protocol/pom.xml index ab829decd..0e7e75784 100644 --- a/apm-protocol/apm-ui-protocol/pom.xml +++ b/apm-protocol/apm-ui-protocol/pom.xml @@ -30,37 +30,10 @@ apm-ui-protocol - - org.springframework.boot - spring-boot-starter-web - 1.5.9.RELEASE - - - org.springframework.boot - spring-boot-starter-actuator - 1.5.9.RELEASE - - - org.springframework.boot - spring-boot-configuration-processor - 1.5.9.RELEASE - - - org.springframework.boot - spring-boot-devtools - 1.5.9.RELEASE - - - com.graphql-java - graphql-spring-boot-starter - 3.9.2 - - - com.graphql-java - graphiql-spring-boot-starter - 3.9.2 + graphql-java + 6.0 diff --git a/apm-protocol/apm-ui-protocol/src/main/java/org/apache/skywalking/apm/ui/protocol/GraphQLInitializer.java b/apm-protocol/apm-ui-protocol/src/main/java/org/apache/skywalking/apm/ui/protocol/GraphQLInitializer.java deleted file mode 100644 index 934c06786..000000000 --- a/apm-protocol/apm-ui-protocol/src/main/java/org/apache/skywalking/apm/ui/protocol/GraphQLInitializer.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.apache.skywalking.apm.ui.protocol; - -import graphql.schema.GraphQLObjectType; -import graphql.schema.GraphQLSchema; -import graphql.schema.TypeResolver; -import graphql.schema.idl.FieldWiringEnvironment; -import graphql.schema.idl.InterfaceWiringEnvironment; -import graphql.schema.idl.RuntimeWiring; -import graphql.schema.idl.SchemaGenerator; -import graphql.schema.idl.SchemaParser; -import graphql.schema.idl.TypeDefinitionRegistry; -import graphql.schema.idl.WiringFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.support.SpringBootServletInitializer; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; - -import java.io.File; - -/** - * GraphQL server initializer. - * - * @author gaohongtao - */ -@SpringBootApplication -public class GraphQLInitializer extends SpringBootServletInitializer { - - private Logger logger = LoggerFactory.getLogger(GraphQLInitializer.class); - - public static void main(String[] args) throws Exception { - ApplicationContext applicationContext = SpringApplication.run(GraphQLInitializer.class, args); - } - - @Bean - GraphQLSchema schema() { - SchemaParser schemaParser = new SchemaParser(); - SchemaGenerator schemaGenerator = new SchemaGenerator(); - - TypeDefinitionRegistry typeRegistry = new TypeDefinitionRegistry(); - typeRegistry.merge(schemaParser.parse(loadSchema("common.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("trace.graphqls"))); - typeRegistry.merge(schemaParser.parse(loadSchema("overview-layer.graphqls"))); - RuntimeWiring wiring = buildRuntimeWiring(); - return schemaGenerator.makeExecutableSchema(typeRegistry, wiring); - } - - private File loadSchema(final String s) { - return new File(GraphQLInitializer.class.getClassLoader().getResource("ui-graphql/" + s).getFile()); - } - - private RuntimeWiring buildRuntimeWiring() { - WiringFactory dynamicWiringFactory = new WiringFactory() { - @Override - public boolean providesTypeResolver(final InterfaceWiringEnvironment environment) { - return true; - } - - @Override - public TypeResolver getTypeResolver(final InterfaceWiringEnvironment environment) { - return env -> GraphQLObjectType.newObject().build(); - } - - @Override - public boolean providesDataFetcher(final FieldWiringEnvironment environment) { - logger.info("data fetcher: {},{}", environment.getFieldDefinition(), environment.getParentType()); - return false; - } - }; - return RuntimeWiring.newRuntimeWiring() - .wiringFactory(dynamicWiringFactory).build(); - } -} diff --git a/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLScriptTest.java b/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLScriptTest.java new file mode 100644 index 000000000..795a01b92 --- /dev/null +++ b/apm-protocol/apm-ui-protocol/src/test/java/org/apache/skywalking/apm/ui/protocol/GraphQLScriptTest.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.ui.protocol; + +import graphql.schema.idl.EchoingWiringFactory; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import java.io.File; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +public class GraphQLScriptTest { + + @Test + public void assertScriptFormat() { + SchemaParser schemaParser = new SchemaParser(); + SchemaGenerator schemaGenerator = new SchemaGenerator(); + + TypeDefinitionRegistry typeRegistry = new TypeDefinitionRegistry(); + typeRegistry.merge(schemaParser.parse(loadSchema("common.graphqls"))); + typeRegistry.merge(schemaParser.parse(loadSchema("trace.graphqls"))); + typeRegistry.merge(schemaParser.parse(loadSchema("overview-layer.graphqls"))); + RuntimeWiring wiring = buildRuntimeWiring(); + assertThat(schemaGenerator.makeExecutableSchema(typeRegistry, wiring).getAllTypesAsList().size(), is(32)); + } + + private File loadSchema(final String s) { + return new File(GraphQLScriptTest.class.getClassLoader().getResource("ui-graphql/" + s).getFile()); + } + + private RuntimeWiring buildRuntimeWiring() { + return RuntimeWiring.newRuntimeWiring().wiringFactory(new EchoingWiringFactory()).build(); + } +}