Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
84caf87f
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
84caf87f
编写于
12月 26, 2017
作者:
G
gaohongtao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add graphiql servlet
上级
0af4f173
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
139 addition
and
4 deletion
+139
-4
apm-protocol/apm-ui-protocol/README.md
apm-protocol/apm-ui-protocol/README.md
+6
-0
apm-protocol/apm-ui-protocol/pom.xml
apm-protocol/apm-ui-protocol/pom.xml
+33
-0
apm-protocol/apm-ui-protocol/src/main/java/org/apache/skywalking/apm/ui/protocol/GraphQLInitializer.java
...apache/skywalking/apm/ui/protocol/GraphQLInitializer.java
+75
-0
apm-protocol/apm-ui-protocol/src/main/resources/application.yml
...otocol/apm-ui-protocol/src/main/resources/application.yml
+20
-0
apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/common.graphqls
...ui-protocol/src/main/resources/ui-graphql/common.graphqls
+2
-1
apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/overview-layer.graphqls
...col/src/main/resources/ui-graphql/overview-layer.graphqls
+2
-2
apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls
...-ui-protocol/src/main/resources/ui-graphql/trace.graphqls
+1
-1
未找到文件。
apm-protocol/apm-ui-protocol/README.md
0 → 100644
浏览文件 @
84caf87f
## 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
)
apm-protocol/apm-ui-protocol/pom.xml
浏览文件 @
84caf87f
...
...
@@ -29,5 +29,38 @@
<artifactId>
apm-ui-protocol
</artifactId>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<version>
1.5.9.RELEASE
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
<version>
1.5.9.RELEASE
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<version>
1.5.9.RELEASE
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-devtools
</artifactId>
<version>
1.5.9.RELEASE
</version>
</dependency>
<!-- to embed GraphiQL tool -->
<dependency>
<groupId>
com.graphql-java
</groupId>
<artifactId>
graphql-spring-boot-starter
</artifactId>
<version>
3.9.2
</version>
</dependency>
<dependency>
<groupId>
com.graphql-java
</groupId>
<artifactId>
graphiql-spring-boot-starter
</artifactId>
<version>
3.9.2
</version>
</dependency>
</dependencies>
</project>
apm-protocol/apm-ui-protocol/src/main/java/org/apache/skywalking/apm/ui/protocol/GraphQLInitializer.java
0 → 100644
浏览文件 @
84caf87f
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
();
}
}
apm-protocol/apm-ui-protocol/src/main/resources/application.yml
0 → 100644
浏览文件 @
84caf87f
#
# Copyright 2017, OpenSkywalking Organization All rights reserved.
#
# Licensed 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.
#
# Project repository: https://github.com/OpenSkywalking/skywalking-ui
#
server
:
port
:
8080
apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/common.graphqls
浏览文件 @
84caf87f
...
...
@@ -2,6 +2,7 @@ schema {
query: Query
}
#Root node
type Query {
version: String
}
...
...
@@ -24,7 +25,7 @@ type Query {
# metrics from the following time points expected
# 2017-11-08 9:00 -> 2017-11-08 19:00
# there are 11 time points (hours) in the time span.
type
Duration{
input
Duration{
start: String!
end: String!
step: Step!
...
...
apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/overview-layer.graphqls
浏览文件 @
84caf87f
...
...
@@ -88,7 +88,7 @@ type ConjecturalApp {
# The display name of the application
# e.g. MySQL, RocketMQ, Kafka, Nginx
name: String!
num:
i
nt!
num:
I
nt!
}
type ApplicationBrief {
...
...
@@ -97,7 +97,7 @@ type ApplicationBrief {
type ApplicationInfo {
name: String!
tps:
i
nt!
tps:
I
nt!
}
extend type Query {
...
...
apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/trace.graphqls
浏览文件 @
84caf87f
...
...
@@ -13,7 +13,7 @@ type BasicTrace {
}
# Represent the conditions used for query TraceBrief
type
TraceQueryCondition {
input
TraceQueryCondition {
applicationCodes: [String!]
traceId: String
operationName: String
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录